<?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>106282</bug_id>
          
          <creation_ts>2013-01-07 17:51:12 -0800</creation_ts>
          <short_desc>[Shadow DOM] Distribution related code on ShadowRoot should be minimized.</short_desc>
          <delta_ts>2013-01-08 16:17:46 -0800</delta_ts>
          <reporter_accessible>1</reporter_accessible>
          <cclist_accessible>1</cclist_accessible>
          <classification_id>1</classification_id>
          <classification>Unclassified</classification>
          <product>WebKit</product>
          <component>DOM</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>103339</blocked>
          <everconfirmed>1</everconfirmed>
          <reporter name="Hajime Morrita">morrita</reporter>
          <assigned_to name="Hajime Morrita">morrita</assigned_to>
          <cc>cmarcelo</cc>
    
    <cc>macpherson</cc>
    
    <cc>menard</cc>
    
    <cc>ojan.autocc</cc>
    
    <cc>philn</cc>
    
    <cc>webcomponents-bugzilla</cc>
    
    <cc>webkit.review.bot</cc>
    
    <cc>xan.lopez</cc>
          

      

      

      

          <comment_sort_order>oldest_to_newest</comment_sort_order>  
          <long_desc isprivate="0" >
    <commentid>801893</commentid>
    <comment_count>0</comment_count>
    <who name="Hajime Morrita">morrita</who>
    <bug_when>2013-01-07 17:51:12 -0800</bug_when>
    <thetext>There are many method on ShadowRoot which is actually a part of content distribution.
They should be owned by someone in ContentDistributor family.</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>801995</commentid>
    <comment_count>1</comment_count>
      <attachid>181632</attachid>
    <who name="Hajime Morrita">morrita</who>
    <bug_when>2013-01-07 21:27:01 -0800</bug_when>
    <thetext>Created attachment 181632
Patch</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>801999</commentid>
    <comment_count>2</comment_count>
      <attachid>181632</attachid>
    <who name="Build Bot">buildbot</who>
    <bug_when>2013-01-07 21:35:17 -0800</bug_when>
    <thetext>Comment on attachment 181632
Patch

Attachment 181632 did not pass mac-ews (mac):
Output: http://queues.webkit.org/results/15736992</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>802000</commentid>
    <comment_count>3</comment_count>
      <attachid>181635</attachid>
    <who name="Hajime Morrita">morrita</who>
    <bug_when>2013-01-07 21:39:17 -0800</bug_when>
    <thetext>Created attachment 181635
Patch</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>802001</commentid>
    <comment_count>4</comment_count>
      <attachid>181635</attachid>
    <who name="Build Bot">buildbot</who>
    <bug_when>2013-01-07 21:45:41 -0800</bug_when>
    <thetext>Comment on attachment 181635
Patch

Attachment 181635 did not pass mac-ews (mac):
Output: http://queues.webkit.org/results/15734978</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>802017</commentid>
    <comment_count>5</comment_count>
      <attachid>181635</attachid>
    <who name="Build Bot">buildbot</who>
    <bug_when>2013-01-07 22:04:28 -0800</bug_when>
    <thetext>Comment on attachment 181635
Patch

Attachment 181635 did not pass win-ews (win):
Output: http://queues.webkit.org/results/15755069</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>802024</commentid>
    <comment_count>6</comment_count>
      <attachid>181640</attachid>
    <who name="Hajime Morrita">morrita</who>
    <bug_when>2013-01-07 22:17:00 -0800</bug_when>
    <thetext>Created attachment 181640
Patch</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>802025</commentid>
    <comment_count>7</comment_count>
      <attachid>181641</attachid>
    <who name="Hajime Morrita">morrita</who>
    <bug_when>2013-01-07 22:18:43 -0800</bug_when>
    <thetext>Created attachment 181641
Patch</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>802031</commentid>
    <comment_count>8</comment_count>
      <attachid>181641</attachid>
    <who name="Build Bot">buildbot</who>
    <bug_when>2013-01-07 22:27:28 -0800</bug_when>
    <thetext>Comment on attachment 181641
Patch

Attachment 181641 did not pass mac-ews (mac):
Output: http://queues.webkit.org/results/15740954</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>802042</commentid>
    <comment_count>9</comment_count>
      <attachid>181641</attachid>
    <who name="Build Bot">buildbot</who>
    <bug_when>2013-01-07 22:37:55 -0800</bug_when>
    <thetext>Comment on attachment 181641
Patch

Attachment 181641 did not pass win-ews (win):
Output: http://queues.webkit.org/results/15742854</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>802106</commentid>
    <comment_count>10</comment_count>
      <attachid>181664</attachid>
    <who name="Hajime Morrita">morrita</who>
    <bug_when>2013-01-08 00:22:27 -0800</bug_when>
    <thetext>Created attachment 181664
Patch</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>802290</commentid>
    <comment_count>11</comment_count>
      <attachid>181664</attachid>
    <who name="Dimitri Glazkov (Google)">dglazkov</who>
    <bug_when>2013-01-08 09:09:49 -0800</bug_when>
    <thetext>Comment on attachment 181664
Patch

nice refactoring.</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>802773</commentid>
    <comment_count>12</comment_count>
      <attachid>181664</attachid>
    <who name="WebKit Review Bot">webkit.review.bot</who>
    <bug_when>2013-01-08 16:17:41 -0800</bug_when>
    <thetext>Comment on attachment 181664
Patch

Clearing flags on attachment: 181664

Committed r139128: &lt;http://trac.webkit.org/changeset/139128&gt;</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>802774</commentid>
    <comment_count>13</comment_count>
    <who name="WebKit Review Bot">webkit.review.bot</who>
    <bug_when>2013-01-08 16:17:46 -0800</bug_when>
    <thetext>All reviewed patches have been landed.  Closing bug.</thetext>
  </long_desc>
      
          <attachment
              isobsolete="1"
              ispatch="1"
              isprivate="0"
          >
            <attachid>181632</attachid>
            <date>2013-01-07 21:27:01 -0800</date>
            <delta_ts>2013-01-07 21:39:13 -0800</delta_ts>
            <desc>Patch</desc>
            <filename>bug-106282-20130108142405.patch</filename>
            <type>text/plain</type>
            <size>33695</size>
            <attacher name="Hajime Morrita">morrita</attacher>
            
              <data encoding="base64">U3VidmVyc2lvbiBSZXZpc2lvbjogMTM5MDI0CmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9D
aGFuZ2VMb2cgYi9Tb3VyY2UvV2ViQ29yZS9DaGFuZ2VMb2cKaW5kZXggYjM0ZDVhYmZmMTI1NTZi
MmU1NzU1NWIxNTdjZjQyNzlhMDljMThhMC4uYTlkMTNiOTE5MTNhMDQyODU2MTZlZGZmODM4NTk5
ZTIxZWU3MmQ0YyAxMDA2NDQKLS0tIGEvU291cmNlL1dlYkNvcmUvQ2hhbmdlTG9nCisrKyBiL1Nv
dXJjZS9XZWJDb3JlL0NoYW5nZUxvZwpAQCAtMSwzICsxLDc4IEBACisyMDEzLTAxLTA3ICBIYWpp
bWUgTW9ycml0YSAgPG1vcnJpdGFAZ29vZ2xlLmNvbT4KKworICAgICAgICBbU2hhZG93IERPTV0g
RGlzdHJpYnV0aW9uIHJlbGF0ZWQgY29kZSBvbiBTaGFkb3dSb290IHNob3VsZCBiZSBtaW5pbWl6
ZWQuCisgICAgICAgIGh0dHBzOi8vYnVncy53ZWJraXQub3JnL3Nob3dfYnVnLmNnaT9pZD0xMDYy
ODIKKworICAgICAgICBSZXZpZXdlZCBieSBOT0JPRFkgKE9PUFMhKS4KKworICAgICAgICBTaGFk
b3dSb290IGhhZCBhIGNlcnRhaW4gYW1vdW50IG9mIGxvZ2ljIHdoaWNoIGlzIGRlZGljYXRlZCBm
b3IKKyAgICAgICAgbm9kZSBkaXN0cmlidXRpb24gY29tcHV0YXRpb24uICBUaGVzZSBjb2RlIGlz
IGdvaW5nIHRvIGJlIGNvbXBpbGVkCisgICAgICAgIG91dCAoQnVnIDEwMzMzOSkgYW5kIGJldHRl
ciBiZSBwYXJ0IG9mIHRoZSBub2RlIGRpc3RyaWJ1dGlvbgorICAgICAgICBhbGdvcml0aG0sIHdo
aWNoIGlzIFNjb3BlQ29udGVudERpc3RyaWJ1dGlvbiBjbGFzcy4KKworICAgICAgICBUaGlzIGNo
YW5nZQorCisgICAgICAgIC0gUmVuYW1lcyBTaGFkb3dSb290Q29udGVudERpc3RyaWJ1dGlvbkRh
dGEgdG8KKyAgICAgICAgICBTY29wZUNvbnRlbnREaXN0cmlidXRpb24uICBOZXcgbmFtZSBpcyBj
b25jaXNlIGFuZCBhIGJpdCBtb3JlCisgICAgICAgICAgbWVhbmluZ2Z1bDogSXQgb3ducyBwZXIg
VHJlZVNjb3BlIGRpc3RyaWJ1dGlvbiBzdGF0ZS4KKyAgICAgICAgLSBNb3ZlcyBkaXN0cmlidXRp
b24gcmVsYXRlZCBjb2RlIGZyb20gU2hhZG93Um9vdCB0byBTY29wZUNvbnRlbnREaXN0cmlidXRp
b24KKworICAgICAgICBObyBuZXcgdGVzdHMuIFJlZmFjdG9yaW5nLgorCisgICAgICAgICogY3Nz
L1N0eWxlU2NvcGVSZXNvbHZlci5jcHA6CisgICAgICAgIChXZWJDb3JlOjpTdHlsZVNjb3BlUmVz
b2x2ZXI6OnN0eWxlU2hhcmluZ0NhbmRpZGF0ZU1hdGNoZXNIb3N0UnVsZXMpOgorICAgICAgICAo
V2ViQ29yZTo6U3R5bGVTY29wZVJlc29sdmVyOjptYXRjaEhvc3RSdWxlcyk6CisgICAgICAgICog
ZG9tL0NvbXBvc2VkU2hhZG93VHJlZVdhbGtlci5jcHA6CisgICAgICAgIChXZWJDb3JlOjpub2Rl
Q2FuQmVEaXN0cmlidXRlZCk6CisgICAgICAgIChXZWJDb3JlOjpDb21wb3NlZFNoYWRvd1RyZWVX
YWxrZXI6OnRyYXZlcnNlQmFja1RvWW91bmdlclNoYWRvd1Jvb3QpOgorICAgICAgICAoV2ViQ29y
ZTo6Q29tcG9zZWRTaGFkb3dUcmVlV2Fsa2VyOjp0cmF2ZXJzZVBhcmVudEJhY2tUb1lvdW5nZXJT
aGFkb3dSb290T3JIb3N0KToKKyAgICAgICAgKFdlYkNvcmU6OkFuY2VzdG9yQ2hhaW5XYWxrZXI6
OnBhcmVudCk6CisgICAgICAgICogZG9tL0VsZW1lbnRTaGFkb3cuY3BwOgorICAgICAgICAoV2Vi
Q29yZTo6RWxlbWVudFNoYWRvdzo6Y29sbGVjdFNlbGVjdEZlYXR1cmVTZXRGcm9tKToKKyAgICAg
ICAgKiBkb20vU2hhZG93Um9vdC5jcHA6CisgICAgICAgIChXZWJDb3JlOjpTaGFkb3dSb290Ojpp
bnNlcnRlZEludG8pOgorICAgICAgICAoV2ViQ29yZTo6U2hhZG93Um9vdDo6cmVtb3ZlZEZyb20p
OgorICAgICAgICAoV2ViQ29yZTo6U2hhZG93Um9vdDo6ZW5zdXJlU2NvcGVEaXN0cmlidXRpb24p
OgorICAgICAgICAoV2ViQ29yZTo6U2hhZG93Um9vdDo6cmVwb3J0TWVtb3J5VXNhZ2UpOgorICAg
ICAgICAqIGRvbS9TaGFkb3dSb290Lmg6CisgICAgICAgIChXZWJDb3JlKToKKyAgICAgICAgKFNo
YWRvd1Jvb3QpOgorICAgICAgICAoV2ViQ29yZTo6U2hhZG93Um9vdDo6c2NvcGVEaXN0cmlidXRp
b24pOgorICAgICAgICAqIGh0bWwvc2hhZG93L0NvbnRlbnREaXN0cmlidXRvci5jcHA6CisgICAg
ICAgIChXZWJDb3JlOjpTY29wZUNvbnRlbnREaXN0cmlidXRpb246OlNjb3BlQ29udGVudERpc3Ry
aWJ1dGlvbik6CisgICAgICAgIChXZWJDb3JlOjpTY29wZUNvbnRlbnREaXN0cmlidXRpb246Omlu
dmFsaWRhdGVJbnNlcnRpb25Qb2ludExpc3QpOgorICAgICAgICAoV2ViQ29yZTo6U2NvcGVDb250
ZW50RGlzdHJpYnV0aW9uOjplbnN1cmVJbnNlcnRpb25Qb2ludExpc3QpOgorICAgICAgICAoV2Vi
Q29yZTo6U2NvcGVDb250ZW50RGlzdHJpYnV0aW9uOjpyZWdpc3Rlckluc2VydGlvblBvaW50KToK
KyAgICAgICAgKFdlYkNvcmU6OlNjb3BlQ29udGVudERpc3RyaWJ1dGlvbjo6dW5yZWdpc3Rlcklu
c2VydGlvblBvaW50KToKKyAgICAgICAgKFdlYkNvcmU6OlNjb3BlQ29udGVudERpc3RyaWJ1dGlv
bjo6aGFzU2hhZG93RWxlbWVudCk6CisgICAgICAgIChXZWJDb3JlKToKKyAgICAgICAgKFdlYkNv
cmU6OlNjb3BlQ29udGVudERpc3RyaWJ1dGlvbjo6aGFzQ29udGVudEVsZW1lbnQpOgorICAgICAg
ICAoV2ViQ29yZTo6U2NvcGVDb250ZW50RGlzdHJpYnV0aW9uOjpjb3VudEVsZW1lbnRTaGFkb3cp
OgorICAgICAgICAoV2ViQ29yZTo6U2NvcGVDb250ZW50RGlzdHJpYnV0aW9uOjpoYXNJbnNlcnRp
b25Qb2ludCk6CisgICAgICAgIChXZWJDb3JlOjpTY29wZUNvbnRlbnREaXN0cmlidXRpb246OmFz
c2lnbmVkVG8pOgorICAgICAgICAoV2ViQ29yZTo6Q29udGVudERpc3RyaWJ1dG9yOjpkaXN0cmli
dXRlKToKKyAgICAgICAgKFdlYkNvcmU6OkNvbnRlbnREaXN0cmlidXRvcjo6aW52YWxpZGF0ZSk6
CisgICAgICAgICogaHRtbC9zaGFkb3cvQ29udGVudERpc3RyaWJ1dG9yLmg6CisgICAgICAgIChT
Y29wZUNvbnRlbnREaXN0cmlidXRpb24pOgorICAgICAgICAoV2ViQ29yZTo6U2NvcGVDb250ZW50
RGlzdHJpYnV0aW9uOjpyZWdpc3RlckVsZW1lbnRTaGFkb3cpOgorICAgICAgICAoV2ViQ29yZTo6
U2NvcGVDb250ZW50RGlzdHJpYnV0aW9uOjp1bnJlZ2lzdGVyRWxlbWVudFNoYWRvdyk6CisgICAg
ICAgIChXZWJDb3JlOjpTY29wZUNvbnRlbnREaXN0cmlidXRpb246Omhhc0VsZW1lbnRTaGFkb3cp
OgorICAgICAgICAqIGh0bWwvc2hhZG93L0hUTUxTaGFkb3dFbGVtZW50LmNwcDoKKyAgICAgICAg
KFdlYkNvcmU6OkhUTUxTaGFkb3dFbGVtZW50OjpvbGRlclNoYWRvd1Jvb3QpOgorICAgICAgICAq
IGh0bWwvc2hhZG93L0luc2VydGlvblBvaW50LmNwcDoKKyAgICAgICAgKFdlYkNvcmU6Okluc2Vy
dGlvblBvaW50OjppbnNlcnRlZEludG8pOgorICAgICAgICAoV2ViQ29yZTo6SW5zZXJ0aW9uUG9p
bnQ6OnJlbW92ZWRGcm9tKToKKyAgICAgICAgKFdlYkNvcmU6Okluc2VydGlvblBvaW50Ojpjb250
YWlucyk6CisgICAgICAgIChXZWJDb3JlKToKKyAgICAgICAgKFdlYkNvcmU6OnJlc29sdmVSZXBy
b2plY3Rpb24pOgorICAgICAgICAqIGh0bWwvc2hhZG93L0luc2VydGlvblBvaW50Lmg6CisgICAg
ICAgIChJbnNlcnRpb25Qb2ludCk6CisgICAgICAgIChXZWJDb3JlKToKKyAgICAgICAgKiB0ZXN0
aW5nL0ludGVybmFscy5jcHA6CisgICAgICAgIChXZWJDb3JlOjpJbnRlcm5hbHM6Omhhc1NoYWRv
d0luc2VydGlvblBvaW50KToKKyAgICAgICAgKFdlYkNvcmU6OkludGVybmFsczo6aGFzQ29udGVu
dEVsZW1lbnQpOgorICAgICAgICAoV2ViQ29yZTo6SW50ZXJuYWxzOjpjb3VudEVsZW1lbnRTaGFk
b3cpOgorCiAyMDEzLTAxLTA3ICBYaWFuemh1IFdhbmcgIDx3YW5neGlhbnpodUBjaHJvbWl1bS5v
cmc+CiAKICAgICAgICAgQWRkIGEgc2V0dGluZyB0byBlbmFibGUgY29tcG9zaXRlZCBzY3JvbGxp
bmcgZm9yIGZyYW1lcwpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYkNvcmUvY3NzL1N0eWxlU2NvcGVS
ZXNvbHZlci5jcHAgYi9Tb3VyY2UvV2ViQ29yZS9jc3MvU3R5bGVTY29wZVJlc29sdmVyLmNwcApp
bmRleCAxYzM5MTE3MjgwNzJjNjU4ZTllMjlmODYyNjBmYjY4OWFmMDk5NmNkLi5mZGViZGE0Y2M4
MDYwYmIxZmY5M2NlYWNlMjM5YTYyYWM1ZWQ0ZmE3IDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViQ29y
ZS9jc3MvU3R5bGVTY29wZVJlc29sdmVyLmNwcAorKysgYi9Tb3VyY2UvV2ViQ29yZS9jc3MvU3R5
bGVTY29wZVJlc29sdmVyLmNwcApAQCAtMzEsNiArMzEsNyBAQAogCiAjaW5jbHVkZSAiQ1NTU3R5
bGVSdWxlLmgiCiAjaW5jbHVkZSAiQ1NTU3R5bGVTaGVldC5oIgorI2luY2x1ZGUgIkNvbnRlbnRE
aXN0cmlidXRvci5oIgogI2luY2x1ZGUgIkNvbnRleHRGZWF0dXJlcy5oIgogI2luY2x1ZGUgIkVs
ZW1lbnRTaGFkb3cuaCIKICNpbmNsdWRlICJIVE1MTmFtZXMuaCIKQEAgLTIxMCw3ICsyMTEsNyBA
QCBib29sIFN0eWxlU2NvcGVSZXNvbHZlcjo6c3R5bGVTaGFyaW5nQ2FuZGlkYXRlTWF0Y2hlc0hv
c3RSdWxlcyhjb25zdCBFbGVtZW50KiBlbAogICAgICAgICBpZiAoYXRIb3N0UnVsZVNldEZvcihz
aGFkb3dSb290KSkKICAgICAgICAgICAgIHJldHVybiB0cnVlOwogCi0gICAgICAgIGlmICghc2hh
ZG93Um9vdC0+aGFzU2hhZG93SW5zZXJ0aW9uUG9pbnQoKSkKKyAgICAgICAgaWYgKCFTY29wZUNv
bnRlbnREaXN0cmlidXRpb246Omhhc1NoYWRvd0VsZW1lbnQoc2hhZG93Um9vdCkpCiAgICAgICAg
ICAgICBicmVhazsKICAgICB9CiAgICAgcmV0dXJuIGZhbHNlOwpAQCAtMjMyLDcgKzIzMyw3IEBA
IHZvaWQgU3R5bGVTY29wZVJlc29sdmVyOjptYXRjaEhvc3RSdWxlcyhjb25zdCBFbGVtZW50KiBl
bGVtZW50LCBWZWN0b3I8UnVsZVNldCo+CiAgICAgZm9yIChTaGFkb3dSb290KiBzaGFkb3dSb290
ID0gc2hhZG93LT55b3VuZ2VzdFNoYWRvd1Jvb3QoKTsgc2hhZG93Um9vdDsgc2hhZG93Um9vdCA9
IHNoYWRvd1Jvb3QtPm9sZGVyU2hhZG93Um9vdCgpKSB7IAogICAgICAgICBpZiAoUnVsZVNldCog
cnVsZVNldCA9IGF0SG9zdFJ1bGVTZXRGb3Ioc2hhZG93Um9vdCkpCiAgICAgICAgICAgICBtYXRj
aGVkUnVsZXMuYXBwZW5kKHJ1bGVTZXQpOwotICAgICAgICBpZiAoIXNoYWRvd1Jvb3QtPmhhc1No
YWRvd0luc2VydGlvblBvaW50KCkpCisgICAgICAgIGlmICghU2NvcGVDb250ZW50RGlzdHJpYnV0
aW9uOjpoYXNTaGFkb3dFbGVtZW50KHNoYWRvd1Jvb3QpKQogICAgICAgICAgICAgYnJlYWs7CiAg
ICAgfQogfQpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYkNvcmUvZG9tL0NvbXBvc2VkU2hhZG93VHJl
ZVdhbGtlci5jcHAgYi9Tb3VyY2UvV2ViQ29yZS9kb20vQ29tcG9zZWRTaGFkb3dUcmVlV2Fsa2Vy
LmNwcAppbmRleCAxZDAzYzU0N2UwYjQ5ODdlMjY3MjJiOTM5OWQ2ZjViMGQ1ZmQyYjA4Li42NWIx
MzNjZmIyMjU4ZWVmMjI3OWFlNWFhNmQ1ODdiZDM5NmVlY2U2IDEwMDY0NAotLS0gYS9Tb3VyY2Uv
V2ViQ29yZS9kb20vQ29tcG9zZWRTaGFkb3dUcmVlV2Fsa2VyLmNwcAorKysgYi9Tb3VyY2UvV2Vi
Q29yZS9kb20vQ29tcG9zZWRTaGFkb3dUcmVlV2Fsa2VyLmNwcApAQCAtNjMsNyArNjMsNyBAQCBz
dGF0aWMgaW5saW5lIGJvb2wgbm9kZUNhbkJlRGlzdHJpYnV0ZWQoY29uc3QgTm9kZSogbm9kZSkK
ICAgICAgICAgcmV0dXJuIGZhbHNlOwogCiAgICAgaWYgKFNoYWRvd1Jvb3QqIHNoYWRvd1Jvb3Qg
PSBwYXJlbnQtPmlzU2hhZG93Um9vdCgpID8gdG9TaGFkb3dSb290KHBhcmVudCkgOiAwKQotICAg
ICAgICByZXR1cm4gc2hhZG93Um9vdC0+YXNzaWduZWRUbygpOworICAgICAgICByZXR1cm4gU2Nv
cGVDb250ZW50RGlzdHJpYnV0aW9uOjphc3NpZ25lZFRvKHNoYWRvd1Jvb3QpOwogCiAgICAgaWYg
KHBhcmVudC0+aXNFbGVtZW50Tm9kZSgpICYmIHRvRWxlbWVudChwYXJlbnQpLT5zaGFkb3coKSkK
ICAgICAgICAgcmV0dXJuIHRydWU7CkBAIC0xOTgsNyArMTk4LDcgQEAgTm9kZSogQ29tcG9zZWRT
aGFkb3dUcmVlV2Fsa2VyOjp0cmF2ZXJzZUJhY2tUb1lvdW5nZXJTaGFkb3dSb290KGNvbnN0IE5v
ZGUqIG5vZGUKICAgICBpZiAobm9kZS0+cGFyZW50Tm9kZSgpICYmIG5vZGUtPnBhcmVudE5vZGUo
KS0+aXNTaGFkb3dSb290KCkpIHsKICAgICAgICAgU2hhZG93Um9vdCogcGFyZW50U2hhZG93Um9v
dCA9IHRvU2hhZG93Um9vdChub2RlLT5wYXJlbnROb2RlKCkpOwogICAgICAgICBpZiAoIXBhcmVu
dFNoYWRvd1Jvb3QtPmlzWW91bmdlc3QoKSkgewotICAgICAgICAgICAgSW5zZXJ0aW9uUG9pbnQq
IGFzc2lnbmVkSW5zZXJ0aW9uUG9pbnQgPSBwYXJlbnRTaGFkb3dSb290LT5hc3NpZ25lZFRvKCk7
CisgICAgICAgICAgICBJbnNlcnRpb25Qb2ludCogYXNzaWduZWRJbnNlcnRpb25Qb2ludCA9IFNj
b3BlQ29udGVudERpc3RyaWJ1dGlvbjo6YXNzaWduZWRUbyhwYXJlbnRTaGFkb3dSb290KTsKICAg
ICAgICAgICAgIEFTU0VSVChhc3NpZ25lZEluc2VydGlvblBvaW50KTsKICAgICAgICAgICAgIHJl
dHVybiB0cmF2ZXJzZVNpYmxpbmdJbkN1cnJlbnRUcmVlKGFzc2lnbmVkSW5zZXJ0aW9uUG9pbnQs
IGRpcmVjdGlvbik7CiAgICAgICAgIH0KQEAgLTI2Nyw3ICsyNjcsNyBAQCBpbmxpbmUgTm9kZSog
Q29tcG9zZWRTaGFkb3dUcmVlV2Fsa2VyOjp0cmF2ZXJzZVBhcmVudEluQ3VycmVudFRyZWUoY29u
c3QgTm9kZSogbgogTm9kZSogQ29tcG9zZWRTaGFkb3dUcmVlV2Fsa2VyOjp0cmF2ZXJzZVBhcmVu
dEJhY2tUb1lvdW5nZXJTaGFkb3dSb290T3JIb3N0KGNvbnN0IFNoYWRvd1Jvb3QqIHNoYWRvd1Jv
b3QsIFBhcmVudFRyYXZlcnNhbERldGFpbHMqIGRldGFpbHMpIGNvbnN0CiB7CiAgICAgQVNTRVJU
KHNoYWRvd1Jvb3QpOwotICAgIEFTU0VSVCghc2hhZG93Um9vdC0+YXNzaWduZWRUbygpKTsKKyAg
ICBBU1NFUlQoIVNjb3BlQ29udGVudERpc3RyaWJ1dGlvbjo6YXNzaWduZWRUbyhzaGFkb3dSb290
KSk7CiAKICAgICBpZiAoc2hhZG93Um9vdC0+aXNZb3VuZ2VzdCgpKSB7CiAgICAgICAgIGlmIChj
YW5Dcm9zc1VwcGVyQm91bmRhcnkoKSkgewpAQCAtMzQzLDE0ICszNDMsMTQgQEAgdm9pZCBBbmNl
c3RvckNoYWluV2Fsa2VyOjpwYXJlbnQoKQogICAgIH0KICAgICBpZiAoIW1fbm9kZS0+aXNTaGFk
b3dSb290KCkpIHsKICAgICAgICAgbV9ub2RlID0gbV9ub2RlLT5wYXJlbnROb2RlKCk7Ci0gICAg
ICAgIGlmICghKG1fbm9kZSAmJiBtX25vZGUtPmlzU2hhZG93Um9vdCgpICYmIHRvU2hhZG93Um9v
dChtX25vZGUpLT5hc3NpZ25lZFRvKCkpKQorICAgICAgICBpZiAoIShtX25vZGUgJiYgbV9ub2Rl
LT5pc1NoYWRvd1Jvb3QoKSAmJiBTY29wZUNvbnRlbnREaXN0cmlidXRpb246OmFzc2lnbmVkVG8o
dG9TaGFkb3dSb290KG1fbm9kZSkpKSkKICAgICAgICAgICAgIG1fZGlzdHJpYnV0ZWROb2RlID0g
bV9ub2RlOwogICAgICAgICBtX2lzQ3Jvc3NpbmdJbnNlcnRpb25Qb2ludCA9IGZhbHNlOwogICAg
ICAgICByZXR1cm47CiAgICAgfQogCiAgICAgY29uc3QgU2hhZG93Um9vdCogc2hhZG93Um9vdCA9
IHRvU2hhZG93Um9vdChtX25vZGUpOwotICAgIGlmIChJbnNlcnRpb25Qb2ludCogaW5zZXJ0aW9u
UG9pbnQgPSBzaGFkb3dSb290LT5hc3NpZ25lZFRvKCkpIHsKKyAgICBpZiAoSW5zZXJ0aW9uUG9p
bnQqIGluc2VydGlvblBvaW50ID0gU2NvcGVDb250ZW50RGlzdHJpYnV0aW9uOjphc3NpZ25lZFRv
KHNoYWRvd1Jvb3QpKSB7CiAgICAgICAgIG1fbm9kZSA9IGluc2VydGlvblBvaW50OwogICAgICAg
ICBtX2lzQ3Jvc3NpbmdJbnNlcnRpb25Qb2ludCA9IHRydWU7CiAgICAgICAgIHJldHVybjsKZGlm
ZiAtLWdpdCBhL1NvdXJjZS9XZWJDb3JlL2RvbS9FbGVtZW50U2hhZG93LmNwcCBiL1NvdXJjZS9X
ZWJDb3JlL2RvbS9FbGVtZW50U2hhZG93LmNwcAppbmRleCAxNDkzYWY3OTI1MzJlMjdjYmIyZjg0
MmE1NGNiNDZjYTQ0YzRmMmZiLi5kOTYyYzcwYmRjZDhiOTRkNjk1Y2U0N2NlNmU3MjNiNTJjNzEx
MGNkIDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViQ29yZS9kb20vRWxlbWVudFNoYWRvdy5jcHAKKysr
IGIvU291cmNlL1dlYkNvcmUvZG9tL0VsZW1lbnRTaGFkb3cuY3BwCkBAIC0yMzMsNyArMjMzLDcg
QEAgdm9pZCBFbGVtZW50U2hhZG93OjplbnN1cmVTZWxlY3RGZWF0dXJlU2V0Q29sbGVjdGVkKCkK
IAogdm9pZCBFbGVtZW50U2hhZG93Ojpjb2xsZWN0U2VsZWN0RmVhdHVyZVNldEZyb20oU2hhZG93
Um9vdCogcm9vdCkKIHsKLSAgICBpZiAocm9vdC0+aGFzRWxlbWVudFNoYWRvdygpKSB7CisgICAg
aWYgKFNjb3BlQ29udGVudERpc3RyaWJ1dGlvbjo6aGFzRWxlbWVudFNoYWRvdyhyb290KSkgewog
ICAgICAgICBmb3IgKEVsZW1lbnQqIGVsZW1lbnQgPSBFbGVtZW50VHJhdmVyc2FsOjpmaXJzdFdp
dGhpbihyb290KTsgZWxlbWVudDsgZWxlbWVudCA9IEVsZW1lbnRUcmF2ZXJzYWw6Om5leHQoZWxl
bWVudCkpIHsKICAgICAgICAgICAgIGlmIChFbGVtZW50U2hhZG93KiBlbGVtZW50U2hhZG93ID0g
ZWxlbWVudC0+c2hhZG93KCkpIHsKICAgICAgICAgICAgICAgICBlbGVtZW50U2hhZG93LT5lbnN1
cmVTZWxlY3RGZWF0dXJlU2V0Q29sbGVjdGVkKCk7CkBAIC0yNDIsNyArMjQyLDcgQEAgdm9pZCBF
bGVtZW50U2hhZG93Ojpjb2xsZWN0U2VsZWN0RmVhdHVyZVNldEZyb20oU2hhZG93Um9vdCogcm9v
dCkKICAgICAgICAgfQogICAgIH0KIAotICAgIGlmIChyb290LT5oYXNDb250ZW50RWxlbWVudCgp
KSB7CisgICAgaWYgKFNjb3BlQ29udGVudERpc3RyaWJ1dGlvbjo6aGFzQ29udGVudEVsZW1lbnQo
cm9vdCkpIHsKICAgICAgICAgZm9yIChFbGVtZW50KiBlbGVtZW50ID0gRWxlbWVudFRyYXZlcnNh
bDo6Zmlyc3RXaXRoaW4ocm9vdCk7IGVsZW1lbnQ7IGVsZW1lbnQgPSBFbGVtZW50VHJhdmVyc2Fs
OjpuZXh0KGVsZW1lbnQpKSB7CiAgICAgICAgICAgICBpZiAoaXNIVE1MQ29udGVudEVsZW1lbnQo
ZWxlbWVudCkpIHsKICAgICAgICAgICAgICAgICBjb25zdCBDU1NTZWxlY3Rvckxpc3QmIGxpc3Qg
PSB0b0hUTUxDb250ZW50RWxlbWVudChlbGVtZW50KS0+c2VsZWN0b3JMaXN0KCk7CmRpZmYgLS1n
aXQgYS9Tb3VyY2UvV2ViQ29yZS9kb20vU2hhZG93Um9vdC5jcHAgYi9Tb3VyY2UvV2ViQ29yZS9k
b20vU2hhZG93Um9vdC5jcHAKaW5kZXggNjE5YTY0NmIwMjlmMDA0YjdhNzY3MDM2Mzk3ODU0NzRh
Nzk5ZTMwOS4uNjMzZTRjNDdkY2RmMTA2M2VlMDJiMjY0YzU4MWE0MWQ3MzY2ZDk2OCAxMDA2NDQK
LS0tIGEvU291cmNlL1dlYkNvcmUvZG9tL1NoYWRvd1Jvb3QuY3BwCisrKyBiL1NvdXJjZS9XZWJD
b3JlL2RvbS9TaGFkb3dSb290LmNwcApAQCAtMjI2LDExICsyMjYsNiBAQCBFbGVtZW50U2hhZG93
KiBTaGFkb3dSb290Ojpvd25lcigpIGNvbnN0CiAgICAgcmV0dXJuIDA7CiB9CiAKLWJvb2wgU2hh
ZG93Um9vdDo6aGFzSW5zZXJ0aW9uUG9pbnQoKSBjb25zdAotewotICAgIHJldHVybiBoYXNTaGFk
b3dJbnNlcnRpb25Qb2ludCgpIHx8IGhhc0NvbnRlbnRFbGVtZW50KCk7Ci19Ci0KIGJvb2wgU2hh
ZG93Um9vdDo6YXBwbHlBdXRob3JTdHlsZXMoKSBjb25zdAogewogICAgIHJldHVybiBtX2FwcGx5
QXV0aG9yU3R5bGVzOwpAQCAtMjg0LDcgKzI3OSw3IEBAIE5vZGU6Okluc2VydGlvbk5vdGlmaWNh
dGlvblJlcXVlc3QgU2hhZG93Um9vdDo6aW5zZXJ0ZWRJbnRvKENvbnRhaW5lck5vZGUqIGluc2Vy
CiAgICAgICAgIHJldHVybiBJbnNlcnRpb25Eb25lOwogCiAgICAgaWYgKFNoYWRvd1Jvb3QqIHJv
b3QgPSBob3N0KCktPmNvbnRhaW5pbmdTaGFkb3dSb290KCkpIHsKLSAgICAgICAgcm9vdC0+cmVn
aXN0ZXJFbGVtZW50U2hhZG93KCk7CisgICAgICAgIHJvb3QtPmVuc3VyZVNjb3BlRGlzdHJpYnV0
aW9uKCktPnJlZ2lzdGVyRWxlbWVudFNoYWRvdygpOwogICAgICAgICBtX3JlZ2lzdGVyZWRXaXRo
UGFyZW50U2hhZG93Um9vdCA9IHRydWU7CiAgICAgfQogCkBAIC0yOTgsMjggKzI5MywxNCBAQCB2
b2lkIFNoYWRvd1Jvb3Q6OnJlbW92ZWRGcm9tKENvbnRhaW5lck5vZGUqIGluc2VydGlvblBvaW50
KQogICAgICAgICBpZiAoIXJvb3QpCiAgICAgICAgICAgICByb290ID0gaW5zZXJ0aW9uUG9pbnQt
PmNvbnRhaW5pbmdTaGFkb3dSb290KCk7CiAKLSAgICAgICAgaWYgKHJvb3QpCi0gICAgICAgICAg
ICByb290LT51bnJlZ2lzdGVyRWxlbWVudFNoYWRvdygpOworICAgICAgICBpZiAocm9vdCAmJiBy
b290LT5zY29wZURpc3RyaWJ1dGlvbigpKQorICAgICAgICAgICAgcm9vdC0+c2NvcGVEaXN0cmli
dXRpb24oKS0+dW5yZWdpc3RlckVsZW1lbnRTaGFkb3coKTsKICAgICAgICAgbV9yZWdpc3RlcmVk
V2l0aFBhcmVudFNoYWRvd1Jvb3QgPSBmYWxzZTsKICAgICB9CiAKICAgICBEb2N1bWVudEZyYWdt
ZW50OjpyZW1vdmVkRnJvbShpbnNlcnRpb25Qb2ludCk7CiB9CiAKLUluc2VydGlvblBvaW50KiBT
aGFkb3dSb290Ojphc3NpZ25lZFRvKCkgY29uc3QKLXsKLSAgICBpZiAoIWRpc3RyaWJ1dGlvbkRh
dGEoKSkKLSAgICAgICAgcmV0dXJuIDA7Ci0KLSAgICByZXR1cm4gZGlzdHJpYnV0aW9uRGF0YSgp
LT5pbnNlcnRpb25Qb2ludEFzc2lnbmVkVG8oKTsKLX0KLQotdm9pZCBTaGFkb3dSb290OjpzZXRB
c3NpZ25lZFRvKEluc2VydGlvblBvaW50KiBpbnNlcnRpb25Qb2ludCkKLXsKLSAgICBBU1NFUlQo
IWFzc2lnbmVkVG8oKSB8fCAhaW5zZXJ0aW9uUG9pbnQpOwotICAgIGVuc3VyZURpc3RyaWJ1dGlv
bkRhdGEoKS0+c2V0SW5zZXJ0aW9uUG9pbnRBc3NpZ25lZFRvKGluc2VydGlvblBvaW50KTsKLX0K
LQogdm9pZCBTaGFkb3dSb290OjpjaGlsZHJlbkNoYW5nZWQoYm9vbCBjaGFuZ2VkQnlQYXJzZXIs
IE5vZGUqIGJlZm9yZUNoYW5nZSwgTm9kZSogYWZ0ZXJDaGFuZ2UsIGludCBjaGlsZENvdW50RGVs
dGEpCiB7CiAgICAgR3VhcmRPcnBoYW5TaGFkb3dSb290KHsgfSk7CkBAIC0zMjgsMTQgKzMwOSw2
IEBAIHZvaWQgU2hhZG93Um9vdDo6Y2hpbGRyZW5DaGFuZ2VkKGJvb2wgY2hhbmdlZEJ5UGFyc2Vy
LCBOb2RlKiBiZWZvcmVDaGFuZ2UsIE5vZGUqCiAgICAgb3duZXIoKS0+aW52YWxpZGF0ZURpc3Ry
aWJ1dGlvbigpOwogfQogCi1jb25zdCBWZWN0b3I8UmVmUHRyPEluc2VydGlvblBvaW50PiA+JiBT
aGFkb3dSb290OjppbnNlcnRpb25Qb2ludExpc3QoKQotewotICAgIHR5cGVkZWYgVmVjdG9yPFJl
ZlB0cjxJbnNlcnRpb25Qb2ludD4gPiBJbnNlcnRpb25Qb2ludFZlY3RvcjsKLSAgICBERUZJTkVf
U1RBVElDX0xPQ0FMKEluc2VydGlvblBvaW50VmVjdG9yLCBlbXB0eVZlY3RvciwgKCkpOwotCi0g
ICAgcmV0dXJuIGRpc3RyaWJ1dGlvbkRhdGEoKSA/IGRpc3RyaWJ1dGlvbkRhdGEoKS0+ZW5zdXJl
SW5zZXJ0aW9uUG9pbnRMaXN0KHRoaXMpIDogZW1wdHlWZWN0b3I7Ci19Ci0KIHZvaWQgU2hhZG93
Um9vdDo6cmVnaXN0ZXJTY29wZWRIVE1MU3R5bGVDaGlsZCgpCiB7CiAgICAgKyttX251bWJlck9m
U3R5bGVzOwpAQCAtMzQ5LDY4ICszMjIsMTUgQEAgdm9pZCBTaGFkb3dSb290Ojp1bnJlZ2lzdGVy
U2NvcGVkSFRNTFN0eWxlQ2hpbGQoKQogICAgIHNldEhhc1Njb3BlZEhUTUxTdHlsZUNoaWxkKG1f
bnVtYmVyT2ZTdHlsZXMgPiAwKTsKIH0KIAotaW5saW5lIFNoYWRvd1Jvb3RDb250ZW50RGlzdHJp
YnV0aW9uRGF0YSogU2hhZG93Um9vdDo6ZW5zdXJlRGlzdHJpYnV0aW9uRGF0YSgpCitTY29wZUNv
bnRlbnREaXN0cmlidXRpb24qIFNoYWRvd1Jvb3Q6OmVuc3VyZVNjb3BlRGlzdHJpYnV0aW9uKCkK
IHsKLSAgICBpZiAobV9kaXN0cmlidXRpb25EYXRhKQotICAgICAgICByZXR1cm4gbV9kaXN0cmli
dXRpb25EYXRhLmdldCgpOworICAgIGlmIChtX3Njb3BlRGlzdHJpYnV0aW9uKQorICAgICAgICBy
ZXR1cm4gbV9zY29wZURpc3RyaWJ1dGlvbi5nZXQoKTsKIAotICAgIG1fZGlzdHJpYnV0aW9uRGF0
YSA9IGFkb3B0UHRyKG5ldyBTaGFkb3dSb290Q29udGVudERpc3RyaWJ1dGlvbkRhdGEpOwotICAg
IHJldHVybiBtX2Rpc3RyaWJ1dGlvbkRhdGEuZ2V0KCk7CisgICAgbV9zY29wZURpc3RyaWJ1dGlv
biA9IGFkb3B0UHRyKG5ldyBTY29wZUNvbnRlbnREaXN0cmlidXRpb24pOworICAgIHJldHVybiBt
X3Njb3BlRGlzdHJpYnV0aW9uLmdldCgpOwogfSAgIAogCi12b2lkIFNoYWRvd1Jvb3Q6OnJlZ2lz
dGVySW5zZXJ0aW9uUG9pbnQoSW5zZXJ0aW9uUG9pbnQqIHBvaW50KQotewotICAgIGVuc3VyZURp
c3RyaWJ1dGlvbkRhdGEoKS0+cmVnaXRlckluc2VydGlvblBvaW50KHRoaXMsIHBvaW50KTsKLX0K
LQotdm9pZCBTaGFkb3dSb290Ojp1bnJlZ2lzdGVySW5zZXJ0aW9uUG9pbnQoSW5zZXJ0aW9uUG9p
bnQqIHBvaW50KQotewotICAgIGVuc3VyZURpc3RyaWJ1dGlvbkRhdGEoKS0+dW5yZWdpc3Rlcklu
c2VydGlvblBvaW50KHRoaXMsIHBvaW50KTsKLX0KLQotYm9vbCBTaGFkb3dSb290OjpoYXNTaGFk
b3dJbnNlcnRpb25Qb2ludCgpIGNvbnN0Ci17Ci0gICAgaWYgKCFkaXN0cmlidXRpb25EYXRhKCkp
Ci0gICAgICAgIHJldHVybiBmYWxzZTsKLQotICAgIHJldHVybiBkaXN0cmlidXRpb25EYXRhKCkt
Pmhhc1NoYWRvd0VsZW1lbnRDaGlsZHJlbigpOwotfQotCi1ib29sIFNoYWRvd1Jvb3Q6Omhhc0Nv
bnRlbnRFbGVtZW50KCkgY29uc3QKLXsKLSAgICBpZiAoIWRpc3RyaWJ1dGlvbkRhdGEoKSkKLSAg
ICAgICAgcmV0dXJuIGZhbHNlOwotCi0gICAgcmV0dXJuIGRpc3RyaWJ1dGlvbkRhdGEoKS0+aGFz
Q29udGVudEVsZW1lbnRDaGlsZHJlbigpOwotfQotCi12b2lkIFNoYWRvd1Jvb3Q6OnJlZ2lzdGVy
RWxlbWVudFNoYWRvdygpCi17Ci0gICAgZW5zdXJlRGlzdHJpYnV0aW9uRGF0YSgpLT5pbmNyZW1l
bnROdW1iZXJPZkVsZW1lbnRTaGFkb3dDaGlsZHJlbigpOwotfQotCi12b2lkIFNoYWRvd1Jvb3Q6
OnVucmVnaXN0ZXJFbGVtZW50U2hhZG93KCkKLXsKLSAgICBBU1NFUlQoaGFzRWxlbWVudFNoYWRv
dygpKTsKLSAgICBkaXN0cmlidXRpb25EYXRhKCktPmRlY3JlbWVudE51bWJlck9mRWxlbWVudFNo
YWRvd0NoaWxkcmVuKCk7Ci19Ci0KLWJvb2wgU2hhZG93Um9vdDo6aGFzRWxlbWVudFNoYWRvdygp
IGNvbnN0Ci17Ci0gICAgaWYgKCFkaXN0cmlidXRpb25EYXRhKCkpCi0gICAgICAgIHJldHVybiBm
YWxzZTsKLQotICAgIHJldHVybiBkaXN0cmlidXRpb25EYXRhKCktPmhhc0VsZW1lbnRTaGFkb3dD
aGlsZHJlbigpOwotfQotCi11bnNpZ25lZCBTaGFkb3dSb290Ojpjb3VudEVsZW1lbnRTaGFkb3co
KSBjb25zdCAKLXsKLSAgICBpZiAoIWRpc3RyaWJ1dGlvbkRhdGEoKSkKLSAgICAgICAgcmV0dXJu
IDA7Ci0KLSAgICByZXR1cm4gZGlzdHJpYnV0aW9uRGF0YSgpLT5udW1iZXJPZkVsZW1lbnRTaGFk
b3dDaGlsZHJlbigpOwotfQotCiB2b2lkIFNoYWRvd1Jvb3Q6OnJlcG9ydE1lbW9yeVVzYWdlKE1l
bW9yeU9iamVjdEluZm8qIG1lbW9yeU9iamVjdEluZm8pIGNvbnN0CiB7CiAgICAgTWVtb3J5Q2xh
c3NJbmZvIGluZm8obWVtb3J5T2JqZWN0SW5mbywgdGhpcywgV2ViQ29yZU1lbW9yeVR5cGVzOjpE
T00pOwpAQCAtNDE4LDcgKzMzOCw3IEBAIHZvaWQgU2hhZG93Um9vdDo6cmVwb3J0TWVtb3J5VXNh
Z2UoTWVtb3J5T2JqZWN0SW5mbyogbWVtb3J5T2JqZWN0SW5mbykgY29uc3QKICAgICBUcmVlU2Nv
cGU6OnJlcG9ydE1lbW9yeVVzYWdlKG1lbW9yeU9iamVjdEluZm8pOwogICAgIGluZm8uYWRkTWVt
YmVyKG1fcHJldik7CiAgICAgaW5mby5hZGRNZW1iZXIobV9uZXh0KTsKLSAgICBpbmZvLmFkZE1l
bWJlcihtX2Rpc3RyaWJ1dGlvbkRhdGEpOworICAgIGluZm8uYWRkTWVtYmVyKG1fc2NvcGVEaXN0
cmlidXRpb24pOwogfQogCiB9CmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9kb20vU2hhZG93
Um9vdC5oIGIvU291cmNlL1dlYkNvcmUvZG9tL1NoYWRvd1Jvb3QuaAppbmRleCA5NDE0ODhjOTU4
MDVjOTExMDMzN2RmOTBjZGRjYjE2NzBkNWUxMmY4Li40NzlhMWExZmJlNDVjM2U3OGU4OTU3MGE2
NmU4NmI4NTI3Y2VmNTc5IDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViQ29yZS9kb20vU2hhZG93Um9v
dC5oCisrKyBiL1NvdXJjZS9XZWJDb3JlL2RvbS9TaGFkb3dSb290LmgKQEAgLTQxLDcgKzQxLDcg
QEAgY2xhc3MgRG9jdW1lbnQ7CiBjbGFzcyBET01TZWxlY3Rpb247CiBjbGFzcyBFbGVtZW50U2hh
ZG93OwogY2xhc3MgSW5zZXJ0aW9uUG9pbnQ7Ci1jbGFzcyBTaGFkb3dSb290Q29udGVudERpc3Ry
aWJ1dGlvbkRhdGE7CitjbGFzcyBTY29wZUNvbnRlbnREaXN0cmlidXRpb247CiAKIGNsYXNzIFNo
YWRvd1Jvb3QgOiBwdWJsaWMgRG9jdW1lbnRGcmFnbWVudCwgcHVibGljIFRyZWVTY29wZSwgcHVi
bGljIERvdWJseUxpbmtlZExpc3ROb2RlPFNoYWRvd1Jvb3Q+IHsKICAgICBmcmllbmQgY2xhc3Mg
V1RGOjpEb3VibHlMaW5rZWRMaXN0Tm9kZTxTaGFkb3dSb290PjsKQEAgLTgwLDMzICs4MCwxOCBA
QCBwdWJsaWM6CiAgICAgYm9vbCBpc1lvdW5nZXN0KCkgY29uc3QgeyByZXR1cm4gIXlvdW5nZXJT
aGFkb3dSb290KCk7IH0KICAgICBib29sIGlzT2xkZXN0KCkgY29uc3QgeyByZXR1cm4gIW9sZGVy
U2hhZG93Um9vdCgpOyB9CiAKLSAgICBib29sIGhhc0luc2VydGlvblBvaW50KCkgY29uc3Q7Ci0K
ICAgICB2aXJ0dWFsIHZvaWQgYXR0YWNoKCk7CiAKICAgICB2aXJ0dWFsIEluc2VydGlvbk5vdGlm
aWNhdGlvblJlcXVlc3QgaW5zZXJ0ZWRJbnRvKENvbnRhaW5lck5vZGUqKSBPVkVSUklERTsKICAg
ICB2aXJ0dWFsIHZvaWQgcmVtb3ZlZEZyb20oQ29udGFpbmVyTm9kZSopIE9WRVJSSURFOwogCi0g
ICAgYm9vbCBpc1VzZWRGb3JSZW5kZXJpbmcoKSBjb25zdDsKLSAgICBJbnNlcnRpb25Qb2ludCog
YXNzaWduZWRUbygpIGNvbnN0OwotICAgIHZvaWQgc2V0QXNzaWduZWRUbyhJbnNlcnRpb25Qb2lu
dCopOwotCi0gICAgYm9vbCBoYXNTaGFkb3dJbnNlcnRpb25Qb2ludCgpIGNvbnN0OwotICAgIGJv
b2wgaGFzQ29udGVudEVsZW1lbnQoKSBjb25zdDsKLQotICAgIHZvaWQgcmVnaXN0ZXJJbnNlcnRp
b25Qb2ludChJbnNlcnRpb25Qb2ludCopOwotICAgIHZvaWQgdW5yZWdpc3Rlckluc2VydGlvblBv
aW50KEluc2VydGlvblBvaW50Kik7Ci0gICAgCi0gICAgdm9pZCByZWdpc3RlckVsZW1lbnRTaGFk
b3coKTsKLSAgICB2b2lkIHVucmVnaXN0ZXJFbGVtZW50U2hhZG93KCk7Ci0gICAgYm9vbCBoYXNF
bGVtZW50U2hhZG93KCkgY29uc3Q7Ci0gICAgdW5zaWduZWQgY291bnRFbGVtZW50U2hhZG93KCkg
Y29uc3Q7Ci0KLSAgICBjb25zdCBWZWN0b3I8UmVmUHRyPEluc2VydGlvblBvaW50PiA+JiBpbnNl
cnRpb25Qb2ludExpc3QoKTsKLQogICAgIHZpcnR1YWwgdm9pZCByZWdpc3RlclNjb3BlZEhUTUxT
dHlsZUNoaWxkKCkgT1ZFUlJJREU7CiAgICAgdmlydHVhbCB2b2lkIHVucmVnaXN0ZXJTY29wZWRI
VE1MU3R5bGVDaGlsZCgpIE9WRVJSSURFOwogCisgICAgU2NvcGVDb250ZW50RGlzdHJpYnV0aW9u
KiBzY29wZURpc3RyaWJ1dGlvbigpIHsgcmV0dXJuIG1fc2NvcGVEaXN0cmlidXRpb24uZ2V0KCk7
IH0KKyAgICBjb25zdCBTY29wZUNvbnRlbnREaXN0cmlidXRpb24qIHNjb3BlRGlzdHJpYnV0aW9u
KCkgY29uc3QgeyByZXR1cm4gbV9zY29wZURpc3RyaWJ1dGlvbi5nZXQoKTsgfQorICAgIFNjb3Bl
Q29udGVudERpc3RyaWJ1dGlvbiogZW5zdXJlU2NvcGVEaXN0cmlidXRpb24oKTsKKwogICAgIFNo
YWRvd1Jvb3RUeXBlIHR5cGUoKSBjb25zdCB7IHJldHVybiBtX2lzQXV0aG9yU2hhZG93Um9vdCA/
IEF1dGhvclNoYWRvd1Jvb3QgOiBVc2VyQWdlbnRTaGFkb3dSb290OyB9CiAgICAgYm9vbCBpc0Fj
Y2Vzc2libGUoKSBjb25zdCB7IHJldHVybiB0eXBlKCkgPT0gQXV0aG9yU2hhZG93Um9vdDsgfQog
CkBAIC0xMjQsMTMgKzEwOSw5IEBAIHByaXZhdGU6CiAKICAgICB2b2lkIHNldFR5cGUoU2hhZG93
Um9vdFR5cGUgdHlwZSkgeyBtX2lzQXV0aG9yU2hhZG93Um9vdCA9IHR5cGUgPT0gQXV0aG9yU2hh
ZG93Um9vdDsgfQogCi0gICAgU2hhZG93Um9vdENvbnRlbnREaXN0cmlidXRpb25EYXRhKiBkaXN0
cmlidXRpb25EYXRhKCkgeyByZXR1cm4gbV9kaXN0cmlidXRpb25EYXRhLmdldCgpOyB9Ci0gICAg
Y29uc3QgU2hhZG93Um9vdENvbnRlbnREaXN0cmlidXRpb25EYXRhKiBkaXN0cmlidXRpb25EYXRh
KCkgY29uc3QgeyByZXR1cm4gbV9kaXN0cmlidXRpb25EYXRhLmdldCgpOyB9Ci0gICAgU2hhZG93
Um9vdENvbnRlbnREaXN0cmlidXRpb25EYXRhKiBlbnN1cmVEaXN0cmlidXRpb25EYXRhKCk7Ci0K
ICAgICBTaGFkb3dSb290KiBtX3ByZXY7CiAgICAgU2hhZG93Um9vdCogbV9uZXh0OwotICAgIE93
blB0cjxTaGFkb3dSb290Q29udGVudERpc3RyaWJ1dGlvbkRhdGE+IG1fZGlzdHJpYnV0aW9uRGF0
YTsKKyAgICBPd25QdHI8U2NvcGVDb250ZW50RGlzdHJpYnV0aW9uPiBtX3Njb3BlRGlzdHJpYnV0
aW9uOwogICAgIHVuc2lnbmVkIG1fbnVtYmVyT2ZTdHlsZXMgOiAyODsKICAgICB1bnNpZ25lZCBt
X2FwcGx5QXV0aG9yU3R5bGVzIDogMTsKICAgICB1bnNpZ25lZCBtX3Jlc2V0U3R5bGVJbmhlcml0
YW5jZSA6IDE7CkBAIC0xNDgsMTEgKzEyOSw2IEBAIGlubGluZSB2b2lkIFNoYWRvd1Jvb3Q6OnNl
dEhvc3QoRWxlbWVudCogaG9zdCkKICAgICBzZXRQYXJlbnRPckhvc3ROb2RlKGhvc3QpOwogfQog
Ci1pbmxpbmUgYm9vbCBTaGFkb3dSb290Ojppc1VzZWRGb3JSZW5kZXJpbmcoKSBjb25zdAotewot
ICAgIHJldHVybiBpc1lvdW5nZXN0KCkgfHwgYXNzaWduZWRUbygpOwotfQotCiBpbmxpbmUgRWxl
bWVudCogU2hhZG93Um9vdDo6YWN0aXZlRWxlbWVudCgpIGNvbnN0CiB7CiAgICAgaWYgKE5vZGUq
IG5vZGUgPSB0cmVlU2NvcGUoKS0+Zm9jdXNlZE5vZGUoKSkKZGlmZiAtLWdpdCBhL1NvdXJjZS9X
ZWJDb3JlL2h0bWwvc2hhZG93L0NvbnRlbnREaXN0cmlidXRvci5jcHAgYi9Tb3VyY2UvV2ViQ29y
ZS9odG1sL3NoYWRvdy9Db250ZW50RGlzdHJpYnV0b3IuY3BwCmluZGV4IDI1MzdlOTljODUyNmZh
ZjBjYTc3OWI2NjExYzlhZmY2Mjg3NGZiOTcuLjc3YzRkM2IxNmExZDA4MDAyZGY1Y2M1NjVmNTBl
NDU2Y2FkMTA3M2EgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJDb3JlL2h0bWwvc2hhZG93L0NvbnRl
bnREaXN0cmlidXRvci5jcHAKKysrIGIvU291cmNlL1dlYkNvcmUvaHRtbC9zaGFkb3cvQ29udGVu
dERpc3RyaWJ1dG9yLmNwcApAQCAtNzYsNyArNzYsNyBAQCBOb2RlKiBDb250ZW50RGlzdHJpYnV0
aW9uOjpwcmV2aW91c1RvKGNvbnN0IE5vZGUqIG5vZGUpIGNvbnN0CiB9CiAKIAotU2hhZG93Um9v
dENvbnRlbnREaXN0cmlidXRpb25EYXRhOjpTaGFkb3dSb290Q29udGVudERpc3RyaWJ1dGlvbkRh
dGEoKQorU2NvcGVDb250ZW50RGlzdHJpYnV0aW9uOjpTY29wZUNvbnRlbnREaXN0cmlidXRpb24o
KQogICAgIDogbV9pbnNlcnRpb25Qb2ludEFzc2lnbmVkVG8oMCkKICAgICAsIG1fbnVtYmVyT2ZT
aGFkb3dFbGVtZW50Q2hpbGRyZW4oMCkKICAgICAsIG1fbnVtYmVyT2ZDb250ZW50RWxlbWVudENo
aWxkcmVuKDApCkBAIC04NSwxMyArODUsMTMgQEAgU2hhZG93Um9vdENvbnRlbnREaXN0cmlidXRp
b25EYXRhOjpTaGFkb3dSb290Q29udGVudERpc3RyaWJ1dGlvbkRhdGEoKQogewogfQogCi12b2lk
IFNoYWRvd1Jvb3RDb250ZW50RGlzdHJpYnV0aW9uRGF0YTo6aW52YWxpZGF0ZUluc2VydGlvblBv
aW50TGlzdCgpCit2b2lkIFNjb3BlQ29udGVudERpc3RyaWJ1dGlvbjo6aW52YWxpZGF0ZUluc2Vy
dGlvblBvaW50TGlzdCgpCiB7CiAgICAgbV9pbnNlcnRpb25Qb2ludExpc3RJc1ZhbGlkID0gZmFs
c2U7CiAgICAgbV9pbnNlcnRpb25Qb2ludExpc3QuY2xlYXIoKTsKIH0KIAotY29uc3QgVmVjdG9y
PFJlZlB0cjxJbnNlcnRpb25Qb2ludD4gPiYgU2hhZG93Um9vdENvbnRlbnREaXN0cmlidXRpb25E
YXRhOjplbnN1cmVJbnNlcnRpb25Qb2ludExpc3QoU2hhZG93Um9vdCogc2hhZG93Um9vdCkKK2Nv
bnN0IFZlY3RvcjxSZWZQdHI8SW5zZXJ0aW9uUG9pbnQ+ID4mIFNjb3BlQ29udGVudERpc3RyaWJ1
dGlvbjo6ZW5zdXJlSW5zZXJ0aW9uUG9pbnRMaXN0KFNoYWRvd1Jvb3QqIHNoYWRvd1Jvb3QpCiB7
CiAgICAgaWYgKG1faW5zZXJ0aW9uUG9pbnRMaXN0SXNWYWxpZCkKICAgICAgICAgcmV0dXJuIG1f
aW5zZXJ0aW9uUG9pbnRMaXN0OwpAQCAtOTksNyArOTksNyBAQCBjb25zdCBWZWN0b3I8UmVmUHRy
PEluc2VydGlvblBvaW50PiA+JiBTaGFkb3dSb290Q29udGVudERpc3RyaWJ1dGlvbkRhdGE6OmVu
c3VyZQogICAgIG1faW5zZXJ0aW9uUG9pbnRMaXN0SXNWYWxpZCA9IHRydWU7CiAgICAgQVNTRVJU
KG1faW5zZXJ0aW9uUG9pbnRMaXN0LmlzRW1wdHkoKSk7CiAKLSAgICBpZiAoIXNoYWRvd1Jvb3Qt
Pmhhc0luc2VydGlvblBvaW50KCkpCisgICAgaWYgKCFoYXNJbnNlcnRpb25Qb2ludChzaGFkb3dS
b290KSkKICAgICAgICAgcmV0dXJuIG1faW5zZXJ0aW9uUG9pbnRMaXN0OwogCiAgICAgZm9yIChF
bGVtZW50KiBlbGVtZW50ID0gRWxlbWVudFRyYXZlcnNhbDo6Zmlyc3RXaXRoaW4oc2hhZG93Um9v
dCk7IGVsZW1lbnQ7IGVsZW1lbnQgPSBFbGVtZW50VHJhdmVyc2FsOjpuZXh0KGVsZW1lbnQsIHNo
YWRvd1Jvb3QpKSB7CkBAIC0xMTAsNyArMTEwLDcgQEAgY29uc3QgVmVjdG9yPFJlZlB0cjxJbnNl
cnRpb25Qb2ludD4gPiYgU2hhZG93Um9vdENvbnRlbnREaXN0cmlidXRpb25EYXRhOjplbnN1cmUK
ICAgICByZXR1cm4gbV9pbnNlcnRpb25Qb2ludExpc3Q7CiB9CiAKLXZvaWQgU2hhZG93Um9vdENv
bnRlbnREaXN0cmlidXRpb25EYXRhOjpyZWdpdGVySW5zZXJ0aW9uUG9pbnQoU2hhZG93Um9vdCog
c2NvcGUsIEluc2VydGlvblBvaW50KiBwb2ludCkKK3ZvaWQgU2NvcGVDb250ZW50RGlzdHJpYnV0
aW9uOjpyZWdpc3Rlckluc2VydGlvblBvaW50KFNoYWRvd1Jvb3QqIHNjb3BlLCBJbnNlcnRpb25Q
b2ludCogcG9pbnQpCiB7CiAgICAgc3dpdGNoIChwb2ludC0+aW5zZXJ0aW9uUG9pbnRUeXBlKCkp
IHsKICAgICBjYXNlIEluc2VydGlvblBvaW50OjpTaGFkb3dJbnNlcnRpb25Qb2ludDoKQEAgLTEy
NSw3ICsxMjUsNyBAQCB2b2lkIFNoYWRvd1Jvb3RDb250ZW50RGlzdHJpYnV0aW9uRGF0YTo6cmVn
aXRlckluc2VydGlvblBvaW50KFNoYWRvd1Jvb3QqIHNjb3BlLAogICAgIGludmFsaWRhdGVJbnNl
cnRpb25Qb2ludExpc3QoKTsKIH0KIAotdm9pZCBTaGFkb3dSb290Q29udGVudERpc3RyaWJ1dGlv
bkRhdGE6OnVucmVnaXN0ZXJJbnNlcnRpb25Qb2ludChTaGFkb3dSb290KiBzY29wZSwgSW5zZXJ0
aW9uUG9pbnQqIHBvaW50KQordm9pZCBTY29wZUNvbnRlbnREaXN0cmlidXRpb246OnVucmVnaXN0
ZXJJbnNlcnRpb25Qb2ludChTaGFkb3dSb290KiBzY29wZSwgSW5zZXJ0aW9uUG9pbnQqIHBvaW50
KQogewogICAgIHN3aXRjaCAocG9pbnQtPmluc2VydGlvblBvaW50VHlwZSgpKSB7CiAgICAgY2Fz
ZSBJbnNlcnRpb25Qb2ludDo6U2hhZG93SW5zZXJ0aW9uUG9pbnQ6CkBAIC0xNDMsNiArMTQzLDQy
IEBAIHZvaWQgU2hhZG93Um9vdENvbnRlbnREaXN0cmlidXRpb25EYXRhOjp1bnJlZ2lzdGVySW5z
ZXJ0aW9uUG9pbnQoU2hhZG93Um9vdCogc2NvCiAgICAgaW52YWxpZGF0ZUluc2VydGlvblBvaW50
TGlzdCgpOwogfQogCitib29sIFNjb3BlQ29udGVudERpc3RyaWJ1dGlvbjo6aGFzU2hhZG93RWxl
bWVudChjb25zdCBTaGFkb3dSb290KiBob2xkZXIpCit7CisgICAgaWYgKCFob2xkZXItPnNjb3Bl
RGlzdHJpYnV0aW9uKCkpCisgICAgICAgIHJldHVybiBmYWxzZTsKKworICAgIHJldHVybiBob2xk
ZXItPnNjb3BlRGlzdHJpYnV0aW9uKCktPmhhc1NoYWRvd0VsZW1lbnRDaGlsZHJlbigpOworfQor
Citib29sIFNjb3BlQ29udGVudERpc3RyaWJ1dGlvbjo6aGFzQ29udGVudEVsZW1lbnQoY29uc3Qg
U2hhZG93Um9vdCogaG9sZGVyKQoreworICAgIGlmICghaG9sZGVyLT5zY29wZURpc3RyaWJ1dGlv
bigpKQorICAgICAgICByZXR1cm4gZmFsc2U7CisKKyAgICByZXR1cm4gaG9sZGVyLT5zY29wZURp
c3RyaWJ1dGlvbigpLT5oYXNDb250ZW50RWxlbWVudENoaWxkcmVuKCk7Cit9CisKK3Vuc2lnbmVk
IFNjb3BlQ29udGVudERpc3RyaWJ1dGlvbjo6Y291bnRFbGVtZW50U2hhZG93KGNvbnN0IFNoYWRv
d1Jvb3QqIGhvbGRlcikKK3sKKyAgICBpZiAoIWhvbGRlci0+c2NvcGVEaXN0cmlidXRpb24oKSkK
KyAgICAgICAgcmV0dXJuIDA7CisKKyAgICByZXR1cm4gaG9sZGVyLT5zY29wZURpc3RyaWJ1dGlv
bigpLT5udW1iZXJPZkVsZW1lbnRTaGFkb3dDaGlsZHJlbigpOworfQorCitib29sIFNjb3BlQ29u
dGVudERpc3RyaWJ1dGlvbjo6aGFzSW5zZXJ0aW9uUG9pbnQoY29uc3QgU2hhZG93Um9vdCogaG9s
ZGVyKQoreworICAgIHJldHVybiBoYXNTaGFkb3dFbGVtZW50KGhvbGRlcikgfHwgaGFzQ29udGVu
dEVsZW1lbnQoaG9sZGVyKTsKK30KKworSW5zZXJ0aW9uUG9pbnQqIFNjb3BlQ29udGVudERpc3Ry
aWJ1dGlvbjo6YXNzaWduZWRUbyhjb25zdCBTaGFkb3dSb290KiBob2xkZXIpCit7CisgICAgaWYg
KCFob2xkZXItPnNjb3BlRGlzdHJpYnV0aW9uKCkpCisgICAgICAgIHJldHVybiAwOworCisgICAg
cmV0dXJuIGhvbGRlci0+c2NvcGVEaXN0cmlidXRpb24oKS0+aW5zZXJ0aW9uUG9pbnRBc3NpZ25l
ZFRvKCk7Cit9CiAKIENvbnRlbnREaXN0cmlidXRvcjo6Q29udGVudERpc3RyaWJ1dG9yKCkKICAg
ICA6IG1fdmFsaWRpdHkoVW5kZXRlcm1pbmVkKQpAQCAtMTkzLDE5ICsyMjksMjEgQEAgdm9pZCBD
b250ZW50RGlzdHJpYnV0b3I6OmRpc3RyaWJ1dGUoRWxlbWVudCogaG9zdCkKICAgICBmb3IgKFNo
YWRvd1Jvb3QqIHJvb3QgPSBob3N0LT55b3VuZ2VzdFNoYWRvd1Jvb3QoKTsgcm9vdDsgcm9vdCA9
IHJvb3QtPm9sZGVyU2hhZG93Um9vdCgpKSB7CiAgICAgICAgIEhUTUxTaGFkb3dFbGVtZW50KiBm
aXJzdEFjdGl2ZVNoYWRvd0luc2VydGlvblBvaW50ID0gMDsKIAotICAgICAgICBjb25zdCBWZWN0
b3I8UmVmUHRyPEluc2VydGlvblBvaW50PiA+JiBpbnNlcnRpb25Qb2ludHMgPSByb290LT5pbnNl
cnRpb25Qb2ludExpc3QoKTsKLSAgICAgICAgZm9yIChzaXplX3QgaSA9IDA7IGkgPCBpbnNlcnRp
b25Qb2ludHMuc2l6ZSgpOyArK2kpIHsKLSAgICAgICAgICAgIEluc2VydGlvblBvaW50KiBwb2lu
dCA9IGluc2VydGlvblBvaW50c1tpXS5nZXQoKTsKLSAgICAgICAgICAgIGlmICghcG9pbnQtPmlz
QWN0aXZlKCkpCi0gICAgICAgICAgICAgICAgY29udGludWU7Ci0KLSAgICAgICAgICAgIGlmIChp
c0hUTUxTaGFkb3dFbGVtZW50KHBvaW50KSkgewotICAgICAgICAgICAgICAgIGlmICghZmlyc3RB
Y3RpdmVTaGFkb3dJbnNlcnRpb25Qb2ludCkKLSAgICAgICAgICAgICAgICAgICAgZmlyc3RBY3Rp
dmVTaGFkb3dJbnNlcnRpb25Qb2ludCA9IHRvSFRNTFNoYWRvd0VsZW1lbnQocG9pbnQpOwotICAg
ICAgICAgICAgfSBlbHNlIHsKLSAgICAgICAgICAgICAgICBkaXN0cmlidXRlU2VsZWN0aW9uc1Rv
KHBvaW50LCBwb29sLCBkaXN0cmlidXRlZCk7Ci0gICAgICAgICAgICAgICAgaWYgKEVsZW1lbnRT
aGFkb3cqIHNoYWRvdyA9IHBvaW50LT5wYXJlbnROb2RlKCktPmlzRWxlbWVudE5vZGUoKSA/IHRv
RWxlbWVudChwb2ludC0+cGFyZW50Tm9kZSgpKS0+c2hhZG93KCkgOiAwKQotICAgICAgICAgICAg
ICAgICAgICBzaGFkb3ctPmludmFsaWRhdGVEaXN0cmlidXRpb24oKTsKKyAgICAgICAgaWYgKFNj
b3BlQ29udGVudERpc3RyaWJ1dGlvbiogc2NvcGUgPSByb290LT5zY29wZURpc3RyaWJ1dGlvbigp
KSB7CisgICAgICAgICAgICBjb25zdCBWZWN0b3I8UmVmUHRyPEluc2VydGlvblBvaW50PiA+JiBp
bnNlcnRpb25Qb2ludHMgPSBzY29wZS0+ZW5zdXJlSW5zZXJ0aW9uUG9pbnRMaXN0KHJvb3QpOwor
ICAgICAgICAgICAgZm9yIChzaXplX3QgaSA9IDA7IGkgPCBpbnNlcnRpb25Qb2ludHMuc2l6ZSgp
OyArK2kpIHsKKyAgICAgICAgICAgICAgICBJbnNlcnRpb25Qb2ludCogcG9pbnQgPSBpbnNlcnRp
b25Qb2ludHNbaV0uZ2V0KCk7CisgICAgICAgICAgICAgICAgaWYgKCFwb2ludC0+aXNBY3RpdmUo
KSkKKyAgICAgICAgICAgICAgICAgICAgY29udGludWU7CisKKyAgICAgICAgICAgICAgICBpZiAo
aXNIVE1MU2hhZG93RWxlbWVudChwb2ludCkpIHsKKyAgICAgICAgICAgICAgICAgICAgaWYgKCFm
aXJzdEFjdGl2ZVNoYWRvd0luc2VydGlvblBvaW50KQorICAgICAgICAgICAgICAgICAgICAgICAg
Zmlyc3RBY3RpdmVTaGFkb3dJbnNlcnRpb25Qb2ludCA9IHRvSFRNTFNoYWRvd0VsZW1lbnQocG9p
bnQpOworICAgICAgICAgICAgICAgIH0gZWxzZSB7CisgICAgICAgICAgICAgICAgICAgIGRpc3Ry
aWJ1dGVTZWxlY3Rpb25zVG8ocG9pbnQsIHBvb2wsIGRpc3RyaWJ1dGVkKTsKKyAgICAgICAgICAg
ICAgICAgICAgaWYgKEVsZW1lbnRTaGFkb3cqIHNoYWRvdyA9IHBvaW50LT5wYXJlbnROb2RlKCkt
PmlzRWxlbWVudE5vZGUoKSA/IHRvRWxlbWVudChwb2ludC0+cGFyZW50Tm9kZSgpKS0+c2hhZG93
KCkgOiAwKQorICAgICAgICAgICAgICAgICAgICAgICAgc2hhZG93LT5pbnZhbGlkYXRlRGlzdHJp
YnV0aW9uKCk7CisgICAgICAgICAgICAgICAgfQogICAgICAgICAgICAgfQogICAgICAgICB9CiAK
QEAgLTIxOSw3ICsyNTcsNyBAQCB2b2lkIENvbnRlbnREaXN0cmlidXRvcjo6ZGlzdHJpYnV0ZShF
bGVtZW50KiBob3N0KQogICAgICAgICBBU1NFUlQocm9vdCk7CiAgICAgICAgIGlmIChyb290LT5v
bGRlclNoYWRvd1Jvb3QoKSkgewogICAgICAgICAgICAgZGlzdHJpYnV0ZU5vZGVDaGlsZHJlblRv
KHNoYWRvd0VsZW1lbnQsIHJvb3QtPm9sZGVyU2hhZG93Um9vdCgpKTsKLSAgICAgICAgICAgIHJv
b3QtPm9sZGVyU2hhZG93Um9vdCgpLT5zZXRBc3NpZ25lZFRvKHNoYWRvd0VsZW1lbnQpOworICAg
ICAgICAgICAgcm9vdC0+b2xkZXJTaGFkb3dSb290KCktPmVuc3VyZVNjb3BlRGlzdHJpYnV0aW9u
KCktPnNldEluc2VydGlvblBvaW50QXNzaWduZWRUbyhzaGFkb3dFbGVtZW50KTsKICAgICAgICAg
fSBlbHNlIHsKICAgICAgICAgICAgIGRpc3RyaWJ1dGVTZWxlY3Rpb25zVG8oc2hhZG93RWxlbWVu
dCwgcG9vbCwgZGlzdHJpYnV0ZWQpOwogICAgICAgICAgICAgaWYgKEVsZW1lbnRTaGFkb3cqIHNo
YWRvdyA9IHNoYWRvd0VsZW1lbnQtPnBhcmVudE5vZGUoKS0+aXNFbGVtZW50Tm9kZSgpID8gdG9F
bGVtZW50KHNoYWRvd0VsZW1lbnQtPnBhcmVudE5vZGUoKSktPnNoYWRvdygpIDogMCkKQEAgLTIz
NCwxMSArMjcyLDEzIEBAIGJvb2wgQ29udGVudERpc3RyaWJ1dG9yOjppbnZhbGlkYXRlKEVsZW1l
bnQqIGhvc3QpCiAgICAgYm9vbCBuZWVkc1JlYXR0YWNoID0gKG1fdmFsaWRpdHkgPT0gVW5kZXRl
cm1pbmVkKSB8fCAhbV9ub2RlVG9JbnNlcnRpb25Qb2ludC5pc0VtcHR5KCk7CiAKICAgICBmb3Ig
KFNoYWRvd1Jvb3QqIHJvb3QgPSBob3N0LT55b3VuZ2VzdFNoYWRvd1Jvb3QoKTsgcm9vdDsgcm9v
dCA9IHJvb3QtPm9sZGVyU2hhZG93Um9vdCgpKSB7Ci0gICAgICAgIHJvb3QtPnNldEFzc2lnbmVk
VG8oMCk7Ci0gICAgICAgIGNvbnN0IFZlY3RvcjxSZWZQdHI8SW5zZXJ0aW9uUG9pbnQ+ID4mIGlu
c2VydGlvblBvaW50cyA9IHJvb3QtPmluc2VydGlvblBvaW50TGlzdCgpOwotICAgICAgICBmb3Ig
KHNpemVfdCBpID0gMDsgaSA8IGluc2VydGlvblBvaW50cy5zaXplKCk7ICsraSkgewotICAgICAg
ICAgICAgbmVlZHNSZWF0dGFjaCA9IG5lZWRzUmVhdHRhY2ggfHwgdHJ1ZTsKLSAgICAgICAgICAg
IGluc2VydGlvblBvaW50c1tpXS0+Y2xlYXJEaXN0cmlidXRpb24oKTsKKyAgICAgICAgaWYgKFNj
b3BlQ29udGVudERpc3RyaWJ1dGlvbiogc2NvcGUgPSByb290LT5zY29wZURpc3RyaWJ1dGlvbigp
KSB7CisgICAgICAgICAgICBzY29wZS0+c2V0SW5zZXJ0aW9uUG9pbnRBc3NpZ25lZFRvKDApOwor
ICAgICAgICAgICAgY29uc3QgVmVjdG9yPFJlZlB0cjxJbnNlcnRpb25Qb2ludD4gPiYgaW5zZXJ0
aW9uUG9pbnRzID0gc2NvcGUtPmVuc3VyZUluc2VydGlvblBvaW50TGlzdChyb290KTsKKyAgICAg
ICAgICAgIGZvciAoc2l6ZV90IGkgPSAwOyBpIDwgaW5zZXJ0aW9uUG9pbnRzLnNpemUoKTsgKytp
KSB7CisgICAgICAgICAgICAgICAgbmVlZHNSZWF0dGFjaCA9IG5lZWRzUmVhdHRhY2ggfHwgdHJ1
ZTsKKyAgICAgICAgICAgICAgICBpbnNlcnRpb25Qb2ludHNbaV0tPmNsZWFyRGlzdHJpYnV0aW9u
KCk7CisgICAgICAgICAgICB9CiAgICAgICAgIH0KICAgICB9CiAKZGlmZiAtLWdpdCBhL1NvdXJj
ZS9XZWJDb3JlL2h0bWwvc2hhZG93L0NvbnRlbnREaXN0cmlidXRvci5oIGIvU291cmNlL1dlYkNv
cmUvaHRtbC9zaGFkb3cvQ29udGVudERpc3RyaWJ1dG9yLmgKaW5kZXggNzcxMTg5YjYwNDA4Yzdl
MTk3YWNkNDE4ZDE5MWViMDk0ODgwNGY3Zi4uZjk4MzgzN2YxMDY3M2FhZTRmODRiMzJlMDAwN2Qy
ZGI0NjdlYTIzNyAxMDA2NDQKLS0tIGEvU291cmNlL1dlYkNvcmUvaHRtbC9zaGFkb3cvQ29udGVu
dERpc3RyaWJ1dG9yLmgKKysrIGIvU291cmNlL1dlYkNvcmUvaHRtbC9zaGFkb3cvQ29udGVudERp
c3RyaWJ1dG9yLmgKQEAgLTcwLDI2ICs3MCwzNSBAQCBwcml2YXRlOgogICAgIEhhc2hNYXA8Y29u
c3QgTm9kZSosIHNpemVfdD4gbV9pbmRpY2VzOwogfTsKIAotY2xhc3MgU2hhZG93Um9vdENvbnRl
bnREaXN0cmlidXRpb25EYXRhIHsKK2NsYXNzIFNjb3BlQ29udGVudERpc3RyaWJ1dGlvbiB7CiBw
dWJsaWM6Ci0gICAgU2hhZG93Um9vdENvbnRlbnREaXN0cmlidXRpb25EYXRhKCk7CisgICAgU2Nv
cGVDb250ZW50RGlzdHJpYnV0aW9uKCk7CiAKICAgICBJbnNlcnRpb25Qb2ludCogaW5zZXJ0aW9u
UG9pbnRBc3NpZ25lZFRvKCkgY29uc3QgeyByZXR1cm4gbV9pbnNlcnRpb25Qb2ludEFzc2lnbmVk
VG87IH0KICAgICB2b2lkIHNldEluc2VydGlvblBvaW50QXNzaWduZWRUbyhJbnNlcnRpb25Qb2lu
dCogaW5zZXJ0aW9uUG9pbnQpIHsgbV9pbnNlcnRpb25Qb2ludEFzc2lnbmVkVG8gPSBpbnNlcnRp
b25Qb2ludDsgfQogCi0gICAgdm9pZCByZWdpdGVySW5zZXJ0aW9uUG9pbnQoU2hhZG93Um9vdCos
IEluc2VydGlvblBvaW50Kik7CisgICAgdm9pZCByZWdpc3Rlckluc2VydGlvblBvaW50KFNoYWRv
d1Jvb3QqLCBJbnNlcnRpb25Qb2ludCopOwogICAgIHZvaWQgdW5yZWdpc3Rlckluc2VydGlvblBv
aW50KFNoYWRvd1Jvb3QqLCBJbnNlcnRpb25Qb2ludCopOwogICAgIGJvb2wgaGFzU2hhZG93RWxl
bWVudENoaWxkcmVuKCkgY29uc3QgeyByZXR1cm4gbV9udW1iZXJPZlNoYWRvd0VsZW1lbnRDaGls
ZHJlbiA+IDA7IH0KICAgICBib29sIGhhc0NvbnRlbnRFbGVtZW50Q2hpbGRyZW4oKSBjb25zdCB7
IHJldHVybiBtX251bWJlck9mQ29udGVudEVsZW1lbnRDaGlsZHJlbiA+IDA7IH0KIAotICAgIHZv
aWQgaW5jcmVtZW50TnVtYmVyT2ZFbGVtZW50U2hhZG93Q2hpbGRyZW4oKSB7ICsrbV9udW1iZXJP
ZkVsZW1lbnRTaGFkb3dDaGlsZHJlbjsgfQotICAgIHZvaWQgZGVjcmVtZW50TnVtYmVyT2ZFbGVt
ZW50U2hhZG93Q2hpbGRyZW4oKSB7IEFTU0VSVChtX251bWJlck9mRWxlbWVudFNoYWRvd0NoaWxk
cmVuID4gMCk7IC0tbV9udW1iZXJPZkVsZW1lbnRTaGFkb3dDaGlsZHJlbjsgfQorICAgIHZvaWQg
cmVnaXN0ZXJFbGVtZW50U2hhZG93KCkgeyArK21fbnVtYmVyT2ZFbGVtZW50U2hhZG93Q2hpbGRy
ZW47IH0KKyAgICB2b2lkIHVucmVnaXN0ZXJFbGVtZW50U2hhZG93KCkgeyBBU1NFUlQobV9udW1i
ZXJPZkVsZW1lbnRTaGFkb3dDaGlsZHJlbiA+IDApOyAtLW1fbnVtYmVyT2ZFbGVtZW50U2hhZG93
Q2hpbGRyZW47IH0KICAgICB1bnNpZ25lZCBudW1iZXJPZkVsZW1lbnRTaGFkb3dDaGlsZHJlbigp
IGNvbnN0IHsgcmV0dXJuIG1fbnVtYmVyT2ZFbGVtZW50U2hhZG93Q2hpbGRyZW47IH0KICAgICBi
b29sIGhhc0VsZW1lbnRTaGFkb3dDaGlsZHJlbigpIGNvbnN0IHsgcmV0dXJuIG1fbnVtYmVyT2ZF
bGVtZW50U2hhZG93Q2hpbGRyZW4gPiAwOyB9CiAKICAgICB2b2lkIGludmFsaWRhdGVJbnNlcnRp
b25Qb2ludExpc3QoKTsKICAgICBjb25zdCBWZWN0b3I8UmVmUHRyPEluc2VydGlvblBvaW50PiA+
JiBlbnN1cmVJbnNlcnRpb25Qb2ludExpc3QoU2hhZG93Um9vdCopOwogCisgICAgYm9vbCBpc1Vz
ZWRGb3JSZW5kZXJpbmcoKSBjb25zdDsKKworICAgIHN0YXRpYyBib29sIGhhc1NoYWRvd0VsZW1l
bnQoY29uc3QgU2hhZG93Um9vdCopOworICAgIHN0YXRpYyBib29sIGhhc0NvbnRlbnRFbGVtZW50
KGNvbnN0IFNoYWRvd1Jvb3QqKTsKKyAgICBzdGF0aWMgYm9vbCBoYXNJbnNlcnRpb25Qb2ludChj
b25zdCBTaGFkb3dSb290Kik7CisgICAgc3RhdGljIGJvb2wgaGFzRWxlbWVudFNoYWRvdyhjb25z
dCBTaGFkb3dSb290KiBob2xkZXIpIHsgcmV0dXJuIGNvdW50RWxlbWVudFNoYWRvdyhob2xkZXIp
OyB9CisgICAgc3RhdGljIHVuc2lnbmVkIGNvdW50RWxlbWVudFNoYWRvdyhjb25zdCBTaGFkb3dS
b290Kik7CisgICAgc3RhdGljIEluc2VydGlvblBvaW50KiBhc3NpZ25lZFRvKGNvbnN0IFNoYWRv
d1Jvb3QqKTsKKwogcHJpdmF0ZToKICAgICBJbnNlcnRpb25Qb2ludCogbV9pbnNlcnRpb25Qb2lu
dEFzc2lnbmVkVG87CiAgICAgdW5zaWduZWQgbV9udW1iZXJPZlNoYWRvd0VsZW1lbnRDaGlsZHJl
bjsKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJDb3JlL2h0bWwvc2hhZG93L0hUTUxTaGFkb3dFbGVt
ZW50LmNwcCBiL1NvdXJjZS9XZWJDb3JlL2h0bWwvc2hhZG93L0hUTUxTaGFkb3dFbGVtZW50LmNw
cAppbmRleCBkOWUxZjE1NGI5Y2FhMjc2ZDkyMjBiYmM1MjgxNTYzNWNmZjA3OTZlLi4yMmMwNzY1
NmE1NTdlNDdjOTNmZWI1M2FiM2UzNTUyMjA3YWY4ZTljIDEwMDY0NAotLS0gYS9Tb3VyY2UvV2Vi
Q29yZS9odG1sL3NoYWRvdy9IVE1MU2hhZG93RWxlbWVudC5jcHAKKysrIGIvU291cmNlL1dlYkNv
cmUvaHRtbC9zaGFkb3cvSFRNTFNoYWRvd0VsZW1lbnQuY3BwCkBAIC03Myw3ICs3Myw3IEBAIFNo
YWRvd1Jvb3QqIEhUTUxTaGFkb3dFbGVtZW50OjpvbGRlclNoYWRvd1Jvb3QoKQogICAgIHRvU2hh
ZG93Um9vdCh0cmVlU2NvcGUoKS0+cm9vdE5vZGUoKSktPm93bmVyKCktPmVuc3VyZURpc3RyaWJ1
dGlvbkZyb21Eb2N1bWVudCgpOwogCiAgICAgU2hhZG93Um9vdCogb2xkZXIgPSB0b1NoYWRvd1Jv
b3QodHJlZVNjb3BlKCktPnJvb3ROb2RlKCkpLT5vbGRlclNoYWRvd1Jvb3QoKTsKLSAgICBpZiAo
IW9sZGVyIHx8IG9sZGVyLT50eXBlKCkgIT0gU2hhZG93Um9vdDo6QXV0aG9yU2hhZG93Um9vdCB8
fCBvbGRlci0+YXNzaWduZWRUbygpICE9IHRoaXMpCisgICAgaWYgKCFvbGRlciB8fCBvbGRlci0+
dHlwZSgpICE9IFNoYWRvd1Jvb3Q6OkF1dGhvclNoYWRvd1Jvb3QgfHwgU2NvcGVDb250ZW50RGlz
dHJpYnV0aW9uOjphc3NpZ25lZFRvKG9sZGVyKSAhPSB0aGlzKQogICAgICAgICByZXR1cm4gMDsK
IAogICAgIHJldHVybiBvbGRlcjsKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJDb3JlL2h0bWwvc2hh
ZG93L0luc2VydGlvblBvaW50LmNwcCBiL1NvdXJjZS9XZWJDb3JlL2h0bWwvc2hhZG93L0luc2Vy
dGlvblBvaW50LmNwcAppbmRleCAxOWE4YzkxNTdjMmIzYTQ4YTczNTZlMDM0ZGJmNzY0YTc2Yzk3
OWE5Li40NGUzNGI5NTM0NTc0ZWMwNjhkZWVkMmFmZDgwYTY5NjY0N2JhYzU5IDEwMDY0NAotLS0g
YS9Tb3VyY2UvV2ViQ29yZS9odG1sL3NoYWRvdy9JbnNlcnRpb25Qb2ludC5jcHAKKysrIGIvU291
cmNlL1dlYkNvcmUvaHRtbC9zaGFkb3cvSW5zZXJ0aW9uUG9pbnQuY3BwCkBAIC0xMzUsNyArMTM1
LDcgQEAgTm9kZTo6SW5zZXJ0aW9uTm90aWZpY2F0aW9uUmVxdWVzdCBJbnNlcnRpb25Qb2ludDo6
aW5zZXJ0ZWRJbnRvKENvbnRhaW5lck5vZGUqIGkKICAgICAgICAgICAgIHJvb3RPd25lci0+aW52
YWxpZGF0ZURpc3RyaWJ1dGlvbigpOwogICAgICAgICAgICAgaWYgKGlzQWN0aXZlKCkgJiYgIW1f
cmVnaXN0ZXJlZFdpdGhTaGFkb3dSb290ICYmIGluc2VydGlvblBvaW50LT50cmVlU2NvcGUoKS0+
cm9vdE5vZGUoKSA9PSByb290KSB7CiAgICAgICAgICAgICAgICAgbV9yZWdpc3RlcmVkV2l0aFNo
YWRvd1Jvb3QgPSB0cnVlOwotICAgICAgICAgICAgICAgIHJvb3QtPnJlZ2lzdGVySW5zZXJ0aW9u
UG9pbnQodGhpcyk7CisgICAgICAgICAgICAgICAgcm9vdC0+ZW5zdXJlU2NvcGVEaXN0cmlidXRp
b24oKS0+cmVnaXN0ZXJJbnNlcnRpb25Qb2ludChyb290LCB0aGlzKTsKICAgICAgICAgICAgIH0K
ICAgICAgICAgfQogICAgIH0KQEAgLTE2MCw3ICsxNjAsNyBAQCB2b2lkIEluc2VydGlvblBvaW50
OjpyZW1vdmVkRnJvbShDb250YWluZXJOb2RlKiBpbnNlcnRpb25Qb2ludCkKICAgICBpZiAobV9y
ZWdpc3RlcmVkV2l0aFNoYWRvd1Jvb3QgJiYgaW5zZXJ0aW9uUG9pbnQtPnRyZWVTY29wZSgpLT5y
b290Tm9kZSgpID09IHJvb3QpIHsKICAgICAgICAgQVNTRVJUKHJvb3QpOwogICAgICAgICBtX3Jl
Z2lzdGVyZWRXaXRoU2hhZG93Um9vdCA9IGZhbHNlOwotICAgICAgICByb290LT51bnJlZ2lzdGVy
SW5zZXJ0aW9uUG9pbnQodGhpcyk7CisgICAgICAgIHJvb3QtPmVuc3VyZVNjb3BlRGlzdHJpYnV0
aW9uKCktPnVucmVnaXN0ZXJJbnNlcnRpb25Qb2ludChyb290LCB0aGlzKTsKICAgICB9CiAKICAg
ICBIVE1MRWxlbWVudDo6cmVtb3ZlZEZyb20oaW5zZXJ0aW9uUG9pbnQpOwpAQCAtMTg2LDQgKzE4
NiwzOCBAQCB2b2lkIEluc2VydGlvblBvaW50OjpzZXRSZXNldFN0eWxlSW5oZXJpdGFuY2UoYm9v
bCB2YWx1ZSkKICAgICBzZXRCb29sZWFuQXR0cmlidXRlKHJlc2V0X3N0eWxlX2luaGVyaXRhbmNl
QXR0ciwgdmFsdWUpOwogfQogCitib29sIEluc2VydGlvblBvaW50Ojpjb250YWlucyhjb25zdCBO
b2RlKiBub2RlKSBjb25zdAoreworICAgIHJldHVybiBtX2Rpc3RyaWJ1dGlvbi5jb250YWlucyhj
b25zdF9jYXN0PE5vZGUqPihub2RlKSkgfHwgKG5vZGUtPmlzU2hhZG93Um9vdCgpICYmIFNjb3Bl
Q29udGVudERpc3RyaWJ1dGlvbjo6YXNzaWduZWRUbyh0b1NoYWRvd1Jvb3Qobm9kZSkpID09IHRo
aXMpOworfQorCitJbnNlcnRpb25Qb2ludCogcmVzb2x2ZVJlcHJvamVjdGlvbihjb25zdCBOb2Rl
KiBwcm9qZWN0ZWROb2RlKQoreworICAgIEluc2VydGlvblBvaW50KiBpbnNlcnRpb25Qb2ludCA9
IDA7CisgICAgY29uc3QgTm9kZSogY3VycmVudCA9IHByb2plY3RlZE5vZGU7CisKKyAgICB3aGls
ZSAoY3VycmVudCkgeworICAgICAgICBpZiAoRWxlbWVudFNoYWRvdyogc2hhZG93ID0gc2hhZG93
T2ZQYXJlbnRGb3JEaXN0cmlidXRpb24oY3VycmVudCkpIHsKKyAgICAgICAgICAgIHNoYWRvdy0+
ZW5zdXJlRGlzdHJpYnV0aW9uKCk7CisgICAgICAgICAgICBpZiAoSW5zZXJ0aW9uUG9pbnQqIGlu
c2VydGVkVG8gPSBzaGFkb3ctPmRpc3RyaWJ1dG9yKCkuZmluZEluc2VydGlvblBvaW50Rm9yKHBy
b2plY3RlZE5vZGUpKSB7CisgICAgICAgICAgICAgICAgY3VycmVudCA9IGluc2VydGVkVG87Cisg
ICAgICAgICAgICAgICAgaW5zZXJ0aW9uUG9pbnQgPSBpbnNlcnRlZFRvOworICAgICAgICAgICAg
ICAgIGNvbnRpbnVlOworICAgICAgICAgICAgfQorICAgICAgICB9CisKKyAgICAgICAgaWYgKE5v
ZGUqIHBhcmVudCA9IHBhcmVudE5vZGVGb3JEaXN0cmlidXRpb24oY3VycmVudCkpIHsKKyAgICAg
ICAgICAgIGlmIChJbnNlcnRpb25Qb2ludCogaW5zZXJ0ZWRUbyA9IHBhcmVudC0+aXNTaGFkb3dS
b290KCkgPyBTY29wZUNvbnRlbnREaXN0cmlidXRpb246OmFzc2lnbmVkVG8odG9TaGFkb3dSb290
KHBhcmVudCkpIDogMCkgeworICAgICAgICAgICAgICAgIGN1cnJlbnQgPSBpbnNlcnRlZFRvOwor
ICAgICAgICAgICAgICAgIGluc2VydGlvblBvaW50ID0gaW5zZXJ0ZWRUbzsKKyAgICAgICAgICAg
ICAgICBjb250aW51ZTsKKyAgICAgICAgICAgIH0KKyAgICAgICAgfQorCisgICAgICAgIGJyZWFr
OworICAgIH0KKworICAgIHJldHVybiBpbnNlcnRpb25Qb2ludDsKK30KKwogfSAvLyBuYW1lc3Bh
Y2UgV2ViQ29yZQpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYkNvcmUvaHRtbC9zaGFkb3cvSW5zZXJ0
aW9uUG9pbnQuaCBiL1NvdXJjZS9XZWJDb3JlL2h0bWwvc2hhZG93L0luc2VydGlvblBvaW50LmgK
aW5kZXggYWVkYWMxZDBmN2QxMGY2ZDg0ZTEzNjBlODEwMDMzOGE5MGM4MTJlMS4uM2JkNzUyYzg3
M2QxZjFhNTk5ZTQ3OTBiODY1OTRiMDc1ZWVmN2VjZSAxMDA2NDQKLS0tIGEvU291cmNlL1dlYkNv
cmUvaHRtbC9zaGFkb3cvSW5zZXJ0aW9uUG9pbnQuaAorKysgYi9Tb3VyY2UvV2ViQ29yZS9odG1s
L3NoYWRvdy9JbnNlcnRpb25Qb2ludC5oCkBAIC03Miw3ICs3Miw3IEBAIHB1YmxpYzoKICAgICBi
b29sIHNob3VsZFVzZUZhbGxiYWNrRWxlbWVudHMoKSBjb25zdDsKIAogICAgIHNpemVfdCBpbmRl
eE9mKE5vZGUqIG5vZGUpIGNvbnN0IHsgcmV0dXJuIG1fZGlzdHJpYnV0aW9uLmZpbmQobm9kZSk7
IH0KLSAgICBib29sIGNvbnRhaW5zKGNvbnN0IE5vZGUqIG5vZGUpIGNvbnN0IHsgcmV0dXJuIG1f
ZGlzdHJpYnV0aW9uLmNvbnRhaW5zKGNvbnN0X2Nhc3Q8Tm9kZSo+KG5vZGUpKSB8fCAobm9kZS0+
aXNTaGFkb3dSb290KCkgJiYgdG9TaGFkb3dSb290KG5vZGUpLT5hc3NpZ25lZFRvKCkgPT0gdGhp
cyk7IH0KKyAgICBib29sIGNvbnRhaW5zKGNvbnN0IE5vZGUqKSBjb25zdDsKICAgICBzaXplX3Qg
c2l6ZSgpIGNvbnN0IHsgcmV0dXJuIG1fZGlzdHJpYnV0aW9uLnNpemUoKTsgfQogICAgIE5vZGUq
IGF0KHNpemVfdCBpbmRleCkgIGNvbnN0IHsgcmV0dXJuIG1fZGlzdHJpYnV0aW9uLmF0KGluZGV4
KS5nZXQoKTsgfQogICAgIE5vZGUqIGZpcnN0KCkgY29uc3QgeyByZXR1cm4gbV9kaXN0cmlidXRp
b24uaXNFbXB0eSgpID8gMCA6IG1fZGlzdHJpYnV0aW9uLmZpcnN0KCkuZ2V0KCk7IH0KQEAgLTE1
MCwzNCArMTUwLDcgQEAgaW5saW5lIEVsZW1lbnRTaGFkb3cqIHNoYWRvd09mUGFyZW50Rm9yRGlz
dHJpYnV0aW9uKGNvbnN0IE5vZGUqIG5vZGUpCiAgICAgcmV0dXJuIDA7CiB9CiAKLWlubGluZSBJ
bnNlcnRpb25Qb2ludCogcmVzb2x2ZVJlcHJvamVjdGlvbihjb25zdCBOb2RlKiBwcm9qZWN0ZWRO
b2RlKQotewotICAgIEluc2VydGlvblBvaW50KiBpbnNlcnRpb25Qb2ludCA9IDA7Ci0gICAgY29u
c3QgTm9kZSogY3VycmVudCA9IHByb2plY3RlZE5vZGU7Ci0KLSAgICB3aGlsZSAoY3VycmVudCkg
ewotICAgICAgICBpZiAoRWxlbWVudFNoYWRvdyogc2hhZG93ID0gc2hhZG93T2ZQYXJlbnRGb3JE
aXN0cmlidXRpb24oY3VycmVudCkpIHsKLSAgICAgICAgICAgIHNoYWRvdy0+ZW5zdXJlRGlzdHJp
YnV0aW9uKCk7Ci0gICAgICAgICAgICBpZiAoSW5zZXJ0aW9uUG9pbnQqIGluc2VydGVkVG8gPSBz
aGFkb3ctPmRpc3RyaWJ1dG9yKCkuZmluZEluc2VydGlvblBvaW50Rm9yKHByb2plY3RlZE5vZGUp
KSB7Ci0gICAgICAgICAgICAgICAgY3VycmVudCA9IGluc2VydGVkVG87Ci0gICAgICAgICAgICAg
ICAgaW5zZXJ0aW9uUG9pbnQgPSBpbnNlcnRlZFRvOwotICAgICAgICAgICAgICAgIGNvbnRpbnVl
OwotICAgICAgICAgICAgfQotICAgICAgICB9Ci0KLSAgICAgICAgaWYgKE5vZGUqIHBhcmVudCA9
IHBhcmVudE5vZGVGb3JEaXN0cmlidXRpb24oY3VycmVudCkpIHsKLSAgICAgICAgICAgIGlmIChJ
bnNlcnRpb25Qb2ludCogaW5zZXJ0ZWRUbyA9IHBhcmVudC0+aXNTaGFkb3dSb290KCkgPyB0b1No
YWRvd1Jvb3QocGFyZW50KS0+YXNzaWduZWRUbygpIDogMCkgewotICAgICAgICAgICAgICAgIGN1
cnJlbnQgPSBpbnNlcnRlZFRvOwotICAgICAgICAgICAgICAgIGluc2VydGlvblBvaW50ID0gaW5z
ZXJ0ZWRUbzsKLSAgICAgICAgICAgICAgICBjb250aW51ZTsKLSAgICAgICAgICAgIH0KLSAgICAg
ICAgfQotCi0gICAgICAgIGJyZWFrOwotICAgIH0KLQotICAgIHJldHVybiBpbnNlcnRpb25Qb2lu
dDsKLX0KK0luc2VydGlvblBvaW50KiByZXNvbHZlUmVwcm9qZWN0aW9uKGNvbnN0IE5vZGUqKTsK
IAogfSAvLyBuYW1lc3BhY2UgV2ViQ29yZQogCmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS90
ZXN0aW5nL0ludGVybmFscy5jcHAgYi9Tb3VyY2UvV2ViQ29yZS90ZXN0aW5nL0ludGVybmFscy5j
cHAKaW5kZXggOWI0NWZiNjAzNTE2ZTNiMThmNTA0YjdjOWVmMDRmNDQ3OGNlYWZkMS4uZmEyZmVi
ODcxZWY4NjIyMmM2YWJiNDA2NDllMmI0YjY3ZTgxZjdlYSAxMDA2NDQKLS0tIGEvU291cmNlL1dl
YkNvcmUvdGVzdGluZy9JbnRlcm5hbHMuY3BwCisrKyBiL1NvdXJjZS9XZWJDb3JlL3Rlc3Rpbmcv
SW50ZXJuYWxzLmNwcApAQCAtMzMsNiArMzMsNyBAQAogI2luY2x1ZGUgIkNsaWVudFJlY3QuaCIK
ICNpbmNsdWRlICJDbGllbnRSZWN0TGlzdC5oIgogI2luY2x1ZGUgIkNvbXBvc2VkU2hhZG93VHJl
ZVdhbGtlci5oIgorI2luY2x1ZGUgIkNvbnRlbnREaXN0cmlidXRvci5oIgogI2luY2x1ZGUgIkN1
cnNvci5oIgogI2luY2x1ZGUgIkRPTVN0cmluZ0xpc3QuaCIKICNpbmNsdWRlICJET01XaW5kb3cu
aCIKQEAgLTQzNCw3ICs0MzUsNyBAQCBib29sIEludGVybmFsczo6cGF1c2VUcmFuc2l0aW9uQXRU
aW1lT25Qc2V1ZG9FbGVtZW50KGNvbnN0IFN0cmluZyYgcHJvcGVydHksIGRvdQogYm9vbCBJbnRl
cm5hbHM6Omhhc1NoYWRvd0luc2VydGlvblBvaW50KGNvbnN0IE5vZGUqIHJvb3QsIEV4Y2VwdGlv
bkNvZGUmIGVjKSBjb25zdAogewogICAgIGlmIChyb290ICYmIHJvb3QtPmlzU2hhZG93Um9vdCgp
KQotICAgICAgICByZXR1cm4gdG9TaGFkb3dSb290KHJvb3QpLT5oYXNTaGFkb3dJbnNlcnRpb25Q
b2ludCgpOworICAgICAgICByZXR1cm4gU2NvcGVDb250ZW50RGlzdHJpYnV0aW9uOjpoYXNTaGFk
b3dFbGVtZW50KHRvU2hhZG93Um9vdChyb290KSk7CiAKICAgICBlYyA9IElOVkFMSURfQUNDRVNT
X0VSUjsKICAgICByZXR1cm4gMDsKQEAgLTQ0Myw3ICs0NDQsNyBAQCBib29sIEludGVybmFsczo6
aGFzU2hhZG93SW5zZXJ0aW9uUG9pbnQoY29uc3QgTm9kZSogcm9vdCwgRXhjZXB0aW9uQ29kZSYg
ZWMpIGNvbgogYm9vbCBJbnRlcm5hbHM6Omhhc0NvbnRlbnRFbGVtZW50KGNvbnN0IE5vZGUqIHJv
b3QsIEV4Y2VwdGlvbkNvZGUmIGVjKSBjb25zdAogewogICAgIGlmIChyb290ICYmIHJvb3QtPmlz
U2hhZG93Um9vdCgpKQotICAgICAgICByZXR1cm4gdG9TaGFkb3dSb290KHJvb3QpLT5oYXNDb250
ZW50RWxlbWVudCgpOworICAgICAgICByZXR1cm4gU2NvcGVDb250ZW50RGlzdHJpYnV0aW9uOjpo
YXNDb250ZW50RWxlbWVudCh0b1NoYWRvd1Jvb3Qocm9vdCkpOwogCiAgICAgZWMgPSBJTlZBTElE
X0FDQ0VTU19FUlI7CiAgICAgcmV0dXJuIDA7CkBAIC00NTYsNyArNDU3LDcgQEAgc2l6ZV90IElu
dGVybmFsczo6Y291bnRFbGVtZW50U2hhZG93KGNvbnN0IE5vZGUqIHJvb3QsIEV4Y2VwdGlvbkNv
ZGUmIGVjKSBjb25zdAogICAgICAgICByZXR1cm4gMDsKICAgICB9CiAKLSAgICByZXR1cm4gdG9T
aGFkb3dSb290KHJvb3QpLT5jb3VudEVsZW1lbnRTaGFkb3coKTsKKyAgICByZXR1cm4gU2NvcGVD
b250ZW50RGlzdHJpYnV0aW9uOjpjb3VudEVsZW1lbnRTaGFkb3codG9TaGFkb3dSb290KHJvb3Qp
KTsKIH0KIAogYm9vbCBJbnRlcm5hbHM6OmF0dGFjaGVkKE5vZGUqIG5vZGUsIEV4Y2VwdGlvbkNv
ZGUmIGVjKQo=
</data>

          </attachment>
          <attachment
              isobsolete="1"
              ispatch="1"
              isprivate="0"
          >
            <attachid>181635</attachid>
            <date>2013-01-07 21:39:17 -0800</date>
            <delta_ts>2013-01-07 22:16:57 -0800</delta_ts>
            <desc>Patch</desc>
            <filename>bug-106282-20130108143621.patch</filename>
            <type>text/plain</type>
            <size>34526</size>
            <attacher name="Hajime Morrita">morrita</attacher>
            
              <data encoding="base64">U3VidmVyc2lvbiBSZXZpc2lvbjogMTM5MDI0CmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9D
aGFuZ2VMb2cgYi9Tb3VyY2UvV2ViQ29yZS9DaGFuZ2VMb2cKaW5kZXggYjM0ZDVhYmZmMTI1NTZi
MmU1NzU1NWIxNTdjZjQyNzlhMDljMThhMC4uMWExYjAzNzgyZWJhYjY3NGVkZmExODViNzFiNTQ2
Yjc4MDljZWUyMCAxMDA2NDQKLS0tIGEvU291cmNlL1dlYkNvcmUvQ2hhbmdlTG9nCisrKyBiL1Nv
dXJjZS9XZWJDb3JlL0NoYW5nZUxvZwpAQCAtMSwzICsxLDc5IEBACisyMDEzLTAxLTA3ICBIYWpp
bWUgTW9ycml0YSAgPG1vcnJpdGFAZ29vZ2xlLmNvbT4KKworICAgICAgICBbU2hhZG93IERPTV0g
RGlzdHJpYnV0aW9uIHJlbGF0ZWQgY29kZSBvbiBTaGFkb3dSb290IHNob3VsZCBiZSBtaW5pbWl6
ZWQuCisgICAgICAgIGh0dHBzOi8vYnVncy53ZWJraXQub3JnL3Nob3dfYnVnLmNnaT9pZD0xMDYy
ODIKKworICAgICAgICBSZXZpZXdlZCBieSBOT0JPRFkgKE9PUFMhKS4KKworICAgICAgICBTaGFk
b3dSb290IGhhZCBhIGNlcnRhaW4gYW1vdW50IG9mIGxvZ2ljIHdoaWNoIGlzIGRlZGljYXRlZCBm
b3IKKyAgICAgICAgbm9kZSBkaXN0cmlidXRpb24gY29tcHV0YXRpb24uICBUaGVzZSBjb2RlIGlz
IGdvaW5nIHRvIGJlIGNvbXBpbGVkCisgICAgICAgIG91dCAoQnVnIDEwMzMzOSkgYW5kIGJldHRl
ciBiZSBwYXJ0IG9mIHRoZSBub2RlIGRpc3RyaWJ1dGlvbgorICAgICAgICBhbGdvcml0aG0sIHdo
aWNoIGlzIFNjb3BlQ29udGVudERpc3RyaWJ1dGlvbiBjbGFzcy4KKworICAgICAgICBUaGlzIGNo
YW5nZQorCisgICAgICAgIC0gUmVuYW1lcyBTaGFkb3dSb290Q29udGVudERpc3RyaWJ1dGlvbkRh
dGEgdG8KKyAgICAgICAgICBTY29wZUNvbnRlbnREaXN0cmlidXRpb24uICBOZXcgbmFtZSBpcyBj
b25jaXNlIGFuZCBhIGJpdCBtb3JlCisgICAgICAgICAgbWVhbmluZ2Z1bDogSXQgb3ducyBwZXIg
VHJlZVNjb3BlIGRpc3RyaWJ1dGlvbiBzdGF0ZS4KKyAgICAgICAgLSBNb3ZlcyBkaXN0cmlidXRp
b24gcmVsYXRlZCBjb2RlIGZyb20gU2hhZG93Um9vdCB0byBTY29wZUNvbnRlbnREaXN0cmlidXRp
b24KKworICAgICAgICBObyBuZXcgdGVzdHMuIFJlZmFjdG9yaW5nLgorCisgICAgICAgICogV2Vi
Q29yZS5leHAuaW46CisgICAgICAgICogY3NzL1N0eWxlU2NvcGVSZXNvbHZlci5jcHA6CisgICAg
ICAgIChXZWJDb3JlOjpTdHlsZVNjb3BlUmVzb2x2ZXI6OnN0eWxlU2hhcmluZ0NhbmRpZGF0ZU1h
dGNoZXNIb3N0UnVsZXMpOgorICAgICAgICAoV2ViQ29yZTo6U3R5bGVTY29wZVJlc29sdmVyOjpt
YXRjaEhvc3RSdWxlcyk6CisgICAgICAgICogZG9tL0NvbXBvc2VkU2hhZG93VHJlZVdhbGtlci5j
cHA6CisgICAgICAgIChXZWJDb3JlOjpub2RlQ2FuQmVEaXN0cmlidXRlZCk6CisgICAgICAgIChX
ZWJDb3JlOjpDb21wb3NlZFNoYWRvd1RyZWVXYWxrZXI6OnRyYXZlcnNlQmFja1RvWW91bmdlclNo
YWRvd1Jvb3QpOgorICAgICAgICAoV2ViQ29yZTo6Q29tcG9zZWRTaGFkb3dUcmVlV2Fsa2VyOjp0
cmF2ZXJzZVBhcmVudEJhY2tUb1lvdW5nZXJTaGFkb3dSb290T3JIb3N0KToKKyAgICAgICAgKFdl
YkNvcmU6OkFuY2VzdG9yQ2hhaW5XYWxrZXI6OnBhcmVudCk6CisgICAgICAgICogZG9tL0VsZW1l
bnRTaGFkb3cuY3BwOgorICAgICAgICAoV2ViQ29yZTo6RWxlbWVudFNoYWRvdzo6Y29sbGVjdFNl
bGVjdEZlYXR1cmVTZXRGcm9tKToKKyAgICAgICAgKiBkb20vU2hhZG93Um9vdC5jcHA6CisgICAg
ICAgIChXZWJDb3JlOjpTaGFkb3dSb290OjppbnNlcnRlZEludG8pOgorICAgICAgICAoV2ViQ29y
ZTo6U2hhZG93Um9vdDo6cmVtb3ZlZEZyb20pOgorICAgICAgICAoV2ViQ29yZTo6U2hhZG93Um9v
dDo6ZW5zdXJlU2NvcGVEaXN0cmlidXRpb24pOgorICAgICAgICAoV2ViQ29yZTo6U2hhZG93Um9v
dDo6cmVwb3J0TWVtb3J5VXNhZ2UpOgorICAgICAgICAqIGRvbS9TaGFkb3dSb290Lmg6CisgICAg
ICAgIChXZWJDb3JlKToKKyAgICAgICAgKFNoYWRvd1Jvb3QpOgorICAgICAgICAoV2ViQ29yZTo6
U2hhZG93Um9vdDo6c2NvcGVEaXN0cmlidXRpb24pOgorICAgICAgICAqIGh0bWwvc2hhZG93L0Nv
bnRlbnREaXN0cmlidXRvci5jcHA6CisgICAgICAgIChXZWJDb3JlOjpTY29wZUNvbnRlbnREaXN0
cmlidXRpb246OlNjb3BlQ29udGVudERpc3RyaWJ1dGlvbik6CisgICAgICAgIChXZWJDb3JlOjpT
Y29wZUNvbnRlbnREaXN0cmlidXRpb246OmludmFsaWRhdGVJbnNlcnRpb25Qb2ludExpc3QpOgor
ICAgICAgICAoV2ViQ29yZTo6U2NvcGVDb250ZW50RGlzdHJpYnV0aW9uOjplbnN1cmVJbnNlcnRp
b25Qb2ludExpc3QpOgorICAgICAgICAoV2ViQ29yZTo6U2NvcGVDb250ZW50RGlzdHJpYnV0aW9u
OjpyZWdpc3Rlckluc2VydGlvblBvaW50KToKKyAgICAgICAgKFdlYkNvcmU6OlNjb3BlQ29udGVu
dERpc3RyaWJ1dGlvbjo6dW5yZWdpc3Rlckluc2VydGlvblBvaW50KToKKyAgICAgICAgKFdlYkNv
cmU6OlNjb3BlQ29udGVudERpc3RyaWJ1dGlvbjo6aGFzU2hhZG93RWxlbWVudCk6CisgICAgICAg
IChXZWJDb3JlKToKKyAgICAgICAgKFdlYkNvcmU6OlNjb3BlQ29udGVudERpc3RyaWJ1dGlvbjo6
aGFzQ29udGVudEVsZW1lbnQpOgorICAgICAgICAoV2ViQ29yZTo6U2NvcGVDb250ZW50RGlzdHJp
YnV0aW9uOjpjb3VudEVsZW1lbnRTaGFkb3cpOgorICAgICAgICAoV2ViQ29yZTo6U2NvcGVDb250
ZW50RGlzdHJpYnV0aW9uOjpoYXNJbnNlcnRpb25Qb2ludCk6CisgICAgICAgIChXZWJDb3JlOjpT
Y29wZUNvbnRlbnREaXN0cmlidXRpb246OmFzc2lnbmVkVG8pOgorICAgICAgICAoV2ViQ29yZTo6
Q29udGVudERpc3RyaWJ1dG9yOjpkaXN0cmlidXRlKToKKyAgICAgICAgKFdlYkNvcmU6OkNvbnRl
bnREaXN0cmlidXRvcjo6aW52YWxpZGF0ZSk6CisgICAgICAgICogaHRtbC9zaGFkb3cvQ29udGVu
dERpc3RyaWJ1dG9yLmg6CisgICAgICAgIChTY29wZUNvbnRlbnREaXN0cmlidXRpb24pOgorICAg
ICAgICAoV2ViQ29yZTo6U2NvcGVDb250ZW50RGlzdHJpYnV0aW9uOjpyZWdpc3RlckVsZW1lbnRT
aGFkb3cpOgorICAgICAgICAoV2ViQ29yZTo6U2NvcGVDb250ZW50RGlzdHJpYnV0aW9uOjp1bnJl
Z2lzdGVyRWxlbWVudFNoYWRvdyk6CisgICAgICAgIChXZWJDb3JlOjpTY29wZUNvbnRlbnREaXN0
cmlidXRpb246Omhhc0VsZW1lbnRTaGFkb3cpOgorICAgICAgICAqIGh0bWwvc2hhZG93L0hUTUxT
aGFkb3dFbGVtZW50LmNwcDoKKyAgICAgICAgKFdlYkNvcmU6OkhUTUxTaGFkb3dFbGVtZW50Ojpv
bGRlclNoYWRvd1Jvb3QpOgorICAgICAgICAqIGh0bWwvc2hhZG93L0luc2VydGlvblBvaW50LmNw
cDoKKyAgICAgICAgKFdlYkNvcmU6Okluc2VydGlvblBvaW50OjppbnNlcnRlZEludG8pOgorICAg
ICAgICAoV2ViQ29yZTo6SW5zZXJ0aW9uUG9pbnQ6OnJlbW92ZWRGcm9tKToKKyAgICAgICAgKFdl
YkNvcmU6Okluc2VydGlvblBvaW50Ojpjb250YWlucyk6CisgICAgICAgIChXZWJDb3JlKToKKyAg
ICAgICAgKFdlYkNvcmU6OnJlc29sdmVSZXByb2plY3Rpb24pOgorICAgICAgICAqIGh0bWwvc2hh
ZG93L0luc2VydGlvblBvaW50Lmg6CisgICAgICAgIChJbnNlcnRpb25Qb2ludCk6CisgICAgICAg
IChXZWJDb3JlKToKKyAgICAgICAgKiB0ZXN0aW5nL0ludGVybmFscy5jcHA6CisgICAgICAgIChX
ZWJDb3JlOjpJbnRlcm5hbHM6Omhhc1NoYWRvd0luc2VydGlvblBvaW50KToKKyAgICAgICAgKFdl
YkNvcmU6OkludGVybmFsczo6aGFzQ29udGVudEVsZW1lbnQpOgorICAgICAgICAoV2ViQ29yZTo6
SW50ZXJuYWxzOjpjb3VudEVsZW1lbnRTaGFkb3cpOgorCiAyMDEzLTAxLTA3ICBYaWFuemh1IFdh
bmcgIDx3YW5neGlhbnpodUBjaHJvbWl1bS5vcmc+CiAKICAgICAgICAgQWRkIGEgc2V0dGluZyB0
byBlbmFibGUgY29tcG9zaXRlZCBzY3JvbGxpbmcgZm9yIGZyYW1lcwpkaWZmIC0tZ2l0IGEvU291
cmNlL1dlYkNvcmUvV2ViQ29yZS5leHAuaW4gYi9Tb3VyY2UvV2ViQ29yZS9XZWJDb3JlLmV4cC5p
bgppbmRleCBiZDNmZTg3ZDNmMTZmMDA0NjAwNzM3YmExZTllYjY5ZDhiMzRhMGJiLi44NmU5NTRj
YmQzY2YzYmMwMWQ1ZDJiOTMwN2Q4N2MzOTQ5OTM2ODhiIDEwMDY0NAotLS0gYS9Tb3VyY2UvV2Vi
Q29yZS9XZWJDb3JlLmV4cC5pbgorKysgYi9Tb3VyY2UvV2ViQ29yZS9XZWJDb3JlLmV4cC5pbgpA
QCAtODIsOSArODIsNiBAQCBfX1pON1dlYkNvcmUxMFNjcm9sbFZpZXcyMXNldERlbGVnYXRlc1Nj
cm9sbGluZ0ViCiBfX1pON1dlYkNvcmUxMFNjcm9sbFZpZXcyM3NldFNjcm9sbGJhcnNTdXBwcmVz
c2VkRWJiCiBfX1pON1dlYkNvcmUxMFNjcm9sbFZpZXcyNHdpbmRvd1Jlc2l6ZXJSZWN0Q2hhbmdl
ZEV2CiBfX1pON1dlYkNvcmUxMFNjcm9sbFZpZXc4YWRkQ2hpbGRFTjNXVEYxMFBhc3NSZWZQdHJJ
TlNfNldpZGdldEVFRQotX19aTks3V2ViQ29yZTEwU2hhZG93Um9vdDE3aGFzQ29udGVudEVsZW1l
bnRFdgotX19aTks3V2ViQ29yZTEwU2hhZG93Um9vdDE4Y291bnRFbGVtZW50U2hhZG93RXYKLV9f
Wk5LN1dlYkNvcmUxMFNoYWRvd1Jvb3QyM2hhc1NoYWRvd0luc2VydGlvblBvaW50RXYKIF9fWk5L
N1dlYkNvcmUxNFNjcm9sbGFibGVBcmVhMTdyZXBvcnRNZW1vcnlVc2FnZUVQTjNXVEYxNk1lbW9y
eU9iamVjdEluZm9FCiBfX1pON1dlYkNvcmUxMFNoYWRvd1Jvb3Q2Y3JlYXRlRVBOU183RWxlbWVu
dEVSaQogX19aTjdXZWJDb3JlMTBkZWxldGVGaWxlRVJLTjNXVEY2U3RyaW5nRQpkaWZmIC0tZ2l0
IGEvU291cmNlL1dlYkNvcmUvY3NzL1N0eWxlU2NvcGVSZXNvbHZlci5jcHAgYi9Tb3VyY2UvV2Vi
Q29yZS9jc3MvU3R5bGVTY29wZVJlc29sdmVyLmNwcAppbmRleCAxYzM5MTE3MjgwNzJjNjU4ZTll
MjlmODYyNjBmYjY4OWFmMDk5NmNkLi5mZGViZGE0Y2M4MDYwYmIxZmY5M2NlYWNlMjM5YTYyYWM1
ZWQ0ZmE3IDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViQ29yZS9jc3MvU3R5bGVTY29wZVJlc29sdmVy
LmNwcAorKysgYi9Tb3VyY2UvV2ViQ29yZS9jc3MvU3R5bGVTY29wZVJlc29sdmVyLmNwcApAQCAt
MzEsNiArMzEsNyBAQAogCiAjaW5jbHVkZSAiQ1NTU3R5bGVSdWxlLmgiCiAjaW5jbHVkZSAiQ1NT
U3R5bGVTaGVldC5oIgorI2luY2x1ZGUgIkNvbnRlbnREaXN0cmlidXRvci5oIgogI2luY2x1ZGUg
IkNvbnRleHRGZWF0dXJlcy5oIgogI2luY2x1ZGUgIkVsZW1lbnRTaGFkb3cuaCIKICNpbmNsdWRl
ICJIVE1MTmFtZXMuaCIKQEAgLTIxMCw3ICsyMTEsNyBAQCBib29sIFN0eWxlU2NvcGVSZXNvbHZl
cjo6c3R5bGVTaGFyaW5nQ2FuZGlkYXRlTWF0Y2hlc0hvc3RSdWxlcyhjb25zdCBFbGVtZW50KiBl
bAogICAgICAgICBpZiAoYXRIb3N0UnVsZVNldEZvcihzaGFkb3dSb290KSkKICAgICAgICAgICAg
IHJldHVybiB0cnVlOwogCi0gICAgICAgIGlmICghc2hhZG93Um9vdC0+aGFzU2hhZG93SW5zZXJ0
aW9uUG9pbnQoKSkKKyAgICAgICAgaWYgKCFTY29wZUNvbnRlbnREaXN0cmlidXRpb246Omhhc1No
YWRvd0VsZW1lbnQoc2hhZG93Um9vdCkpCiAgICAgICAgICAgICBicmVhazsKICAgICB9CiAgICAg
cmV0dXJuIGZhbHNlOwpAQCAtMjMyLDcgKzIzMyw3IEBAIHZvaWQgU3R5bGVTY29wZVJlc29sdmVy
OjptYXRjaEhvc3RSdWxlcyhjb25zdCBFbGVtZW50KiBlbGVtZW50LCBWZWN0b3I8UnVsZVNldCo+
CiAgICAgZm9yIChTaGFkb3dSb290KiBzaGFkb3dSb290ID0gc2hhZG93LT55b3VuZ2VzdFNoYWRv
d1Jvb3QoKTsgc2hhZG93Um9vdDsgc2hhZG93Um9vdCA9IHNoYWRvd1Jvb3QtPm9sZGVyU2hhZG93
Um9vdCgpKSB7IAogICAgICAgICBpZiAoUnVsZVNldCogcnVsZVNldCA9IGF0SG9zdFJ1bGVTZXRG
b3Ioc2hhZG93Um9vdCkpCiAgICAgICAgICAgICBtYXRjaGVkUnVsZXMuYXBwZW5kKHJ1bGVTZXQp
OwotICAgICAgICBpZiAoIXNoYWRvd1Jvb3QtPmhhc1NoYWRvd0luc2VydGlvblBvaW50KCkpCisg
ICAgICAgIGlmICghU2NvcGVDb250ZW50RGlzdHJpYnV0aW9uOjpoYXNTaGFkb3dFbGVtZW50KHNo
YWRvd1Jvb3QpKQogICAgICAgICAgICAgYnJlYWs7CiAgICAgfQogfQpkaWZmIC0tZ2l0IGEvU291
cmNlL1dlYkNvcmUvZG9tL0NvbXBvc2VkU2hhZG93VHJlZVdhbGtlci5jcHAgYi9Tb3VyY2UvV2Vi
Q29yZS9kb20vQ29tcG9zZWRTaGFkb3dUcmVlV2Fsa2VyLmNwcAppbmRleCAxZDAzYzU0N2UwYjQ5
ODdlMjY3MjJiOTM5OWQ2ZjViMGQ1ZmQyYjA4Li42NWIxMzNjZmIyMjU4ZWVmMjI3OWFlNWFhNmQ1
ODdiZDM5NmVlY2U2IDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViQ29yZS9kb20vQ29tcG9zZWRTaGFk
b3dUcmVlV2Fsa2VyLmNwcAorKysgYi9Tb3VyY2UvV2ViQ29yZS9kb20vQ29tcG9zZWRTaGFkb3dU
cmVlV2Fsa2VyLmNwcApAQCAtNjMsNyArNjMsNyBAQCBzdGF0aWMgaW5saW5lIGJvb2wgbm9kZUNh
bkJlRGlzdHJpYnV0ZWQoY29uc3QgTm9kZSogbm9kZSkKICAgICAgICAgcmV0dXJuIGZhbHNlOwog
CiAgICAgaWYgKFNoYWRvd1Jvb3QqIHNoYWRvd1Jvb3QgPSBwYXJlbnQtPmlzU2hhZG93Um9vdCgp
ID8gdG9TaGFkb3dSb290KHBhcmVudCkgOiAwKQotICAgICAgICByZXR1cm4gc2hhZG93Um9vdC0+
YXNzaWduZWRUbygpOworICAgICAgICByZXR1cm4gU2NvcGVDb250ZW50RGlzdHJpYnV0aW9uOjph
c3NpZ25lZFRvKHNoYWRvd1Jvb3QpOwogCiAgICAgaWYgKHBhcmVudC0+aXNFbGVtZW50Tm9kZSgp
ICYmIHRvRWxlbWVudChwYXJlbnQpLT5zaGFkb3coKSkKICAgICAgICAgcmV0dXJuIHRydWU7CkBA
IC0xOTgsNyArMTk4LDcgQEAgTm9kZSogQ29tcG9zZWRTaGFkb3dUcmVlV2Fsa2VyOjp0cmF2ZXJz
ZUJhY2tUb1lvdW5nZXJTaGFkb3dSb290KGNvbnN0IE5vZGUqIG5vZGUKICAgICBpZiAobm9kZS0+
cGFyZW50Tm9kZSgpICYmIG5vZGUtPnBhcmVudE5vZGUoKS0+aXNTaGFkb3dSb290KCkpIHsKICAg
ICAgICAgU2hhZG93Um9vdCogcGFyZW50U2hhZG93Um9vdCA9IHRvU2hhZG93Um9vdChub2RlLT5w
YXJlbnROb2RlKCkpOwogICAgICAgICBpZiAoIXBhcmVudFNoYWRvd1Jvb3QtPmlzWW91bmdlc3Qo
KSkgewotICAgICAgICAgICAgSW5zZXJ0aW9uUG9pbnQqIGFzc2lnbmVkSW5zZXJ0aW9uUG9pbnQg
PSBwYXJlbnRTaGFkb3dSb290LT5hc3NpZ25lZFRvKCk7CisgICAgICAgICAgICBJbnNlcnRpb25Q
b2ludCogYXNzaWduZWRJbnNlcnRpb25Qb2ludCA9IFNjb3BlQ29udGVudERpc3RyaWJ1dGlvbjo6
YXNzaWduZWRUbyhwYXJlbnRTaGFkb3dSb290KTsKICAgICAgICAgICAgIEFTU0VSVChhc3NpZ25l
ZEluc2VydGlvblBvaW50KTsKICAgICAgICAgICAgIHJldHVybiB0cmF2ZXJzZVNpYmxpbmdJbkN1
cnJlbnRUcmVlKGFzc2lnbmVkSW5zZXJ0aW9uUG9pbnQsIGRpcmVjdGlvbik7CiAgICAgICAgIH0K
QEAgLTI2Nyw3ICsyNjcsNyBAQCBpbmxpbmUgTm9kZSogQ29tcG9zZWRTaGFkb3dUcmVlV2Fsa2Vy
Ojp0cmF2ZXJzZVBhcmVudEluQ3VycmVudFRyZWUoY29uc3QgTm9kZSogbgogTm9kZSogQ29tcG9z
ZWRTaGFkb3dUcmVlV2Fsa2VyOjp0cmF2ZXJzZVBhcmVudEJhY2tUb1lvdW5nZXJTaGFkb3dSb290
T3JIb3N0KGNvbnN0IFNoYWRvd1Jvb3QqIHNoYWRvd1Jvb3QsIFBhcmVudFRyYXZlcnNhbERldGFp
bHMqIGRldGFpbHMpIGNvbnN0CiB7CiAgICAgQVNTRVJUKHNoYWRvd1Jvb3QpOwotICAgIEFTU0VS
VCghc2hhZG93Um9vdC0+YXNzaWduZWRUbygpKTsKKyAgICBBU1NFUlQoIVNjb3BlQ29udGVudERp
c3RyaWJ1dGlvbjo6YXNzaWduZWRUbyhzaGFkb3dSb290KSk7CiAKICAgICBpZiAoc2hhZG93Um9v
dC0+aXNZb3VuZ2VzdCgpKSB7CiAgICAgICAgIGlmIChjYW5Dcm9zc1VwcGVyQm91bmRhcnkoKSkg
ewpAQCAtMzQzLDE0ICszNDMsMTQgQEAgdm9pZCBBbmNlc3RvckNoYWluV2Fsa2VyOjpwYXJlbnQo
KQogICAgIH0KICAgICBpZiAoIW1fbm9kZS0+aXNTaGFkb3dSb290KCkpIHsKICAgICAgICAgbV9u
b2RlID0gbV9ub2RlLT5wYXJlbnROb2RlKCk7Ci0gICAgICAgIGlmICghKG1fbm9kZSAmJiBtX25v
ZGUtPmlzU2hhZG93Um9vdCgpICYmIHRvU2hhZG93Um9vdChtX25vZGUpLT5hc3NpZ25lZFRvKCkp
KQorICAgICAgICBpZiAoIShtX25vZGUgJiYgbV9ub2RlLT5pc1NoYWRvd1Jvb3QoKSAmJiBTY29w
ZUNvbnRlbnREaXN0cmlidXRpb246OmFzc2lnbmVkVG8odG9TaGFkb3dSb290KG1fbm9kZSkpKSkK
ICAgICAgICAgICAgIG1fZGlzdHJpYnV0ZWROb2RlID0gbV9ub2RlOwogICAgICAgICBtX2lzQ3Jv
c3NpbmdJbnNlcnRpb25Qb2ludCA9IGZhbHNlOwogICAgICAgICByZXR1cm47CiAgICAgfQogCiAg
ICAgY29uc3QgU2hhZG93Um9vdCogc2hhZG93Um9vdCA9IHRvU2hhZG93Um9vdChtX25vZGUpOwot
ICAgIGlmIChJbnNlcnRpb25Qb2ludCogaW5zZXJ0aW9uUG9pbnQgPSBzaGFkb3dSb290LT5hc3Np
Z25lZFRvKCkpIHsKKyAgICBpZiAoSW5zZXJ0aW9uUG9pbnQqIGluc2VydGlvblBvaW50ID0gU2Nv
cGVDb250ZW50RGlzdHJpYnV0aW9uOjphc3NpZ25lZFRvKHNoYWRvd1Jvb3QpKSB7CiAgICAgICAg
IG1fbm9kZSA9IGluc2VydGlvblBvaW50OwogICAgICAgICBtX2lzQ3Jvc3NpbmdJbnNlcnRpb25Q
b2ludCA9IHRydWU7CiAgICAgICAgIHJldHVybjsKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJDb3Jl
L2RvbS9FbGVtZW50U2hhZG93LmNwcCBiL1NvdXJjZS9XZWJDb3JlL2RvbS9FbGVtZW50U2hhZG93
LmNwcAppbmRleCAxNDkzYWY3OTI1MzJlMjdjYmIyZjg0MmE1NGNiNDZjYTQ0YzRmMmZiLi5kOTYy
YzcwYmRjZDhiOTRkNjk1Y2U0N2NlNmU3MjNiNTJjNzExMGNkIDEwMDY0NAotLS0gYS9Tb3VyY2Uv
V2ViQ29yZS9kb20vRWxlbWVudFNoYWRvdy5jcHAKKysrIGIvU291cmNlL1dlYkNvcmUvZG9tL0Vs
ZW1lbnRTaGFkb3cuY3BwCkBAIC0yMzMsNyArMjMzLDcgQEAgdm9pZCBFbGVtZW50U2hhZG93Ojpl
bnN1cmVTZWxlY3RGZWF0dXJlU2V0Q29sbGVjdGVkKCkKIAogdm9pZCBFbGVtZW50U2hhZG93Ojpj
b2xsZWN0U2VsZWN0RmVhdHVyZVNldEZyb20oU2hhZG93Um9vdCogcm9vdCkKIHsKLSAgICBpZiAo
cm9vdC0+aGFzRWxlbWVudFNoYWRvdygpKSB7CisgICAgaWYgKFNjb3BlQ29udGVudERpc3RyaWJ1
dGlvbjo6aGFzRWxlbWVudFNoYWRvdyhyb290KSkgewogICAgICAgICBmb3IgKEVsZW1lbnQqIGVs
ZW1lbnQgPSBFbGVtZW50VHJhdmVyc2FsOjpmaXJzdFdpdGhpbihyb290KTsgZWxlbWVudDsgZWxl
bWVudCA9IEVsZW1lbnRUcmF2ZXJzYWw6Om5leHQoZWxlbWVudCkpIHsKICAgICAgICAgICAgIGlm
IChFbGVtZW50U2hhZG93KiBlbGVtZW50U2hhZG93ID0gZWxlbWVudC0+c2hhZG93KCkpIHsKICAg
ICAgICAgICAgICAgICBlbGVtZW50U2hhZG93LT5lbnN1cmVTZWxlY3RGZWF0dXJlU2V0Q29sbGVj
dGVkKCk7CkBAIC0yNDIsNyArMjQyLDcgQEAgdm9pZCBFbGVtZW50U2hhZG93Ojpjb2xsZWN0U2Vs
ZWN0RmVhdHVyZVNldEZyb20oU2hhZG93Um9vdCogcm9vdCkKICAgICAgICAgfQogICAgIH0KIAot
ICAgIGlmIChyb290LT5oYXNDb250ZW50RWxlbWVudCgpKSB7CisgICAgaWYgKFNjb3BlQ29udGVu
dERpc3RyaWJ1dGlvbjo6aGFzQ29udGVudEVsZW1lbnQocm9vdCkpIHsKICAgICAgICAgZm9yIChF
bGVtZW50KiBlbGVtZW50ID0gRWxlbWVudFRyYXZlcnNhbDo6Zmlyc3RXaXRoaW4ocm9vdCk7IGVs
ZW1lbnQ7IGVsZW1lbnQgPSBFbGVtZW50VHJhdmVyc2FsOjpuZXh0KGVsZW1lbnQpKSB7CiAgICAg
ICAgICAgICBpZiAoaXNIVE1MQ29udGVudEVsZW1lbnQoZWxlbWVudCkpIHsKICAgICAgICAgICAg
ICAgICBjb25zdCBDU1NTZWxlY3Rvckxpc3QmIGxpc3QgPSB0b0hUTUxDb250ZW50RWxlbWVudChl
bGVtZW50KS0+c2VsZWN0b3JMaXN0KCk7CmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9kb20v
U2hhZG93Um9vdC5jcHAgYi9Tb3VyY2UvV2ViQ29yZS9kb20vU2hhZG93Um9vdC5jcHAKaW5kZXgg
NjE5YTY0NmIwMjlmMDA0YjdhNzY3MDM2Mzk3ODU0NzRhNzk5ZTMwOS4uNjMzZTRjNDdkY2RmMTA2
M2VlMDJiMjY0YzU4MWE0MWQ3MzY2ZDk2OCAxMDA2NDQKLS0tIGEvU291cmNlL1dlYkNvcmUvZG9t
L1NoYWRvd1Jvb3QuY3BwCisrKyBiL1NvdXJjZS9XZWJDb3JlL2RvbS9TaGFkb3dSb290LmNwcApA
QCAtMjI2LDExICsyMjYsNiBAQCBFbGVtZW50U2hhZG93KiBTaGFkb3dSb290Ojpvd25lcigpIGNv
bnN0CiAgICAgcmV0dXJuIDA7CiB9CiAKLWJvb2wgU2hhZG93Um9vdDo6aGFzSW5zZXJ0aW9uUG9p
bnQoKSBjb25zdAotewotICAgIHJldHVybiBoYXNTaGFkb3dJbnNlcnRpb25Qb2ludCgpIHx8IGhh
c0NvbnRlbnRFbGVtZW50KCk7Ci19Ci0KIGJvb2wgU2hhZG93Um9vdDo6YXBwbHlBdXRob3JTdHls
ZXMoKSBjb25zdAogewogICAgIHJldHVybiBtX2FwcGx5QXV0aG9yU3R5bGVzOwpAQCAtMjg0LDcg
KzI3OSw3IEBAIE5vZGU6Okluc2VydGlvbk5vdGlmaWNhdGlvblJlcXVlc3QgU2hhZG93Um9vdDo6
aW5zZXJ0ZWRJbnRvKENvbnRhaW5lck5vZGUqIGluc2VyCiAgICAgICAgIHJldHVybiBJbnNlcnRp
b25Eb25lOwogCiAgICAgaWYgKFNoYWRvd1Jvb3QqIHJvb3QgPSBob3N0KCktPmNvbnRhaW5pbmdT
aGFkb3dSb290KCkpIHsKLSAgICAgICAgcm9vdC0+cmVnaXN0ZXJFbGVtZW50U2hhZG93KCk7Cisg
ICAgICAgIHJvb3QtPmVuc3VyZVNjb3BlRGlzdHJpYnV0aW9uKCktPnJlZ2lzdGVyRWxlbWVudFNo
YWRvdygpOwogICAgICAgICBtX3JlZ2lzdGVyZWRXaXRoUGFyZW50U2hhZG93Um9vdCA9IHRydWU7
CiAgICAgfQogCkBAIC0yOTgsMjggKzI5MywxNCBAQCB2b2lkIFNoYWRvd1Jvb3Q6OnJlbW92ZWRG
cm9tKENvbnRhaW5lck5vZGUqIGluc2VydGlvblBvaW50KQogICAgICAgICBpZiAoIXJvb3QpCiAg
ICAgICAgICAgICByb290ID0gaW5zZXJ0aW9uUG9pbnQtPmNvbnRhaW5pbmdTaGFkb3dSb290KCk7
CiAKLSAgICAgICAgaWYgKHJvb3QpCi0gICAgICAgICAgICByb290LT51bnJlZ2lzdGVyRWxlbWVu
dFNoYWRvdygpOworICAgICAgICBpZiAocm9vdCAmJiByb290LT5zY29wZURpc3RyaWJ1dGlvbigp
KQorICAgICAgICAgICAgcm9vdC0+c2NvcGVEaXN0cmlidXRpb24oKS0+dW5yZWdpc3RlckVsZW1l
bnRTaGFkb3coKTsKICAgICAgICAgbV9yZWdpc3RlcmVkV2l0aFBhcmVudFNoYWRvd1Jvb3QgPSBm
YWxzZTsKICAgICB9CiAKICAgICBEb2N1bWVudEZyYWdtZW50OjpyZW1vdmVkRnJvbShpbnNlcnRp
b25Qb2ludCk7CiB9CiAKLUluc2VydGlvblBvaW50KiBTaGFkb3dSb290Ojphc3NpZ25lZFRvKCkg
Y29uc3QKLXsKLSAgICBpZiAoIWRpc3RyaWJ1dGlvbkRhdGEoKSkKLSAgICAgICAgcmV0dXJuIDA7
Ci0KLSAgICByZXR1cm4gZGlzdHJpYnV0aW9uRGF0YSgpLT5pbnNlcnRpb25Qb2ludEFzc2lnbmVk
VG8oKTsKLX0KLQotdm9pZCBTaGFkb3dSb290OjpzZXRBc3NpZ25lZFRvKEluc2VydGlvblBvaW50
KiBpbnNlcnRpb25Qb2ludCkKLXsKLSAgICBBU1NFUlQoIWFzc2lnbmVkVG8oKSB8fCAhaW5zZXJ0
aW9uUG9pbnQpOwotICAgIGVuc3VyZURpc3RyaWJ1dGlvbkRhdGEoKS0+c2V0SW5zZXJ0aW9uUG9p
bnRBc3NpZ25lZFRvKGluc2VydGlvblBvaW50KTsKLX0KLQogdm9pZCBTaGFkb3dSb290OjpjaGls
ZHJlbkNoYW5nZWQoYm9vbCBjaGFuZ2VkQnlQYXJzZXIsIE5vZGUqIGJlZm9yZUNoYW5nZSwgTm9k
ZSogYWZ0ZXJDaGFuZ2UsIGludCBjaGlsZENvdW50RGVsdGEpCiB7CiAgICAgR3VhcmRPcnBoYW5T
aGFkb3dSb290KHsgfSk7CkBAIC0zMjgsMTQgKzMwOSw2IEBAIHZvaWQgU2hhZG93Um9vdDo6Y2hp
bGRyZW5DaGFuZ2VkKGJvb2wgY2hhbmdlZEJ5UGFyc2VyLCBOb2RlKiBiZWZvcmVDaGFuZ2UsIE5v
ZGUqCiAgICAgb3duZXIoKS0+aW52YWxpZGF0ZURpc3RyaWJ1dGlvbigpOwogfQogCi1jb25zdCBW
ZWN0b3I8UmVmUHRyPEluc2VydGlvblBvaW50PiA+JiBTaGFkb3dSb290OjppbnNlcnRpb25Qb2lu
dExpc3QoKQotewotICAgIHR5cGVkZWYgVmVjdG9yPFJlZlB0cjxJbnNlcnRpb25Qb2ludD4gPiBJ
bnNlcnRpb25Qb2ludFZlY3RvcjsKLSAgICBERUZJTkVfU1RBVElDX0xPQ0FMKEluc2VydGlvblBv
aW50VmVjdG9yLCBlbXB0eVZlY3RvciwgKCkpOwotCi0gICAgcmV0dXJuIGRpc3RyaWJ1dGlvbkRh
dGEoKSA/IGRpc3RyaWJ1dGlvbkRhdGEoKS0+ZW5zdXJlSW5zZXJ0aW9uUG9pbnRMaXN0KHRoaXMp
IDogZW1wdHlWZWN0b3I7Ci19Ci0KIHZvaWQgU2hhZG93Um9vdDo6cmVnaXN0ZXJTY29wZWRIVE1M
U3R5bGVDaGlsZCgpCiB7CiAgICAgKyttX251bWJlck9mU3R5bGVzOwpAQCAtMzQ5LDY4ICszMjIs
MTUgQEAgdm9pZCBTaGFkb3dSb290Ojp1bnJlZ2lzdGVyU2NvcGVkSFRNTFN0eWxlQ2hpbGQoKQog
ICAgIHNldEhhc1Njb3BlZEhUTUxTdHlsZUNoaWxkKG1fbnVtYmVyT2ZTdHlsZXMgPiAwKTsKIH0K
IAotaW5saW5lIFNoYWRvd1Jvb3RDb250ZW50RGlzdHJpYnV0aW9uRGF0YSogU2hhZG93Um9vdDo6
ZW5zdXJlRGlzdHJpYnV0aW9uRGF0YSgpCitTY29wZUNvbnRlbnREaXN0cmlidXRpb24qIFNoYWRv
d1Jvb3Q6OmVuc3VyZVNjb3BlRGlzdHJpYnV0aW9uKCkKIHsKLSAgICBpZiAobV9kaXN0cmlidXRp
b25EYXRhKQotICAgICAgICByZXR1cm4gbV9kaXN0cmlidXRpb25EYXRhLmdldCgpOworICAgIGlm
IChtX3Njb3BlRGlzdHJpYnV0aW9uKQorICAgICAgICByZXR1cm4gbV9zY29wZURpc3RyaWJ1dGlv
bi5nZXQoKTsKIAotICAgIG1fZGlzdHJpYnV0aW9uRGF0YSA9IGFkb3B0UHRyKG5ldyBTaGFkb3dS
b290Q29udGVudERpc3RyaWJ1dGlvbkRhdGEpOwotICAgIHJldHVybiBtX2Rpc3RyaWJ1dGlvbkRh
dGEuZ2V0KCk7CisgICAgbV9zY29wZURpc3RyaWJ1dGlvbiA9IGFkb3B0UHRyKG5ldyBTY29wZUNv
bnRlbnREaXN0cmlidXRpb24pOworICAgIHJldHVybiBtX3Njb3BlRGlzdHJpYnV0aW9uLmdldCgp
OwogfSAgIAogCi12b2lkIFNoYWRvd1Jvb3Q6OnJlZ2lzdGVySW5zZXJ0aW9uUG9pbnQoSW5zZXJ0
aW9uUG9pbnQqIHBvaW50KQotewotICAgIGVuc3VyZURpc3RyaWJ1dGlvbkRhdGEoKS0+cmVnaXRl
ckluc2VydGlvblBvaW50KHRoaXMsIHBvaW50KTsKLX0KLQotdm9pZCBTaGFkb3dSb290Ojp1bnJl
Z2lzdGVySW5zZXJ0aW9uUG9pbnQoSW5zZXJ0aW9uUG9pbnQqIHBvaW50KQotewotICAgIGVuc3Vy
ZURpc3RyaWJ1dGlvbkRhdGEoKS0+dW5yZWdpc3Rlckluc2VydGlvblBvaW50KHRoaXMsIHBvaW50
KTsKLX0KLQotYm9vbCBTaGFkb3dSb290OjpoYXNTaGFkb3dJbnNlcnRpb25Qb2ludCgpIGNvbnN0
Ci17Ci0gICAgaWYgKCFkaXN0cmlidXRpb25EYXRhKCkpCi0gICAgICAgIHJldHVybiBmYWxzZTsK
LQotICAgIHJldHVybiBkaXN0cmlidXRpb25EYXRhKCktPmhhc1NoYWRvd0VsZW1lbnRDaGlsZHJl
bigpOwotfQotCi1ib29sIFNoYWRvd1Jvb3Q6Omhhc0NvbnRlbnRFbGVtZW50KCkgY29uc3QKLXsK
LSAgICBpZiAoIWRpc3RyaWJ1dGlvbkRhdGEoKSkKLSAgICAgICAgcmV0dXJuIGZhbHNlOwotCi0g
ICAgcmV0dXJuIGRpc3RyaWJ1dGlvbkRhdGEoKS0+aGFzQ29udGVudEVsZW1lbnRDaGlsZHJlbigp
OwotfQotCi12b2lkIFNoYWRvd1Jvb3Q6OnJlZ2lzdGVyRWxlbWVudFNoYWRvdygpCi17Ci0gICAg
ZW5zdXJlRGlzdHJpYnV0aW9uRGF0YSgpLT5pbmNyZW1lbnROdW1iZXJPZkVsZW1lbnRTaGFkb3dD
aGlsZHJlbigpOwotfQotCi12b2lkIFNoYWRvd1Jvb3Q6OnVucmVnaXN0ZXJFbGVtZW50U2hhZG93
KCkKLXsKLSAgICBBU1NFUlQoaGFzRWxlbWVudFNoYWRvdygpKTsKLSAgICBkaXN0cmlidXRpb25E
YXRhKCktPmRlY3JlbWVudE51bWJlck9mRWxlbWVudFNoYWRvd0NoaWxkcmVuKCk7Ci19Ci0KLWJv
b2wgU2hhZG93Um9vdDo6aGFzRWxlbWVudFNoYWRvdygpIGNvbnN0Ci17Ci0gICAgaWYgKCFkaXN0
cmlidXRpb25EYXRhKCkpCi0gICAgICAgIHJldHVybiBmYWxzZTsKLQotICAgIHJldHVybiBkaXN0
cmlidXRpb25EYXRhKCktPmhhc0VsZW1lbnRTaGFkb3dDaGlsZHJlbigpOwotfQotCi11bnNpZ25l
ZCBTaGFkb3dSb290Ojpjb3VudEVsZW1lbnRTaGFkb3coKSBjb25zdCAKLXsKLSAgICBpZiAoIWRp
c3RyaWJ1dGlvbkRhdGEoKSkKLSAgICAgICAgcmV0dXJuIDA7Ci0KLSAgICByZXR1cm4gZGlzdHJp
YnV0aW9uRGF0YSgpLT5udW1iZXJPZkVsZW1lbnRTaGFkb3dDaGlsZHJlbigpOwotfQotCiB2b2lk
IFNoYWRvd1Jvb3Q6OnJlcG9ydE1lbW9yeVVzYWdlKE1lbW9yeU9iamVjdEluZm8qIG1lbW9yeU9i
amVjdEluZm8pIGNvbnN0CiB7CiAgICAgTWVtb3J5Q2xhc3NJbmZvIGluZm8obWVtb3J5T2JqZWN0
SW5mbywgdGhpcywgV2ViQ29yZU1lbW9yeVR5cGVzOjpET00pOwpAQCAtNDE4LDcgKzMzOCw3IEBA
IHZvaWQgU2hhZG93Um9vdDo6cmVwb3J0TWVtb3J5VXNhZ2UoTWVtb3J5T2JqZWN0SW5mbyogbWVt
b3J5T2JqZWN0SW5mbykgY29uc3QKICAgICBUcmVlU2NvcGU6OnJlcG9ydE1lbW9yeVVzYWdlKG1l
bW9yeU9iamVjdEluZm8pOwogICAgIGluZm8uYWRkTWVtYmVyKG1fcHJldik7CiAgICAgaW5mby5h
ZGRNZW1iZXIobV9uZXh0KTsKLSAgICBpbmZvLmFkZE1lbWJlcihtX2Rpc3RyaWJ1dGlvbkRhdGEp
OworICAgIGluZm8uYWRkTWVtYmVyKG1fc2NvcGVEaXN0cmlidXRpb24pOwogfQogCiB9CmRpZmYg
LS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9kb20vU2hhZG93Um9vdC5oIGIvU291cmNlL1dlYkNvcmUv
ZG9tL1NoYWRvd1Jvb3QuaAppbmRleCA5NDE0ODhjOTU4MDVjOTExMDMzN2RmOTBjZGRjYjE2NzBk
NWUxMmY4Li40NzlhMWExZmJlNDVjM2U3OGU4OTU3MGE2NmU4NmI4NTI3Y2VmNTc5IDEwMDY0NAot
LS0gYS9Tb3VyY2UvV2ViQ29yZS9kb20vU2hhZG93Um9vdC5oCisrKyBiL1NvdXJjZS9XZWJDb3Jl
L2RvbS9TaGFkb3dSb290LmgKQEAgLTQxLDcgKzQxLDcgQEAgY2xhc3MgRG9jdW1lbnQ7CiBjbGFz
cyBET01TZWxlY3Rpb247CiBjbGFzcyBFbGVtZW50U2hhZG93OwogY2xhc3MgSW5zZXJ0aW9uUG9p
bnQ7Ci1jbGFzcyBTaGFkb3dSb290Q29udGVudERpc3RyaWJ1dGlvbkRhdGE7CitjbGFzcyBTY29w
ZUNvbnRlbnREaXN0cmlidXRpb247CiAKIGNsYXNzIFNoYWRvd1Jvb3QgOiBwdWJsaWMgRG9jdW1l
bnRGcmFnbWVudCwgcHVibGljIFRyZWVTY29wZSwgcHVibGljIERvdWJseUxpbmtlZExpc3ROb2Rl
PFNoYWRvd1Jvb3Q+IHsKICAgICBmcmllbmQgY2xhc3MgV1RGOjpEb3VibHlMaW5rZWRMaXN0Tm9k
ZTxTaGFkb3dSb290PjsKQEAgLTgwLDMzICs4MCwxOCBAQCBwdWJsaWM6CiAgICAgYm9vbCBpc1lv
dW5nZXN0KCkgY29uc3QgeyByZXR1cm4gIXlvdW5nZXJTaGFkb3dSb290KCk7IH0KICAgICBib29s
IGlzT2xkZXN0KCkgY29uc3QgeyByZXR1cm4gIW9sZGVyU2hhZG93Um9vdCgpOyB9CiAKLSAgICBi
b29sIGhhc0luc2VydGlvblBvaW50KCkgY29uc3Q7Ci0KICAgICB2aXJ0dWFsIHZvaWQgYXR0YWNo
KCk7CiAKICAgICB2aXJ0dWFsIEluc2VydGlvbk5vdGlmaWNhdGlvblJlcXVlc3QgaW5zZXJ0ZWRJ
bnRvKENvbnRhaW5lck5vZGUqKSBPVkVSUklERTsKICAgICB2aXJ0dWFsIHZvaWQgcmVtb3ZlZEZy
b20oQ29udGFpbmVyTm9kZSopIE9WRVJSSURFOwogCi0gICAgYm9vbCBpc1VzZWRGb3JSZW5kZXJp
bmcoKSBjb25zdDsKLSAgICBJbnNlcnRpb25Qb2ludCogYXNzaWduZWRUbygpIGNvbnN0OwotICAg
IHZvaWQgc2V0QXNzaWduZWRUbyhJbnNlcnRpb25Qb2ludCopOwotCi0gICAgYm9vbCBoYXNTaGFk
b3dJbnNlcnRpb25Qb2ludCgpIGNvbnN0OwotICAgIGJvb2wgaGFzQ29udGVudEVsZW1lbnQoKSBj
b25zdDsKLQotICAgIHZvaWQgcmVnaXN0ZXJJbnNlcnRpb25Qb2ludChJbnNlcnRpb25Qb2ludCop
OwotICAgIHZvaWQgdW5yZWdpc3Rlckluc2VydGlvblBvaW50KEluc2VydGlvblBvaW50Kik7Ci0g
ICAgCi0gICAgdm9pZCByZWdpc3RlckVsZW1lbnRTaGFkb3coKTsKLSAgICB2b2lkIHVucmVnaXN0
ZXJFbGVtZW50U2hhZG93KCk7Ci0gICAgYm9vbCBoYXNFbGVtZW50U2hhZG93KCkgY29uc3Q7Ci0g
ICAgdW5zaWduZWQgY291bnRFbGVtZW50U2hhZG93KCkgY29uc3Q7Ci0KLSAgICBjb25zdCBWZWN0
b3I8UmVmUHRyPEluc2VydGlvblBvaW50PiA+JiBpbnNlcnRpb25Qb2ludExpc3QoKTsKLQogICAg
IHZpcnR1YWwgdm9pZCByZWdpc3RlclNjb3BlZEhUTUxTdHlsZUNoaWxkKCkgT1ZFUlJJREU7CiAg
ICAgdmlydHVhbCB2b2lkIHVucmVnaXN0ZXJTY29wZWRIVE1MU3R5bGVDaGlsZCgpIE9WRVJSSURF
OwogCisgICAgU2NvcGVDb250ZW50RGlzdHJpYnV0aW9uKiBzY29wZURpc3RyaWJ1dGlvbigpIHsg
cmV0dXJuIG1fc2NvcGVEaXN0cmlidXRpb24uZ2V0KCk7IH0KKyAgICBjb25zdCBTY29wZUNvbnRl
bnREaXN0cmlidXRpb24qIHNjb3BlRGlzdHJpYnV0aW9uKCkgY29uc3QgeyByZXR1cm4gbV9zY29w
ZURpc3RyaWJ1dGlvbi5nZXQoKTsgfQorICAgIFNjb3BlQ29udGVudERpc3RyaWJ1dGlvbiogZW5z
dXJlU2NvcGVEaXN0cmlidXRpb24oKTsKKwogICAgIFNoYWRvd1Jvb3RUeXBlIHR5cGUoKSBjb25z
dCB7IHJldHVybiBtX2lzQXV0aG9yU2hhZG93Um9vdCA/IEF1dGhvclNoYWRvd1Jvb3QgOiBVc2Vy
QWdlbnRTaGFkb3dSb290OyB9CiAgICAgYm9vbCBpc0FjY2Vzc2libGUoKSBjb25zdCB7IHJldHVy
biB0eXBlKCkgPT0gQXV0aG9yU2hhZG93Um9vdDsgfQogCkBAIC0xMjQsMTMgKzEwOSw5IEBAIHBy
aXZhdGU6CiAKICAgICB2b2lkIHNldFR5cGUoU2hhZG93Um9vdFR5cGUgdHlwZSkgeyBtX2lzQXV0
aG9yU2hhZG93Um9vdCA9IHR5cGUgPT0gQXV0aG9yU2hhZG93Um9vdDsgfQogCi0gICAgU2hhZG93
Um9vdENvbnRlbnREaXN0cmlidXRpb25EYXRhKiBkaXN0cmlidXRpb25EYXRhKCkgeyByZXR1cm4g
bV9kaXN0cmlidXRpb25EYXRhLmdldCgpOyB9Ci0gICAgY29uc3QgU2hhZG93Um9vdENvbnRlbnRE
aXN0cmlidXRpb25EYXRhKiBkaXN0cmlidXRpb25EYXRhKCkgY29uc3QgeyByZXR1cm4gbV9kaXN0
cmlidXRpb25EYXRhLmdldCgpOyB9Ci0gICAgU2hhZG93Um9vdENvbnRlbnREaXN0cmlidXRpb25E
YXRhKiBlbnN1cmVEaXN0cmlidXRpb25EYXRhKCk7Ci0KICAgICBTaGFkb3dSb290KiBtX3ByZXY7
CiAgICAgU2hhZG93Um9vdCogbV9uZXh0OwotICAgIE93blB0cjxTaGFkb3dSb290Q29udGVudERp
c3RyaWJ1dGlvbkRhdGE+IG1fZGlzdHJpYnV0aW9uRGF0YTsKKyAgICBPd25QdHI8U2NvcGVDb250
ZW50RGlzdHJpYnV0aW9uPiBtX3Njb3BlRGlzdHJpYnV0aW9uOwogICAgIHVuc2lnbmVkIG1fbnVt
YmVyT2ZTdHlsZXMgOiAyODsKICAgICB1bnNpZ25lZCBtX2FwcGx5QXV0aG9yU3R5bGVzIDogMTsK
ICAgICB1bnNpZ25lZCBtX3Jlc2V0U3R5bGVJbmhlcml0YW5jZSA6IDE7CkBAIC0xNDgsMTEgKzEy
OSw2IEBAIGlubGluZSB2b2lkIFNoYWRvd1Jvb3Q6OnNldEhvc3QoRWxlbWVudCogaG9zdCkKICAg
ICBzZXRQYXJlbnRPckhvc3ROb2RlKGhvc3QpOwogfQogCi1pbmxpbmUgYm9vbCBTaGFkb3dSb290
Ojppc1VzZWRGb3JSZW5kZXJpbmcoKSBjb25zdAotewotICAgIHJldHVybiBpc1lvdW5nZXN0KCkg
fHwgYXNzaWduZWRUbygpOwotfQotCiBpbmxpbmUgRWxlbWVudCogU2hhZG93Um9vdDo6YWN0aXZl
RWxlbWVudCgpIGNvbnN0CiB7CiAgICAgaWYgKE5vZGUqIG5vZGUgPSB0cmVlU2NvcGUoKS0+Zm9j
dXNlZE5vZGUoKSkKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJDb3JlL2h0bWwvc2hhZG93L0NvbnRl
bnREaXN0cmlidXRvci5jcHAgYi9Tb3VyY2UvV2ViQ29yZS9odG1sL3NoYWRvdy9Db250ZW50RGlz
dHJpYnV0b3IuY3BwCmluZGV4IDI1MzdlOTljODUyNmZhZjBjYTc3OWI2NjExYzlhZmY2Mjg3NGZi
OTcuLjc3YzRkM2IxNmExZDA4MDAyZGY1Y2M1NjVmNTBlNDU2Y2FkMTA3M2EgMTAwNjQ0Ci0tLSBh
L1NvdXJjZS9XZWJDb3JlL2h0bWwvc2hhZG93L0NvbnRlbnREaXN0cmlidXRvci5jcHAKKysrIGIv
U291cmNlL1dlYkNvcmUvaHRtbC9zaGFkb3cvQ29udGVudERpc3RyaWJ1dG9yLmNwcApAQCAtNzYs
NyArNzYsNyBAQCBOb2RlKiBDb250ZW50RGlzdHJpYnV0aW9uOjpwcmV2aW91c1RvKGNvbnN0IE5v
ZGUqIG5vZGUpIGNvbnN0CiB9CiAKIAotU2hhZG93Um9vdENvbnRlbnREaXN0cmlidXRpb25EYXRh
OjpTaGFkb3dSb290Q29udGVudERpc3RyaWJ1dGlvbkRhdGEoKQorU2NvcGVDb250ZW50RGlzdHJp
YnV0aW9uOjpTY29wZUNvbnRlbnREaXN0cmlidXRpb24oKQogICAgIDogbV9pbnNlcnRpb25Qb2lu
dEFzc2lnbmVkVG8oMCkKICAgICAsIG1fbnVtYmVyT2ZTaGFkb3dFbGVtZW50Q2hpbGRyZW4oMCkK
ICAgICAsIG1fbnVtYmVyT2ZDb250ZW50RWxlbWVudENoaWxkcmVuKDApCkBAIC04NSwxMyArODUs
MTMgQEAgU2hhZG93Um9vdENvbnRlbnREaXN0cmlidXRpb25EYXRhOjpTaGFkb3dSb290Q29udGVu
dERpc3RyaWJ1dGlvbkRhdGEoKQogewogfQogCi12b2lkIFNoYWRvd1Jvb3RDb250ZW50RGlzdHJp
YnV0aW9uRGF0YTo6aW52YWxpZGF0ZUluc2VydGlvblBvaW50TGlzdCgpCit2b2lkIFNjb3BlQ29u
dGVudERpc3RyaWJ1dGlvbjo6aW52YWxpZGF0ZUluc2VydGlvblBvaW50TGlzdCgpCiB7CiAgICAg
bV9pbnNlcnRpb25Qb2ludExpc3RJc1ZhbGlkID0gZmFsc2U7CiAgICAgbV9pbnNlcnRpb25Qb2lu
dExpc3QuY2xlYXIoKTsKIH0KIAotY29uc3QgVmVjdG9yPFJlZlB0cjxJbnNlcnRpb25Qb2ludD4g
PiYgU2hhZG93Um9vdENvbnRlbnREaXN0cmlidXRpb25EYXRhOjplbnN1cmVJbnNlcnRpb25Qb2lu
dExpc3QoU2hhZG93Um9vdCogc2hhZG93Um9vdCkKK2NvbnN0IFZlY3RvcjxSZWZQdHI8SW5zZXJ0
aW9uUG9pbnQ+ID4mIFNjb3BlQ29udGVudERpc3RyaWJ1dGlvbjo6ZW5zdXJlSW5zZXJ0aW9uUG9p
bnRMaXN0KFNoYWRvd1Jvb3QqIHNoYWRvd1Jvb3QpCiB7CiAgICAgaWYgKG1faW5zZXJ0aW9uUG9p
bnRMaXN0SXNWYWxpZCkKICAgICAgICAgcmV0dXJuIG1faW5zZXJ0aW9uUG9pbnRMaXN0OwpAQCAt
OTksNyArOTksNyBAQCBjb25zdCBWZWN0b3I8UmVmUHRyPEluc2VydGlvblBvaW50PiA+JiBTaGFk
b3dSb290Q29udGVudERpc3RyaWJ1dGlvbkRhdGE6OmVuc3VyZQogICAgIG1faW5zZXJ0aW9uUG9p
bnRMaXN0SXNWYWxpZCA9IHRydWU7CiAgICAgQVNTRVJUKG1faW5zZXJ0aW9uUG9pbnRMaXN0Lmlz
RW1wdHkoKSk7CiAKLSAgICBpZiAoIXNoYWRvd1Jvb3QtPmhhc0luc2VydGlvblBvaW50KCkpCisg
ICAgaWYgKCFoYXNJbnNlcnRpb25Qb2ludChzaGFkb3dSb290KSkKICAgICAgICAgcmV0dXJuIG1f
aW5zZXJ0aW9uUG9pbnRMaXN0OwogCiAgICAgZm9yIChFbGVtZW50KiBlbGVtZW50ID0gRWxlbWVu
dFRyYXZlcnNhbDo6Zmlyc3RXaXRoaW4oc2hhZG93Um9vdCk7IGVsZW1lbnQ7IGVsZW1lbnQgPSBF
bGVtZW50VHJhdmVyc2FsOjpuZXh0KGVsZW1lbnQsIHNoYWRvd1Jvb3QpKSB7CkBAIC0xMTAsNyAr
MTEwLDcgQEAgY29uc3QgVmVjdG9yPFJlZlB0cjxJbnNlcnRpb25Qb2ludD4gPiYgU2hhZG93Um9v
dENvbnRlbnREaXN0cmlidXRpb25EYXRhOjplbnN1cmUKICAgICByZXR1cm4gbV9pbnNlcnRpb25Q
b2ludExpc3Q7CiB9CiAKLXZvaWQgU2hhZG93Um9vdENvbnRlbnREaXN0cmlidXRpb25EYXRhOjpy
ZWdpdGVySW5zZXJ0aW9uUG9pbnQoU2hhZG93Um9vdCogc2NvcGUsIEluc2VydGlvblBvaW50KiBw
b2ludCkKK3ZvaWQgU2NvcGVDb250ZW50RGlzdHJpYnV0aW9uOjpyZWdpc3Rlckluc2VydGlvblBv
aW50KFNoYWRvd1Jvb3QqIHNjb3BlLCBJbnNlcnRpb25Qb2ludCogcG9pbnQpCiB7CiAgICAgc3dp
dGNoIChwb2ludC0+aW5zZXJ0aW9uUG9pbnRUeXBlKCkpIHsKICAgICBjYXNlIEluc2VydGlvblBv
aW50OjpTaGFkb3dJbnNlcnRpb25Qb2ludDoKQEAgLTEyNSw3ICsxMjUsNyBAQCB2b2lkIFNoYWRv
d1Jvb3RDb250ZW50RGlzdHJpYnV0aW9uRGF0YTo6cmVnaXRlckluc2VydGlvblBvaW50KFNoYWRv
d1Jvb3QqIHNjb3BlLAogICAgIGludmFsaWRhdGVJbnNlcnRpb25Qb2ludExpc3QoKTsKIH0KIAot
dm9pZCBTaGFkb3dSb290Q29udGVudERpc3RyaWJ1dGlvbkRhdGE6OnVucmVnaXN0ZXJJbnNlcnRp
b25Qb2ludChTaGFkb3dSb290KiBzY29wZSwgSW5zZXJ0aW9uUG9pbnQqIHBvaW50KQordm9pZCBT
Y29wZUNvbnRlbnREaXN0cmlidXRpb246OnVucmVnaXN0ZXJJbnNlcnRpb25Qb2ludChTaGFkb3dS
b290KiBzY29wZSwgSW5zZXJ0aW9uUG9pbnQqIHBvaW50KQogewogICAgIHN3aXRjaCAocG9pbnQt
Pmluc2VydGlvblBvaW50VHlwZSgpKSB7CiAgICAgY2FzZSBJbnNlcnRpb25Qb2ludDo6U2hhZG93
SW5zZXJ0aW9uUG9pbnQ6CkBAIC0xNDMsNiArMTQzLDQyIEBAIHZvaWQgU2hhZG93Um9vdENvbnRl
bnREaXN0cmlidXRpb25EYXRhOjp1bnJlZ2lzdGVySW5zZXJ0aW9uUG9pbnQoU2hhZG93Um9vdCog
c2NvCiAgICAgaW52YWxpZGF0ZUluc2VydGlvblBvaW50TGlzdCgpOwogfQogCitib29sIFNjb3Bl
Q29udGVudERpc3RyaWJ1dGlvbjo6aGFzU2hhZG93RWxlbWVudChjb25zdCBTaGFkb3dSb290KiBo
b2xkZXIpCit7CisgICAgaWYgKCFob2xkZXItPnNjb3BlRGlzdHJpYnV0aW9uKCkpCisgICAgICAg
IHJldHVybiBmYWxzZTsKKworICAgIHJldHVybiBob2xkZXItPnNjb3BlRGlzdHJpYnV0aW9uKCkt
Pmhhc1NoYWRvd0VsZW1lbnRDaGlsZHJlbigpOworfQorCitib29sIFNjb3BlQ29udGVudERpc3Ry
aWJ1dGlvbjo6aGFzQ29udGVudEVsZW1lbnQoY29uc3QgU2hhZG93Um9vdCogaG9sZGVyKQorewor
ICAgIGlmICghaG9sZGVyLT5zY29wZURpc3RyaWJ1dGlvbigpKQorICAgICAgICByZXR1cm4gZmFs
c2U7CisKKyAgICByZXR1cm4gaG9sZGVyLT5zY29wZURpc3RyaWJ1dGlvbigpLT5oYXNDb250ZW50
RWxlbWVudENoaWxkcmVuKCk7Cit9CisKK3Vuc2lnbmVkIFNjb3BlQ29udGVudERpc3RyaWJ1dGlv
bjo6Y291bnRFbGVtZW50U2hhZG93KGNvbnN0IFNoYWRvd1Jvb3QqIGhvbGRlcikKK3sKKyAgICBp
ZiAoIWhvbGRlci0+c2NvcGVEaXN0cmlidXRpb24oKSkKKyAgICAgICAgcmV0dXJuIDA7CisKKyAg
ICByZXR1cm4gaG9sZGVyLT5zY29wZURpc3RyaWJ1dGlvbigpLT5udW1iZXJPZkVsZW1lbnRTaGFk
b3dDaGlsZHJlbigpOworfQorCitib29sIFNjb3BlQ29udGVudERpc3RyaWJ1dGlvbjo6aGFzSW5z
ZXJ0aW9uUG9pbnQoY29uc3QgU2hhZG93Um9vdCogaG9sZGVyKQoreworICAgIHJldHVybiBoYXNT
aGFkb3dFbGVtZW50KGhvbGRlcikgfHwgaGFzQ29udGVudEVsZW1lbnQoaG9sZGVyKTsKK30KKwor
SW5zZXJ0aW9uUG9pbnQqIFNjb3BlQ29udGVudERpc3RyaWJ1dGlvbjo6YXNzaWduZWRUbyhjb25z
dCBTaGFkb3dSb290KiBob2xkZXIpCit7CisgICAgaWYgKCFob2xkZXItPnNjb3BlRGlzdHJpYnV0
aW9uKCkpCisgICAgICAgIHJldHVybiAwOworCisgICAgcmV0dXJuIGhvbGRlci0+c2NvcGVEaXN0
cmlidXRpb24oKS0+aW5zZXJ0aW9uUG9pbnRBc3NpZ25lZFRvKCk7Cit9CiAKIENvbnRlbnREaXN0
cmlidXRvcjo6Q29udGVudERpc3RyaWJ1dG9yKCkKICAgICA6IG1fdmFsaWRpdHkoVW5kZXRlcm1p
bmVkKQpAQCAtMTkzLDE5ICsyMjksMjEgQEAgdm9pZCBDb250ZW50RGlzdHJpYnV0b3I6OmRpc3Ry
aWJ1dGUoRWxlbWVudCogaG9zdCkKICAgICBmb3IgKFNoYWRvd1Jvb3QqIHJvb3QgPSBob3N0LT55
b3VuZ2VzdFNoYWRvd1Jvb3QoKTsgcm9vdDsgcm9vdCA9IHJvb3QtPm9sZGVyU2hhZG93Um9vdCgp
KSB7CiAgICAgICAgIEhUTUxTaGFkb3dFbGVtZW50KiBmaXJzdEFjdGl2ZVNoYWRvd0luc2VydGlv
blBvaW50ID0gMDsKIAotICAgICAgICBjb25zdCBWZWN0b3I8UmVmUHRyPEluc2VydGlvblBvaW50
PiA+JiBpbnNlcnRpb25Qb2ludHMgPSByb290LT5pbnNlcnRpb25Qb2ludExpc3QoKTsKLSAgICAg
ICAgZm9yIChzaXplX3QgaSA9IDA7IGkgPCBpbnNlcnRpb25Qb2ludHMuc2l6ZSgpOyArK2kpIHsK
LSAgICAgICAgICAgIEluc2VydGlvblBvaW50KiBwb2ludCA9IGluc2VydGlvblBvaW50c1tpXS5n
ZXQoKTsKLSAgICAgICAgICAgIGlmICghcG9pbnQtPmlzQWN0aXZlKCkpCi0gICAgICAgICAgICAg
ICAgY29udGludWU7Ci0KLSAgICAgICAgICAgIGlmIChpc0hUTUxTaGFkb3dFbGVtZW50KHBvaW50
KSkgewotICAgICAgICAgICAgICAgIGlmICghZmlyc3RBY3RpdmVTaGFkb3dJbnNlcnRpb25Qb2lu
dCkKLSAgICAgICAgICAgICAgICAgICAgZmlyc3RBY3RpdmVTaGFkb3dJbnNlcnRpb25Qb2ludCA9
IHRvSFRNTFNoYWRvd0VsZW1lbnQocG9pbnQpOwotICAgICAgICAgICAgfSBlbHNlIHsKLSAgICAg
ICAgICAgICAgICBkaXN0cmlidXRlU2VsZWN0aW9uc1RvKHBvaW50LCBwb29sLCBkaXN0cmlidXRl
ZCk7Ci0gICAgICAgICAgICAgICAgaWYgKEVsZW1lbnRTaGFkb3cqIHNoYWRvdyA9IHBvaW50LT5w
YXJlbnROb2RlKCktPmlzRWxlbWVudE5vZGUoKSA/IHRvRWxlbWVudChwb2ludC0+cGFyZW50Tm9k
ZSgpKS0+c2hhZG93KCkgOiAwKQotICAgICAgICAgICAgICAgICAgICBzaGFkb3ctPmludmFsaWRh
dGVEaXN0cmlidXRpb24oKTsKKyAgICAgICAgaWYgKFNjb3BlQ29udGVudERpc3RyaWJ1dGlvbiog
c2NvcGUgPSByb290LT5zY29wZURpc3RyaWJ1dGlvbigpKSB7CisgICAgICAgICAgICBjb25zdCBW
ZWN0b3I8UmVmUHRyPEluc2VydGlvblBvaW50PiA+JiBpbnNlcnRpb25Qb2ludHMgPSBzY29wZS0+
ZW5zdXJlSW5zZXJ0aW9uUG9pbnRMaXN0KHJvb3QpOworICAgICAgICAgICAgZm9yIChzaXplX3Qg
aSA9IDA7IGkgPCBpbnNlcnRpb25Qb2ludHMuc2l6ZSgpOyArK2kpIHsKKyAgICAgICAgICAgICAg
ICBJbnNlcnRpb25Qb2ludCogcG9pbnQgPSBpbnNlcnRpb25Qb2ludHNbaV0uZ2V0KCk7CisgICAg
ICAgICAgICAgICAgaWYgKCFwb2ludC0+aXNBY3RpdmUoKSkKKyAgICAgICAgICAgICAgICAgICAg
Y29udGludWU7CisKKyAgICAgICAgICAgICAgICBpZiAoaXNIVE1MU2hhZG93RWxlbWVudChwb2lu
dCkpIHsKKyAgICAgICAgICAgICAgICAgICAgaWYgKCFmaXJzdEFjdGl2ZVNoYWRvd0luc2VydGlv
blBvaW50KQorICAgICAgICAgICAgICAgICAgICAgICAgZmlyc3RBY3RpdmVTaGFkb3dJbnNlcnRp
b25Qb2ludCA9IHRvSFRNTFNoYWRvd0VsZW1lbnQocG9pbnQpOworICAgICAgICAgICAgICAgIH0g
ZWxzZSB7CisgICAgICAgICAgICAgICAgICAgIGRpc3RyaWJ1dGVTZWxlY3Rpb25zVG8ocG9pbnQs
IHBvb2wsIGRpc3RyaWJ1dGVkKTsKKyAgICAgICAgICAgICAgICAgICAgaWYgKEVsZW1lbnRTaGFk
b3cqIHNoYWRvdyA9IHBvaW50LT5wYXJlbnROb2RlKCktPmlzRWxlbWVudE5vZGUoKSA/IHRvRWxl
bWVudChwb2ludC0+cGFyZW50Tm9kZSgpKS0+c2hhZG93KCkgOiAwKQorICAgICAgICAgICAgICAg
ICAgICAgICAgc2hhZG93LT5pbnZhbGlkYXRlRGlzdHJpYnV0aW9uKCk7CisgICAgICAgICAgICAg
ICAgfQogICAgICAgICAgICAgfQogICAgICAgICB9CiAKQEAgLTIxOSw3ICsyNTcsNyBAQCB2b2lk
IENvbnRlbnREaXN0cmlidXRvcjo6ZGlzdHJpYnV0ZShFbGVtZW50KiBob3N0KQogICAgICAgICBB
U1NFUlQocm9vdCk7CiAgICAgICAgIGlmIChyb290LT5vbGRlclNoYWRvd1Jvb3QoKSkgewogICAg
ICAgICAgICAgZGlzdHJpYnV0ZU5vZGVDaGlsZHJlblRvKHNoYWRvd0VsZW1lbnQsIHJvb3QtPm9s
ZGVyU2hhZG93Um9vdCgpKTsKLSAgICAgICAgICAgIHJvb3QtPm9sZGVyU2hhZG93Um9vdCgpLT5z
ZXRBc3NpZ25lZFRvKHNoYWRvd0VsZW1lbnQpOworICAgICAgICAgICAgcm9vdC0+b2xkZXJTaGFk
b3dSb290KCktPmVuc3VyZVNjb3BlRGlzdHJpYnV0aW9uKCktPnNldEluc2VydGlvblBvaW50QXNz
aWduZWRUbyhzaGFkb3dFbGVtZW50KTsKICAgICAgICAgfSBlbHNlIHsKICAgICAgICAgICAgIGRp
c3RyaWJ1dGVTZWxlY3Rpb25zVG8oc2hhZG93RWxlbWVudCwgcG9vbCwgZGlzdHJpYnV0ZWQpOwog
ICAgICAgICAgICAgaWYgKEVsZW1lbnRTaGFkb3cqIHNoYWRvdyA9IHNoYWRvd0VsZW1lbnQtPnBh
cmVudE5vZGUoKS0+aXNFbGVtZW50Tm9kZSgpID8gdG9FbGVtZW50KHNoYWRvd0VsZW1lbnQtPnBh
cmVudE5vZGUoKSktPnNoYWRvdygpIDogMCkKQEAgLTIzNCwxMSArMjcyLDEzIEBAIGJvb2wgQ29u
dGVudERpc3RyaWJ1dG9yOjppbnZhbGlkYXRlKEVsZW1lbnQqIGhvc3QpCiAgICAgYm9vbCBuZWVk
c1JlYXR0YWNoID0gKG1fdmFsaWRpdHkgPT0gVW5kZXRlcm1pbmVkKSB8fCAhbV9ub2RlVG9JbnNl
cnRpb25Qb2ludC5pc0VtcHR5KCk7CiAKICAgICBmb3IgKFNoYWRvd1Jvb3QqIHJvb3QgPSBob3N0
LT55b3VuZ2VzdFNoYWRvd1Jvb3QoKTsgcm9vdDsgcm9vdCA9IHJvb3QtPm9sZGVyU2hhZG93Um9v
dCgpKSB7Ci0gICAgICAgIHJvb3QtPnNldEFzc2lnbmVkVG8oMCk7Ci0gICAgICAgIGNvbnN0IFZl
Y3RvcjxSZWZQdHI8SW5zZXJ0aW9uUG9pbnQ+ID4mIGluc2VydGlvblBvaW50cyA9IHJvb3QtPmlu
c2VydGlvblBvaW50TGlzdCgpOwotICAgICAgICBmb3IgKHNpemVfdCBpID0gMDsgaSA8IGluc2Vy
dGlvblBvaW50cy5zaXplKCk7ICsraSkgewotICAgICAgICAgICAgbmVlZHNSZWF0dGFjaCA9IG5l
ZWRzUmVhdHRhY2ggfHwgdHJ1ZTsKLSAgICAgICAgICAgIGluc2VydGlvblBvaW50c1tpXS0+Y2xl
YXJEaXN0cmlidXRpb24oKTsKKyAgICAgICAgaWYgKFNjb3BlQ29udGVudERpc3RyaWJ1dGlvbiog
c2NvcGUgPSByb290LT5zY29wZURpc3RyaWJ1dGlvbigpKSB7CisgICAgICAgICAgICBzY29wZS0+
c2V0SW5zZXJ0aW9uUG9pbnRBc3NpZ25lZFRvKDApOworICAgICAgICAgICAgY29uc3QgVmVjdG9y
PFJlZlB0cjxJbnNlcnRpb25Qb2ludD4gPiYgaW5zZXJ0aW9uUG9pbnRzID0gc2NvcGUtPmVuc3Vy
ZUluc2VydGlvblBvaW50TGlzdChyb290KTsKKyAgICAgICAgICAgIGZvciAoc2l6ZV90IGkgPSAw
OyBpIDwgaW5zZXJ0aW9uUG9pbnRzLnNpemUoKTsgKytpKSB7CisgICAgICAgICAgICAgICAgbmVl
ZHNSZWF0dGFjaCA9IG5lZWRzUmVhdHRhY2ggfHwgdHJ1ZTsKKyAgICAgICAgICAgICAgICBpbnNl
cnRpb25Qb2ludHNbaV0tPmNsZWFyRGlzdHJpYnV0aW9uKCk7CisgICAgICAgICAgICB9CiAgICAg
ICAgIH0KICAgICB9CiAKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJDb3JlL2h0bWwvc2hhZG93L0Nv
bnRlbnREaXN0cmlidXRvci5oIGIvU291cmNlL1dlYkNvcmUvaHRtbC9zaGFkb3cvQ29udGVudERp
c3RyaWJ1dG9yLmgKaW5kZXggNzcxMTg5YjYwNDA4YzdlMTk3YWNkNDE4ZDE5MWViMDk0ODgwNGY3
Zi4uZjk4MzgzN2YxMDY3M2FhZTRmODRiMzJlMDAwN2QyZGI0NjdlYTIzNyAxMDA2NDQKLS0tIGEv
U291cmNlL1dlYkNvcmUvaHRtbC9zaGFkb3cvQ29udGVudERpc3RyaWJ1dG9yLmgKKysrIGIvU291
cmNlL1dlYkNvcmUvaHRtbC9zaGFkb3cvQ29udGVudERpc3RyaWJ1dG9yLmgKQEAgLTcwLDI2ICs3
MCwzNSBAQCBwcml2YXRlOgogICAgIEhhc2hNYXA8Y29uc3QgTm9kZSosIHNpemVfdD4gbV9pbmRp
Y2VzOwogfTsKIAotY2xhc3MgU2hhZG93Um9vdENvbnRlbnREaXN0cmlidXRpb25EYXRhIHsKK2Ns
YXNzIFNjb3BlQ29udGVudERpc3RyaWJ1dGlvbiB7CiBwdWJsaWM6Ci0gICAgU2hhZG93Um9vdENv
bnRlbnREaXN0cmlidXRpb25EYXRhKCk7CisgICAgU2NvcGVDb250ZW50RGlzdHJpYnV0aW9uKCk7
CiAKICAgICBJbnNlcnRpb25Qb2ludCogaW5zZXJ0aW9uUG9pbnRBc3NpZ25lZFRvKCkgY29uc3Qg
eyByZXR1cm4gbV9pbnNlcnRpb25Qb2ludEFzc2lnbmVkVG87IH0KICAgICB2b2lkIHNldEluc2Vy
dGlvblBvaW50QXNzaWduZWRUbyhJbnNlcnRpb25Qb2ludCogaW5zZXJ0aW9uUG9pbnQpIHsgbV9p
bnNlcnRpb25Qb2ludEFzc2lnbmVkVG8gPSBpbnNlcnRpb25Qb2ludDsgfQogCi0gICAgdm9pZCBy
ZWdpdGVySW5zZXJ0aW9uUG9pbnQoU2hhZG93Um9vdCosIEluc2VydGlvblBvaW50Kik7CisgICAg
dm9pZCByZWdpc3Rlckluc2VydGlvblBvaW50KFNoYWRvd1Jvb3QqLCBJbnNlcnRpb25Qb2ludCop
OwogICAgIHZvaWQgdW5yZWdpc3Rlckluc2VydGlvblBvaW50KFNoYWRvd1Jvb3QqLCBJbnNlcnRp
b25Qb2ludCopOwogICAgIGJvb2wgaGFzU2hhZG93RWxlbWVudENoaWxkcmVuKCkgY29uc3QgeyBy
ZXR1cm4gbV9udW1iZXJPZlNoYWRvd0VsZW1lbnRDaGlsZHJlbiA+IDA7IH0KICAgICBib29sIGhh
c0NvbnRlbnRFbGVtZW50Q2hpbGRyZW4oKSBjb25zdCB7IHJldHVybiBtX251bWJlck9mQ29udGVu
dEVsZW1lbnRDaGlsZHJlbiA+IDA7IH0KIAotICAgIHZvaWQgaW5jcmVtZW50TnVtYmVyT2ZFbGVt
ZW50U2hhZG93Q2hpbGRyZW4oKSB7ICsrbV9udW1iZXJPZkVsZW1lbnRTaGFkb3dDaGlsZHJlbjsg
fQotICAgIHZvaWQgZGVjcmVtZW50TnVtYmVyT2ZFbGVtZW50U2hhZG93Q2hpbGRyZW4oKSB7IEFT
U0VSVChtX251bWJlck9mRWxlbWVudFNoYWRvd0NoaWxkcmVuID4gMCk7IC0tbV9udW1iZXJPZkVs
ZW1lbnRTaGFkb3dDaGlsZHJlbjsgfQorICAgIHZvaWQgcmVnaXN0ZXJFbGVtZW50U2hhZG93KCkg
eyArK21fbnVtYmVyT2ZFbGVtZW50U2hhZG93Q2hpbGRyZW47IH0KKyAgICB2b2lkIHVucmVnaXN0
ZXJFbGVtZW50U2hhZG93KCkgeyBBU1NFUlQobV9udW1iZXJPZkVsZW1lbnRTaGFkb3dDaGlsZHJl
biA+IDApOyAtLW1fbnVtYmVyT2ZFbGVtZW50U2hhZG93Q2hpbGRyZW47IH0KICAgICB1bnNpZ25l
ZCBudW1iZXJPZkVsZW1lbnRTaGFkb3dDaGlsZHJlbigpIGNvbnN0IHsgcmV0dXJuIG1fbnVtYmVy
T2ZFbGVtZW50U2hhZG93Q2hpbGRyZW47IH0KICAgICBib29sIGhhc0VsZW1lbnRTaGFkb3dDaGls
ZHJlbigpIGNvbnN0IHsgcmV0dXJuIG1fbnVtYmVyT2ZFbGVtZW50U2hhZG93Q2hpbGRyZW4gPiAw
OyB9CiAKICAgICB2b2lkIGludmFsaWRhdGVJbnNlcnRpb25Qb2ludExpc3QoKTsKICAgICBjb25z
dCBWZWN0b3I8UmVmUHRyPEluc2VydGlvblBvaW50PiA+JiBlbnN1cmVJbnNlcnRpb25Qb2ludExp
c3QoU2hhZG93Um9vdCopOwogCisgICAgYm9vbCBpc1VzZWRGb3JSZW5kZXJpbmcoKSBjb25zdDsK
KworICAgIHN0YXRpYyBib29sIGhhc1NoYWRvd0VsZW1lbnQoY29uc3QgU2hhZG93Um9vdCopOwor
ICAgIHN0YXRpYyBib29sIGhhc0NvbnRlbnRFbGVtZW50KGNvbnN0IFNoYWRvd1Jvb3QqKTsKKyAg
ICBzdGF0aWMgYm9vbCBoYXNJbnNlcnRpb25Qb2ludChjb25zdCBTaGFkb3dSb290Kik7CisgICAg
c3RhdGljIGJvb2wgaGFzRWxlbWVudFNoYWRvdyhjb25zdCBTaGFkb3dSb290KiBob2xkZXIpIHsg
cmV0dXJuIGNvdW50RWxlbWVudFNoYWRvdyhob2xkZXIpOyB9CisgICAgc3RhdGljIHVuc2lnbmVk
IGNvdW50RWxlbWVudFNoYWRvdyhjb25zdCBTaGFkb3dSb290Kik7CisgICAgc3RhdGljIEluc2Vy
dGlvblBvaW50KiBhc3NpZ25lZFRvKGNvbnN0IFNoYWRvd1Jvb3QqKTsKKwogcHJpdmF0ZToKICAg
ICBJbnNlcnRpb25Qb2ludCogbV9pbnNlcnRpb25Qb2ludEFzc2lnbmVkVG87CiAgICAgdW5zaWdu
ZWQgbV9udW1iZXJPZlNoYWRvd0VsZW1lbnRDaGlsZHJlbjsKZGlmZiAtLWdpdCBhL1NvdXJjZS9X
ZWJDb3JlL2h0bWwvc2hhZG93L0hUTUxTaGFkb3dFbGVtZW50LmNwcCBiL1NvdXJjZS9XZWJDb3Jl
L2h0bWwvc2hhZG93L0hUTUxTaGFkb3dFbGVtZW50LmNwcAppbmRleCBkOWUxZjE1NGI5Y2FhMjc2
ZDkyMjBiYmM1MjgxNTYzNWNmZjA3OTZlLi4yMmMwNzY1NmE1NTdlNDdjOTNmZWI1M2FiM2UzNTUy
MjA3YWY4ZTljIDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViQ29yZS9odG1sL3NoYWRvdy9IVE1MU2hh
ZG93RWxlbWVudC5jcHAKKysrIGIvU291cmNlL1dlYkNvcmUvaHRtbC9zaGFkb3cvSFRNTFNoYWRv
d0VsZW1lbnQuY3BwCkBAIC03Myw3ICs3Myw3IEBAIFNoYWRvd1Jvb3QqIEhUTUxTaGFkb3dFbGVt
ZW50OjpvbGRlclNoYWRvd1Jvb3QoKQogICAgIHRvU2hhZG93Um9vdCh0cmVlU2NvcGUoKS0+cm9v
dE5vZGUoKSktPm93bmVyKCktPmVuc3VyZURpc3RyaWJ1dGlvbkZyb21Eb2N1bWVudCgpOwogCiAg
ICAgU2hhZG93Um9vdCogb2xkZXIgPSB0b1NoYWRvd1Jvb3QodHJlZVNjb3BlKCktPnJvb3ROb2Rl
KCkpLT5vbGRlclNoYWRvd1Jvb3QoKTsKLSAgICBpZiAoIW9sZGVyIHx8IG9sZGVyLT50eXBlKCkg
IT0gU2hhZG93Um9vdDo6QXV0aG9yU2hhZG93Um9vdCB8fCBvbGRlci0+YXNzaWduZWRUbygpICE9
IHRoaXMpCisgICAgaWYgKCFvbGRlciB8fCBvbGRlci0+dHlwZSgpICE9IFNoYWRvd1Jvb3Q6OkF1
dGhvclNoYWRvd1Jvb3QgfHwgU2NvcGVDb250ZW50RGlzdHJpYnV0aW9uOjphc3NpZ25lZFRvKG9s
ZGVyKSAhPSB0aGlzKQogICAgICAgICByZXR1cm4gMDsKIAogICAgIHJldHVybiBvbGRlcjsKZGlm
ZiAtLWdpdCBhL1NvdXJjZS9XZWJDb3JlL2h0bWwvc2hhZG93L0luc2VydGlvblBvaW50LmNwcCBi
L1NvdXJjZS9XZWJDb3JlL2h0bWwvc2hhZG93L0luc2VydGlvblBvaW50LmNwcAppbmRleCAxOWE4
YzkxNTdjMmIzYTQ4YTczNTZlMDM0ZGJmNzY0YTc2Yzk3OWE5Li40NGUzNGI5NTM0NTc0ZWMwNjhk
ZWVkMmFmZDgwYTY5NjY0N2JhYzU5IDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViQ29yZS9odG1sL3No
YWRvdy9JbnNlcnRpb25Qb2ludC5jcHAKKysrIGIvU291cmNlL1dlYkNvcmUvaHRtbC9zaGFkb3cv
SW5zZXJ0aW9uUG9pbnQuY3BwCkBAIC0xMzUsNyArMTM1LDcgQEAgTm9kZTo6SW5zZXJ0aW9uTm90
aWZpY2F0aW9uUmVxdWVzdCBJbnNlcnRpb25Qb2ludDo6aW5zZXJ0ZWRJbnRvKENvbnRhaW5lck5v
ZGUqIGkKICAgICAgICAgICAgIHJvb3RPd25lci0+aW52YWxpZGF0ZURpc3RyaWJ1dGlvbigpOwog
ICAgICAgICAgICAgaWYgKGlzQWN0aXZlKCkgJiYgIW1fcmVnaXN0ZXJlZFdpdGhTaGFkb3dSb290
ICYmIGluc2VydGlvblBvaW50LT50cmVlU2NvcGUoKS0+cm9vdE5vZGUoKSA9PSByb290KSB7CiAg
ICAgICAgICAgICAgICAgbV9yZWdpc3RlcmVkV2l0aFNoYWRvd1Jvb3QgPSB0cnVlOwotICAgICAg
ICAgICAgICAgIHJvb3QtPnJlZ2lzdGVySW5zZXJ0aW9uUG9pbnQodGhpcyk7CisgICAgICAgICAg
ICAgICAgcm9vdC0+ZW5zdXJlU2NvcGVEaXN0cmlidXRpb24oKS0+cmVnaXN0ZXJJbnNlcnRpb25Q
b2ludChyb290LCB0aGlzKTsKICAgICAgICAgICAgIH0KICAgICAgICAgfQogICAgIH0KQEAgLTE2
MCw3ICsxNjAsNyBAQCB2b2lkIEluc2VydGlvblBvaW50OjpyZW1vdmVkRnJvbShDb250YWluZXJO
b2RlKiBpbnNlcnRpb25Qb2ludCkKICAgICBpZiAobV9yZWdpc3RlcmVkV2l0aFNoYWRvd1Jvb3Qg
JiYgaW5zZXJ0aW9uUG9pbnQtPnRyZWVTY29wZSgpLT5yb290Tm9kZSgpID09IHJvb3QpIHsKICAg
ICAgICAgQVNTRVJUKHJvb3QpOwogICAgICAgICBtX3JlZ2lzdGVyZWRXaXRoU2hhZG93Um9vdCA9
IGZhbHNlOwotICAgICAgICByb290LT51bnJlZ2lzdGVySW5zZXJ0aW9uUG9pbnQodGhpcyk7Cisg
ICAgICAgIHJvb3QtPmVuc3VyZVNjb3BlRGlzdHJpYnV0aW9uKCktPnVucmVnaXN0ZXJJbnNlcnRp
b25Qb2ludChyb290LCB0aGlzKTsKICAgICB9CiAKICAgICBIVE1MRWxlbWVudDo6cmVtb3ZlZEZy
b20oaW5zZXJ0aW9uUG9pbnQpOwpAQCAtMTg2LDQgKzE4NiwzOCBAQCB2b2lkIEluc2VydGlvblBv
aW50OjpzZXRSZXNldFN0eWxlSW5oZXJpdGFuY2UoYm9vbCB2YWx1ZSkKICAgICBzZXRCb29sZWFu
QXR0cmlidXRlKHJlc2V0X3N0eWxlX2luaGVyaXRhbmNlQXR0ciwgdmFsdWUpOwogfQogCitib29s
IEluc2VydGlvblBvaW50Ojpjb250YWlucyhjb25zdCBOb2RlKiBub2RlKSBjb25zdAoreworICAg
IHJldHVybiBtX2Rpc3RyaWJ1dGlvbi5jb250YWlucyhjb25zdF9jYXN0PE5vZGUqPihub2RlKSkg
fHwgKG5vZGUtPmlzU2hhZG93Um9vdCgpICYmIFNjb3BlQ29udGVudERpc3RyaWJ1dGlvbjo6YXNz
aWduZWRUbyh0b1NoYWRvd1Jvb3Qobm9kZSkpID09IHRoaXMpOworfQorCitJbnNlcnRpb25Qb2lu
dCogcmVzb2x2ZVJlcHJvamVjdGlvbihjb25zdCBOb2RlKiBwcm9qZWN0ZWROb2RlKQoreworICAg
IEluc2VydGlvblBvaW50KiBpbnNlcnRpb25Qb2ludCA9IDA7CisgICAgY29uc3QgTm9kZSogY3Vy
cmVudCA9IHByb2plY3RlZE5vZGU7CisKKyAgICB3aGlsZSAoY3VycmVudCkgeworICAgICAgICBp
ZiAoRWxlbWVudFNoYWRvdyogc2hhZG93ID0gc2hhZG93T2ZQYXJlbnRGb3JEaXN0cmlidXRpb24o
Y3VycmVudCkpIHsKKyAgICAgICAgICAgIHNoYWRvdy0+ZW5zdXJlRGlzdHJpYnV0aW9uKCk7Cisg
ICAgICAgICAgICBpZiAoSW5zZXJ0aW9uUG9pbnQqIGluc2VydGVkVG8gPSBzaGFkb3ctPmRpc3Ry
aWJ1dG9yKCkuZmluZEluc2VydGlvblBvaW50Rm9yKHByb2plY3RlZE5vZGUpKSB7CisgICAgICAg
ICAgICAgICAgY3VycmVudCA9IGluc2VydGVkVG87CisgICAgICAgICAgICAgICAgaW5zZXJ0aW9u
UG9pbnQgPSBpbnNlcnRlZFRvOworICAgICAgICAgICAgICAgIGNvbnRpbnVlOworICAgICAgICAg
ICAgfQorICAgICAgICB9CisKKyAgICAgICAgaWYgKE5vZGUqIHBhcmVudCA9IHBhcmVudE5vZGVG
b3JEaXN0cmlidXRpb24oY3VycmVudCkpIHsKKyAgICAgICAgICAgIGlmIChJbnNlcnRpb25Qb2lu
dCogaW5zZXJ0ZWRUbyA9IHBhcmVudC0+aXNTaGFkb3dSb290KCkgPyBTY29wZUNvbnRlbnREaXN0
cmlidXRpb246OmFzc2lnbmVkVG8odG9TaGFkb3dSb290KHBhcmVudCkpIDogMCkgeworICAgICAg
ICAgICAgICAgIGN1cnJlbnQgPSBpbnNlcnRlZFRvOworICAgICAgICAgICAgICAgIGluc2VydGlv
blBvaW50ID0gaW5zZXJ0ZWRUbzsKKyAgICAgICAgICAgICAgICBjb250aW51ZTsKKyAgICAgICAg
ICAgIH0KKyAgICAgICAgfQorCisgICAgICAgIGJyZWFrOworICAgIH0KKworICAgIHJldHVybiBp
bnNlcnRpb25Qb2ludDsKK30KKwogfSAvLyBuYW1lc3BhY2UgV2ViQ29yZQpkaWZmIC0tZ2l0IGEv
U291cmNlL1dlYkNvcmUvaHRtbC9zaGFkb3cvSW5zZXJ0aW9uUG9pbnQuaCBiL1NvdXJjZS9XZWJD
b3JlL2h0bWwvc2hhZG93L0luc2VydGlvblBvaW50LmgKaW5kZXggYWVkYWMxZDBmN2QxMGY2ZDg0
ZTEzNjBlODEwMDMzOGE5MGM4MTJlMS4uM2JkNzUyYzg3M2QxZjFhNTk5ZTQ3OTBiODY1OTRiMDc1
ZWVmN2VjZSAxMDA2NDQKLS0tIGEvU291cmNlL1dlYkNvcmUvaHRtbC9zaGFkb3cvSW5zZXJ0aW9u
UG9pbnQuaAorKysgYi9Tb3VyY2UvV2ViQ29yZS9odG1sL3NoYWRvdy9JbnNlcnRpb25Qb2ludC5o
CkBAIC03Miw3ICs3Miw3IEBAIHB1YmxpYzoKICAgICBib29sIHNob3VsZFVzZUZhbGxiYWNrRWxl
bWVudHMoKSBjb25zdDsKIAogICAgIHNpemVfdCBpbmRleE9mKE5vZGUqIG5vZGUpIGNvbnN0IHsg
cmV0dXJuIG1fZGlzdHJpYnV0aW9uLmZpbmQobm9kZSk7IH0KLSAgICBib29sIGNvbnRhaW5zKGNv
bnN0IE5vZGUqIG5vZGUpIGNvbnN0IHsgcmV0dXJuIG1fZGlzdHJpYnV0aW9uLmNvbnRhaW5zKGNv
bnN0X2Nhc3Q8Tm9kZSo+KG5vZGUpKSB8fCAobm9kZS0+aXNTaGFkb3dSb290KCkgJiYgdG9TaGFk
b3dSb290KG5vZGUpLT5hc3NpZ25lZFRvKCkgPT0gdGhpcyk7IH0KKyAgICBib29sIGNvbnRhaW5z
KGNvbnN0IE5vZGUqKSBjb25zdDsKICAgICBzaXplX3Qgc2l6ZSgpIGNvbnN0IHsgcmV0dXJuIG1f
ZGlzdHJpYnV0aW9uLnNpemUoKTsgfQogICAgIE5vZGUqIGF0KHNpemVfdCBpbmRleCkgIGNvbnN0
IHsgcmV0dXJuIG1fZGlzdHJpYnV0aW9uLmF0KGluZGV4KS5nZXQoKTsgfQogICAgIE5vZGUqIGZp
cnN0KCkgY29uc3QgeyByZXR1cm4gbV9kaXN0cmlidXRpb24uaXNFbXB0eSgpID8gMCA6IG1fZGlz
dHJpYnV0aW9uLmZpcnN0KCkuZ2V0KCk7IH0KQEAgLTE1MCwzNCArMTUwLDcgQEAgaW5saW5lIEVs
ZW1lbnRTaGFkb3cqIHNoYWRvd09mUGFyZW50Rm9yRGlzdHJpYnV0aW9uKGNvbnN0IE5vZGUqIG5v
ZGUpCiAgICAgcmV0dXJuIDA7CiB9CiAKLWlubGluZSBJbnNlcnRpb25Qb2ludCogcmVzb2x2ZVJl
cHJvamVjdGlvbihjb25zdCBOb2RlKiBwcm9qZWN0ZWROb2RlKQotewotICAgIEluc2VydGlvblBv
aW50KiBpbnNlcnRpb25Qb2ludCA9IDA7Ci0gICAgY29uc3QgTm9kZSogY3VycmVudCA9IHByb2pl
Y3RlZE5vZGU7Ci0KLSAgICB3aGlsZSAoY3VycmVudCkgewotICAgICAgICBpZiAoRWxlbWVudFNo
YWRvdyogc2hhZG93ID0gc2hhZG93T2ZQYXJlbnRGb3JEaXN0cmlidXRpb24oY3VycmVudCkpIHsK
LSAgICAgICAgICAgIHNoYWRvdy0+ZW5zdXJlRGlzdHJpYnV0aW9uKCk7Ci0gICAgICAgICAgICBp
ZiAoSW5zZXJ0aW9uUG9pbnQqIGluc2VydGVkVG8gPSBzaGFkb3ctPmRpc3RyaWJ1dG9yKCkuZmlu
ZEluc2VydGlvblBvaW50Rm9yKHByb2plY3RlZE5vZGUpKSB7Ci0gICAgICAgICAgICAgICAgY3Vy
cmVudCA9IGluc2VydGVkVG87Ci0gICAgICAgICAgICAgICAgaW5zZXJ0aW9uUG9pbnQgPSBpbnNl
cnRlZFRvOwotICAgICAgICAgICAgICAgIGNvbnRpbnVlOwotICAgICAgICAgICAgfQotICAgICAg
ICB9Ci0KLSAgICAgICAgaWYgKE5vZGUqIHBhcmVudCA9IHBhcmVudE5vZGVGb3JEaXN0cmlidXRp
b24oY3VycmVudCkpIHsKLSAgICAgICAgICAgIGlmIChJbnNlcnRpb25Qb2ludCogaW5zZXJ0ZWRU
byA9IHBhcmVudC0+aXNTaGFkb3dSb290KCkgPyB0b1NoYWRvd1Jvb3QocGFyZW50KS0+YXNzaWdu
ZWRUbygpIDogMCkgewotICAgICAgICAgICAgICAgIGN1cnJlbnQgPSBpbnNlcnRlZFRvOwotICAg
ICAgICAgICAgICAgIGluc2VydGlvblBvaW50ID0gaW5zZXJ0ZWRUbzsKLSAgICAgICAgICAgICAg
ICBjb250aW51ZTsKLSAgICAgICAgICAgIH0KLSAgICAgICAgfQotCi0gICAgICAgIGJyZWFrOwot
ICAgIH0KLQotICAgIHJldHVybiBpbnNlcnRpb25Qb2ludDsKLX0KK0luc2VydGlvblBvaW50KiBy
ZXNvbHZlUmVwcm9qZWN0aW9uKGNvbnN0IE5vZGUqKTsKIAogfSAvLyBuYW1lc3BhY2UgV2ViQ29y
ZQogCmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS90ZXN0aW5nL0ludGVybmFscy5jcHAgYi9T
b3VyY2UvV2ViQ29yZS90ZXN0aW5nL0ludGVybmFscy5jcHAKaW5kZXggOWI0NWZiNjAzNTE2ZTNi
MThmNTA0YjdjOWVmMDRmNDQ3OGNlYWZkMS4uZmEyZmViODcxZWY4NjIyMmM2YWJiNDA2NDllMmI0
YjY3ZTgxZjdlYSAxMDA2NDQKLS0tIGEvU291cmNlL1dlYkNvcmUvdGVzdGluZy9JbnRlcm5hbHMu
Y3BwCisrKyBiL1NvdXJjZS9XZWJDb3JlL3Rlc3RpbmcvSW50ZXJuYWxzLmNwcApAQCAtMzMsNiAr
MzMsNyBAQAogI2luY2x1ZGUgIkNsaWVudFJlY3QuaCIKICNpbmNsdWRlICJDbGllbnRSZWN0TGlz
dC5oIgogI2luY2x1ZGUgIkNvbXBvc2VkU2hhZG93VHJlZVdhbGtlci5oIgorI2luY2x1ZGUgIkNv
bnRlbnREaXN0cmlidXRvci5oIgogI2luY2x1ZGUgIkN1cnNvci5oIgogI2luY2x1ZGUgIkRPTVN0
cmluZ0xpc3QuaCIKICNpbmNsdWRlICJET01XaW5kb3cuaCIKQEAgLTQzNCw3ICs0MzUsNyBAQCBi
b29sIEludGVybmFsczo6cGF1c2VUcmFuc2l0aW9uQXRUaW1lT25Qc2V1ZG9FbGVtZW50KGNvbnN0
IFN0cmluZyYgcHJvcGVydHksIGRvdQogYm9vbCBJbnRlcm5hbHM6Omhhc1NoYWRvd0luc2VydGlv
blBvaW50KGNvbnN0IE5vZGUqIHJvb3QsIEV4Y2VwdGlvbkNvZGUmIGVjKSBjb25zdAogewogICAg
IGlmIChyb290ICYmIHJvb3QtPmlzU2hhZG93Um9vdCgpKQotICAgICAgICByZXR1cm4gdG9TaGFk
b3dSb290KHJvb3QpLT5oYXNTaGFkb3dJbnNlcnRpb25Qb2ludCgpOworICAgICAgICByZXR1cm4g
U2NvcGVDb250ZW50RGlzdHJpYnV0aW9uOjpoYXNTaGFkb3dFbGVtZW50KHRvU2hhZG93Um9vdChy
b290KSk7CiAKICAgICBlYyA9IElOVkFMSURfQUNDRVNTX0VSUjsKICAgICByZXR1cm4gMDsKQEAg
LTQ0Myw3ICs0NDQsNyBAQCBib29sIEludGVybmFsczo6aGFzU2hhZG93SW5zZXJ0aW9uUG9pbnQo
Y29uc3QgTm9kZSogcm9vdCwgRXhjZXB0aW9uQ29kZSYgZWMpIGNvbgogYm9vbCBJbnRlcm5hbHM6
Omhhc0NvbnRlbnRFbGVtZW50KGNvbnN0IE5vZGUqIHJvb3QsIEV4Y2VwdGlvbkNvZGUmIGVjKSBj
b25zdAogewogICAgIGlmIChyb290ICYmIHJvb3QtPmlzU2hhZG93Um9vdCgpKQotICAgICAgICBy
ZXR1cm4gdG9TaGFkb3dSb290KHJvb3QpLT5oYXNDb250ZW50RWxlbWVudCgpOworICAgICAgICBy
ZXR1cm4gU2NvcGVDb250ZW50RGlzdHJpYnV0aW9uOjpoYXNDb250ZW50RWxlbWVudCh0b1NoYWRv
d1Jvb3Qocm9vdCkpOwogCiAgICAgZWMgPSBJTlZBTElEX0FDQ0VTU19FUlI7CiAgICAgcmV0dXJu
IDA7CkBAIC00NTYsNyArNDU3LDcgQEAgc2l6ZV90IEludGVybmFsczo6Y291bnRFbGVtZW50U2hh
ZG93KGNvbnN0IE5vZGUqIHJvb3QsIEV4Y2VwdGlvbkNvZGUmIGVjKSBjb25zdAogICAgICAgICBy
ZXR1cm4gMDsKICAgICB9CiAKLSAgICByZXR1cm4gdG9TaGFkb3dSb290KHJvb3QpLT5jb3VudEVs
ZW1lbnRTaGFkb3coKTsKKyAgICByZXR1cm4gU2NvcGVDb250ZW50RGlzdHJpYnV0aW9uOjpjb3Vu
dEVsZW1lbnRTaGFkb3codG9TaGFkb3dSb290KHJvb3QpKTsKIH0KIAogYm9vbCBJbnRlcm5hbHM6
OmF0dGFjaGVkKE5vZGUqIG5vZGUsIEV4Y2VwdGlvbkNvZGUmIGVjKQo=
</data>

          </attachment>
          <attachment
              isobsolete="1"
              ispatch="1"
              isprivate="0"
          >
            <attachid>181640</attachid>
            <date>2013-01-07 22:17:00 -0800</date>
            <delta_ts>2013-01-07 22:18:40 -0800</delta_ts>
            <desc>Patch</desc>
            <filename>bug-106282-20130108151404.patch</filename>
            <type>text/plain</type>
            <size>37279</size>
            <attacher name="Hajime Morrita">morrita</attacher>
            
              <data encoding="base64">U3VidmVyc2lvbiBSZXZpc2lvbjogMTM5MDI0CmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9D
aGFuZ2VMb2cgYi9Tb3VyY2UvV2ViQ29yZS9DaGFuZ2VMb2cKaW5kZXggYjM0ZDVhYmZmMTI1NTZi
MmU1NzU1NWIxNTdjZjQyNzlhMDljMThhMC4uMWExYjAzNzgyZWJhYjY3NGVkZmExODViNzFiNTQ2
Yjc4MDljZWUyMCAxMDA2NDQKLS0tIGEvU291cmNlL1dlYkNvcmUvQ2hhbmdlTG9nCisrKyBiL1Nv
dXJjZS9XZWJDb3JlL0NoYW5nZUxvZwpAQCAtMSwzICsxLDc5IEBACisyMDEzLTAxLTA3ICBIYWpp
bWUgTW9ycml0YSAgPG1vcnJpdGFAZ29vZ2xlLmNvbT4KKworICAgICAgICBbU2hhZG93IERPTV0g
RGlzdHJpYnV0aW9uIHJlbGF0ZWQgY29kZSBvbiBTaGFkb3dSb290IHNob3VsZCBiZSBtaW5pbWl6
ZWQuCisgICAgICAgIGh0dHBzOi8vYnVncy53ZWJraXQub3JnL3Nob3dfYnVnLmNnaT9pZD0xMDYy
ODIKKworICAgICAgICBSZXZpZXdlZCBieSBOT0JPRFkgKE9PUFMhKS4KKworICAgICAgICBTaGFk
b3dSb290IGhhZCBhIGNlcnRhaW4gYW1vdW50IG9mIGxvZ2ljIHdoaWNoIGlzIGRlZGljYXRlZCBm
b3IKKyAgICAgICAgbm9kZSBkaXN0cmlidXRpb24gY29tcHV0YXRpb24uICBUaGVzZSBjb2RlIGlz
IGdvaW5nIHRvIGJlIGNvbXBpbGVkCisgICAgICAgIG91dCAoQnVnIDEwMzMzOSkgYW5kIGJldHRl
ciBiZSBwYXJ0IG9mIHRoZSBub2RlIGRpc3RyaWJ1dGlvbgorICAgICAgICBhbGdvcml0aG0sIHdo
aWNoIGlzIFNjb3BlQ29udGVudERpc3RyaWJ1dGlvbiBjbGFzcy4KKworICAgICAgICBUaGlzIGNo
YW5nZQorCisgICAgICAgIC0gUmVuYW1lcyBTaGFkb3dSb290Q29udGVudERpc3RyaWJ1dGlvbkRh
dGEgdG8KKyAgICAgICAgICBTY29wZUNvbnRlbnREaXN0cmlidXRpb24uICBOZXcgbmFtZSBpcyBj
b25jaXNlIGFuZCBhIGJpdCBtb3JlCisgICAgICAgICAgbWVhbmluZ2Z1bDogSXQgb3ducyBwZXIg
VHJlZVNjb3BlIGRpc3RyaWJ1dGlvbiBzdGF0ZS4KKyAgICAgICAgLSBNb3ZlcyBkaXN0cmlidXRp
b24gcmVsYXRlZCBjb2RlIGZyb20gU2hhZG93Um9vdCB0byBTY29wZUNvbnRlbnREaXN0cmlidXRp
b24KKworICAgICAgICBObyBuZXcgdGVzdHMuIFJlZmFjdG9yaW5nLgorCisgICAgICAgICogV2Vi
Q29yZS5leHAuaW46CisgICAgICAgICogY3NzL1N0eWxlU2NvcGVSZXNvbHZlci5jcHA6CisgICAg
ICAgIChXZWJDb3JlOjpTdHlsZVNjb3BlUmVzb2x2ZXI6OnN0eWxlU2hhcmluZ0NhbmRpZGF0ZU1h
dGNoZXNIb3N0UnVsZXMpOgorICAgICAgICAoV2ViQ29yZTo6U3R5bGVTY29wZVJlc29sdmVyOjpt
YXRjaEhvc3RSdWxlcyk6CisgICAgICAgICogZG9tL0NvbXBvc2VkU2hhZG93VHJlZVdhbGtlci5j
cHA6CisgICAgICAgIChXZWJDb3JlOjpub2RlQ2FuQmVEaXN0cmlidXRlZCk6CisgICAgICAgIChX
ZWJDb3JlOjpDb21wb3NlZFNoYWRvd1RyZWVXYWxrZXI6OnRyYXZlcnNlQmFja1RvWW91bmdlclNo
YWRvd1Jvb3QpOgorICAgICAgICAoV2ViQ29yZTo6Q29tcG9zZWRTaGFkb3dUcmVlV2Fsa2VyOjp0
cmF2ZXJzZVBhcmVudEJhY2tUb1lvdW5nZXJTaGFkb3dSb290T3JIb3N0KToKKyAgICAgICAgKFdl
YkNvcmU6OkFuY2VzdG9yQ2hhaW5XYWxrZXI6OnBhcmVudCk6CisgICAgICAgICogZG9tL0VsZW1l
bnRTaGFkb3cuY3BwOgorICAgICAgICAoV2ViQ29yZTo6RWxlbWVudFNoYWRvdzo6Y29sbGVjdFNl
bGVjdEZlYXR1cmVTZXRGcm9tKToKKyAgICAgICAgKiBkb20vU2hhZG93Um9vdC5jcHA6CisgICAg
ICAgIChXZWJDb3JlOjpTaGFkb3dSb290OjppbnNlcnRlZEludG8pOgorICAgICAgICAoV2ViQ29y
ZTo6U2hhZG93Um9vdDo6cmVtb3ZlZEZyb20pOgorICAgICAgICAoV2ViQ29yZTo6U2hhZG93Um9v
dDo6ZW5zdXJlU2NvcGVEaXN0cmlidXRpb24pOgorICAgICAgICAoV2ViQ29yZTo6U2hhZG93Um9v
dDo6cmVwb3J0TWVtb3J5VXNhZ2UpOgorICAgICAgICAqIGRvbS9TaGFkb3dSb290Lmg6CisgICAg
ICAgIChXZWJDb3JlKToKKyAgICAgICAgKFNoYWRvd1Jvb3QpOgorICAgICAgICAoV2ViQ29yZTo6
U2hhZG93Um9vdDo6c2NvcGVEaXN0cmlidXRpb24pOgorICAgICAgICAqIGh0bWwvc2hhZG93L0Nv
bnRlbnREaXN0cmlidXRvci5jcHA6CisgICAgICAgIChXZWJDb3JlOjpTY29wZUNvbnRlbnREaXN0
cmlidXRpb246OlNjb3BlQ29udGVudERpc3RyaWJ1dGlvbik6CisgICAgICAgIChXZWJDb3JlOjpT
Y29wZUNvbnRlbnREaXN0cmlidXRpb246OmludmFsaWRhdGVJbnNlcnRpb25Qb2ludExpc3QpOgor
ICAgICAgICAoV2ViQ29yZTo6U2NvcGVDb250ZW50RGlzdHJpYnV0aW9uOjplbnN1cmVJbnNlcnRp
b25Qb2ludExpc3QpOgorICAgICAgICAoV2ViQ29yZTo6U2NvcGVDb250ZW50RGlzdHJpYnV0aW9u
OjpyZWdpc3Rlckluc2VydGlvblBvaW50KToKKyAgICAgICAgKFdlYkNvcmU6OlNjb3BlQ29udGVu
dERpc3RyaWJ1dGlvbjo6dW5yZWdpc3Rlckluc2VydGlvblBvaW50KToKKyAgICAgICAgKFdlYkNv
cmU6OlNjb3BlQ29udGVudERpc3RyaWJ1dGlvbjo6aGFzU2hhZG93RWxlbWVudCk6CisgICAgICAg
IChXZWJDb3JlKToKKyAgICAgICAgKFdlYkNvcmU6OlNjb3BlQ29udGVudERpc3RyaWJ1dGlvbjo6
aGFzQ29udGVudEVsZW1lbnQpOgorICAgICAgICAoV2ViQ29yZTo6U2NvcGVDb250ZW50RGlzdHJp
YnV0aW9uOjpjb3VudEVsZW1lbnRTaGFkb3cpOgorICAgICAgICAoV2ViQ29yZTo6U2NvcGVDb250
ZW50RGlzdHJpYnV0aW9uOjpoYXNJbnNlcnRpb25Qb2ludCk6CisgICAgICAgIChXZWJDb3JlOjpT
Y29wZUNvbnRlbnREaXN0cmlidXRpb246OmFzc2lnbmVkVG8pOgorICAgICAgICAoV2ViQ29yZTo6
Q29udGVudERpc3RyaWJ1dG9yOjpkaXN0cmlidXRlKToKKyAgICAgICAgKFdlYkNvcmU6OkNvbnRl
bnREaXN0cmlidXRvcjo6aW52YWxpZGF0ZSk6CisgICAgICAgICogaHRtbC9zaGFkb3cvQ29udGVu
dERpc3RyaWJ1dG9yLmg6CisgICAgICAgIChTY29wZUNvbnRlbnREaXN0cmlidXRpb24pOgorICAg
ICAgICAoV2ViQ29yZTo6U2NvcGVDb250ZW50RGlzdHJpYnV0aW9uOjpyZWdpc3RlckVsZW1lbnRT
aGFkb3cpOgorICAgICAgICAoV2ViQ29yZTo6U2NvcGVDb250ZW50RGlzdHJpYnV0aW9uOjp1bnJl
Z2lzdGVyRWxlbWVudFNoYWRvdyk6CisgICAgICAgIChXZWJDb3JlOjpTY29wZUNvbnRlbnREaXN0
cmlidXRpb246Omhhc0VsZW1lbnRTaGFkb3cpOgorICAgICAgICAqIGh0bWwvc2hhZG93L0hUTUxT
aGFkb3dFbGVtZW50LmNwcDoKKyAgICAgICAgKFdlYkNvcmU6OkhUTUxTaGFkb3dFbGVtZW50Ojpv
bGRlclNoYWRvd1Jvb3QpOgorICAgICAgICAqIGh0bWwvc2hhZG93L0luc2VydGlvblBvaW50LmNw
cDoKKyAgICAgICAgKFdlYkNvcmU6Okluc2VydGlvblBvaW50OjppbnNlcnRlZEludG8pOgorICAg
ICAgICAoV2ViQ29yZTo6SW5zZXJ0aW9uUG9pbnQ6OnJlbW92ZWRGcm9tKToKKyAgICAgICAgKFdl
YkNvcmU6Okluc2VydGlvblBvaW50Ojpjb250YWlucyk6CisgICAgICAgIChXZWJDb3JlKToKKyAg
ICAgICAgKFdlYkNvcmU6OnJlc29sdmVSZXByb2plY3Rpb24pOgorICAgICAgICAqIGh0bWwvc2hh
ZG93L0luc2VydGlvblBvaW50Lmg6CisgICAgICAgIChJbnNlcnRpb25Qb2ludCk6CisgICAgICAg
IChXZWJDb3JlKToKKyAgICAgICAgKiB0ZXN0aW5nL0ludGVybmFscy5jcHA6CisgICAgICAgIChX
ZWJDb3JlOjpJbnRlcm5hbHM6Omhhc1NoYWRvd0luc2VydGlvblBvaW50KToKKyAgICAgICAgKFdl
YkNvcmU6OkludGVybmFsczo6aGFzQ29udGVudEVsZW1lbnQpOgorICAgICAgICAoV2ViQ29yZTo6
SW50ZXJuYWxzOjpjb3VudEVsZW1lbnRTaGFkb3cpOgorCiAyMDEzLTAxLTA3ICBYaWFuemh1IFdh
bmcgIDx3YW5neGlhbnpodUBjaHJvbWl1bS5vcmc+CiAKICAgICAgICAgQWRkIGEgc2V0dGluZyB0
byBlbmFibGUgY29tcG9zaXRlZCBzY3JvbGxpbmcgZm9yIGZyYW1lcwpkaWZmIC0tZ2l0IGEvU291
cmNlL1dlYkNvcmUvV2ViQ29yZS5leHAuaW4gYi9Tb3VyY2UvV2ViQ29yZS9XZWJDb3JlLmV4cC5p
bgppbmRleCBiZDNmZTg3ZDNmMTZmMDA0NjAwNzM3YmExZTllYjY5ZDhiMzRhMGJiLi44NmU5NTRj
YmQzY2YzYmMwMWQ1ZDJiOTMwN2Q4N2MzOTQ5OTM2ODhiIDEwMDY0NAotLS0gYS9Tb3VyY2UvV2Vi
Q29yZS9XZWJDb3JlLmV4cC5pbgorKysgYi9Tb3VyY2UvV2ViQ29yZS9XZWJDb3JlLmV4cC5pbgpA
QCAtODIsOSArODIsNiBAQCBfX1pON1dlYkNvcmUxMFNjcm9sbFZpZXcyMXNldERlbGVnYXRlc1Nj
cm9sbGluZ0ViCiBfX1pON1dlYkNvcmUxMFNjcm9sbFZpZXcyM3NldFNjcm9sbGJhcnNTdXBwcmVz
c2VkRWJiCiBfX1pON1dlYkNvcmUxMFNjcm9sbFZpZXcyNHdpbmRvd1Jlc2l6ZXJSZWN0Q2hhbmdl
ZEV2CiBfX1pON1dlYkNvcmUxMFNjcm9sbFZpZXc4YWRkQ2hpbGRFTjNXVEYxMFBhc3NSZWZQdHJJ
TlNfNldpZGdldEVFRQotX19aTks3V2ViQ29yZTEwU2hhZG93Um9vdDE3aGFzQ29udGVudEVsZW1l
bnRFdgotX19aTks3V2ViQ29yZTEwU2hhZG93Um9vdDE4Y291bnRFbGVtZW50U2hhZG93RXYKLV9f
Wk5LN1dlYkNvcmUxMFNoYWRvd1Jvb3QyM2hhc1NoYWRvd0luc2VydGlvblBvaW50RXYKIF9fWk5L
N1dlYkNvcmUxNFNjcm9sbGFibGVBcmVhMTdyZXBvcnRNZW1vcnlVc2FnZUVQTjNXVEYxNk1lbW9y
eU9iamVjdEluZm9FCiBfX1pON1dlYkNvcmUxMFNoYWRvd1Jvb3Q2Y3JlYXRlRVBOU183RWxlbWVu
dEVSaQogX19aTjdXZWJDb3JlMTBkZWxldGVGaWxlRVJLTjNXVEY2U3RyaW5nRQpkaWZmIC0tZ2l0
IGEvU291cmNlL1dlYkNvcmUvY3NzL1N0eWxlU2NvcGVSZXNvbHZlci5jcHAgYi9Tb3VyY2UvV2Vi
Q29yZS9jc3MvU3R5bGVTY29wZVJlc29sdmVyLmNwcAppbmRleCAxYzM5MTE3MjgwNzJjNjU4ZTll
MjlmODYyNjBmYjY4OWFmMDk5NmNkLi5mZGViZGE0Y2M4MDYwYmIxZmY5M2NlYWNlMjM5YTYyYWM1
ZWQ0ZmE3IDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViQ29yZS9jc3MvU3R5bGVTY29wZVJlc29sdmVy
LmNwcAorKysgYi9Tb3VyY2UvV2ViQ29yZS9jc3MvU3R5bGVTY29wZVJlc29sdmVyLmNwcApAQCAt
MzEsNiArMzEsNyBAQAogCiAjaW5jbHVkZSAiQ1NTU3R5bGVSdWxlLmgiCiAjaW5jbHVkZSAiQ1NT
U3R5bGVTaGVldC5oIgorI2luY2x1ZGUgIkNvbnRlbnREaXN0cmlidXRvci5oIgogI2luY2x1ZGUg
IkNvbnRleHRGZWF0dXJlcy5oIgogI2luY2x1ZGUgIkVsZW1lbnRTaGFkb3cuaCIKICNpbmNsdWRl
ICJIVE1MTmFtZXMuaCIKQEAgLTIxMCw3ICsyMTEsNyBAQCBib29sIFN0eWxlU2NvcGVSZXNvbHZl
cjo6c3R5bGVTaGFyaW5nQ2FuZGlkYXRlTWF0Y2hlc0hvc3RSdWxlcyhjb25zdCBFbGVtZW50KiBl
bAogICAgICAgICBpZiAoYXRIb3N0UnVsZVNldEZvcihzaGFkb3dSb290KSkKICAgICAgICAgICAg
IHJldHVybiB0cnVlOwogCi0gICAgICAgIGlmICghc2hhZG93Um9vdC0+aGFzU2hhZG93SW5zZXJ0
aW9uUG9pbnQoKSkKKyAgICAgICAgaWYgKCFTY29wZUNvbnRlbnREaXN0cmlidXRpb246Omhhc1No
YWRvd0VsZW1lbnQoc2hhZG93Um9vdCkpCiAgICAgICAgICAgICBicmVhazsKICAgICB9CiAgICAg
cmV0dXJuIGZhbHNlOwpAQCAtMjMyLDcgKzIzMyw3IEBAIHZvaWQgU3R5bGVTY29wZVJlc29sdmVy
OjptYXRjaEhvc3RSdWxlcyhjb25zdCBFbGVtZW50KiBlbGVtZW50LCBWZWN0b3I8UnVsZVNldCo+
CiAgICAgZm9yIChTaGFkb3dSb290KiBzaGFkb3dSb290ID0gc2hhZG93LT55b3VuZ2VzdFNoYWRv
d1Jvb3QoKTsgc2hhZG93Um9vdDsgc2hhZG93Um9vdCA9IHNoYWRvd1Jvb3QtPm9sZGVyU2hhZG93
Um9vdCgpKSB7IAogICAgICAgICBpZiAoUnVsZVNldCogcnVsZVNldCA9IGF0SG9zdFJ1bGVTZXRG
b3Ioc2hhZG93Um9vdCkpCiAgICAgICAgICAgICBtYXRjaGVkUnVsZXMuYXBwZW5kKHJ1bGVTZXQp
OwotICAgICAgICBpZiAoIXNoYWRvd1Jvb3QtPmhhc1NoYWRvd0luc2VydGlvblBvaW50KCkpCisg
ICAgICAgIGlmICghU2NvcGVDb250ZW50RGlzdHJpYnV0aW9uOjpoYXNTaGFkb3dFbGVtZW50KHNo
YWRvd1Jvb3QpKQogICAgICAgICAgICAgYnJlYWs7CiAgICAgfQogfQpkaWZmIC0tZ2l0IGEvU291
cmNlL1dlYkNvcmUvZG9tL0NvbXBvc2VkU2hhZG93VHJlZVdhbGtlci5jcHAgYi9Tb3VyY2UvV2Vi
Q29yZS9kb20vQ29tcG9zZWRTaGFkb3dUcmVlV2Fsa2VyLmNwcAppbmRleCAxZDAzYzU0N2UwYjQ5
ODdlMjY3MjJiOTM5OWQ2ZjViMGQ1ZmQyYjA4Li42NWIxMzNjZmIyMjU4ZWVmMjI3OWFlNWFhNmQ1
ODdiZDM5NmVlY2U2IDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViQ29yZS9kb20vQ29tcG9zZWRTaGFk
b3dUcmVlV2Fsa2VyLmNwcAorKysgYi9Tb3VyY2UvV2ViQ29yZS9kb20vQ29tcG9zZWRTaGFkb3dU
cmVlV2Fsa2VyLmNwcApAQCAtNjMsNyArNjMsNyBAQCBzdGF0aWMgaW5saW5lIGJvb2wgbm9kZUNh
bkJlRGlzdHJpYnV0ZWQoY29uc3QgTm9kZSogbm9kZSkKICAgICAgICAgcmV0dXJuIGZhbHNlOwog
CiAgICAgaWYgKFNoYWRvd1Jvb3QqIHNoYWRvd1Jvb3QgPSBwYXJlbnQtPmlzU2hhZG93Um9vdCgp
ID8gdG9TaGFkb3dSb290KHBhcmVudCkgOiAwKQotICAgICAgICByZXR1cm4gc2hhZG93Um9vdC0+
YXNzaWduZWRUbygpOworICAgICAgICByZXR1cm4gU2NvcGVDb250ZW50RGlzdHJpYnV0aW9uOjph
c3NpZ25lZFRvKHNoYWRvd1Jvb3QpOwogCiAgICAgaWYgKHBhcmVudC0+aXNFbGVtZW50Tm9kZSgp
ICYmIHRvRWxlbWVudChwYXJlbnQpLT5zaGFkb3coKSkKICAgICAgICAgcmV0dXJuIHRydWU7CkBA
IC0xOTgsNyArMTk4LDcgQEAgTm9kZSogQ29tcG9zZWRTaGFkb3dUcmVlV2Fsa2VyOjp0cmF2ZXJz
ZUJhY2tUb1lvdW5nZXJTaGFkb3dSb290KGNvbnN0IE5vZGUqIG5vZGUKICAgICBpZiAobm9kZS0+
cGFyZW50Tm9kZSgpICYmIG5vZGUtPnBhcmVudE5vZGUoKS0+aXNTaGFkb3dSb290KCkpIHsKICAg
ICAgICAgU2hhZG93Um9vdCogcGFyZW50U2hhZG93Um9vdCA9IHRvU2hhZG93Um9vdChub2RlLT5w
YXJlbnROb2RlKCkpOwogICAgICAgICBpZiAoIXBhcmVudFNoYWRvd1Jvb3QtPmlzWW91bmdlc3Qo
KSkgewotICAgICAgICAgICAgSW5zZXJ0aW9uUG9pbnQqIGFzc2lnbmVkSW5zZXJ0aW9uUG9pbnQg
PSBwYXJlbnRTaGFkb3dSb290LT5hc3NpZ25lZFRvKCk7CisgICAgICAgICAgICBJbnNlcnRpb25Q
b2ludCogYXNzaWduZWRJbnNlcnRpb25Qb2ludCA9IFNjb3BlQ29udGVudERpc3RyaWJ1dGlvbjo6
YXNzaWduZWRUbyhwYXJlbnRTaGFkb3dSb290KTsKICAgICAgICAgICAgIEFTU0VSVChhc3NpZ25l
ZEluc2VydGlvblBvaW50KTsKICAgICAgICAgICAgIHJldHVybiB0cmF2ZXJzZVNpYmxpbmdJbkN1
cnJlbnRUcmVlKGFzc2lnbmVkSW5zZXJ0aW9uUG9pbnQsIGRpcmVjdGlvbik7CiAgICAgICAgIH0K
QEAgLTI2Nyw3ICsyNjcsNyBAQCBpbmxpbmUgTm9kZSogQ29tcG9zZWRTaGFkb3dUcmVlV2Fsa2Vy
Ojp0cmF2ZXJzZVBhcmVudEluQ3VycmVudFRyZWUoY29uc3QgTm9kZSogbgogTm9kZSogQ29tcG9z
ZWRTaGFkb3dUcmVlV2Fsa2VyOjp0cmF2ZXJzZVBhcmVudEJhY2tUb1lvdW5nZXJTaGFkb3dSb290
T3JIb3N0KGNvbnN0IFNoYWRvd1Jvb3QqIHNoYWRvd1Jvb3QsIFBhcmVudFRyYXZlcnNhbERldGFp
bHMqIGRldGFpbHMpIGNvbnN0CiB7CiAgICAgQVNTRVJUKHNoYWRvd1Jvb3QpOwotICAgIEFTU0VS
VCghc2hhZG93Um9vdC0+YXNzaWduZWRUbygpKTsKKyAgICBBU1NFUlQoIVNjb3BlQ29udGVudERp
c3RyaWJ1dGlvbjo6YXNzaWduZWRUbyhzaGFkb3dSb290KSk7CiAKICAgICBpZiAoc2hhZG93Um9v
dC0+aXNZb3VuZ2VzdCgpKSB7CiAgICAgICAgIGlmIChjYW5Dcm9zc1VwcGVyQm91bmRhcnkoKSkg
ewpAQCAtMzQzLDE0ICszNDMsMTQgQEAgdm9pZCBBbmNlc3RvckNoYWluV2Fsa2VyOjpwYXJlbnQo
KQogICAgIH0KICAgICBpZiAoIW1fbm9kZS0+aXNTaGFkb3dSb290KCkpIHsKICAgICAgICAgbV9u
b2RlID0gbV9ub2RlLT5wYXJlbnROb2RlKCk7Ci0gICAgICAgIGlmICghKG1fbm9kZSAmJiBtX25v
ZGUtPmlzU2hhZG93Um9vdCgpICYmIHRvU2hhZG93Um9vdChtX25vZGUpLT5hc3NpZ25lZFRvKCkp
KQorICAgICAgICBpZiAoIShtX25vZGUgJiYgbV9ub2RlLT5pc1NoYWRvd1Jvb3QoKSAmJiBTY29w
ZUNvbnRlbnREaXN0cmlidXRpb246OmFzc2lnbmVkVG8odG9TaGFkb3dSb290KG1fbm9kZSkpKSkK
ICAgICAgICAgICAgIG1fZGlzdHJpYnV0ZWROb2RlID0gbV9ub2RlOwogICAgICAgICBtX2lzQ3Jv
c3NpbmdJbnNlcnRpb25Qb2ludCA9IGZhbHNlOwogICAgICAgICByZXR1cm47CiAgICAgfQogCiAg
ICAgY29uc3QgU2hhZG93Um9vdCogc2hhZG93Um9vdCA9IHRvU2hhZG93Um9vdChtX25vZGUpOwot
ICAgIGlmIChJbnNlcnRpb25Qb2ludCogaW5zZXJ0aW9uUG9pbnQgPSBzaGFkb3dSb290LT5hc3Np
Z25lZFRvKCkpIHsKKyAgICBpZiAoSW5zZXJ0aW9uUG9pbnQqIGluc2VydGlvblBvaW50ID0gU2Nv
cGVDb250ZW50RGlzdHJpYnV0aW9uOjphc3NpZ25lZFRvKHNoYWRvd1Jvb3QpKSB7CiAgICAgICAg
IG1fbm9kZSA9IGluc2VydGlvblBvaW50OwogICAgICAgICBtX2lzQ3Jvc3NpbmdJbnNlcnRpb25Q
b2ludCA9IHRydWU7CiAgICAgICAgIHJldHVybjsKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJDb3Jl
L2RvbS9FbGVtZW50U2hhZG93LmNwcCBiL1NvdXJjZS9XZWJDb3JlL2RvbS9FbGVtZW50U2hhZG93
LmNwcAppbmRleCAxNDkzYWY3OTI1MzJlMjdjYmIyZjg0MmE1NGNiNDZjYTQ0YzRmMmZiLi5kOTYy
YzcwYmRjZDhiOTRkNjk1Y2U0N2NlNmU3MjNiNTJjNzExMGNkIDEwMDY0NAotLS0gYS9Tb3VyY2Uv
V2ViQ29yZS9kb20vRWxlbWVudFNoYWRvdy5jcHAKKysrIGIvU291cmNlL1dlYkNvcmUvZG9tL0Vs
ZW1lbnRTaGFkb3cuY3BwCkBAIC0yMzMsNyArMjMzLDcgQEAgdm9pZCBFbGVtZW50U2hhZG93Ojpl
bnN1cmVTZWxlY3RGZWF0dXJlU2V0Q29sbGVjdGVkKCkKIAogdm9pZCBFbGVtZW50U2hhZG93Ojpj
b2xsZWN0U2VsZWN0RmVhdHVyZVNldEZyb20oU2hhZG93Um9vdCogcm9vdCkKIHsKLSAgICBpZiAo
cm9vdC0+aGFzRWxlbWVudFNoYWRvdygpKSB7CisgICAgaWYgKFNjb3BlQ29udGVudERpc3RyaWJ1
dGlvbjo6aGFzRWxlbWVudFNoYWRvdyhyb290KSkgewogICAgICAgICBmb3IgKEVsZW1lbnQqIGVs
ZW1lbnQgPSBFbGVtZW50VHJhdmVyc2FsOjpmaXJzdFdpdGhpbihyb290KTsgZWxlbWVudDsgZWxl
bWVudCA9IEVsZW1lbnRUcmF2ZXJzYWw6Om5leHQoZWxlbWVudCkpIHsKICAgICAgICAgICAgIGlm
IChFbGVtZW50U2hhZG93KiBlbGVtZW50U2hhZG93ID0gZWxlbWVudC0+c2hhZG93KCkpIHsKICAg
ICAgICAgICAgICAgICBlbGVtZW50U2hhZG93LT5lbnN1cmVTZWxlY3RGZWF0dXJlU2V0Q29sbGVj
dGVkKCk7CkBAIC0yNDIsNyArMjQyLDcgQEAgdm9pZCBFbGVtZW50U2hhZG93Ojpjb2xsZWN0U2Vs
ZWN0RmVhdHVyZVNldEZyb20oU2hhZG93Um9vdCogcm9vdCkKICAgICAgICAgfQogICAgIH0KIAot
ICAgIGlmIChyb290LT5oYXNDb250ZW50RWxlbWVudCgpKSB7CisgICAgaWYgKFNjb3BlQ29udGVu
dERpc3RyaWJ1dGlvbjo6aGFzQ29udGVudEVsZW1lbnQocm9vdCkpIHsKICAgICAgICAgZm9yIChF
bGVtZW50KiBlbGVtZW50ID0gRWxlbWVudFRyYXZlcnNhbDo6Zmlyc3RXaXRoaW4ocm9vdCk7IGVs
ZW1lbnQ7IGVsZW1lbnQgPSBFbGVtZW50VHJhdmVyc2FsOjpuZXh0KGVsZW1lbnQpKSB7CiAgICAg
ICAgICAgICBpZiAoaXNIVE1MQ29udGVudEVsZW1lbnQoZWxlbWVudCkpIHsKICAgICAgICAgICAg
ICAgICBjb25zdCBDU1NTZWxlY3Rvckxpc3QmIGxpc3QgPSB0b0hUTUxDb250ZW50RWxlbWVudChl
bGVtZW50KS0+c2VsZWN0b3JMaXN0KCk7CmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9kb20v
U2hhZG93Um9vdC5jcHAgYi9Tb3VyY2UvV2ViQ29yZS9kb20vU2hhZG93Um9vdC5jcHAKaW5kZXgg
NjE5YTY0NmIwMjlmMDA0YjdhNzY3MDM2Mzk3ODU0NzRhNzk5ZTMwOS4uNjMzZTRjNDdkY2RmMTA2
M2VlMDJiMjY0YzU4MWE0MWQ3MzY2ZDk2OCAxMDA2NDQKLS0tIGEvU291cmNlL1dlYkNvcmUvZG9t
L1NoYWRvd1Jvb3QuY3BwCisrKyBiL1NvdXJjZS9XZWJDb3JlL2RvbS9TaGFkb3dSb290LmNwcApA
QCAtMjI2LDExICsyMjYsNiBAQCBFbGVtZW50U2hhZG93KiBTaGFkb3dSb290Ojpvd25lcigpIGNv
bnN0CiAgICAgcmV0dXJuIDA7CiB9CiAKLWJvb2wgU2hhZG93Um9vdDo6aGFzSW5zZXJ0aW9uUG9p
bnQoKSBjb25zdAotewotICAgIHJldHVybiBoYXNTaGFkb3dJbnNlcnRpb25Qb2ludCgpIHx8IGhh
c0NvbnRlbnRFbGVtZW50KCk7Ci19Ci0KIGJvb2wgU2hhZG93Um9vdDo6YXBwbHlBdXRob3JTdHls
ZXMoKSBjb25zdAogewogICAgIHJldHVybiBtX2FwcGx5QXV0aG9yU3R5bGVzOwpAQCAtMjg0LDcg
KzI3OSw3IEBAIE5vZGU6Okluc2VydGlvbk5vdGlmaWNhdGlvblJlcXVlc3QgU2hhZG93Um9vdDo6
aW5zZXJ0ZWRJbnRvKENvbnRhaW5lck5vZGUqIGluc2VyCiAgICAgICAgIHJldHVybiBJbnNlcnRp
b25Eb25lOwogCiAgICAgaWYgKFNoYWRvd1Jvb3QqIHJvb3QgPSBob3N0KCktPmNvbnRhaW5pbmdT
aGFkb3dSb290KCkpIHsKLSAgICAgICAgcm9vdC0+cmVnaXN0ZXJFbGVtZW50U2hhZG93KCk7Cisg
ICAgICAgIHJvb3QtPmVuc3VyZVNjb3BlRGlzdHJpYnV0aW9uKCktPnJlZ2lzdGVyRWxlbWVudFNo
YWRvdygpOwogICAgICAgICBtX3JlZ2lzdGVyZWRXaXRoUGFyZW50U2hhZG93Um9vdCA9IHRydWU7
CiAgICAgfQogCkBAIC0yOTgsMjggKzI5MywxNCBAQCB2b2lkIFNoYWRvd1Jvb3Q6OnJlbW92ZWRG
cm9tKENvbnRhaW5lck5vZGUqIGluc2VydGlvblBvaW50KQogICAgICAgICBpZiAoIXJvb3QpCiAg
ICAgICAgICAgICByb290ID0gaW5zZXJ0aW9uUG9pbnQtPmNvbnRhaW5pbmdTaGFkb3dSb290KCk7
CiAKLSAgICAgICAgaWYgKHJvb3QpCi0gICAgICAgICAgICByb290LT51bnJlZ2lzdGVyRWxlbWVu
dFNoYWRvdygpOworICAgICAgICBpZiAocm9vdCAmJiByb290LT5zY29wZURpc3RyaWJ1dGlvbigp
KQorICAgICAgICAgICAgcm9vdC0+c2NvcGVEaXN0cmlidXRpb24oKS0+dW5yZWdpc3RlckVsZW1l
bnRTaGFkb3coKTsKICAgICAgICAgbV9yZWdpc3RlcmVkV2l0aFBhcmVudFNoYWRvd1Jvb3QgPSBm
YWxzZTsKICAgICB9CiAKICAgICBEb2N1bWVudEZyYWdtZW50OjpyZW1vdmVkRnJvbShpbnNlcnRp
b25Qb2ludCk7CiB9CiAKLUluc2VydGlvblBvaW50KiBTaGFkb3dSb290Ojphc3NpZ25lZFRvKCkg
Y29uc3QKLXsKLSAgICBpZiAoIWRpc3RyaWJ1dGlvbkRhdGEoKSkKLSAgICAgICAgcmV0dXJuIDA7
Ci0KLSAgICByZXR1cm4gZGlzdHJpYnV0aW9uRGF0YSgpLT5pbnNlcnRpb25Qb2ludEFzc2lnbmVk
VG8oKTsKLX0KLQotdm9pZCBTaGFkb3dSb290OjpzZXRBc3NpZ25lZFRvKEluc2VydGlvblBvaW50
KiBpbnNlcnRpb25Qb2ludCkKLXsKLSAgICBBU1NFUlQoIWFzc2lnbmVkVG8oKSB8fCAhaW5zZXJ0
aW9uUG9pbnQpOwotICAgIGVuc3VyZURpc3RyaWJ1dGlvbkRhdGEoKS0+c2V0SW5zZXJ0aW9uUG9p
bnRBc3NpZ25lZFRvKGluc2VydGlvblBvaW50KTsKLX0KLQogdm9pZCBTaGFkb3dSb290OjpjaGls
ZHJlbkNoYW5nZWQoYm9vbCBjaGFuZ2VkQnlQYXJzZXIsIE5vZGUqIGJlZm9yZUNoYW5nZSwgTm9k
ZSogYWZ0ZXJDaGFuZ2UsIGludCBjaGlsZENvdW50RGVsdGEpCiB7CiAgICAgR3VhcmRPcnBoYW5T
aGFkb3dSb290KHsgfSk7CkBAIC0zMjgsMTQgKzMwOSw2IEBAIHZvaWQgU2hhZG93Um9vdDo6Y2hp
bGRyZW5DaGFuZ2VkKGJvb2wgY2hhbmdlZEJ5UGFyc2VyLCBOb2RlKiBiZWZvcmVDaGFuZ2UsIE5v
ZGUqCiAgICAgb3duZXIoKS0+aW52YWxpZGF0ZURpc3RyaWJ1dGlvbigpOwogfQogCi1jb25zdCBW
ZWN0b3I8UmVmUHRyPEluc2VydGlvblBvaW50PiA+JiBTaGFkb3dSb290OjppbnNlcnRpb25Qb2lu
dExpc3QoKQotewotICAgIHR5cGVkZWYgVmVjdG9yPFJlZlB0cjxJbnNlcnRpb25Qb2ludD4gPiBJ
bnNlcnRpb25Qb2ludFZlY3RvcjsKLSAgICBERUZJTkVfU1RBVElDX0xPQ0FMKEluc2VydGlvblBv
aW50VmVjdG9yLCBlbXB0eVZlY3RvciwgKCkpOwotCi0gICAgcmV0dXJuIGRpc3RyaWJ1dGlvbkRh
dGEoKSA/IGRpc3RyaWJ1dGlvbkRhdGEoKS0+ZW5zdXJlSW5zZXJ0aW9uUG9pbnRMaXN0KHRoaXMp
IDogZW1wdHlWZWN0b3I7Ci19Ci0KIHZvaWQgU2hhZG93Um9vdDo6cmVnaXN0ZXJTY29wZWRIVE1M
U3R5bGVDaGlsZCgpCiB7CiAgICAgKyttX251bWJlck9mU3R5bGVzOwpAQCAtMzQ5LDY4ICszMjIs
MTUgQEAgdm9pZCBTaGFkb3dSb290Ojp1bnJlZ2lzdGVyU2NvcGVkSFRNTFN0eWxlQ2hpbGQoKQog
ICAgIHNldEhhc1Njb3BlZEhUTUxTdHlsZUNoaWxkKG1fbnVtYmVyT2ZTdHlsZXMgPiAwKTsKIH0K
IAotaW5saW5lIFNoYWRvd1Jvb3RDb250ZW50RGlzdHJpYnV0aW9uRGF0YSogU2hhZG93Um9vdDo6
ZW5zdXJlRGlzdHJpYnV0aW9uRGF0YSgpCitTY29wZUNvbnRlbnREaXN0cmlidXRpb24qIFNoYWRv
d1Jvb3Q6OmVuc3VyZVNjb3BlRGlzdHJpYnV0aW9uKCkKIHsKLSAgICBpZiAobV9kaXN0cmlidXRp
b25EYXRhKQotICAgICAgICByZXR1cm4gbV9kaXN0cmlidXRpb25EYXRhLmdldCgpOworICAgIGlm
IChtX3Njb3BlRGlzdHJpYnV0aW9uKQorICAgICAgICByZXR1cm4gbV9zY29wZURpc3RyaWJ1dGlv
bi5nZXQoKTsKIAotICAgIG1fZGlzdHJpYnV0aW9uRGF0YSA9IGFkb3B0UHRyKG5ldyBTaGFkb3dS
b290Q29udGVudERpc3RyaWJ1dGlvbkRhdGEpOwotICAgIHJldHVybiBtX2Rpc3RyaWJ1dGlvbkRh
dGEuZ2V0KCk7CisgICAgbV9zY29wZURpc3RyaWJ1dGlvbiA9IGFkb3B0UHRyKG5ldyBTY29wZUNv
bnRlbnREaXN0cmlidXRpb24pOworICAgIHJldHVybiBtX3Njb3BlRGlzdHJpYnV0aW9uLmdldCgp
OwogfSAgIAogCi12b2lkIFNoYWRvd1Jvb3Q6OnJlZ2lzdGVySW5zZXJ0aW9uUG9pbnQoSW5zZXJ0
aW9uUG9pbnQqIHBvaW50KQotewotICAgIGVuc3VyZURpc3RyaWJ1dGlvbkRhdGEoKS0+cmVnaXRl
ckluc2VydGlvblBvaW50KHRoaXMsIHBvaW50KTsKLX0KLQotdm9pZCBTaGFkb3dSb290Ojp1bnJl
Z2lzdGVySW5zZXJ0aW9uUG9pbnQoSW5zZXJ0aW9uUG9pbnQqIHBvaW50KQotewotICAgIGVuc3Vy
ZURpc3RyaWJ1dGlvbkRhdGEoKS0+dW5yZWdpc3Rlckluc2VydGlvblBvaW50KHRoaXMsIHBvaW50
KTsKLX0KLQotYm9vbCBTaGFkb3dSb290OjpoYXNTaGFkb3dJbnNlcnRpb25Qb2ludCgpIGNvbnN0
Ci17Ci0gICAgaWYgKCFkaXN0cmlidXRpb25EYXRhKCkpCi0gICAgICAgIHJldHVybiBmYWxzZTsK
LQotICAgIHJldHVybiBkaXN0cmlidXRpb25EYXRhKCktPmhhc1NoYWRvd0VsZW1lbnRDaGlsZHJl
bigpOwotfQotCi1ib29sIFNoYWRvd1Jvb3Q6Omhhc0NvbnRlbnRFbGVtZW50KCkgY29uc3QKLXsK
LSAgICBpZiAoIWRpc3RyaWJ1dGlvbkRhdGEoKSkKLSAgICAgICAgcmV0dXJuIGZhbHNlOwotCi0g
ICAgcmV0dXJuIGRpc3RyaWJ1dGlvbkRhdGEoKS0+aGFzQ29udGVudEVsZW1lbnRDaGlsZHJlbigp
OwotfQotCi12b2lkIFNoYWRvd1Jvb3Q6OnJlZ2lzdGVyRWxlbWVudFNoYWRvdygpCi17Ci0gICAg
ZW5zdXJlRGlzdHJpYnV0aW9uRGF0YSgpLT5pbmNyZW1lbnROdW1iZXJPZkVsZW1lbnRTaGFkb3dD
aGlsZHJlbigpOwotfQotCi12b2lkIFNoYWRvd1Jvb3Q6OnVucmVnaXN0ZXJFbGVtZW50U2hhZG93
KCkKLXsKLSAgICBBU1NFUlQoaGFzRWxlbWVudFNoYWRvdygpKTsKLSAgICBkaXN0cmlidXRpb25E
YXRhKCktPmRlY3JlbWVudE51bWJlck9mRWxlbWVudFNoYWRvd0NoaWxkcmVuKCk7Ci19Ci0KLWJv
b2wgU2hhZG93Um9vdDo6aGFzRWxlbWVudFNoYWRvdygpIGNvbnN0Ci17Ci0gICAgaWYgKCFkaXN0
cmlidXRpb25EYXRhKCkpCi0gICAgICAgIHJldHVybiBmYWxzZTsKLQotICAgIHJldHVybiBkaXN0
cmlidXRpb25EYXRhKCktPmhhc0VsZW1lbnRTaGFkb3dDaGlsZHJlbigpOwotfQotCi11bnNpZ25l
ZCBTaGFkb3dSb290Ojpjb3VudEVsZW1lbnRTaGFkb3coKSBjb25zdCAKLXsKLSAgICBpZiAoIWRp
c3RyaWJ1dGlvbkRhdGEoKSkKLSAgICAgICAgcmV0dXJuIDA7Ci0KLSAgICByZXR1cm4gZGlzdHJp
YnV0aW9uRGF0YSgpLT5udW1iZXJPZkVsZW1lbnRTaGFkb3dDaGlsZHJlbigpOwotfQotCiB2b2lk
IFNoYWRvd1Jvb3Q6OnJlcG9ydE1lbW9yeVVzYWdlKE1lbW9yeU9iamVjdEluZm8qIG1lbW9yeU9i
amVjdEluZm8pIGNvbnN0CiB7CiAgICAgTWVtb3J5Q2xhc3NJbmZvIGluZm8obWVtb3J5T2JqZWN0
SW5mbywgdGhpcywgV2ViQ29yZU1lbW9yeVR5cGVzOjpET00pOwpAQCAtNDE4LDcgKzMzOCw3IEBA
IHZvaWQgU2hhZG93Um9vdDo6cmVwb3J0TWVtb3J5VXNhZ2UoTWVtb3J5T2JqZWN0SW5mbyogbWVt
b3J5T2JqZWN0SW5mbykgY29uc3QKICAgICBUcmVlU2NvcGU6OnJlcG9ydE1lbW9yeVVzYWdlKG1l
bW9yeU9iamVjdEluZm8pOwogICAgIGluZm8uYWRkTWVtYmVyKG1fcHJldik7CiAgICAgaW5mby5h
ZGRNZW1iZXIobV9uZXh0KTsKLSAgICBpbmZvLmFkZE1lbWJlcihtX2Rpc3RyaWJ1dGlvbkRhdGEp
OworICAgIGluZm8uYWRkTWVtYmVyKG1fc2NvcGVEaXN0cmlidXRpb24pOwogfQogCiB9CmRpZmYg
LS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9kb20vU2hhZG93Um9vdC5oIGIvU291cmNlL1dlYkNvcmUv
ZG9tL1NoYWRvd1Jvb3QuaAppbmRleCA5NDE0ODhjOTU4MDVjOTExMDMzN2RmOTBjZGRjYjE2NzBk
NWUxMmY4Li40NzlhMWExZmJlNDVjM2U3OGU4OTU3MGE2NmU4NmI4NTI3Y2VmNTc5IDEwMDY0NAot
LS0gYS9Tb3VyY2UvV2ViQ29yZS9kb20vU2hhZG93Um9vdC5oCisrKyBiL1NvdXJjZS9XZWJDb3Jl
L2RvbS9TaGFkb3dSb290LmgKQEAgLTQxLDcgKzQxLDcgQEAgY2xhc3MgRG9jdW1lbnQ7CiBjbGFz
cyBET01TZWxlY3Rpb247CiBjbGFzcyBFbGVtZW50U2hhZG93OwogY2xhc3MgSW5zZXJ0aW9uUG9p
bnQ7Ci1jbGFzcyBTaGFkb3dSb290Q29udGVudERpc3RyaWJ1dGlvbkRhdGE7CitjbGFzcyBTY29w
ZUNvbnRlbnREaXN0cmlidXRpb247CiAKIGNsYXNzIFNoYWRvd1Jvb3QgOiBwdWJsaWMgRG9jdW1l
bnRGcmFnbWVudCwgcHVibGljIFRyZWVTY29wZSwgcHVibGljIERvdWJseUxpbmtlZExpc3ROb2Rl
PFNoYWRvd1Jvb3Q+IHsKICAgICBmcmllbmQgY2xhc3MgV1RGOjpEb3VibHlMaW5rZWRMaXN0Tm9k
ZTxTaGFkb3dSb290PjsKQEAgLTgwLDMzICs4MCwxOCBAQCBwdWJsaWM6CiAgICAgYm9vbCBpc1lv
dW5nZXN0KCkgY29uc3QgeyByZXR1cm4gIXlvdW5nZXJTaGFkb3dSb290KCk7IH0KICAgICBib29s
IGlzT2xkZXN0KCkgY29uc3QgeyByZXR1cm4gIW9sZGVyU2hhZG93Um9vdCgpOyB9CiAKLSAgICBi
b29sIGhhc0luc2VydGlvblBvaW50KCkgY29uc3Q7Ci0KICAgICB2aXJ0dWFsIHZvaWQgYXR0YWNo
KCk7CiAKICAgICB2aXJ0dWFsIEluc2VydGlvbk5vdGlmaWNhdGlvblJlcXVlc3QgaW5zZXJ0ZWRJ
bnRvKENvbnRhaW5lck5vZGUqKSBPVkVSUklERTsKICAgICB2aXJ0dWFsIHZvaWQgcmVtb3ZlZEZy
b20oQ29udGFpbmVyTm9kZSopIE9WRVJSSURFOwogCi0gICAgYm9vbCBpc1VzZWRGb3JSZW5kZXJp
bmcoKSBjb25zdDsKLSAgICBJbnNlcnRpb25Qb2ludCogYXNzaWduZWRUbygpIGNvbnN0OwotICAg
IHZvaWQgc2V0QXNzaWduZWRUbyhJbnNlcnRpb25Qb2ludCopOwotCi0gICAgYm9vbCBoYXNTaGFk
b3dJbnNlcnRpb25Qb2ludCgpIGNvbnN0OwotICAgIGJvb2wgaGFzQ29udGVudEVsZW1lbnQoKSBj
b25zdDsKLQotICAgIHZvaWQgcmVnaXN0ZXJJbnNlcnRpb25Qb2ludChJbnNlcnRpb25Qb2ludCop
OwotICAgIHZvaWQgdW5yZWdpc3Rlckluc2VydGlvblBvaW50KEluc2VydGlvblBvaW50Kik7Ci0g
ICAgCi0gICAgdm9pZCByZWdpc3RlckVsZW1lbnRTaGFkb3coKTsKLSAgICB2b2lkIHVucmVnaXN0
ZXJFbGVtZW50U2hhZG93KCk7Ci0gICAgYm9vbCBoYXNFbGVtZW50U2hhZG93KCkgY29uc3Q7Ci0g
ICAgdW5zaWduZWQgY291bnRFbGVtZW50U2hhZG93KCkgY29uc3Q7Ci0KLSAgICBjb25zdCBWZWN0
b3I8UmVmUHRyPEluc2VydGlvblBvaW50PiA+JiBpbnNlcnRpb25Qb2ludExpc3QoKTsKLQogICAg
IHZpcnR1YWwgdm9pZCByZWdpc3RlclNjb3BlZEhUTUxTdHlsZUNoaWxkKCkgT1ZFUlJJREU7CiAg
ICAgdmlydHVhbCB2b2lkIHVucmVnaXN0ZXJTY29wZWRIVE1MU3R5bGVDaGlsZCgpIE9WRVJSSURF
OwogCisgICAgU2NvcGVDb250ZW50RGlzdHJpYnV0aW9uKiBzY29wZURpc3RyaWJ1dGlvbigpIHsg
cmV0dXJuIG1fc2NvcGVEaXN0cmlidXRpb24uZ2V0KCk7IH0KKyAgICBjb25zdCBTY29wZUNvbnRl
bnREaXN0cmlidXRpb24qIHNjb3BlRGlzdHJpYnV0aW9uKCkgY29uc3QgeyByZXR1cm4gbV9zY29w
ZURpc3RyaWJ1dGlvbi5nZXQoKTsgfQorICAgIFNjb3BlQ29udGVudERpc3RyaWJ1dGlvbiogZW5z
dXJlU2NvcGVEaXN0cmlidXRpb24oKTsKKwogICAgIFNoYWRvd1Jvb3RUeXBlIHR5cGUoKSBjb25z
dCB7IHJldHVybiBtX2lzQXV0aG9yU2hhZG93Um9vdCA/IEF1dGhvclNoYWRvd1Jvb3QgOiBVc2Vy
QWdlbnRTaGFkb3dSb290OyB9CiAgICAgYm9vbCBpc0FjY2Vzc2libGUoKSBjb25zdCB7IHJldHVy
biB0eXBlKCkgPT0gQXV0aG9yU2hhZG93Um9vdDsgfQogCkBAIC0xMjQsMTMgKzEwOSw5IEBAIHBy
aXZhdGU6CiAKICAgICB2b2lkIHNldFR5cGUoU2hhZG93Um9vdFR5cGUgdHlwZSkgeyBtX2lzQXV0
aG9yU2hhZG93Um9vdCA9IHR5cGUgPT0gQXV0aG9yU2hhZG93Um9vdDsgfQogCi0gICAgU2hhZG93
Um9vdENvbnRlbnREaXN0cmlidXRpb25EYXRhKiBkaXN0cmlidXRpb25EYXRhKCkgeyByZXR1cm4g
bV9kaXN0cmlidXRpb25EYXRhLmdldCgpOyB9Ci0gICAgY29uc3QgU2hhZG93Um9vdENvbnRlbnRE
aXN0cmlidXRpb25EYXRhKiBkaXN0cmlidXRpb25EYXRhKCkgY29uc3QgeyByZXR1cm4gbV9kaXN0
cmlidXRpb25EYXRhLmdldCgpOyB9Ci0gICAgU2hhZG93Um9vdENvbnRlbnREaXN0cmlidXRpb25E
YXRhKiBlbnN1cmVEaXN0cmlidXRpb25EYXRhKCk7Ci0KICAgICBTaGFkb3dSb290KiBtX3ByZXY7
CiAgICAgU2hhZG93Um9vdCogbV9uZXh0OwotICAgIE93blB0cjxTaGFkb3dSb290Q29udGVudERp
c3RyaWJ1dGlvbkRhdGE+IG1fZGlzdHJpYnV0aW9uRGF0YTsKKyAgICBPd25QdHI8U2NvcGVDb250
ZW50RGlzdHJpYnV0aW9uPiBtX3Njb3BlRGlzdHJpYnV0aW9uOwogICAgIHVuc2lnbmVkIG1fbnVt
YmVyT2ZTdHlsZXMgOiAyODsKICAgICB1bnNpZ25lZCBtX2FwcGx5QXV0aG9yU3R5bGVzIDogMTsK
ICAgICB1bnNpZ25lZCBtX3Jlc2V0U3R5bGVJbmhlcml0YW5jZSA6IDE7CkBAIC0xNDgsMTEgKzEy
OSw2IEBAIGlubGluZSB2b2lkIFNoYWRvd1Jvb3Q6OnNldEhvc3QoRWxlbWVudCogaG9zdCkKICAg
ICBzZXRQYXJlbnRPckhvc3ROb2RlKGhvc3QpOwogfQogCi1pbmxpbmUgYm9vbCBTaGFkb3dSb290
Ojppc1VzZWRGb3JSZW5kZXJpbmcoKSBjb25zdAotewotICAgIHJldHVybiBpc1lvdW5nZXN0KCkg
fHwgYXNzaWduZWRUbygpOwotfQotCiBpbmxpbmUgRWxlbWVudCogU2hhZG93Um9vdDo6YWN0aXZl
RWxlbWVudCgpIGNvbnN0CiB7CiAgICAgaWYgKE5vZGUqIG5vZGUgPSB0cmVlU2NvcGUoKS0+Zm9j
dXNlZE5vZGUoKSkKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJDb3JlL2h0bWwvc2hhZG93L0NvbnRl
bnREaXN0cmlidXRvci5jcHAgYi9Tb3VyY2UvV2ViQ29yZS9odG1sL3NoYWRvdy9Db250ZW50RGlz
dHJpYnV0b3IuY3BwCmluZGV4IDI1MzdlOTljODUyNmZhZjBjYTc3OWI2NjExYzlhZmY2Mjg3NGZi
OTcuLjc3YzRkM2IxNmExZDA4MDAyZGY1Y2M1NjVmNTBlNDU2Y2FkMTA3M2EgMTAwNjQ0Ci0tLSBh
L1NvdXJjZS9XZWJDb3JlL2h0bWwvc2hhZG93L0NvbnRlbnREaXN0cmlidXRvci5jcHAKKysrIGIv
U291cmNlL1dlYkNvcmUvaHRtbC9zaGFkb3cvQ29udGVudERpc3RyaWJ1dG9yLmNwcApAQCAtNzYs
NyArNzYsNyBAQCBOb2RlKiBDb250ZW50RGlzdHJpYnV0aW9uOjpwcmV2aW91c1RvKGNvbnN0IE5v
ZGUqIG5vZGUpIGNvbnN0CiB9CiAKIAotU2hhZG93Um9vdENvbnRlbnREaXN0cmlidXRpb25EYXRh
OjpTaGFkb3dSb290Q29udGVudERpc3RyaWJ1dGlvbkRhdGEoKQorU2NvcGVDb250ZW50RGlzdHJp
YnV0aW9uOjpTY29wZUNvbnRlbnREaXN0cmlidXRpb24oKQogICAgIDogbV9pbnNlcnRpb25Qb2lu
dEFzc2lnbmVkVG8oMCkKICAgICAsIG1fbnVtYmVyT2ZTaGFkb3dFbGVtZW50Q2hpbGRyZW4oMCkK
ICAgICAsIG1fbnVtYmVyT2ZDb250ZW50RWxlbWVudENoaWxkcmVuKDApCkBAIC04NSwxMyArODUs
MTMgQEAgU2hhZG93Um9vdENvbnRlbnREaXN0cmlidXRpb25EYXRhOjpTaGFkb3dSb290Q29udGVu
dERpc3RyaWJ1dGlvbkRhdGEoKQogewogfQogCi12b2lkIFNoYWRvd1Jvb3RDb250ZW50RGlzdHJp
YnV0aW9uRGF0YTo6aW52YWxpZGF0ZUluc2VydGlvblBvaW50TGlzdCgpCit2b2lkIFNjb3BlQ29u
dGVudERpc3RyaWJ1dGlvbjo6aW52YWxpZGF0ZUluc2VydGlvblBvaW50TGlzdCgpCiB7CiAgICAg
bV9pbnNlcnRpb25Qb2ludExpc3RJc1ZhbGlkID0gZmFsc2U7CiAgICAgbV9pbnNlcnRpb25Qb2lu
dExpc3QuY2xlYXIoKTsKIH0KIAotY29uc3QgVmVjdG9yPFJlZlB0cjxJbnNlcnRpb25Qb2ludD4g
PiYgU2hhZG93Um9vdENvbnRlbnREaXN0cmlidXRpb25EYXRhOjplbnN1cmVJbnNlcnRpb25Qb2lu
dExpc3QoU2hhZG93Um9vdCogc2hhZG93Um9vdCkKK2NvbnN0IFZlY3RvcjxSZWZQdHI8SW5zZXJ0
aW9uUG9pbnQ+ID4mIFNjb3BlQ29udGVudERpc3RyaWJ1dGlvbjo6ZW5zdXJlSW5zZXJ0aW9uUG9p
bnRMaXN0KFNoYWRvd1Jvb3QqIHNoYWRvd1Jvb3QpCiB7CiAgICAgaWYgKG1faW5zZXJ0aW9uUG9p
bnRMaXN0SXNWYWxpZCkKICAgICAgICAgcmV0dXJuIG1faW5zZXJ0aW9uUG9pbnRMaXN0OwpAQCAt
OTksNyArOTksNyBAQCBjb25zdCBWZWN0b3I8UmVmUHRyPEluc2VydGlvblBvaW50PiA+JiBTaGFk
b3dSb290Q29udGVudERpc3RyaWJ1dGlvbkRhdGE6OmVuc3VyZQogICAgIG1faW5zZXJ0aW9uUG9p
bnRMaXN0SXNWYWxpZCA9IHRydWU7CiAgICAgQVNTRVJUKG1faW5zZXJ0aW9uUG9pbnRMaXN0Lmlz
RW1wdHkoKSk7CiAKLSAgICBpZiAoIXNoYWRvd1Jvb3QtPmhhc0luc2VydGlvblBvaW50KCkpCisg
ICAgaWYgKCFoYXNJbnNlcnRpb25Qb2ludChzaGFkb3dSb290KSkKICAgICAgICAgcmV0dXJuIG1f
aW5zZXJ0aW9uUG9pbnRMaXN0OwogCiAgICAgZm9yIChFbGVtZW50KiBlbGVtZW50ID0gRWxlbWVu
dFRyYXZlcnNhbDo6Zmlyc3RXaXRoaW4oc2hhZG93Um9vdCk7IGVsZW1lbnQ7IGVsZW1lbnQgPSBF
bGVtZW50VHJhdmVyc2FsOjpuZXh0KGVsZW1lbnQsIHNoYWRvd1Jvb3QpKSB7CkBAIC0xMTAsNyAr
MTEwLDcgQEAgY29uc3QgVmVjdG9yPFJlZlB0cjxJbnNlcnRpb25Qb2ludD4gPiYgU2hhZG93Um9v
dENvbnRlbnREaXN0cmlidXRpb25EYXRhOjplbnN1cmUKICAgICByZXR1cm4gbV9pbnNlcnRpb25Q
b2ludExpc3Q7CiB9CiAKLXZvaWQgU2hhZG93Um9vdENvbnRlbnREaXN0cmlidXRpb25EYXRhOjpy
ZWdpdGVySW5zZXJ0aW9uUG9pbnQoU2hhZG93Um9vdCogc2NvcGUsIEluc2VydGlvblBvaW50KiBw
b2ludCkKK3ZvaWQgU2NvcGVDb250ZW50RGlzdHJpYnV0aW9uOjpyZWdpc3Rlckluc2VydGlvblBv
aW50KFNoYWRvd1Jvb3QqIHNjb3BlLCBJbnNlcnRpb25Qb2ludCogcG9pbnQpCiB7CiAgICAgc3dp
dGNoIChwb2ludC0+aW5zZXJ0aW9uUG9pbnRUeXBlKCkpIHsKICAgICBjYXNlIEluc2VydGlvblBv
aW50OjpTaGFkb3dJbnNlcnRpb25Qb2ludDoKQEAgLTEyNSw3ICsxMjUsNyBAQCB2b2lkIFNoYWRv
d1Jvb3RDb250ZW50RGlzdHJpYnV0aW9uRGF0YTo6cmVnaXRlckluc2VydGlvblBvaW50KFNoYWRv
d1Jvb3QqIHNjb3BlLAogICAgIGludmFsaWRhdGVJbnNlcnRpb25Qb2ludExpc3QoKTsKIH0KIAot
dm9pZCBTaGFkb3dSb290Q29udGVudERpc3RyaWJ1dGlvbkRhdGE6OnVucmVnaXN0ZXJJbnNlcnRp
b25Qb2ludChTaGFkb3dSb290KiBzY29wZSwgSW5zZXJ0aW9uUG9pbnQqIHBvaW50KQordm9pZCBT
Y29wZUNvbnRlbnREaXN0cmlidXRpb246OnVucmVnaXN0ZXJJbnNlcnRpb25Qb2ludChTaGFkb3dS
b290KiBzY29wZSwgSW5zZXJ0aW9uUG9pbnQqIHBvaW50KQogewogICAgIHN3aXRjaCAocG9pbnQt
Pmluc2VydGlvblBvaW50VHlwZSgpKSB7CiAgICAgY2FzZSBJbnNlcnRpb25Qb2ludDo6U2hhZG93
SW5zZXJ0aW9uUG9pbnQ6CkBAIC0xNDMsNiArMTQzLDQyIEBAIHZvaWQgU2hhZG93Um9vdENvbnRl
bnREaXN0cmlidXRpb25EYXRhOjp1bnJlZ2lzdGVySW5zZXJ0aW9uUG9pbnQoU2hhZG93Um9vdCog
c2NvCiAgICAgaW52YWxpZGF0ZUluc2VydGlvblBvaW50TGlzdCgpOwogfQogCitib29sIFNjb3Bl
Q29udGVudERpc3RyaWJ1dGlvbjo6aGFzU2hhZG93RWxlbWVudChjb25zdCBTaGFkb3dSb290KiBo
b2xkZXIpCit7CisgICAgaWYgKCFob2xkZXItPnNjb3BlRGlzdHJpYnV0aW9uKCkpCisgICAgICAg
IHJldHVybiBmYWxzZTsKKworICAgIHJldHVybiBob2xkZXItPnNjb3BlRGlzdHJpYnV0aW9uKCkt
Pmhhc1NoYWRvd0VsZW1lbnRDaGlsZHJlbigpOworfQorCitib29sIFNjb3BlQ29udGVudERpc3Ry
aWJ1dGlvbjo6aGFzQ29udGVudEVsZW1lbnQoY29uc3QgU2hhZG93Um9vdCogaG9sZGVyKQorewor
ICAgIGlmICghaG9sZGVyLT5zY29wZURpc3RyaWJ1dGlvbigpKQorICAgICAgICByZXR1cm4gZmFs
c2U7CisKKyAgICByZXR1cm4gaG9sZGVyLT5zY29wZURpc3RyaWJ1dGlvbigpLT5oYXNDb250ZW50
RWxlbWVudENoaWxkcmVuKCk7Cit9CisKK3Vuc2lnbmVkIFNjb3BlQ29udGVudERpc3RyaWJ1dGlv
bjo6Y291bnRFbGVtZW50U2hhZG93KGNvbnN0IFNoYWRvd1Jvb3QqIGhvbGRlcikKK3sKKyAgICBp
ZiAoIWhvbGRlci0+c2NvcGVEaXN0cmlidXRpb24oKSkKKyAgICAgICAgcmV0dXJuIDA7CisKKyAg
ICByZXR1cm4gaG9sZGVyLT5zY29wZURpc3RyaWJ1dGlvbigpLT5udW1iZXJPZkVsZW1lbnRTaGFk
b3dDaGlsZHJlbigpOworfQorCitib29sIFNjb3BlQ29udGVudERpc3RyaWJ1dGlvbjo6aGFzSW5z
ZXJ0aW9uUG9pbnQoY29uc3QgU2hhZG93Um9vdCogaG9sZGVyKQoreworICAgIHJldHVybiBoYXNT
aGFkb3dFbGVtZW50KGhvbGRlcikgfHwgaGFzQ29udGVudEVsZW1lbnQoaG9sZGVyKTsKK30KKwor
SW5zZXJ0aW9uUG9pbnQqIFNjb3BlQ29udGVudERpc3RyaWJ1dGlvbjo6YXNzaWduZWRUbyhjb25z
dCBTaGFkb3dSb290KiBob2xkZXIpCit7CisgICAgaWYgKCFob2xkZXItPnNjb3BlRGlzdHJpYnV0
aW9uKCkpCisgICAgICAgIHJldHVybiAwOworCisgICAgcmV0dXJuIGhvbGRlci0+c2NvcGVEaXN0
cmlidXRpb24oKS0+aW5zZXJ0aW9uUG9pbnRBc3NpZ25lZFRvKCk7Cit9CiAKIENvbnRlbnREaXN0
cmlidXRvcjo6Q29udGVudERpc3RyaWJ1dG9yKCkKICAgICA6IG1fdmFsaWRpdHkoVW5kZXRlcm1p
bmVkKQpAQCAtMTkzLDE5ICsyMjksMjEgQEAgdm9pZCBDb250ZW50RGlzdHJpYnV0b3I6OmRpc3Ry
aWJ1dGUoRWxlbWVudCogaG9zdCkKICAgICBmb3IgKFNoYWRvd1Jvb3QqIHJvb3QgPSBob3N0LT55
b3VuZ2VzdFNoYWRvd1Jvb3QoKTsgcm9vdDsgcm9vdCA9IHJvb3QtPm9sZGVyU2hhZG93Um9vdCgp
KSB7CiAgICAgICAgIEhUTUxTaGFkb3dFbGVtZW50KiBmaXJzdEFjdGl2ZVNoYWRvd0luc2VydGlv
blBvaW50ID0gMDsKIAotICAgICAgICBjb25zdCBWZWN0b3I8UmVmUHRyPEluc2VydGlvblBvaW50
PiA+JiBpbnNlcnRpb25Qb2ludHMgPSByb290LT5pbnNlcnRpb25Qb2ludExpc3QoKTsKLSAgICAg
ICAgZm9yIChzaXplX3QgaSA9IDA7IGkgPCBpbnNlcnRpb25Qb2ludHMuc2l6ZSgpOyArK2kpIHsK
LSAgICAgICAgICAgIEluc2VydGlvblBvaW50KiBwb2ludCA9IGluc2VydGlvblBvaW50c1tpXS5n
ZXQoKTsKLSAgICAgICAgICAgIGlmICghcG9pbnQtPmlzQWN0aXZlKCkpCi0gICAgICAgICAgICAg
ICAgY29udGludWU7Ci0KLSAgICAgICAgICAgIGlmIChpc0hUTUxTaGFkb3dFbGVtZW50KHBvaW50
KSkgewotICAgICAgICAgICAgICAgIGlmICghZmlyc3RBY3RpdmVTaGFkb3dJbnNlcnRpb25Qb2lu
dCkKLSAgICAgICAgICAgICAgICAgICAgZmlyc3RBY3RpdmVTaGFkb3dJbnNlcnRpb25Qb2ludCA9
IHRvSFRNTFNoYWRvd0VsZW1lbnQocG9pbnQpOwotICAgICAgICAgICAgfSBlbHNlIHsKLSAgICAg
ICAgICAgICAgICBkaXN0cmlidXRlU2VsZWN0aW9uc1RvKHBvaW50LCBwb29sLCBkaXN0cmlidXRl
ZCk7Ci0gICAgICAgICAgICAgICAgaWYgKEVsZW1lbnRTaGFkb3cqIHNoYWRvdyA9IHBvaW50LT5w
YXJlbnROb2RlKCktPmlzRWxlbWVudE5vZGUoKSA/IHRvRWxlbWVudChwb2ludC0+cGFyZW50Tm9k
ZSgpKS0+c2hhZG93KCkgOiAwKQotICAgICAgICAgICAgICAgICAgICBzaGFkb3ctPmludmFsaWRh
dGVEaXN0cmlidXRpb24oKTsKKyAgICAgICAgaWYgKFNjb3BlQ29udGVudERpc3RyaWJ1dGlvbiog
c2NvcGUgPSByb290LT5zY29wZURpc3RyaWJ1dGlvbigpKSB7CisgICAgICAgICAgICBjb25zdCBW
ZWN0b3I8UmVmUHRyPEluc2VydGlvblBvaW50PiA+JiBpbnNlcnRpb25Qb2ludHMgPSBzY29wZS0+
ZW5zdXJlSW5zZXJ0aW9uUG9pbnRMaXN0KHJvb3QpOworICAgICAgICAgICAgZm9yIChzaXplX3Qg
aSA9IDA7IGkgPCBpbnNlcnRpb25Qb2ludHMuc2l6ZSgpOyArK2kpIHsKKyAgICAgICAgICAgICAg
ICBJbnNlcnRpb25Qb2ludCogcG9pbnQgPSBpbnNlcnRpb25Qb2ludHNbaV0uZ2V0KCk7CisgICAg
ICAgICAgICAgICAgaWYgKCFwb2ludC0+aXNBY3RpdmUoKSkKKyAgICAgICAgICAgICAgICAgICAg
Y29udGludWU7CisKKyAgICAgICAgICAgICAgICBpZiAoaXNIVE1MU2hhZG93RWxlbWVudChwb2lu
dCkpIHsKKyAgICAgICAgICAgICAgICAgICAgaWYgKCFmaXJzdEFjdGl2ZVNoYWRvd0luc2VydGlv
blBvaW50KQorICAgICAgICAgICAgICAgICAgICAgICAgZmlyc3RBY3RpdmVTaGFkb3dJbnNlcnRp
b25Qb2ludCA9IHRvSFRNTFNoYWRvd0VsZW1lbnQocG9pbnQpOworICAgICAgICAgICAgICAgIH0g
ZWxzZSB7CisgICAgICAgICAgICAgICAgICAgIGRpc3RyaWJ1dGVTZWxlY3Rpb25zVG8ocG9pbnQs
IHBvb2wsIGRpc3RyaWJ1dGVkKTsKKyAgICAgICAgICAgICAgICAgICAgaWYgKEVsZW1lbnRTaGFk
b3cqIHNoYWRvdyA9IHBvaW50LT5wYXJlbnROb2RlKCktPmlzRWxlbWVudE5vZGUoKSA/IHRvRWxl
bWVudChwb2ludC0+cGFyZW50Tm9kZSgpKS0+c2hhZG93KCkgOiAwKQorICAgICAgICAgICAgICAg
ICAgICAgICAgc2hhZG93LT5pbnZhbGlkYXRlRGlzdHJpYnV0aW9uKCk7CisgICAgICAgICAgICAg
ICAgfQogICAgICAgICAgICAgfQogICAgICAgICB9CiAKQEAgLTIxOSw3ICsyNTcsNyBAQCB2b2lk
IENvbnRlbnREaXN0cmlidXRvcjo6ZGlzdHJpYnV0ZShFbGVtZW50KiBob3N0KQogICAgICAgICBB
U1NFUlQocm9vdCk7CiAgICAgICAgIGlmIChyb290LT5vbGRlclNoYWRvd1Jvb3QoKSkgewogICAg
ICAgICAgICAgZGlzdHJpYnV0ZU5vZGVDaGlsZHJlblRvKHNoYWRvd0VsZW1lbnQsIHJvb3QtPm9s
ZGVyU2hhZG93Um9vdCgpKTsKLSAgICAgICAgICAgIHJvb3QtPm9sZGVyU2hhZG93Um9vdCgpLT5z
ZXRBc3NpZ25lZFRvKHNoYWRvd0VsZW1lbnQpOworICAgICAgICAgICAgcm9vdC0+b2xkZXJTaGFk
b3dSb290KCktPmVuc3VyZVNjb3BlRGlzdHJpYnV0aW9uKCktPnNldEluc2VydGlvblBvaW50QXNz
aWduZWRUbyhzaGFkb3dFbGVtZW50KTsKICAgICAgICAgfSBlbHNlIHsKICAgICAgICAgICAgIGRp
c3RyaWJ1dGVTZWxlY3Rpb25zVG8oc2hhZG93RWxlbWVudCwgcG9vbCwgZGlzdHJpYnV0ZWQpOwog
ICAgICAgICAgICAgaWYgKEVsZW1lbnRTaGFkb3cqIHNoYWRvdyA9IHNoYWRvd0VsZW1lbnQtPnBh
cmVudE5vZGUoKS0+aXNFbGVtZW50Tm9kZSgpID8gdG9FbGVtZW50KHNoYWRvd0VsZW1lbnQtPnBh
cmVudE5vZGUoKSktPnNoYWRvdygpIDogMCkKQEAgLTIzNCwxMSArMjcyLDEzIEBAIGJvb2wgQ29u
dGVudERpc3RyaWJ1dG9yOjppbnZhbGlkYXRlKEVsZW1lbnQqIGhvc3QpCiAgICAgYm9vbCBuZWVk
c1JlYXR0YWNoID0gKG1fdmFsaWRpdHkgPT0gVW5kZXRlcm1pbmVkKSB8fCAhbV9ub2RlVG9JbnNl
cnRpb25Qb2ludC5pc0VtcHR5KCk7CiAKICAgICBmb3IgKFNoYWRvd1Jvb3QqIHJvb3QgPSBob3N0
LT55b3VuZ2VzdFNoYWRvd1Jvb3QoKTsgcm9vdDsgcm9vdCA9IHJvb3QtPm9sZGVyU2hhZG93Um9v
dCgpKSB7Ci0gICAgICAgIHJvb3QtPnNldEFzc2lnbmVkVG8oMCk7Ci0gICAgICAgIGNvbnN0IFZl
Y3RvcjxSZWZQdHI8SW5zZXJ0aW9uUG9pbnQ+ID4mIGluc2VydGlvblBvaW50cyA9IHJvb3QtPmlu
c2VydGlvblBvaW50TGlzdCgpOwotICAgICAgICBmb3IgKHNpemVfdCBpID0gMDsgaSA8IGluc2Vy
dGlvblBvaW50cy5zaXplKCk7ICsraSkgewotICAgICAgICAgICAgbmVlZHNSZWF0dGFjaCA9IG5l
ZWRzUmVhdHRhY2ggfHwgdHJ1ZTsKLSAgICAgICAgICAgIGluc2VydGlvblBvaW50c1tpXS0+Y2xl
YXJEaXN0cmlidXRpb24oKTsKKyAgICAgICAgaWYgKFNjb3BlQ29udGVudERpc3RyaWJ1dGlvbiog
c2NvcGUgPSByb290LT5zY29wZURpc3RyaWJ1dGlvbigpKSB7CisgICAgICAgICAgICBzY29wZS0+
c2V0SW5zZXJ0aW9uUG9pbnRBc3NpZ25lZFRvKDApOworICAgICAgICAgICAgY29uc3QgVmVjdG9y
PFJlZlB0cjxJbnNlcnRpb25Qb2ludD4gPiYgaW5zZXJ0aW9uUG9pbnRzID0gc2NvcGUtPmVuc3Vy
ZUluc2VydGlvblBvaW50TGlzdChyb290KTsKKyAgICAgICAgICAgIGZvciAoc2l6ZV90IGkgPSAw
OyBpIDwgaW5zZXJ0aW9uUG9pbnRzLnNpemUoKTsgKytpKSB7CisgICAgICAgICAgICAgICAgbmVl
ZHNSZWF0dGFjaCA9IG5lZWRzUmVhdHRhY2ggfHwgdHJ1ZTsKKyAgICAgICAgICAgICAgICBpbnNl
cnRpb25Qb2ludHNbaV0tPmNsZWFyRGlzdHJpYnV0aW9uKCk7CisgICAgICAgICAgICB9CiAgICAg
ICAgIH0KICAgICB9CiAKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJDb3JlL2h0bWwvc2hhZG93L0Nv
bnRlbnREaXN0cmlidXRvci5oIGIvU291cmNlL1dlYkNvcmUvaHRtbC9zaGFkb3cvQ29udGVudERp
c3RyaWJ1dG9yLmgKaW5kZXggNzcxMTg5YjYwNDA4YzdlMTk3YWNkNDE4ZDE5MWViMDk0ODgwNGY3
Zi4uZjk4MzgzN2YxMDY3M2FhZTRmODRiMzJlMDAwN2QyZGI0NjdlYTIzNyAxMDA2NDQKLS0tIGEv
U291cmNlL1dlYkNvcmUvaHRtbC9zaGFkb3cvQ29udGVudERpc3RyaWJ1dG9yLmgKKysrIGIvU291
cmNlL1dlYkNvcmUvaHRtbC9zaGFkb3cvQ29udGVudERpc3RyaWJ1dG9yLmgKQEAgLTcwLDI2ICs3
MCwzNSBAQCBwcml2YXRlOgogICAgIEhhc2hNYXA8Y29uc3QgTm9kZSosIHNpemVfdD4gbV9pbmRp
Y2VzOwogfTsKIAotY2xhc3MgU2hhZG93Um9vdENvbnRlbnREaXN0cmlidXRpb25EYXRhIHsKK2Ns
YXNzIFNjb3BlQ29udGVudERpc3RyaWJ1dGlvbiB7CiBwdWJsaWM6Ci0gICAgU2hhZG93Um9vdENv
bnRlbnREaXN0cmlidXRpb25EYXRhKCk7CisgICAgU2NvcGVDb250ZW50RGlzdHJpYnV0aW9uKCk7
CiAKICAgICBJbnNlcnRpb25Qb2ludCogaW5zZXJ0aW9uUG9pbnRBc3NpZ25lZFRvKCkgY29uc3Qg
eyByZXR1cm4gbV9pbnNlcnRpb25Qb2ludEFzc2lnbmVkVG87IH0KICAgICB2b2lkIHNldEluc2Vy
dGlvblBvaW50QXNzaWduZWRUbyhJbnNlcnRpb25Qb2ludCogaW5zZXJ0aW9uUG9pbnQpIHsgbV9p
bnNlcnRpb25Qb2ludEFzc2lnbmVkVG8gPSBpbnNlcnRpb25Qb2ludDsgfQogCi0gICAgdm9pZCBy
ZWdpdGVySW5zZXJ0aW9uUG9pbnQoU2hhZG93Um9vdCosIEluc2VydGlvblBvaW50Kik7CisgICAg
dm9pZCByZWdpc3Rlckluc2VydGlvblBvaW50KFNoYWRvd1Jvb3QqLCBJbnNlcnRpb25Qb2ludCop
OwogICAgIHZvaWQgdW5yZWdpc3Rlckluc2VydGlvblBvaW50KFNoYWRvd1Jvb3QqLCBJbnNlcnRp
b25Qb2ludCopOwogICAgIGJvb2wgaGFzU2hhZG93RWxlbWVudENoaWxkcmVuKCkgY29uc3QgeyBy
ZXR1cm4gbV9udW1iZXJPZlNoYWRvd0VsZW1lbnRDaGlsZHJlbiA+IDA7IH0KICAgICBib29sIGhh
c0NvbnRlbnRFbGVtZW50Q2hpbGRyZW4oKSBjb25zdCB7IHJldHVybiBtX251bWJlck9mQ29udGVu
dEVsZW1lbnRDaGlsZHJlbiA+IDA7IH0KIAotICAgIHZvaWQgaW5jcmVtZW50TnVtYmVyT2ZFbGVt
ZW50U2hhZG93Q2hpbGRyZW4oKSB7ICsrbV9udW1iZXJPZkVsZW1lbnRTaGFkb3dDaGlsZHJlbjsg
fQotICAgIHZvaWQgZGVjcmVtZW50TnVtYmVyT2ZFbGVtZW50U2hhZG93Q2hpbGRyZW4oKSB7IEFT
U0VSVChtX251bWJlck9mRWxlbWVudFNoYWRvd0NoaWxkcmVuID4gMCk7IC0tbV9udW1iZXJPZkVs
ZW1lbnRTaGFkb3dDaGlsZHJlbjsgfQorICAgIHZvaWQgcmVnaXN0ZXJFbGVtZW50U2hhZG93KCkg
eyArK21fbnVtYmVyT2ZFbGVtZW50U2hhZG93Q2hpbGRyZW47IH0KKyAgICB2b2lkIHVucmVnaXN0
ZXJFbGVtZW50U2hhZG93KCkgeyBBU1NFUlQobV9udW1iZXJPZkVsZW1lbnRTaGFkb3dDaGlsZHJl
biA+IDApOyAtLW1fbnVtYmVyT2ZFbGVtZW50U2hhZG93Q2hpbGRyZW47IH0KICAgICB1bnNpZ25l
ZCBudW1iZXJPZkVsZW1lbnRTaGFkb3dDaGlsZHJlbigpIGNvbnN0IHsgcmV0dXJuIG1fbnVtYmVy
T2ZFbGVtZW50U2hhZG93Q2hpbGRyZW47IH0KICAgICBib29sIGhhc0VsZW1lbnRTaGFkb3dDaGls
ZHJlbigpIGNvbnN0IHsgcmV0dXJuIG1fbnVtYmVyT2ZFbGVtZW50U2hhZG93Q2hpbGRyZW4gPiAw
OyB9CiAKICAgICB2b2lkIGludmFsaWRhdGVJbnNlcnRpb25Qb2ludExpc3QoKTsKICAgICBjb25z
dCBWZWN0b3I8UmVmUHRyPEluc2VydGlvblBvaW50PiA+JiBlbnN1cmVJbnNlcnRpb25Qb2ludExp
c3QoU2hhZG93Um9vdCopOwogCisgICAgYm9vbCBpc1VzZWRGb3JSZW5kZXJpbmcoKSBjb25zdDsK
KworICAgIHN0YXRpYyBib29sIGhhc1NoYWRvd0VsZW1lbnQoY29uc3QgU2hhZG93Um9vdCopOwor
ICAgIHN0YXRpYyBib29sIGhhc0NvbnRlbnRFbGVtZW50KGNvbnN0IFNoYWRvd1Jvb3QqKTsKKyAg
ICBzdGF0aWMgYm9vbCBoYXNJbnNlcnRpb25Qb2ludChjb25zdCBTaGFkb3dSb290Kik7CisgICAg
c3RhdGljIGJvb2wgaGFzRWxlbWVudFNoYWRvdyhjb25zdCBTaGFkb3dSb290KiBob2xkZXIpIHsg
cmV0dXJuIGNvdW50RWxlbWVudFNoYWRvdyhob2xkZXIpOyB9CisgICAgc3RhdGljIHVuc2lnbmVk
IGNvdW50RWxlbWVudFNoYWRvdyhjb25zdCBTaGFkb3dSb290Kik7CisgICAgc3RhdGljIEluc2Vy
dGlvblBvaW50KiBhc3NpZ25lZFRvKGNvbnN0IFNoYWRvd1Jvb3QqKTsKKwogcHJpdmF0ZToKICAg
ICBJbnNlcnRpb25Qb2ludCogbV9pbnNlcnRpb25Qb2ludEFzc2lnbmVkVG87CiAgICAgdW5zaWdu
ZWQgbV9udW1iZXJPZlNoYWRvd0VsZW1lbnRDaGlsZHJlbjsKZGlmZiAtLWdpdCBhL1NvdXJjZS9X
ZWJDb3JlL2h0bWwvc2hhZG93L0hUTUxTaGFkb3dFbGVtZW50LmNwcCBiL1NvdXJjZS9XZWJDb3Jl
L2h0bWwvc2hhZG93L0hUTUxTaGFkb3dFbGVtZW50LmNwcAppbmRleCBkOWUxZjE1NGI5Y2FhMjc2
ZDkyMjBiYmM1MjgxNTYzNWNmZjA3OTZlLi4yMmMwNzY1NmE1NTdlNDdjOTNmZWI1M2FiM2UzNTUy
MjA3YWY4ZTljIDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViQ29yZS9odG1sL3NoYWRvdy9IVE1MU2hh
ZG93RWxlbWVudC5jcHAKKysrIGIvU291cmNlL1dlYkNvcmUvaHRtbC9zaGFkb3cvSFRNTFNoYWRv
d0VsZW1lbnQuY3BwCkBAIC03Myw3ICs3Myw3IEBAIFNoYWRvd1Jvb3QqIEhUTUxTaGFkb3dFbGVt
ZW50OjpvbGRlclNoYWRvd1Jvb3QoKQogICAgIHRvU2hhZG93Um9vdCh0cmVlU2NvcGUoKS0+cm9v
dE5vZGUoKSktPm93bmVyKCktPmVuc3VyZURpc3RyaWJ1dGlvbkZyb21Eb2N1bWVudCgpOwogCiAg
ICAgU2hhZG93Um9vdCogb2xkZXIgPSB0b1NoYWRvd1Jvb3QodHJlZVNjb3BlKCktPnJvb3ROb2Rl
KCkpLT5vbGRlclNoYWRvd1Jvb3QoKTsKLSAgICBpZiAoIW9sZGVyIHx8IG9sZGVyLT50eXBlKCkg
IT0gU2hhZG93Um9vdDo6QXV0aG9yU2hhZG93Um9vdCB8fCBvbGRlci0+YXNzaWduZWRUbygpICE9
IHRoaXMpCisgICAgaWYgKCFvbGRlciB8fCBvbGRlci0+dHlwZSgpICE9IFNoYWRvd1Jvb3Q6OkF1
dGhvclNoYWRvd1Jvb3QgfHwgU2NvcGVDb250ZW50RGlzdHJpYnV0aW9uOjphc3NpZ25lZFRvKG9s
ZGVyKSAhPSB0aGlzKQogICAgICAgICByZXR1cm4gMDsKIAogICAgIHJldHVybiBvbGRlcjsKZGlm
ZiAtLWdpdCBhL1NvdXJjZS9XZWJDb3JlL2h0bWwvc2hhZG93L0luc2VydGlvblBvaW50LmNwcCBi
L1NvdXJjZS9XZWJDb3JlL2h0bWwvc2hhZG93L0luc2VydGlvblBvaW50LmNwcAppbmRleCAxOWE4
YzkxNTdjMmIzYTQ4YTczNTZlMDM0ZGJmNzY0YTc2Yzk3OWE5Li40NGUzNGI5NTM0NTc0ZWMwNjhk
ZWVkMmFmZDgwYTY5NjY0N2JhYzU5IDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViQ29yZS9odG1sL3No
YWRvdy9JbnNlcnRpb25Qb2ludC5jcHAKKysrIGIvU291cmNlL1dlYkNvcmUvaHRtbC9zaGFkb3cv
SW5zZXJ0aW9uUG9pbnQuY3BwCkBAIC0xMzUsNyArMTM1LDcgQEAgTm9kZTo6SW5zZXJ0aW9uTm90
aWZpY2F0aW9uUmVxdWVzdCBJbnNlcnRpb25Qb2ludDo6aW5zZXJ0ZWRJbnRvKENvbnRhaW5lck5v
ZGUqIGkKICAgICAgICAgICAgIHJvb3RPd25lci0+aW52YWxpZGF0ZURpc3RyaWJ1dGlvbigpOwog
ICAgICAgICAgICAgaWYgKGlzQWN0aXZlKCkgJiYgIW1fcmVnaXN0ZXJlZFdpdGhTaGFkb3dSb290
ICYmIGluc2VydGlvblBvaW50LT50cmVlU2NvcGUoKS0+cm9vdE5vZGUoKSA9PSByb290KSB7CiAg
ICAgICAgICAgICAgICAgbV9yZWdpc3RlcmVkV2l0aFNoYWRvd1Jvb3QgPSB0cnVlOwotICAgICAg
ICAgICAgICAgIHJvb3QtPnJlZ2lzdGVySW5zZXJ0aW9uUG9pbnQodGhpcyk7CisgICAgICAgICAg
ICAgICAgcm9vdC0+ZW5zdXJlU2NvcGVEaXN0cmlidXRpb24oKS0+cmVnaXN0ZXJJbnNlcnRpb25Q
b2ludChyb290LCB0aGlzKTsKICAgICAgICAgICAgIH0KICAgICAgICAgfQogICAgIH0KQEAgLTE2
MCw3ICsxNjAsNyBAQCB2b2lkIEluc2VydGlvblBvaW50OjpyZW1vdmVkRnJvbShDb250YWluZXJO
b2RlKiBpbnNlcnRpb25Qb2ludCkKICAgICBpZiAobV9yZWdpc3RlcmVkV2l0aFNoYWRvd1Jvb3Qg
JiYgaW5zZXJ0aW9uUG9pbnQtPnRyZWVTY29wZSgpLT5yb290Tm9kZSgpID09IHJvb3QpIHsKICAg
ICAgICAgQVNTRVJUKHJvb3QpOwogICAgICAgICBtX3JlZ2lzdGVyZWRXaXRoU2hhZG93Um9vdCA9
IGZhbHNlOwotICAgICAgICByb290LT51bnJlZ2lzdGVySW5zZXJ0aW9uUG9pbnQodGhpcyk7Cisg
ICAgICAgIHJvb3QtPmVuc3VyZVNjb3BlRGlzdHJpYnV0aW9uKCktPnVucmVnaXN0ZXJJbnNlcnRp
b25Qb2ludChyb290LCB0aGlzKTsKICAgICB9CiAKICAgICBIVE1MRWxlbWVudDo6cmVtb3ZlZEZy
b20oaW5zZXJ0aW9uUG9pbnQpOwpAQCAtMTg2LDQgKzE4NiwzOCBAQCB2b2lkIEluc2VydGlvblBv
aW50OjpzZXRSZXNldFN0eWxlSW5oZXJpdGFuY2UoYm9vbCB2YWx1ZSkKICAgICBzZXRCb29sZWFu
QXR0cmlidXRlKHJlc2V0X3N0eWxlX2luaGVyaXRhbmNlQXR0ciwgdmFsdWUpOwogfQogCitib29s
IEluc2VydGlvblBvaW50Ojpjb250YWlucyhjb25zdCBOb2RlKiBub2RlKSBjb25zdAoreworICAg
IHJldHVybiBtX2Rpc3RyaWJ1dGlvbi5jb250YWlucyhjb25zdF9jYXN0PE5vZGUqPihub2RlKSkg
fHwgKG5vZGUtPmlzU2hhZG93Um9vdCgpICYmIFNjb3BlQ29udGVudERpc3RyaWJ1dGlvbjo6YXNz
aWduZWRUbyh0b1NoYWRvd1Jvb3Qobm9kZSkpID09IHRoaXMpOworfQorCitJbnNlcnRpb25Qb2lu
dCogcmVzb2x2ZVJlcHJvamVjdGlvbihjb25zdCBOb2RlKiBwcm9qZWN0ZWROb2RlKQoreworICAg
IEluc2VydGlvblBvaW50KiBpbnNlcnRpb25Qb2ludCA9IDA7CisgICAgY29uc3QgTm9kZSogY3Vy
cmVudCA9IHByb2plY3RlZE5vZGU7CisKKyAgICB3aGlsZSAoY3VycmVudCkgeworICAgICAgICBp
ZiAoRWxlbWVudFNoYWRvdyogc2hhZG93ID0gc2hhZG93T2ZQYXJlbnRGb3JEaXN0cmlidXRpb24o
Y3VycmVudCkpIHsKKyAgICAgICAgICAgIHNoYWRvdy0+ZW5zdXJlRGlzdHJpYnV0aW9uKCk7Cisg
ICAgICAgICAgICBpZiAoSW5zZXJ0aW9uUG9pbnQqIGluc2VydGVkVG8gPSBzaGFkb3ctPmRpc3Ry
aWJ1dG9yKCkuZmluZEluc2VydGlvblBvaW50Rm9yKHByb2plY3RlZE5vZGUpKSB7CisgICAgICAg
ICAgICAgICAgY3VycmVudCA9IGluc2VydGVkVG87CisgICAgICAgICAgICAgICAgaW5zZXJ0aW9u
UG9pbnQgPSBpbnNlcnRlZFRvOworICAgICAgICAgICAgICAgIGNvbnRpbnVlOworICAgICAgICAg
ICAgfQorICAgICAgICB9CisKKyAgICAgICAgaWYgKE5vZGUqIHBhcmVudCA9IHBhcmVudE5vZGVG
b3JEaXN0cmlidXRpb24oY3VycmVudCkpIHsKKyAgICAgICAgICAgIGlmIChJbnNlcnRpb25Qb2lu
dCogaW5zZXJ0ZWRUbyA9IHBhcmVudC0+aXNTaGFkb3dSb290KCkgPyBTY29wZUNvbnRlbnREaXN0
cmlidXRpb246OmFzc2lnbmVkVG8odG9TaGFkb3dSb290KHBhcmVudCkpIDogMCkgeworICAgICAg
ICAgICAgICAgIGN1cnJlbnQgPSBpbnNlcnRlZFRvOworICAgICAgICAgICAgICAgIGluc2VydGlv
blBvaW50ID0gaW5zZXJ0ZWRUbzsKKyAgICAgICAgICAgICAgICBjb250aW51ZTsKKyAgICAgICAg
ICAgIH0KKyAgICAgICAgfQorCisgICAgICAgIGJyZWFrOworICAgIH0KKworICAgIHJldHVybiBp
bnNlcnRpb25Qb2ludDsKK30KKwogfSAvLyBuYW1lc3BhY2UgV2ViQ29yZQpkaWZmIC0tZ2l0IGEv
U291cmNlL1dlYkNvcmUvaHRtbC9zaGFkb3cvSW5zZXJ0aW9uUG9pbnQuaCBiL1NvdXJjZS9XZWJD
b3JlL2h0bWwvc2hhZG93L0luc2VydGlvblBvaW50LmgKaW5kZXggYWVkYWMxZDBmN2QxMGY2ZDg0
ZTEzNjBlODEwMDMzOGE5MGM4MTJlMS4uM2JkNzUyYzg3M2QxZjFhNTk5ZTQ3OTBiODY1OTRiMDc1
ZWVmN2VjZSAxMDA2NDQKLS0tIGEvU291cmNlL1dlYkNvcmUvaHRtbC9zaGFkb3cvSW5zZXJ0aW9u
UG9pbnQuaAorKysgYi9Tb3VyY2UvV2ViQ29yZS9odG1sL3NoYWRvdy9JbnNlcnRpb25Qb2ludC5o
CkBAIC03Miw3ICs3Miw3IEBAIHB1YmxpYzoKICAgICBib29sIHNob3VsZFVzZUZhbGxiYWNrRWxl
bWVudHMoKSBjb25zdDsKIAogICAgIHNpemVfdCBpbmRleE9mKE5vZGUqIG5vZGUpIGNvbnN0IHsg
cmV0dXJuIG1fZGlzdHJpYnV0aW9uLmZpbmQobm9kZSk7IH0KLSAgICBib29sIGNvbnRhaW5zKGNv
bnN0IE5vZGUqIG5vZGUpIGNvbnN0IHsgcmV0dXJuIG1fZGlzdHJpYnV0aW9uLmNvbnRhaW5zKGNv
bnN0X2Nhc3Q8Tm9kZSo+KG5vZGUpKSB8fCAobm9kZS0+aXNTaGFkb3dSb290KCkgJiYgdG9TaGFk
b3dSb290KG5vZGUpLT5hc3NpZ25lZFRvKCkgPT0gdGhpcyk7IH0KKyAgICBib29sIGNvbnRhaW5z
KGNvbnN0IE5vZGUqKSBjb25zdDsKICAgICBzaXplX3Qgc2l6ZSgpIGNvbnN0IHsgcmV0dXJuIG1f
ZGlzdHJpYnV0aW9uLnNpemUoKTsgfQogICAgIE5vZGUqIGF0KHNpemVfdCBpbmRleCkgIGNvbnN0
IHsgcmV0dXJuIG1fZGlzdHJpYnV0aW9uLmF0KGluZGV4KS5nZXQoKTsgfQogICAgIE5vZGUqIGZp
cnN0KCkgY29uc3QgeyByZXR1cm4gbV9kaXN0cmlidXRpb24uaXNFbXB0eSgpID8gMCA6IG1fZGlz
dHJpYnV0aW9uLmZpcnN0KCkuZ2V0KCk7IH0KQEAgLTE1MCwzNCArMTUwLDcgQEAgaW5saW5lIEVs
ZW1lbnRTaGFkb3cqIHNoYWRvd09mUGFyZW50Rm9yRGlzdHJpYnV0aW9uKGNvbnN0IE5vZGUqIG5v
ZGUpCiAgICAgcmV0dXJuIDA7CiB9CiAKLWlubGluZSBJbnNlcnRpb25Qb2ludCogcmVzb2x2ZVJl
cHJvamVjdGlvbihjb25zdCBOb2RlKiBwcm9qZWN0ZWROb2RlKQotewotICAgIEluc2VydGlvblBv
aW50KiBpbnNlcnRpb25Qb2ludCA9IDA7Ci0gICAgY29uc3QgTm9kZSogY3VycmVudCA9IHByb2pl
Y3RlZE5vZGU7Ci0KLSAgICB3aGlsZSAoY3VycmVudCkgewotICAgICAgICBpZiAoRWxlbWVudFNo
YWRvdyogc2hhZG93ID0gc2hhZG93T2ZQYXJlbnRGb3JEaXN0cmlidXRpb24oY3VycmVudCkpIHsK
LSAgICAgICAgICAgIHNoYWRvdy0+ZW5zdXJlRGlzdHJpYnV0aW9uKCk7Ci0gICAgICAgICAgICBp
ZiAoSW5zZXJ0aW9uUG9pbnQqIGluc2VydGVkVG8gPSBzaGFkb3ctPmRpc3RyaWJ1dG9yKCkuZmlu
ZEluc2VydGlvblBvaW50Rm9yKHByb2plY3RlZE5vZGUpKSB7Ci0gICAgICAgICAgICAgICAgY3Vy
cmVudCA9IGluc2VydGVkVG87Ci0gICAgICAgICAgICAgICAgaW5zZXJ0aW9uUG9pbnQgPSBpbnNl
cnRlZFRvOwotICAgICAgICAgICAgICAgIGNvbnRpbnVlOwotICAgICAgICAgICAgfQotICAgICAg
ICB9Ci0KLSAgICAgICAgaWYgKE5vZGUqIHBhcmVudCA9IHBhcmVudE5vZGVGb3JEaXN0cmlidXRp
b24oY3VycmVudCkpIHsKLSAgICAgICAgICAgIGlmIChJbnNlcnRpb25Qb2ludCogaW5zZXJ0ZWRU
byA9IHBhcmVudC0+aXNTaGFkb3dSb290KCkgPyB0b1NoYWRvd1Jvb3QocGFyZW50KS0+YXNzaWdu
ZWRUbygpIDogMCkgewotICAgICAgICAgICAgICAgIGN1cnJlbnQgPSBpbnNlcnRlZFRvOwotICAg
ICAgICAgICAgICAgIGluc2VydGlvblBvaW50ID0gaW5zZXJ0ZWRUbzsKLSAgICAgICAgICAgICAg
ICBjb250aW51ZTsKLSAgICAgICAgICAgIH0KLSAgICAgICAgfQotCi0gICAgICAgIGJyZWFrOwot
ICAgIH0KLQotICAgIHJldHVybiBpbnNlcnRpb25Qb2ludDsKLX0KK0luc2VydGlvblBvaW50KiBy
ZXNvbHZlUmVwcm9qZWN0aW9uKGNvbnN0IE5vZGUqKTsKIAogfSAvLyBuYW1lc3BhY2UgV2ViQ29y
ZQogCmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS90ZXN0aW5nL0ludGVybmFscy5jcHAgYi9T
b3VyY2UvV2ViQ29yZS90ZXN0aW5nL0ludGVybmFscy5jcHAKaW5kZXggOWI0NWZiNjAzNTE2ZTNi
MThmNTA0YjdjOWVmMDRmNDQ3OGNlYWZkMS4uZmEyZmViODcxZWY4NjIyMmM2YWJiNDA2NDllMmI0
YjY3ZTgxZjdlYSAxMDA2NDQKLS0tIGEvU291cmNlL1dlYkNvcmUvdGVzdGluZy9JbnRlcm5hbHMu
Y3BwCisrKyBiL1NvdXJjZS9XZWJDb3JlL3Rlc3RpbmcvSW50ZXJuYWxzLmNwcApAQCAtMzMsNiAr
MzMsNyBAQAogI2luY2x1ZGUgIkNsaWVudFJlY3QuaCIKICNpbmNsdWRlICJDbGllbnRSZWN0TGlz
dC5oIgogI2luY2x1ZGUgIkNvbXBvc2VkU2hhZG93VHJlZVdhbGtlci5oIgorI2luY2x1ZGUgIkNv
bnRlbnREaXN0cmlidXRvci5oIgogI2luY2x1ZGUgIkN1cnNvci5oIgogI2luY2x1ZGUgIkRPTVN0
cmluZ0xpc3QuaCIKICNpbmNsdWRlICJET01XaW5kb3cuaCIKQEAgLTQzNCw3ICs0MzUsNyBAQCBi
b29sIEludGVybmFsczo6cGF1c2VUcmFuc2l0aW9uQXRUaW1lT25Qc2V1ZG9FbGVtZW50KGNvbnN0
IFN0cmluZyYgcHJvcGVydHksIGRvdQogYm9vbCBJbnRlcm5hbHM6Omhhc1NoYWRvd0luc2VydGlv
blBvaW50KGNvbnN0IE5vZGUqIHJvb3QsIEV4Y2VwdGlvbkNvZGUmIGVjKSBjb25zdAogewogICAg
IGlmIChyb290ICYmIHJvb3QtPmlzU2hhZG93Um9vdCgpKQotICAgICAgICByZXR1cm4gdG9TaGFk
b3dSb290KHJvb3QpLT5oYXNTaGFkb3dJbnNlcnRpb25Qb2ludCgpOworICAgICAgICByZXR1cm4g
U2NvcGVDb250ZW50RGlzdHJpYnV0aW9uOjpoYXNTaGFkb3dFbGVtZW50KHRvU2hhZG93Um9vdChy
b290KSk7CiAKICAgICBlYyA9IElOVkFMSURfQUNDRVNTX0VSUjsKICAgICByZXR1cm4gMDsKQEAg
LTQ0Myw3ICs0NDQsNyBAQCBib29sIEludGVybmFsczo6aGFzU2hhZG93SW5zZXJ0aW9uUG9pbnQo
Y29uc3QgTm9kZSogcm9vdCwgRXhjZXB0aW9uQ29kZSYgZWMpIGNvbgogYm9vbCBJbnRlcm5hbHM6
Omhhc0NvbnRlbnRFbGVtZW50KGNvbnN0IE5vZGUqIHJvb3QsIEV4Y2VwdGlvbkNvZGUmIGVjKSBj
b25zdAogewogICAgIGlmIChyb290ICYmIHJvb3QtPmlzU2hhZG93Um9vdCgpKQotICAgICAgICBy
ZXR1cm4gdG9TaGFkb3dSb290KHJvb3QpLT5oYXNDb250ZW50RWxlbWVudCgpOworICAgICAgICBy
ZXR1cm4gU2NvcGVDb250ZW50RGlzdHJpYnV0aW9uOjpoYXNDb250ZW50RWxlbWVudCh0b1NoYWRv
d1Jvb3Qocm9vdCkpOwogCiAgICAgZWMgPSBJTlZBTElEX0FDQ0VTU19FUlI7CiAgICAgcmV0dXJu
IDA7CkBAIC00NTYsNyArNDU3LDcgQEAgc2l6ZV90IEludGVybmFsczo6Y291bnRFbGVtZW50U2hh
ZG93KGNvbnN0IE5vZGUqIHJvb3QsIEV4Y2VwdGlvbkNvZGUmIGVjKSBjb25zdAogICAgICAgICBy
ZXR1cm4gMDsKICAgICB9CiAKLSAgICByZXR1cm4gdG9TaGFkb3dSb290KHJvb3QpLT5jb3VudEVs
ZW1lbnRTaGFkb3coKTsKKyAgICByZXR1cm4gU2NvcGVDb250ZW50RGlzdHJpYnV0aW9uOjpjb3Vu
dEVsZW1lbnRTaGFkb3codG9TaGFkb3dSb290KHJvb3QpKTsKIH0KIAogYm9vbCBJbnRlcm5hbHM6
OmF0dGFjaGVkKE5vZGUqIG5vZGUsIEV4Y2VwdGlvbkNvZGUmIGVjKQpkaWZmIC0tZ2l0IGEvU291
cmNlL1dlYktpdC93aW4vV2ViS2l0LnZjcHJvai9XZWJLaXQuZGVmLmluIGIvU291cmNlL1dlYktp
dC93aW4vV2ViS2l0LnZjcHJvai9XZWJLaXQuZGVmLmluCmluZGV4IDMwM2I2NzMxMGNmMTljOTY2
MDkwMjNhNzU0N2IzMWE2MTMzNjBmNDcuLjcwZjM4ODFiMTM4NGUzNWYwOGY3MTFhYzljZDAwNjVl
NjY5Y2FkZjIgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJLaXQvd2luL1dlYktpdC52Y3Byb2ovV2Vi
S2l0LmRlZi5pbgorKysgYi9Tb3VyY2UvV2ViS2l0L3dpbi9XZWJLaXQudmNwcm9qL1dlYktpdC5k
ZWYuaW4KQEAgLTE5Niw5ICsxOTYsNiBAQCBFWFBPUlRTCiAgICAgICAgID9nZXREYXRhMTZTbG93
Q2FzZUBTdHJpbmdJbXBsQFdURkBAQUJFUEJfV1haCiAgICAgICAgID9nZXRMb2NhdGlvbkFuZExl
bmd0aEZyb21SYW5nZUBUZXh0SXRlcmF0b3JAV2ViQ29yZUBAU0FfTlBBVkVsZW1lbnRAMkBQQlZS
YW5nZUAyQEFBSTJAWgogICAgICAgICA/Z2V0UmVmZXJlbmNlZEZpbGVQYXRoc0BGb3JtQ29udHJv
bGxlckBXZWJDb3JlQEBTQT9BVj8kVmVjdG9yQFZTdHJpbmdAV1RGQEAkMEFAQFdURkBAQUJWMzRA
QFoKLSAgICAgICAgP2NvdW50RWxlbWVudFNoYWRvd0BTaGFkb3dSb290QFdlYkNvcmVAQFFCRUlY
WgotICAgICAgICA/aGFzU2hhZG93SW5zZXJ0aW9uUG9pbnRAU2hhZG93Um9vdEBXZWJDb3JlQEBR
QkVfTlhaCi0gICAgICAgID9oYXNDb250ZW50RWxlbWVudEBTaGFkb3dSb290QFdlYkNvcmVAQFFC
RV9OWFoKICAgICAgICAgP2lucHV0VGFnQEhUTUxOYW1lc0BXZWJDb3JlQEAzVlF1YWxpZmllZE5h
bWVAMkBCCiAjaWYgRU5BQkxFKElOU1BFQ1RPUikKICAgICAgICAgP2dldEhpZ2hsaWdodEBJbnNw
ZWN0b3JDb250cm9sbGVyQFdlYkNvcmVAQFFCRVhQQVVIaWdobGlnaHRAMkBAWgpAQCAtNTg4LDkg
KzU4NSw2IEBAIEVYUE9SVFMKICAgICAgICAgP2dldERhdGExNlNsb3dDYXNlQFN0cmluZ0ltcGxA
V1RGQEBBQkVQQl9XWFoKICAgICAgICAgP2dldExvY2F0aW9uQW5kTGVuZ3RoRnJvbVJhbmdlQFRl
eHRJdGVyYXRvckBXZWJDb3JlQEBTQV9OUEFWRWxlbWVudEAyQFBCVlJhbmdlQDJAQUFJMkBaCiAg
ICAgICAgID9nZXRSZWZlcmVuY2VkRmlsZVBhdGhzQEZvcm1Db250cm9sbGVyQFdlYkNvcmVAQFNB
P0FWPyRWZWN0b3JAVlN0cmluZ0BXVEZAQCQwQUBAV1RGQEBBQlYzNEBAWgotICAgICAgICA/Y291
bnRFbGVtZW50U2hhZG93QFNoYWRvd1Jvb3RAV2ViQ29yZUBAUUJFSVhaCi0gICAgICAgID9oYXNT
aGFkb3dJbnNlcnRpb25Qb2ludEBTaGFkb3dSb290QFdlYkNvcmVAQFFCRV9OWFoKLSAgICAgICAg
P2hhc0NvbnRlbnRFbGVtZW50QFNoYWRvd1Jvb3RAV2ViQ29yZUBAUUJFX05YWgogICAgICAgICA/
aW5wdXRUYWdASFRNTE5hbWVzQFdlYkNvcmVAQDNWUXVhbGlmaWVkTmFtZUAyQEIKICNpZiBFTkFC
TEUoSU5TUEVDVE9SKQogICAgICAgICA/Z2V0SGlnaGxpZ2h0QEluc3BlY3RvckNvbnRyb2xsZXJA
V2ViQ29yZUBAUUJFWFBBVUhpZ2hsaWdodEAyQEBaCkBAIC05ODAsOSArOTc0LDYgQEAgRVhQT1JU
UwogICAgICAgICA/Z2V0RGF0YTE2U2xvd0Nhc2VAU3RyaW5nSW1wbEBXVEZAQEFCRVBCX1dYWgog
ICAgICAgICA/Z2V0TG9jYXRpb25BbmRMZW5ndGhGcm9tUmFuZ2VAVGV4dEl0ZXJhdG9yQFdlYkNv
cmVAQFNBX05QQVZFbGVtZW50QDJAUEJWUmFuZ2VAMkBBQUkyQFoKICAgICAgICAgP2dldFJlZmVy
ZW5jZWRGaWxlUGF0aHNARm9ybUNvbnRyb2xsZXJAV2ViQ29yZUBAU0E/QVY/JFZlY3RvckBWU3Ry
aW5nQFdURkBAJDBBQEBXVEZAQEFCVjM0QEBaCi0gICAgICAgID9jb3VudEVsZW1lbnRTaGFkb3dA
U2hhZG93Um9vdEBXZWJDb3JlQEBRQkVJWFoKLSAgICAgICAgP2hhc1NoYWRvd0luc2VydGlvblBv
aW50QFNoYWRvd1Jvb3RAV2ViQ29yZUBAUUJFX05YWgotICAgICAgICA/aGFzQ29udGVudEVsZW1l
bnRAU2hhZG93Um9vdEBXZWJDb3JlQEBRQkVfTlhaCiAgICAgICAgID9pbnB1dFRhZ0BIVE1MTmFt
ZXNAV2ViQ29yZUBAM1ZRdWFsaWZpZWROYW1lQDJAQgogI2lmIEVOQUJMRShJTlNQRUNUT1IpCiAg
ICAgICAgID9nZXRIaWdobGlnaHRASW5zcGVjdG9yQ29udHJvbGxlckBXZWJDb3JlQEBRQkVYUEFV
SGlnaGxpZ2h0QDJAQFoKQEAgLTEzNzIsOSArMTM2Myw2IEBAIEVYUE9SVFMKICAgICAgICAgP2dl
dERhdGExNlNsb3dDYXNlQFN0cmluZ0ltcGxAV1RGQEBBQkVQQl9XWFoKICAgICAgICAgP2dldExv
Y2F0aW9uQW5kTGVuZ3RoRnJvbVJhbmdlQFRleHRJdGVyYXRvckBXZWJDb3JlQEBTQV9OUEFWRWxl
bWVudEAyQFBCVlJhbmdlQDJAQUFJMkBaCiAgICAgICAgID9nZXRSZWZlcmVuY2VkRmlsZVBhdGhz
QEZvcm1Db250cm9sbGVyQFdlYkNvcmVAQFNBP0FWPyRWZWN0b3JAVlN0cmluZ0BXVEZAQCQwQUBA
V1RGQEBBQlYzNEBAWgotICAgICAgICA/Y291bnRFbGVtZW50U2hhZG93QFNoYWRvd1Jvb3RAV2Vi
Q29yZUBAUUJFSVhaCi0gICAgICAgID9oYXNTaGFkb3dJbnNlcnRpb25Qb2ludEBTaGFkb3dSb290
QFdlYkNvcmVAQFFCRV9OWFoKLSAgICAgICAgP2hhc0NvbnRlbnRFbGVtZW50QFNoYWRvd1Jvb3RA
V2ViQ29yZUBAUUJFX05YWgogICAgICAgICA/aW5wdXRUYWdASFRNTE5hbWVzQFdlYkNvcmVAQDNW
UXVhbGlmaWVkTmFtZUAyQEIKICNpZiBFTkFCTEUoSU5TUEVDVE9SKQogICAgICAgICA/Z2V0SGln
aGxpZ2h0QEluc3BlY3RvckNvbnRyb2xsZXJAV2ViQ29yZUBAUUJFWFBBVUhpZ2hsaWdodEAyQEBa
Cg==
</data>

          </attachment>
          <attachment
              isobsolete="1"
              ispatch="1"
              isprivate="0"
          >
            <attachid>181641</attachid>
            <date>2013-01-07 22:18:43 -0800</date>
            <delta_ts>2013-01-08 00:22:23 -0800</delta_ts>
            <desc>Patch</desc>
            <filename>bug-106282-20130108151547.patch</filename>
            <type>text/plain</type>
            <size>38690</size>
            <attacher name="Hajime Morrita">morrita</attacher>
            
              <data encoding="base64">U3VidmVyc2lvbiBSZXZpc2lvbjogMTM5MDI0CmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9D
aGFuZ2VMb2cgYi9Tb3VyY2UvV2ViQ29yZS9DaGFuZ2VMb2cKaW5kZXggYjM0ZDVhYmZmMTI1NTZi
MmU1NzU1NWIxNTdjZjQyNzlhMDljMThhMC4uMWExYjAzNzgyZWJhYjY3NGVkZmExODViNzFiNTQ2
Yjc4MDljZWUyMCAxMDA2NDQKLS0tIGEvU291cmNlL1dlYkNvcmUvQ2hhbmdlTG9nCisrKyBiL1Nv
dXJjZS9XZWJDb3JlL0NoYW5nZUxvZwpAQCAtMSwzICsxLDc5IEBACisyMDEzLTAxLTA3ICBIYWpp
bWUgTW9ycml0YSAgPG1vcnJpdGFAZ29vZ2xlLmNvbT4KKworICAgICAgICBbU2hhZG93IERPTV0g
RGlzdHJpYnV0aW9uIHJlbGF0ZWQgY29kZSBvbiBTaGFkb3dSb290IHNob3VsZCBiZSBtaW5pbWl6
ZWQuCisgICAgICAgIGh0dHBzOi8vYnVncy53ZWJraXQub3JnL3Nob3dfYnVnLmNnaT9pZD0xMDYy
ODIKKworICAgICAgICBSZXZpZXdlZCBieSBOT0JPRFkgKE9PUFMhKS4KKworICAgICAgICBTaGFk
b3dSb290IGhhZCBhIGNlcnRhaW4gYW1vdW50IG9mIGxvZ2ljIHdoaWNoIGlzIGRlZGljYXRlZCBm
b3IKKyAgICAgICAgbm9kZSBkaXN0cmlidXRpb24gY29tcHV0YXRpb24uICBUaGVzZSBjb2RlIGlz
IGdvaW5nIHRvIGJlIGNvbXBpbGVkCisgICAgICAgIG91dCAoQnVnIDEwMzMzOSkgYW5kIGJldHRl
ciBiZSBwYXJ0IG9mIHRoZSBub2RlIGRpc3RyaWJ1dGlvbgorICAgICAgICBhbGdvcml0aG0sIHdo
aWNoIGlzIFNjb3BlQ29udGVudERpc3RyaWJ1dGlvbiBjbGFzcy4KKworICAgICAgICBUaGlzIGNo
YW5nZQorCisgICAgICAgIC0gUmVuYW1lcyBTaGFkb3dSb290Q29udGVudERpc3RyaWJ1dGlvbkRh
dGEgdG8KKyAgICAgICAgICBTY29wZUNvbnRlbnREaXN0cmlidXRpb24uICBOZXcgbmFtZSBpcyBj
b25jaXNlIGFuZCBhIGJpdCBtb3JlCisgICAgICAgICAgbWVhbmluZ2Z1bDogSXQgb3ducyBwZXIg
VHJlZVNjb3BlIGRpc3RyaWJ1dGlvbiBzdGF0ZS4KKyAgICAgICAgLSBNb3ZlcyBkaXN0cmlidXRp
b24gcmVsYXRlZCBjb2RlIGZyb20gU2hhZG93Um9vdCB0byBTY29wZUNvbnRlbnREaXN0cmlidXRp
b24KKworICAgICAgICBObyBuZXcgdGVzdHMuIFJlZmFjdG9yaW5nLgorCisgICAgICAgICogV2Vi
Q29yZS5leHAuaW46CisgICAgICAgICogY3NzL1N0eWxlU2NvcGVSZXNvbHZlci5jcHA6CisgICAg
ICAgIChXZWJDb3JlOjpTdHlsZVNjb3BlUmVzb2x2ZXI6OnN0eWxlU2hhcmluZ0NhbmRpZGF0ZU1h
dGNoZXNIb3N0UnVsZXMpOgorICAgICAgICAoV2ViQ29yZTo6U3R5bGVTY29wZVJlc29sdmVyOjpt
YXRjaEhvc3RSdWxlcyk6CisgICAgICAgICogZG9tL0NvbXBvc2VkU2hhZG93VHJlZVdhbGtlci5j
cHA6CisgICAgICAgIChXZWJDb3JlOjpub2RlQ2FuQmVEaXN0cmlidXRlZCk6CisgICAgICAgIChX
ZWJDb3JlOjpDb21wb3NlZFNoYWRvd1RyZWVXYWxrZXI6OnRyYXZlcnNlQmFja1RvWW91bmdlclNo
YWRvd1Jvb3QpOgorICAgICAgICAoV2ViQ29yZTo6Q29tcG9zZWRTaGFkb3dUcmVlV2Fsa2VyOjp0
cmF2ZXJzZVBhcmVudEJhY2tUb1lvdW5nZXJTaGFkb3dSb290T3JIb3N0KToKKyAgICAgICAgKFdl
YkNvcmU6OkFuY2VzdG9yQ2hhaW5XYWxrZXI6OnBhcmVudCk6CisgICAgICAgICogZG9tL0VsZW1l
bnRTaGFkb3cuY3BwOgorICAgICAgICAoV2ViQ29yZTo6RWxlbWVudFNoYWRvdzo6Y29sbGVjdFNl
bGVjdEZlYXR1cmVTZXRGcm9tKToKKyAgICAgICAgKiBkb20vU2hhZG93Um9vdC5jcHA6CisgICAg
ICAgIChXZWJDb3JlOjpTaGFkb3dSb290OjppbnNlcnRlZEludG8pOgorICAgICAgICAoV2ViQ29y
ZTo6U2hhZG93Um9vdDo6cmVtb3ZlZEZyb20pOgorICAgICAgICAoV2ViQ29yZTo6U2hhZG93Um9v
dDo6ZW5zdXJlU2NvcGVEaXN0cmlidXRpb24pOgorICAgICAgICAoV2ViQ29yZTo6U2hhZG93Um9v
dDo6cmVwb3J0TWVtb3J5VXNhZ2UpOgorICAgICAgICAqIGRvbS9TaGFkb3dSb290Lmg6CisgICAg
ICAgIChXZWJDb3JlKToKKyAgICAgICAgKFNoYWRvd1Jvb3QpOgorICAgICAgICAoV2ViQ29yZTo6
U2hhZG93Um9vdDo6c2NvcGVEaXN0cmlidXRpb24pOgorICAgICAgICAqIGh0bWwvc2hhZG93L0Nv
bnRlbnREaXN0cmlidXRvci5jcHA6CisgICAgICAgIChXZWJDb3JlOjpTY29wZUNvbnRlbnREaXN0
cmlidXRpb246OlNjb3BlQ29udGVudERpc3RyaWJ1dGlvbik6CisgICAgICAgIChXZWJDb3JlOjpT
Y29wZUNvbnRlbnREaXN0cmlidXRpb246OmludmFsaWRhdGVJbnNlcnRpb25Qb2ludExpc3QpOgor
ICAgICAgICAoV2ViQ29yZTo6U2NvcGVDb250ZW50RGlzdHJpYnV0aW9uOjplbnN1cmVJbnNlcnRp
b25Qb2ludExpc3QpOgorICAgICAgICAoV2ViQ29yZTo6U2NvcGVDb250ZW50RGlzdHJpYnV0aW9u
OjpyZWdpc3Rlckluc2VydGlvblBvaW50KToKKyAgICAgICAgKFdlYkNvcmU6OlNjb3BlQ29udGVu
dERpc3RyaWJ1dGlvbjo6dW5yZWdpc3Rlckluc2VydGlvblBvaW50KToKKyAgICAgICAgKFdlYkNv
cmU6OlNjb3BlQ29udGVudERpc3RyaWJ1dGlvbjo6aGFzU2hhZG93RWxlbWVudCk6CisgICAgICAg
IChXZWJDb3JlKToKKyAgICAgICAgKFdlYkNvcmU6OlNjb3BlQ29udGVudERpc3RyaWJ1dGlvbjo6
aGFzQ29udGVudEVsZW1lbnQpOgorICAgICAgICAoV2ViQ29yZTo6U2NvcGVDb250ZW50RGlzdHJp
YnV0aW9uOjpjb3VudEVsZW1lbnRTaGFkb3cpOgorICAgICAgICAoV2ViQ29yZTo6U2NvcGVDb250
ZW50RGlzdHJpYnV0aW9uOjpoYXNJbnNlcnRpb25Qb2ludCk6CisgICAgICAgIChXZWJDb3JlOjpT
Y29wZUNvbnRlbnREaXN0cmlidXRpb246OmFzc2lnbmVkVG8pOgorICAgICAgICAoV2ViQ29yZTo6
Q29udGVudERpc3RyaWJ1dG9yOjpkaXN0cmlidXRlKToKKyAgICAgICAgKFdlYkNvcmU6OkNvbnRl
bnREaXN0cmlidXRvcjo6aW52YWxpZGF0ZSk6CisgICAgICAgICogaHRtbC9zaGFkb3cvQ29udGVu
dERpc3RyaWJ1dG9yLmg6CisgICAgICAgIChTY29wZUNvbnRlbnREaXN0cmlidXRpb24pOgorICAg
ICAgICAoV2ViQ29yZTo6U2NvcGVDb250ZW50RGlzdHJpYnV0aW9uOjpyZWdpc3RlckVsZW1lbnRT
aGFkb3cpOgorICAgICAgICAoV2ViQ29yZTo6U2NvcGVDb250ZW50RGlzdHJpYnV0aW9uOjp1bnJl
Z2lzdGVyRWxlbWVudFNoYWRvdyk6CisgICAgICAgIChXZWJDb3JlOjpTY29wZUNvbnRlbnREaXN0
cmlidXRpb246Omhhc0VsZW1lbnRTaGFkb3cpOgorICAgICAgICAqIGh0bWwvc2hhZG93L0hUTUxT
aGFkb3dFbGVtZW50LmNwcDoKKyAgICAgICAgKFdlYkNvcmU6OkhUTUxTaGFkb3dFbGVtZW50Ojpv
bGRlclNoYWRvd1Jvb3QpOgorICAgICAgICAqIGh0bWwvc2hhZG93L0luc2VydGlvblBvaW50LmNw
cDoKKyAgICAgICAgKFdlYkNvcmU6Okluc2VydGlvblBvaW50OjppbnNlcnRlZEludG8pOgorICAg
ICAgICAoV2ViQ29yZTo6SW5zZXJ0aW9uUG9pbnQ6OnJlbW92ZWRGcm9tKToKKyAgICAgICAgKFdl
YkNvcmU6Okluc2VydGlvblBvaW50Ojpjb250YWlucyk6CisgICAgICAgIChXZWJDb3JlKToKKyAg
ICAgICAgKFdlYkNvcmU6OnJlc29sdmVSZXByb2plY3Rpb24pOgorICAgICAgICAqIGh0bWwvc2hh
ZG93L0luc2VydGlvblBvaW50Lmg6CisgICAgICAgIChJbnNlcnRpb25Qb2ludCk6CisgICAgICAg
IChXZWJDb3JlKToKKyAgICAgICAgKiB0ZXN0aW5nL0ludGVybmFscy5jcHA6CisgICAgICAgIChX
ZWJDb3JlOjpJbnRlcm5hbHM6Omhhc1NoYWRvd0luc2VydGlvblBvaW50KToKKyAgICAgICAgKFdl
YkNvcmU6OkludGVybmFsczo6aGFzQ29udGVudEVsZW1lbnQpOgorICAgICAgICAoV2ViQ29yZTo6
SW50ZXJuYWxzOjpjb3VudEVsZW1lbnRTaGFkb3cpOgorCiAyMDEzLTAxLTA3ICBYaWFuemh1IFdh
bmcgIDx3YW5neGlhbnpodUBjaHJvbWl1bS5vcmc+CiAKICAgICAgICAgQWRkIGEgc2V0dGluZyB0
byBlbmFibGUgY29tcG9zaXRlZCBzY3JvbGxpbmcgZm9yIGZyYW1lcwpkaWZmIC0tZ2l0IGEvU291
cmNlL1dlYkNvcmUvV2ViQ29yZS5leHAuaW4gYi9Tb3VyY2UvV2ViQ29yZS9XZWJDb3JlLmV4cC5p
bgppbmRleCBiZDNmZTg3ZDNmMTZmMDA0NjAwNzM3YmExZTllYjY5ZDhiMzRhMGJiLi44NmU5NTRj
YmQzY2YzYmMwMWQ1ZDJiOTMwN2Q4N2MzOTQ5OTM2ODhiIDEwMDY0NAotLS0gYS9Tb3VyY2UvV2Vi
Q29yZS9XZWJDb3JlLmV4cC5pbgorKysgYi9Tb3VyY2UvV2ViQ29yZS9XZWJDb3JlLmV4cC5pbgpA
QCAtODIsOSArODIsNiBAQCBfX1pON1dlYkNvcmUxMFNjcm9sbFZpZXcyMXNldERlbGVnYXRlc1Nj
cm9sbGluZ0ViCiBfX1pON1dlYkNvcmUxMFNjcm9sbFZpZXcyM3NldFNjcm9sbGJhcnNTdXBwcmVz
c2VkRWJiCiBfX1pON1dlYkNvcmUxMFNjcm9sbFZpZXcyNHdpbmRvd1Jlc2l6ZXJSZWN0Q2hhbmdl
ZEV2CiBfX1pON1dlYkNvcmUxMFNjcm9sbFZpZXc4YWRkQ2hpbGRFTjNXVEYxMFBhc3NSZWZQdHJJ
TlNfNldpZGdldEVFRQotX19aTks3V2ViQ29yZTEwU2hhZG93Um9vdDE3aGFzQ29udGVudEVsZW1l
bnRFdgotX19aTks3V2ViQ29yZTEwU2hhZG93Um9vdDE4Y291bnRFbGVtZW50U2hhZG93RXYKLV9f
Wk5LN1dlYkNvcmUxMFNoYWRvd1Jvb3QyM2hhc1NoYWRvd0luc2VydGlvblBvaW50RXYKIF9fWk5L
N1dlYkNvcmUxNFNjcm9sbGFibGVBcmVhMTdyZXBvcnRNZW1vcnlVc2FnZUVQTjNXVEYxNk1lbW9y
eU9iamVjdEluZm9FCiBfX1pON1dlYkNvcmUxMFNoYWRvd1Jvb3Q2Y3JlYXRlRVBOU183RWxlbWVu
dEVSaQogX19aTjdXZWJDb3JlMTBkZWxldGVGaWxlRVJLTjNXVEY2U3RyaW5nRQpkaWZmIC0tZ2l0
IGEvU291cmNlL1dlYkNvcmUvY3NzL1N0eWxlU2NvcGVSZXNvbHZlci5jcHAgYi9Tb3VyY2UvV2Vi
Q29yZS9jc3MvU3R5bGVTY29wZVJlc29sdmVyLmNwcAppbmRleCAxYzM5MTE3MjgwNzJjNjU4ZTll
MjlmODYyNjBmYjY4OWFmMDk5NmNkLi5mZGViZGE0Y2M4MDYwYmIxZmY5M2NlYWNlMjM5YTYyYWM1
ZWQ0ZmE3IDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViQ29yZS9jc3MvU3R5bGVTY29wZVJlc29sdmVy
LmNwcAorKysgYi9Tb3VyY2UvV2ViQ29yZS9jc3MvU3R5bGVTY29wZVJlc29sdmVyLmNwcApAQCAt
MzEsNiArMzEsNyBAQAogCiAjaW5jbHVkZSAiQ1NTU3R5bGVSdWxlLmgiCiAjaW5jbHVkZSAiQ1NT
U3R5bGVTaGVldC5oIgorI2luY2x1ZGUgIkNvbnRlbnREaXN0cmlidXRvci5oIgogI2luY2x1ZGUg
IkNvbnRleHRGZWF0dXJlcy5oIgogI2luY2x1ZGUgIkVsZW1lbnRTaGFkb3cuaCIKICNpbmNsdWRl
ICJIVE1MTmFtZXMuaCIKQEAgLTIxMCw3ICsyMTEsNyBAQCBib29sIFN0eWxlU2NvcGVSZXNvbHZl
cjo6c3R5bGVTaGFyaW5nQ2FuZGlkYXRlTWF0Y2hlc0hvc3RSdWxlcyhjb25zdCBFbGVtZW50KiBl
bAogICAgICAgICBpZiAoYXRIb3N0UnVsZVNldEZvcihzaGFkb3dSb290KSkKICAgICAgICAgICAg
IHJldHVybiB0cnVlOwogCi0gICAgICAgIGlmICghc2hhZG93Um9vdC0+aGFzU2hhZG93SW5zZXJ0
aW9uUG9pbnQoKSkKKyAgICAgICAgaWYgKCFTY29wZUNvbnRlbnREaXN0cmlidXRpb246Omhhc1No
YWRvd0VsZW1lbnQoc2hhZG93Um9vdCkpCiAgICAgICAgICAgICBicmVhazsKICAgICB9CiAgICAg
cmV0dXJuIGZhbHNlOwpAQCAtMjMyLDcgKzIzMyw3IEBAIHZvaWQgU3R5bGVTY29wZVJlc29sdmVy
OjptYXRjaEhvc3RSdWxlcyhjb25zdCBFbGVtZW50KiBlbGVtZW50LCBWZWN0b3I8UnVsZVNldCo+
CiAgICAgZm9yIChTaGFkb3dSb290KiBzaGFkb3dSb290ID0gc2hhZG93LT55b3VuZ2VzdFNoYWRv
d1Jvb3QoKTsgc2hhZG93Um9vdDsgc2hhZG93Um9vdCA9IHNoYWRvd1Jvb3QtPm9sZGVyU2hhZG93
Um9vdCgpKSB7IAogICAgICAgICBpZiAoUnVsZVNldCogcnVsZVNldCA9IGF0SG9zdFJ1bGVTZXRG
b3Ioc2hhZG93Um9vdCkpCiAgICAgICAgICAgICBtYXRjaGVkUnVsZXMuYXBwZW5kKHJ1bGVTZXQp
OwotICAgICAgICBpZiAoIXNoYWRvd1Jvb3QtPmhhc1NoYWRvd0luc2VydGlvblBvaW50KCkpCisg
ICAgICAgIGlmICghU2NvcGVDb250ZW50RGlzdHJpYnV0aW9uOjpoYXNTaGFkb3dFbGVtZW50KHNo
YWRvd1Jvb3QpKQogICAgICAgICAgICAgYnJlYWs7CiAgICAgfQogfQpkaWZmIC0tZ2l0IGEvU291
cmNlL1dlYkNvcmUvZG9tL0NvbXBvc2VkU2hhZG93VHJlZVdhbGtlci5jcHAgYi9Tb3VyY2UvV2Vi
Q29yZS9kb20vQ29tcG9zZWRTaGFkb3dUcmVlV2Fsa2VyLmNwcAppbmRleCAxZDAzYzU0N2UwYjQ5
ODdlMjY3MjJiOTM5OWQ2ZjViMGQ1ZmQyYjA4Li42NWIxMzNjZmIyMjU4ZWVmMjI3OWFlNWFhNmQ1
ODdiZDM5NmVlY2U2IDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViQ29yZS9kb20vQ29tcG9zZWRTaGFk
b3dUcmVlV2Fsa2VyLmNwcAorKysgYi9Tb3VyY2UvV2ViQ29yZS9kb20vQ29tcG9zZWRTaGFkb3dU
cmVlV2Fsa2VyLmNwcApAQCAtNjMsNyArNjMsNyBAQCBzdGF0aWMgaW5saW5lIGJvb2wgbm9kZUNh
bkJlRGlzdHJpYnV0ZWQoY29uc3QgTm9kZSogbm9kZSkKICAgICAgICAgcmV0dXJuIGZhbHNlOwog
CiAgICAgaWYgKFNoYWRvd1Jvb3QqIHNoYWRvd1Jvb3QgPSBwYXJlbnQtPmlzU2hhZG93Um9vdCgp
ID8gdG9TaGFkb3dSb290KHBhcmVudCkgOiAwKQotICAgICAgICByZXR1cm4gc2hhZG93Um9vdC0+
YXNzaWduZWRUbygpOworICAgICAgICByZXR1cm4gU2NvcGVDb250ZW50RGlzdHJpYnV0aW9uOjph
c3NpZ25lZFRvKHNoYWRvd1Jvb3QpOwogCiAgICAgaWYgKHBhcmVudC0+aXNFbGVtZW50Tm9kZSgp
ICYmIHRvRWxlbWVudChwYXJlbnQpLT5zaGFkb3coKSkKICAgICAgICAgcmV0dXJuIHRydWU7CkBA
IC0xOTgsNyArMTk4LDcgQEAgTm9kZSogQ29tcG9zZWRTaGFkb3dUcmVlV2Fsa2VyOjp0cmF2ZXJz
ZUJhY2tUb1lvdW5nZXJTaGFkb3dSb290KGNvbnN0IE5vZGUqIG5vZGUKICAgICBpZiAobm9kZS0+
cGFyZW50Tm9kZSgpICYmIG5vZGUtPnBhcmVudE5vZGUoKS0+aXNTaGFkb3dSb290KCkpIHsKICAg
ICAgICAgU2hhZG93Um9vdCogcGFyZW50U2hhZG93Um9vdCA9IHRvU2hhZG93Um9vdChub2RlLT5w
YXJlbnROb2RlKCkpOwogICAgICAgICBpZiAoIXBhcmVudFNoYWRvd1Jvb3QtPmlzWW91bmdlc3Qo
KSkgewotICAgICAgICAgICAgSW5zZXJ0aW9uUG9pbnQqIGFzc2lnbmVkSW5zZXJ0aW9uUG9pbnQg
PSBwYXJlbnRTaGFkb3dSb290LT5hc3NpZ25lZFRvKCk7CisgICAgICAgICAgICBJbnNlcnRpb25Q
b2ludCogYXNzaWduZWRJbnNlcnRpb25Qb2ludCA9IFNjb3BlQ29udGVudERpc3RyaWJ1dGlvbjo6
YXNzaWduZWRUbyhwYXJlbnRTaGFkb3dSb290KTsKICAgICAgICAgICAgIEFTU0VSVChhc3NpZ25l
ZEluc2VydGlvblBvaW50KTsKICAgICAgICAgICAgIHJldHVybiB0cmF2ZXJzZVNpYmxpbmdJbkN1
cnJlbnRUcmVlKGFzc2lnbmVkSW5zZXJ0aW9uUG9pbnQsIGRpcmVjdGlvbik7CiAgICAgICAgIH0K
QEAgLTI2Nyw3ICsyNjcsNyBAQCBpbmxpbmUgTm9kZSogQ29tcG9zZWRTaGFkb3dUcmVlV2Fsa2Vy
Ojp0cmF2ZXJzZVBhcmVudEluQ3VycmVudFRyZWUoY29uc3QgTm9kZSogbgogTm9kZSogQ29tcG9z
ZWRTaGFkb3dUcmVlV2Fsa2VyOjp0cmF2ZXJzZVBhcmVudEJhY2tUb1lvdW5nZXJTaGFkb3dSb290
T3JIb3N0KGNvbnN0IFNoYWRvd1Jvb3QqIHNoYWRvd1Jvb3QsIFBhcmVudFRyYXZlcnNhbERldGFp
bHMqIGRldGFpbHMpIGNvbnN0CiB7CiAgICAgQVNTRVJUKHNoYWRvd1Jvb3QpOwotICAgIEFTU0VS
VCghc2hhZG93Um9vdC0+YXNzaWduZWRUbygpKTsKKyAgICBBU1NFUlQoIVNjb3BlQ29udGVudERp
c3RyaWJ1dGlvbjo6YXNzaWduZWRUbyhzaGFkb3dSb290KSk7CiAKICAgICBpZiAoc2hhZG93Um9v
dC0+aXNZb3VuZ2VzdCgpKSB7CiAgICAgICAgIGlmIChjYW5Dcm9zc1VwcGVyQm91bmRhcnkoKSkg
ewpAQCAtMzQzLDE0ICszNDMsMTQgQEAgdm9pZCBBbmNlc3RvckNoYWluV2Fsa2VyOjpwYXJlbnQo
KQogICAgIH0KICAgICBpZiAoIW1fbm9kZS0+aXNTaGFkb3dSb290KCkpIHsKICAgICAgICAgbV9u
b2RlID0gbV9ub2RlLT5wYXJlbnROb2RlKCk7Ci0gICAgICAgIGlmICghKG1fbm9kZSAmJiBtX25v
ZGUtPmlzU2hhZG93Um9vdCgpICYmIHRvU2hhZG93Um9vdChtX25vZGUpLT5hc3NpZ25lZFRvKCkp
KQorICAgICAgICBpZiAoIShtX25vZGUgJiYgbV9ub2RlLT5pc1NoYWRvd1Jvb3QoKSAmJiBTY29w
ZUNvbnRlbnREaXN0cmlidXRpb246OmFzc2lnbmVkVG8odG9TaGFkb3dSb290KG1fbm9kZSkpKSkK
ICAgICAgICAgICAgIG1fZGlzdHJpYnV0ZWROb2RlID0gbV9ub2RlOwogICAgICAgICBtX2lzQ3Jv
c3NpbmdJbnNlcnRpb25Qb2ludCA9IGZhbHNlOwogICAgICAgICByZXR1cm47CiAgICAgfQogCiAg
ICAgY29uc3QgU2hhZG93Um9vdCogc2hhZG93Um9vdCA9IHRvU2hhZG93Um9vdChtX25vZGUpOwot
ICAgIGlmIChJbnNlcnRpb25Qb2ludCogaW5zZXJ0aW9uUG9pbnQgPSBzaGFkb3dSb290LT5hc3Np
Z25lZFRvKCkpIHsKKyAgICBpZiAoSW5zZXJ0aW9uUG9pbnQqIGluc2VydGlvblBvaW50ID0gU2Nv
cGVDb250ZW50RGlzdHJpYnV0aW9uOjphc3NpZ25lZFRvKHNoYWRvd1Jvb3QpKSB7CiAgICAgICAg
IG1fbm9kZSA9IGluc2VydGlvblBvaW50OwogICAgICAgICBtX2lzQ3Jvc3NpbmdJbnNlcnRpb25Q
b2ludCA9IHRydWU7CiAgICAgICAgIHJldHVybjsKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJDb3Jl
L2RvbS9FbGVtZW50U2hhZG93LmNwcCBiL1NvdXJjZS9XZWJDb3JlL2RvbS9FbGVtZW50U2hhZG93
LmNwcAppbmRleCAxNDkzYWY3OTI1MzJlMjdjYmIyZjg0MmE1NGNiNDZjYTQ0YzRmMmZiLi5kOTYy
YzcwYmRjZDhiOTRkNjk1Y2U0N2NlNmU3MjNiNTJjNzExMGNkIDEwMDY0NAotLS0gYS9Tb3VyY2Uv
V2ViQ29yZS9kb20vRWxlbWVudFNoYWRvdy5jcHAKKysrIGIvU291cmNlL1dlYkNvcmUvZG9tL0Vs
ZW1lbnRTaGFkb3cuY3BwCkBAIC0yMzMsNyArMjMzLDcgQEAgdm9pZCBFbGVtZW50U2hhZG93Ojpl
bnN1cmVTZWxlY3RGZWF0dXJlU2V0Q29sbGVjdGVkKCkKIAogdm9pZCBFbGVtZW50U2hhZG93Ojpj
b2xsZWN0U2VsZWN0RmVhdHVyZVNldEZyb20oU2hhZG93Um9vdCogcm9vdCkKIHsKLSAgICBpZiAo
cm9vdC0+aGFzRWxlbWVudFNoYWRvdygpKSB7CisgICAgaWYgKFNjb3BlQ29udGVudERpc3RyaWJ1
dGlvbjo6aGFzRWxlbWVudFNoYWRvdyhyb290KSkgewogICAgICAgICBmb3IgKEVsZW1lbnQqIGVs
ZW1lbnQgPSBFbGVtZW50VHJhdmVyc2FsOjpmaXJzdFdpdGhpbihyb290KTsgZWxlbWVudDsgZWxl
bWVudCA9IEVsZW1lbnRUcmF2ZXJzYWw6Om5leHQoZWxlbWVudCkpIHsKICAgICAgICAgICAgIGlm
IChFbGVtZW50U2hhZG93KiBlbGVtZW50U2hhZG93ID0gZWxlbWVudC0+c2hhZG93KCkpIHsKICAg
ICAgICAgICAgICAgICBlbGVtZW50U2hhZG93LT5lbnN1cmVTZWxlY3RGZWF0dXJlU2V0Q29sbGVj
dGVkKCk7CkBAIC0yNDIsNyArMjQyLDcgQEAgdm9pZCBFbGVtZW50U2hhZG93Ojpjb2xsZWN0U2Vs
ZWN0RmVhdHVyZVNldEZyb20oU2hhZG93Um9vdCogcm9vdCkKICAgICAgICAgfQogICAgIH0KIAot
ICAgIGlmIChyb290LT5oYXNDb250ZW50RWxlbWVudCgpKSB7CisgICAgaWYgKFNjb3BlQ29udGVu
dERpc3RyaWJ1dGlvbjo6aGFzQ29udGVudEVsZW1lbnQocm9vdCkpIHsKICAgICAgICAgZm9yIChF
bGVtZW50KiBlbGVtZW50ID0gRWxlbWVudFRyYXZlcnNhbDo6Zmlyc3RXaXRoaW4ocm9vdCk7IGVs
ZW1lbnQ7IGVsZW1lbnQgPSBFbGVtZW50VHJhdmVyc2FsOjpuZXh0KGVsZW1lbnQpKSB7CiAgICAg
ICAgICAgICBpZiAoaXNIVE1MQ29udGVudEVsZW1lbnQoZWxlbWVudCkpIHsKICAgICAgICAgICAg
ICAgICBjb25zdCBDU1NTZWxlY3Rvckxpc3QmIGxpc3QgPSB0b0hUTUxDb250ZW50RWxlbWVudChl
bGVtZW50KS0+c2VsZWN0b3JMaXN0KCk7CmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9kb20v
U2hhZG93Um9vdC5jcHAgYi9Tb3VyY2UvV2ViQ29yZS9kb20vU2hhZG93Um9vdC5jcHAKaW5kZXgg
NjE5YTY0NmIwMjlmMDA0YjdhNzY3MDM2Mzk3ODU0NzRhNzk5ZTMwOS4uNjMzZTRjNDdkY2RmMTA2
M2VlMDJiMjY0YzU4MWE0MWQ3MzY2ZDk2OCAxMDA2NDQKLS0tIGEvU291cmNlL1dlYkNvcmUvZG9t
L1NoYWRvd1Jvb3QuY3BwCisrKyBiL1NvdXJjZS9XZWJDb3JlL2RvbS9TaGFkb3dSb290LmNwcApA
QCAtMjI2LDExICsyMjYsNiBAQCBFbGVtZW50U2hhZG93KiBTaGFkb3dSb290Ojpvd25lcigpIGNv
bnN0CiAgICAgcmV0dXJuIDA7CiB9CiAKLWJvb2wgU2hhZG93Um9vdDo6aGFzSW5zZXJ0aW9uUG9p
bnQoKSBjb25zdAotewotICAgIHJldHVybiBoYXNTaGFkb3dJbnNlcnRpb25Qb2ludCgpIHx8IGhh
c0NvbnRlbnRFbGVtZW50KCk7Ci19Ci0KIGJvb2wgU2hhZG93Um9vdDo6YXBwbHlBdXRob3JTdHls
ZXMoKSBjb25zdAogewogICAgIHJldHVybiBtX2FwcGx5QXV0aG9yU3R5bGVzOwpAQCAtMjg0LDcg
KzI3OSw3IEBAIE5vZGU6Okluc2VydGlvbk5vdGlmaWNhdGlvblJlcXVlc3QgU2hhZG93Um9vdDo6
aW5zZXJ0ZWRJbnRvKENvbnRhaW5lck5vZGUqIGluc2VyCiAgICAgICAgIHJldHVybiBJbnNlcnRp
b25Eb25lOwogCiAgICAgaWYgKFNoYWRvd1Jvb3QqIHJvb3QgPSBob3N0KCktPmNvbnRhaW5pbmdT
aGFkb3dSb290KCkpIHsKLSAgICAgICAgcm9vdC0+cmVnaXN0ZXJFbGVtZW50U2hhZG93KCk7Cisg
ICAgICAgIHJvb3QtPmVuc3VyZVNjb3BlRGlzdHJpYnV0aW9uKCktPnJlZ2lzdGVyRWxlbWVudFNo
YWRvdygpOwogICAgICAgICBtX3JlZ2lzdGVyZWRXaXRoUGFyZW50U2hhZG93Um9vdCA9IHRydWU7
CiAgICAgfQogCkBAIC0yOTgsMjggKzI5MywxNCBAQCB2b2lkIFNoYWRvd1Jvb3Q6OnJlbW92ZWRG
cm9tKENvbnRhaW5lck5vZGUqIGluc2VydGlvblBvaW50KQogICAgICAgICBpZiAoIXJvb3QpCiAg
ICAgICAgICAgICByb290ID0gaW5zZXJ0aW9uUG9pbnQtPmNvbnRhaW5pbmdTaGFkb3dSb290KCk7
CiAKLSAgICAgICAgaWYgKHJvb3QpCi0gICAgICAgICAgICByb290LT51bnJlZ2lzdGVyRWxlbWVu
dFNoYWRvdygpOworICAgICAgICBpZiAocm9vdCAmJiByb290LT5zY29wZURpc3RyaWJ1dGlvbigp
KQorICAgICAgICAgICAgcm9vdC0+c2NvcGVEaXN0cmlidXRpb24oKS0+dW5yZWdpc3RlckVsZW1l
bnRTaGFkb3coKTsKICAgICAgICAgbV9yZWdpc3RlcmVkV2l0aFBhcmVudFNoYWRvd1Jvb3QgPSBm
YWxzZTsKICAgICB9CiAKICAgICBEb2N1bWVudEZyYWdtZW50OjpyZW1vdmVkRnJvbShpbnNlcnRp
b25Qb2ludCk7CiB9CiAKLUluc2VydGlvblBvaW50KiBTaGFkb3dSb290Ojphc3NpZ25lZFRvKCkg
Y29uc3QKLXsKLSAgICBpZiAoIWRpc3RyaWJ1dGlvbkRhdGEoKSkKLSAgICAgICAgcmV0dXJuIDA7
Ci0KLSAgICByZXR1cm4gZGlzdHJpYnV0aW9uRGF0YSgpLT5pbnNlcnRpb25Qb2ludEFzc2lnbmVk
VG8oKTsKLX0KLQotdm9pZCBTaGFkb3dSb290OjpzZXRBc3NpZ25lZFRvKEluc2VydGlvblBvaW50
KiBpbnNlcnRpb25Qb2ludCkKLXsKLSAgICBBU1NFUlQoIWFzc2lnbmVkVG8oKSB8fCAhaW5zZXJ0
aW9uUG9pbnQpOwotICAgIGVuc3VyZURpc3RyaWJ1dGlvbkRhdGEoKS0+c2V0SW5zZXJ0aW9uUG9p
bnRBc3NpZ25lZFRvKGluc2VydGlvblBvaW50KTsKLX0KLQogdm9pZCBTaGFkb3dSb290OjpjaGls
ZHJlbkNoYW5nZWQoYm9vbCBjaGFuZ2VkQnlQYXJzZXIsIE5vZGUqIGJlZm9yZUNoYW5nZSwgTm9k
ZSogYWZ0ZXJDaGFuZ2UsIGludCBjaGlsZENvdW50RGVsdGEpCiB7CiAgICAgR3VhcmRPcnBoYW5T
aGFkb3dSb290KHsgfSk7CkBAIC0zMjgsMTQgKzMwOSw2IEBAIHZvaWQgU2hhZG93Um9vdDo6Y2hp
bGRyZW5DaGFuZ2VkKGJvb2wgY2hhbmdlZEJ5UGFyc2VyLCBOb2RlKiBiZWZvcmVDaGFuZ2UsIE5v
ZGUqCiAgICAgb3duZXIoKS0+aW52YWxpZGF0ZURpc3RyaWJ1dGlvbigpOwogfQogCi1jb25zdCBW
ZWN0b3I8UmVmUHRyPEluc2VydGlvblBvaW50PiA+JiBTaGFkb3dSb290OjppbnNlcnRpb25Qb2lu
dExpc3QoKQotewotICAgIHR5cGVkZWYgVmVjdG9yPFJlZlB0cjxJbnNlcnRpb25Qb2ludD4gPiBJ
bnNlcnRpb25Qb2ludFZlY3RvcjsKLSAgICBERUZJTkVfU1RBVElDX0xPQ0FMKEluc2VydGlvblBv
aW50VmVjdG9yLCBlbXB0eVZlY3RvciwgKCkpOwotCi0gICAgcmV0dXJuIGRpc3RyaWJ1dGlvbkRh
dGEoKSA/IGRpc3RyaWJ1dGlvbkRhdGEoKS0+ZW5zdXJlSW5zZXJ0aW9uUG9pbnRMaXN0KHRoaXMp
IDogZW1wdHlWZWN0b3I7Ci19Ci0KIHZvaWQgU2hhZG93Um9vdDo6cmVnaXN0ZXJTY29wZWRIVE1M
U3R5bGVDaGlsZCgpCiB7CiAgICAgKyttX251bWJlck9mU3R5bGVzOwpAQCAtMzQ5LDY4ICszMjIs
MTUgQEAgdm9pZCBTaGFkb3dSb290Ojp1bnJlZ2lzdGVyU2NvcGVkSFRNTFN0eWxlQ2hpbGQoKQog
ICAgIHNldEhhc1Njb3BlZEhUTUxTdHlsZUNoaWxkKG1fbnVtYmVyT2ZTdHlsZXMgPiAwKTsKIH0K
IAotaW5saW5lIFNoYWRvd1Jvb3RDb250ZW50RGlzdHJpYnV0aW9uRGF0YSogU2hhZG93Um9vdDo6
ZW5zdXJlRGlzdHJpYnV0aW9uRGF0YSgpCitTY29wZUNvbnRlbnREaXN0cmlidXRpb24qIFNoYWRv
d1Jvb3Q6OmVuc3VyZVNjb3BlRGlzdHJpYnV0aW9uKCkKIHsKLSAgICBpZiAobV9kaXN0cmlidXRp
b25EYXRhKQotICAgICAgICByZXR1cm4gbV9kaXN0cmlidXRpb25EYXRhLmdldCgpOworICAgIGlm
IChtX3Njb3BlRGlzdHJpYnV0aW9uKQorICAgICAgICByZXR1cm4gbV9zY29wZURpc3RyaWJ1dGlv
bi5nZXQoKTsKIAotICAgIG1fZGlzdHJpYnV0aW9uRGF0YSA9IGFkb3B0UHRyKG5ldyBTaGFkb3dS
b290Q29udGVudERpc3RyaWJ1dGlvbkRhdGEpOwotICAgIHJldHVybiBtX2Rpc3RyaWJ1dGlvbkRh
dGEuZ2V0KCk7CisgICAgbV9zY29wZURpc3RyaWJ1dGlvbiA9IGFkb3B0UHRyKG5ldyBTY29wZUNv
bnRlbnREaXN0cmlidXRpb24pOworICAgIHJldHVybiBtX3Njb3BlRGlzdHJpYnV0aW9uLmdldCgp
OwogfSAgIAogCi12b2lkIFNoYWRvd1Jvb3Q6OnJlZ2lzdGVySW5zZXJ0aW9uUG9pbnQoSW5zZXJ0
aW9uUG9pbnQqIHBvaW50KQotewotICAgIGVuc3VyZURpc3RyaWJ1dGlvbkRhdGEoKS0+cmVnaXRl
ckluc2VydGlvblBvaW50KHRoaXMsIHBvaW50KTsKLX0KLQotdm9pZCBTaGFkb3dSb290Ojp1bnJl
Z2lzdGVySW5zZXJ0aW9uUG9pbnQoSW5zZXJ0aW9uUG9pbnQqIHBvaW50KQotewotICAgIGVuc3Vy
ZURpc3RyaWJ1dGlvbkRhdGEoKS0+dW5yZWdpc3Rlckluc2VydGlvblBvaW50KHRoaXMsIHBvaW50
KTsKLX0KLQotYm9vbCBTaGFkb3dSb290OjpoYXNTaGFkb3dJbnNlcnRpb25Qb2ludCgpIGNvbnN0
Ci17Ci0gICAgaWYgKCFkaXN0cmlidXRpb25EYXRhKCkpCi0gICAgICAgIHJldHVybiBmYWxzZTsK
LQotICAgIHJldHVybiBkaXN0cmlidXRpb25EYXRhKCktPmhhc1NoYWRvd0VsZW1lbnRDaGlsZHJl
bigpOwotfQotCi1ib29sIFNoYWRvd1Jvb3Q6Omhhc0NvbnRlbnRFbGVtZW50KCkgY29uc3QKLXsK
LSAgICBpZiAoIWRpc3RyaWJ1dGlvbkRhdGEoKSkKLSAgICAgICAgcmV0dXJuIGZhbHNlOwotCi0g
ICAgcmV0dXJuIGRpc3RyaWJ1dGlvbkRhdGEoKS0+aGFzQ29udGVudEVsZW1lbnRDaGlsZHJlbigp
OwotfQotCi12b2lkIFNoYWRvd1Jvb3Q6OnJlZ2lzdGVyRWxlbWVudFNoYWRvdygpCi17Ci0gICAg
ZW5zdXJlRGlzdHJpYnV0aW9uRGF0YSgpLT5pbmNyZW1lbnROdW1iZXJPZkVsZW1lbnRTaGFkb3dD
aGlsZHJlbigpOwotfQotCi12b2lkIFNoYWRvd1Jvb3Q6OnVucmVnaXN0ZXJFbGVtZW50U2hhZG93
KCkKLXsKLSAgICBBU1NFUlQoaGFzRWxlbWVudFNoYWRvdygpKTsKLSAgICBkaXN0cmlidXRpb25E
YXRhKCktPmRlY3JlbWVudE51bWJlck9mRWxlbWVudFNoYWRvd0NoaWxkcmVuKCk7Ci19Ci0KLWJv
b2wgU2hhZG93Um9vdDo6aGFzRWxlbWVudFNoYWRvdygpIGNvbnN0Ci17Ci0gICAgaWYgKCFkaXN0
cmlidXRpb25EYXRhKCkpCi0gICAgICAgIHJldHVybiBmYWxzZTsKLQotICAgIHJldHVybiBkaXN0
cmlidXRpb25EYXRhKCktPmhhc0VsZW1lbnRTaGFkb3dDaGlsZHJlbigpOwotfQotCi11bnNpZ25l
ZCBTaGFkb3dSb290Ojpjb3VudEVsZW1lbnRTaGFkb3coKSBjb25zdCAKLXsKLSAgICBpZiAoIWRp
c3RyaWJ1dGlvbkRhdGEoKSkKLSAgICAgICAgcmV0dXJuIDA7Ci0KLSAgICByZXR1cm4gZGlzdHJp
YnV0aW9uRGF0YSgpLT5udW1iZXJPZkVsZW1lbnRTaGFkb3dDaGlsZHJlbigpOwotfQotCiB2b2lk
IFNoYWRvd1Jvb3Q6OnJlcG9ydE1lbW9yeVVzYWdlKE1lbW9yeU9iamVjdEluZm8qIG1lbW9yeU9i
amVjdEluZm8pIGNvbnN0CiB7CiAgICAgTWVtb3J5Q2xhc3NJbmZvIGluZm8obWVtb3J5T2JqZWN0
SW5mbywgdGhpcywgV2ViQ29yZU1lbW9yeVR5cGVzOjpET00pOwpAQCAtNDE4LDcgKzMzOCw3IEBA
IHZvaWQgU2hhZG93Um9vdDo6cmVwb3J0TWVtb3J5VXNhZ2UoTWVtb3J5T2JqZWN0SW5mbyogbWVt
b3J5T2JqZWN0SW5mbykgY29uc3QKICAgICBUcmVlU2NvcGU6OnJlcG9ydE1lbW9yeVVzYWdlKG1l
bW9yeU9iamVjdEluZm8pOwogICAgIGluZm8uYWRkTWVtYmVyKG1fcHJldik7CiAgICAgaW5mby5h
ZGRNZW1iZXIobV9uZXh0KTsKLSAgICBpbmZvLmFkZE1lbWJlcihtX2Rpc3RyaWJ1dGlvbkRhdGEp
OworICAgIGluZm8uYWRkTWVtYmVyKG1fc2NvcGVEaXN0cmlidXRpb24pOwogfQogCiB9CmRpZmYg
LS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9kb20vU2hhZG93Um9vdC5oIGIvU291cmNlL1dlYkNvcmUv
ZG9tL1NoYWRvd1Jvb3QuaAppbmRleCA5NDE0ODhjOTU4MDVjOTExMDMzN2RmOTBjZGRjYjE2NzBk
NWUxMmY4Li40NzlhMWExZmJlNDVjM2U3OGU4OTU3MGE2NmU4NmI4NTI3Y2VmNTc5IDEwMDY0NAot
LS0gYS9Tb3VyY2UvV2ViQ29yZS9kb20vU2hhZG93Um9vdC5oCisrKyBiL1NvdXJjZS9XZWJDb3Jl
L2RvbS9TaGFkb3dSb290LmgKQEAgLTQxLDcgKzQxLDcgQEAgY2xhc3MgRG9jdW1lbnQ7CiBjbGFz
cyBET01TZWxlY3Rpb247CiBjbGFzcyBFbGVtZW50U2hhZG93OwogY2xhc3MgSW5zZXJ0aW9uUG9p
bnQ7Ci1jbGFzcyBTaGFkb3dSb290Q29udGVudERpc3RyaWJ1dGlvbkRhdGE7CitjbGFzcyBTY29w
ZUNvbnRlbnREaXN0cmlidXRpb247CiAKIGNsYXNzIFNoYWRvd1Jvb3QgOiBwdWJsaWMgRG9jdW1l
bnRGcmFnbWVudCwgcHVibGljIFRyZWVTY29wZSwgcHVibGljIERvdWJseUxpbmtlZExpc3ROb2Rl
PFNoYWRvd1Jvb3Q+IHsKICAgICBmcmllbmQgY2xhc3MgV1RGOjpEb3VibHlMaW5rZWRMaXN0Tm9k
ZTxTaGFkb3dSb290PjsKQEAgLTgwLDMzICs4MCwxOCBAQCBwdWJsaWM6CiAgICAgYm9vbCBpc1lv
dW5nZXN0KCkgY29uc3QgeyByZXR1cm4gIXlvdW5nZXJTaGFkb3dSb290KCk7IH0KICAgICBib29s
IGlzT2xkZXN0KCkgY29uc3QgeyByZXR1cm4gIW9sZGVyU2hhZG93Um9vdCgpOyB9CiAKLSAgICBi
b29sIGhhc0luc2VydGlvblBvaW50KCkgY29uc3Q7Ci0KICAgICB2aXJ0dWFsIHZvaWQgYXR0YWNo
KCk7CiAKICAgICB2aXJ0dWFsIEluc2VydGlvbk5vdGlmaWNhdGlvblJlcXVlc3QgaW5zZXJ0ZWRJ
bnRvKENvbnRhaW5lck5vZGUqKSBPVkVSUklERTsKICAgICB2aXJ0dWFsIHZvaWQgcmVtb3ZlZEZy
b20oQ29udGFpbmVyTm9kZSopIE9WRVJSSURFOwogCi0gICAgYm9vbCBpc1VzZWRGb3JSZW5kZXJp
bmcoKSBjb25zdDsKLSAgICBJbnNlcnRpb25Qb2ludCogYXNzaWduZWRUbygpIGNvbnN0OwotICAg
IHZvaWQgc2V0QXNzaWduZWRUbyhJbnNlcnRpb25Qb2ludCopOwotCi0gICAgYm9vbCBoYXNTaGFk
b3dJbnNlcnRpb25Qb2ludCgpIGNvbnN0OwotICAgIGJvb2wgaGFzQ29udGVudEVsZW1lbnQoKSBj
b25zdDsKLQotICAgIHZvaWQgcmVnaXN0ZXJJbnNlcnRpb25Qb2ludChJbnNlcnRpb25Qb2ludCop
OwotICAgIHZvaWQgdW5yZWdpc3Rlckluc2VydGlvblBvaW50KEluc2VydGlvblBvaW50Kik7Ci0g
ICAgCi0gICAgdm9pZCByZWdpc3RlckVsZW1lbnRTaGFkb3coKTsKLSAgICB2b2lkIHVucmVnaXN0
ZXJFbGVtZW50U2hhZG93KCk7Ci0gICAgYm9vbCBoYXNFbGVtZW50U2hhZG93KCkgY29uc3Q7Ci0g
ICAgdW5zaWduZWQgY291bnRFbGVtZW50U2hhZG93KCkgY29uc3Q7Ci0KLSAgICBjb25zdCBWZWN0
b3I8UmVmUHRyPEluc2VydGlvblBvaW50PiA+JiBpbnNlcnRpb25Qb2ludExpc3QoKTsKLQogICAg
IHZpcnR1YWwgdm9pZCByZWdpc3RlclNjb3BlZEhUTUxTdHlsZUNoaWxkKCkgT1ZFUlJJREU7CiAg
ICAgdmlydHVhbCB2b2lkIHVucmVnaXN0ZXJTY29wZWRIVE1MU3R5bGVDaGlsZCgpIE9WRVJSSURF
OwogCisgICAgU2NvcGVDb250ZW50RGlzdHJpYnV0aW9uKiBzY29wZURpc3RyaWJ1dGlvbigpIHsg
cmV0dXJuIG1fc2NvcGVEaXN0cmlidXRpb24uZ2V0KCk7IH0KKyAgICBjb25zdCBTY29wZUNvbnRl
bnREaXN0cmlidXRpb24qIHNjb3BlRGlzdHJpYnV0aW9uKCkgY29uc3QgeyByZXR1cm4gbV9zY29w
ZURpc3RyaWJ1dGlvbi5nZXQoKTsgfQorICAgIFNjb3BlQ29udGVudERpc3RyaWJ1dGlvbiogZW5z
dXJlU2NvcGVEaXN0cmlidXRpb24oKTsKKwogICAgIFNoYWRvd1Jvb3RUeXBlIHR5cGUoKSBjb25z
dCB7IHJldHVybiBtX2lzQXV0aG9yU2hhZG93Um9vdCA/IEF1dGhvclNoYWRvd1Jvb3QgOiBVc2Vy
QWdlbnRTaGFkb3dSb290OyB9CiAgICAgYm9vbCBpc0FjY2Vzc2libGUoKSBjb25zdCB7IHJldHVy
biB0eXBlKCkgPT0gQXV0aG9yU2hhZG93Um9vdDsgfQogCkBAIC0xMjQsMTMgKzEwOSw5IEBAIHBy
aXZhdGU6CiAKICAgICB2b2lkIHNldFR5cGUoU2hhZG93Um9vdFR5cGUgdHlwZSkgeyBtX2lzQXV0
aG9yU2hhZG93Um9vdCA9IHR5cGUgPT0gQXV0aG9yU2hhZG93Um9vdDsgfQogCi0gICAgU2hhZG93
Um9vdENvbnRlbnREaXN0cmlidXRpb25EYXRhKiBkaXN0cmlidXRpb25EYXRhKCkgeyByZXR1cm4g
bV9kaXN0cmlidXRpb25EYXRhLmdldCgpOyB9Ci0gICAgY29uc3QgU2hhZG93Um9vdENvbnRlbnRE
aXN0cmlidXRpb25EYXRhKiBkaXN0cmlidXRpb25EYXRhKCkgY29uc3QgeyByZXR1cm4gbV9kaXN0
cmlidXRpb25EYXRhLmdldCgpOyB9Ci0gICAgU2hhZG93Um9vdENvbnRlbnREaXN0cmlidXRpb25E
YXRhKiBlbnN1cmVEaXN0cmlidXRpb25EYXRhKCk7Ci0KICAgICBTaGFkb3dSb290KiBtX3ByZXY7
CiAgICAgU2hhZG93Um9vdCogbV9uZXh0OwotICAgIE93blB0cjxTaGFkb3dSb290Q29udGVudERp
c3RyaWJ1dGlvbkRhdGE+IG1fZGlzdHJpYnV0aW9uRGF0YTsKKyAgICBPd25QdHI8U2NvcGVDb250
ZW50RGlzdHJpYnV0aW9uPiBtX3Njb3BlRGlzdHJpYnV0aW9uOwogICAgIHVuc2lnbmVkIG1fbnVt
YmVyT2ZTdHlsZXMgOiAyODsKICAgICB1bnNpZ25lZCBtX2FwcGx5QXV0aG9yU3R5bGVzIDogMTsK
ICAgICB1bnNpZ25lZCBtX3Jlc2V0U3R5bGVJbmhlcml0YW5jZSA6IDE7CkBAIC0xNDgsMTEgKzEy
OSw2IEBAIGlubGluZSB2b2lkIFNoYWRvd1Jvb3Q6OnNldEhvc3QoRWxlbWVudCogaG9zdCkKICAg
ICBzZXRQYXJlbnRPckhvc3ROb2RlKGhvc3QpOwogfQogCi1pbmxpbmUgYm9vbCBTaGFkb3dSb290
Ojppc1VzZWRGb3JSZW5kZXJpbmcoKSBjb25zdAotewotICAgIHJldHVybiBpc1lvdW5nZXN0KCkg
fHwgYXNzaWduZWRUbygpOwotfQotCiBpbmxpbmUgRWxlbWVudCogU2hhZG93Um9vdDo6YWN0aXZl
RWxlbWVudCgpIGNvbnN0CiB7CiAgICAgaWYgKE5vZGUqIG5vZGUgPSB0cmVlU2NvcGUoKS0+Zm9j
dXNlZE5vZGUoKSkKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJDb3JlL2h0bWwvc2hhZG93L0NvbnRl
bnREaXN0cmlidXRvci5jcHAgYi9Tb3VyY2UvV2ViQ29yZS9odG1sL3NoYWRvdy9Db250ZW50RGlz
dHJpYnV0b3IuY3BwCmluZGV4IDI1MzdlOTljODUyNmZhZjBjYTc3OWI2NjExYzlhZmY2Mjg3NGZi
OTcuLjc3YzRkM2IxNmExZDA4MDAyZGY1Y2M1NjVmNTBlNDU2Y2FkMTA3M2EgMTAwNjQ0Ci0tLSBh
L1NvdXJjZS9XZWJDb3JlL2h0bWwvc2hhZG93L0NvbnRlbnREaXN0cmlidXRvci5jcHAKKysrIGIv
U291cmNlL1dlYkNvcmUvaHRtbC9zaGFkb3cvQ29udGVudERpc3RyaWJ1dG9yLmNwcApAQCAtNzYs
NyArNzYsNyBAQCBOb2RlKiBDb250ZW50RGlzdHJpYnV0aW9uOjpwcmV2aW91c1RvKGNvbnN0IE5v
ZGUqIG5vZGUpIGNvbnN0CiB9CiAKIAotU2hhZG93Um9vdENvbnRlbnREaXN0cmlidXRpb25EYXRh
OjpTaGFkb3dSb290Q29udGVudERpc3RyaWJ1dGlvbkRhdGEoKQorU2NvcGVDb250ZW50RGlzdHJp
YnV0aW9uOjpTY29wZUNvbnRlbnREaXN0cmlidXRpb24oKQogICAgIDogbV9pbnNlcnRpb25Qb2lu
dEFzc2lnbmVkVG8oMCkKICAgICAsIG1fbnVtYmVyT2ZTaGFkb3dFbGVtZW50Q2hpbGRyZW4oMCkK
ICAgICAsIG1fbnVtYmVyT2ZDb250ZW50RWxlbWVudENoaWxkcmVuKDApCkBAIC04NSwxMyArODUs
MTMgQEAgU2hhZG93Um9vdENvbnRlbnREaXN0cmlidXRpb25EYXRhOjpTaGFkb3dSb290Q29udGVu
dERpc3RyaWJ1dGlvbkRhdGEoKQogewogfQogCi12b2lkIFNoYWRvd1Jvb3RDb250ZW50RGlzdHJp
YnV0aW9uRGF0YTo6aW52YWxpZGF0ZUluc2VydGlvblBvaW50TGlzdCgpCit2b2lkIFNjb3BlQ29u
dGVudERpc3RyaWJ1dGlvbjo6aW52YWxpZGF0ZUluc2VydGlvblBvaW50TGlzdCgpCiB7CiAgICAg
bV9pbnNlcnRpb25Qb2ludExpc3RJc1ZhbGlkID0gZmFsc2U7CiAgICAgbV9pbnNlcnRpb25Qb2lu
dExpc3QuY2xlYXIoKTsKIH0KIAotY29uc3QgVmVjdG9yPFJlZlB0cjxJbnNlcnRpb25Qb2ludD4g
PiYgU2hhZG93Um9vdENvbnRlbnREaXN0cmlidXRpb25EYXRhOjplbnN1cmVJbnNlcnRpb25Qb2lu
dExpc3QoU2hhZG93Um9vdCogc2hhZG93Um9vdCkKK2NvbnN0IFZlY3RvcjxSZWZQdHI8SW5zZXJ0
aW9uUG9pbnQ+ID4mIFNjb3BlQ29udGVudERpc3RyaWJ1dGlvbjo6ZW5zdXJlSW5zZXJ0aW9uUG9p
bnRMaXN0KFNoYWRvd1Jvb3QqIHNoYWRvd1Jvb3QpCiB7CiAgICAgaWYgKG1faW5zZXJ0aW9uUG9p
bnRMaXN0SXNWYWxpZCkKICAgICAgICAgcmV0dXJuIG1faW5zZXJ0aW9uUG9pbnRMaXN0OwpAQCAt
OTksNyArOTksNyBAQCBjb25zdCBWZWN0b3I8UmVmUHRyPEluc2VydGlvblBvaW50PiA+JiBTaGFk
b3dSb290Q29udGVudERpc3RyaWJ1dGlvbkRhdGE6OmVuc3VyZQogICAgIG1faW5zZXJ0aW9uUG9p
bnRMaXN0SXNWYWxpZCA9IHRydWU7CiAgICAgQVNTRVJUKG1faW5zZXJ0aW9uUG9pbnRMaXN0Lmlz
RW1wdHkoKSk7CiAKLSAgICBpZiAoIXNoYWRvd1Jvb3QtPmhhc0luc2VydGlvblBvaW50KCkpCisg
ICAgaWYgKCFoYXNJbnNlcnRpb25Qb2ludChzaGFkb3dSb290KSkKICAgICAgICAgcmV0dXJuIG1f
aW5zZXJ0aW9uUG9pbnRMaXN0OwogCiAgICAgZm9yIChFbGVtZW50KiBlbGVtZW50ID0gRWxlbWVu
dFRyYXZlcnNhbDo6Zmlyc3RXaXRoaW4oc2hhZG93Um9vdCk7IGVsZW1lbnQ7IGVsZW1lbnQgPSBF
bGVtZW50VHJhdmVyc2FsOjpuZXh0KGVsZW1lbnQsIHNoYWRvd1Jvb3QpKSB7CkBAIC0xMTAsNyAr
MTEwLDcgQEAgY29uc3QgVmVjdG9yPFJlZlB0cjxJbnNlcnRpb25Qb2ludD4gPiYgU2hhZG93Um9v
dENvbnRlbnREaXN0cmlidXRpb25EYXRhOjplbnN1cmUKICAgICByZXR1cm4gbV9pbnNlcnRpb25Q
b2ludExpc3Q7CiB9CiAKLXZvaWQgU2hhZG93Um9vdENvbnRlbnREaXN0cmlidXRpb25EYXRhOjpy
ZWdpdGVySW5zZXJ0aW9uUG9pbnQoU2hhZG93Um9vdCogc2NvcGUsIEluc2VydGlvblBvaW50KiBw
b2ludCkKK3ZvaWQgU2NvcGVDb250ZW50RGlzdHJpYnV0aW9uOjpyZWdpc3Rlckluc2VydGlvblBv
aW50KFNoYWRvd1Jvb3QqIHNjb3BlLCBJbnNlcnRpb25Qb2ludCogcG9pbnQpCiB7CiAgICAgc3dp
dGNoIChwb2ludC0+aW5zZXJ0aW9uUG9pbnRUeXBlKCkpIHsKICAgICBjYXNlIEluc2VydGlvblBv
aW50OjpTaGFkb3dJbnNlcnRpb25Qb2ludDoKQEAgLTEyNSw3ICsxMjUsNyBAQCB2b2lkIFNoYWRv
d1Jvb3RDb250ZW50RGlzdHJpYnV0aW9uRGF0YTo6cmVnaXRlckluc2VydGlvblBvaW50KFNoYWRv
d1Jvb3QqIHNjb3BlLAogICAgIGludmFsaWRhdGVJbnNlcnRpb25Qb2ludExpc3QoKTsKIH0KIAot
dm9pZCBTaGFkb3dSb290Q29udGVudERpc3RyaWJ1dGlvbkRhdGE6OnVucmVnaXN0ZXJJbnNlcnRp
b25Qb2ludChTaGFkb3dSb290KiBzY29wZSwgSW5zZXJ0aW9uUG9pbnQqIHBvaW50KQordm9pZCBT
Y29wZUNvbnRlbnREaXN0cmlidXRpb246OnVucmVnaXN0ZXJJbnNlcnRpb25Qb2ludChTaGFkb3dS
b290KiBzY29wZSwgSW5zZXJ0aW9uUG9pbnQqIHBvaW50KQogewogICAgIHN3aXRjaCAocG9pbnQt
Pmluc2VydGlvblBvaW50VHlwZSgpKSB7CiAgICAgY2FzZSBJbnNlcnRpb25Qb2ludDo6U2hhZG93
SW5zZXJ0aW9uUG9pbnQ6CkBAIC0xNDMsNiArMTQzLDQyIEBAIHZvaWQgU2hhZG93Um9vdENvbnRl
bnREaXN0cmlidXRpb25EYXRhOjp1bnJlZ2lzdGVySW5zZXJ0aW9uUG9pbnQoU2hhZG93Um9vdCog
c2NvCiAgICAgaW52YWxpZGF0ZUluc2VydGlvblBvaW50TGlzdCgpOwogfQogCitib29sIFNjb3Bl
Q29udGVudERpc3RyaWJ1dGlvbjo6aGFzU2hhZG93RWxlbWVudChjb25zdCBTaGFkb3dSb290KiBo
b2xkZXIpCit7CisgICAgaWYgKCFob2xkZXItPnNjb3BlRGlzdHJpYnV0aW9uKCkpCisgICAgICAg
IHJldHVybiBmYWxzZTsKKworICAgIHJldHVybiBob2xkZXItPnNjb3BlRGlzdHJpYnV0aW9uKCkt
Pmhhc1NoYWRvd0VsZW1lbnRDaGlsZHJlbigpOworfQorCitib29sIFNjb3BlQ29udGVudERpc3Ry
aWJ1dGlvbjo6aGFzQ29udGVudEVsZW1lbnQoY29uc3QgU2hhZG93Um9vdCogaG9sZGVyKQorewor
ICAgIGlmICghaG9sZGVyLT5zY29wZURpc3RyaWJ1dGlvbigpKQorICAgICAgICByZXR1cm4gZmFs
c2U7CisKKyAgICByZXR1cm4gaG9sZGVyLT5zY29wZURpc3RyaWJ1dGlvbigpLT5oYXNDb250ZW50
RWxlbWVudENoaWxkcmVuKCk7Cit9CisKK3Vuc2lnbmVkIFNjb3BlQ29udGVudERpc3RyaWJ1dGlv
bjo6Y291bnRFbGVtZW50U2hhZG93KGNvbnN0IFNoYWRvd1Jvb3QqIGhvbGRlcikKK3sKKyAgICBp
ZiAoIWhvbGRlci0+c2NvcGVEaXN0cmlidXRpb24oKSkKKyAgICAgICAgcmV0dXJuIDA7CisKKyAg
ICByZXR1cm4gaG9sZGVyLT5zY29wZURpc3RyaWJ1dGlvbigpLT5udW1iZXJPZkVsZW1lbnRTaGFk
b3dDaGlsZHJlbigpOworfQorCitib29sIFNjb3BlQ29udGVudERpc3RyaWJ1dGlvbjo6aGFzSW5z
ZXJ0aW9uUG9pbnQoY29uc3QgU2hhZG93Um9vdCogaG9sZGVyKQoreworICAgIHJldHVybiBoYXNT
aGFkb3dFbGVtZW50KGhvbGRlcikgfHwgaGFzQ29udGVudEVsZW1lbnQoaG9sZGVyKTsKK30KKwor
SW5zZXJ0aW9uUG9pbnQqIFNjb3BlQ29udGVudERpc3RyaWJ1dGlvbjo6YXNzaWduZWRUbyhjb25z
dCBTaGFkb3dSb290KiBob2xkZXIpCit7CisgICAgaWYgKCFob2xkZXItPnNjb3BlRGlzdHJpYnV0
aW9uKCkpCisgICAgICAgIHJldHVybiAwOworCisgICAgcmV0dXJuIGhvbGRlci0+c2NvcGVEaXN0
cmlidXRpb24oKS0+aW5zZXJ0aW9uUG9pbnRBc3NpZ25lZFRvKCk7Cit9CiAKIENvbnRlbnREaXN0
cmlidXRvcjo6Q29udGVudERpc3RyaWJ1dG9yKCkKICAgICA6IG1fdmFsaWRpdHkoVW5kZXRlcm1p
bmVkKQpAQCAtMTkzLDE5ICsyMjksMjEgQEAgdm9pZCBDb250ZW50RGlzdHJpYnV0b3I6OmRpc3Ry
aWJ1dGUoRWxlbWVudCogaG9zdCkKICAgICBmb3IgKFNoYWRvd1Jvb3QqIHJvb3QgPSBob3N0LT55
b3VuZ2VzdFNoYWRvd1Jvb3QoKTsgcm9vdDsgcm9vdCA9IHJvb3QtPm9sZGVyU2hhZG93Um9vdCgp
KSB7CiAgICAgICAgIEhUTUxTaGFkb3dFbGVtZW50KiBmaXJzdEFjdGl2ZVNoYWRvd0luc2VydGlv
blBvaW50ID0gMDsKIAotICAgICAgICBjb25zdCBWZWN0b3I8UmVmUHRyPEluc2VydGlvblBvaW50
PiA+JiBpbnNlcnRpb25Qb2ludHMgPSByb290LT5pbnNlcnRpb25Qb2ludExpc3QoKTsKLSAgICAg
ICAgZm9yIChzaXplX3QgaSA9IDA7IGkgPCBpbnNlcnRpb25Qb2ludHMuc2l6ZSgpOyArK2kpIHsK
LSAgICAgICAgICAgIEluc2VydGlvblBvaW50KiBwb2ludCA9IGluc2VydGlvblBvaW50c1tpXS5n
ZXQoKTsKLSAgICAgICAgICAgIGlmICghcG9pbnQtPmlzQWN0aXZlKCkpCi0gICAgICAgICAgICAg
ICAgY29udGludWU7Ci0KLSAgICAgICAgICAgIGlmIChpc0hUTUxTaGFkb3dFbGVtZW50KHBvaW50
KSkgewotICAgICAgICAgICAgICAgIGlmICghZmlyc3RBY3RpdmVTaGFkb3dJbnNlcnRpb25Qb2lu
dCkKLSAgICAgICAgICAgICAgICAgICAgZmlyc3RBY3RpdmVTaGFkb3dJbnNlcnRpb25Qb2ludCA9
IHRvSFRNTFNoYWRvd0VsZW1lbnQocG9pbnQpOwotICAgICAgICAgICAgfSBlbHNlIHsKLSAgICAg
ICAgICAgICAgICBkaXN0cmlidXRlU2VsZWN0aW9uc1RvKHBvaW50LCBwb29sLCBkaXN0cmlidXRl
ZCk7Ci0gICAgICAgICAgICAgICAgaWYgKEVsZW1lbnRTaGFkb3cqIHNoYWRvdyA9IHBvaW50LT5w
YXJlbnROb2RlKCktPmlzRWxlbWVudE5vZGUoKSA/IHRvRWxlbWVudChwb2ludC0+cGFyZW50Tm9k
ZSgpKS0+c2hhZG93KCkgOiAwKQotICAgICAgICAgICAgICAgICAgICBzaGFkb3ctPmludmFsaWRh
dGVEaXN0cmlidXRpb24oKTsKKyAgICAgICAgaWYgKFNjb3BlQ29udGVudERpc3RyaWJ1dGlvbiog
c2NvcGUgPSByb290LT5zY29wZURpc3RyaWJ1dGlvbigpKSB7CisgICAgICAgICAgICBjb25zdCBW
ZWN0b3I8UmVmUHRyPEluc2VydGlvblBvaW50PiA+JiBpbnNlcnRpb25Qb2ludHMgPSBzY29wZS0+
ZW5zdXJlSW5zZXJ0aW9uUG9pbnRMaXN0KHJvb3QpOworICAgICAgICAgICAgZm9yIChzaXplX3Qg
aSA9IDA7IGkgPCBpbnNlcnRpb25Qb2ludHMuc2l6ZSgpOyArK2kpIHsKKyAgICAgICAgICAgICAg
ICBJbnNlcnRpb25Qb2ludCogcG9pbnQgPSBpbnNlcnRpb25Qb2ludHNbaV0uZ2V0KCk7CisgICAg
ICAgICAgICAgICAgaWYgKCFwb2ludC0+aXNBY3RpdmUoKSkKKyAgICAgICAgICAgICAgICAgICAg
Y29udGludWU7CisKKyAgICAgICAgICAgICAgICBpZiAoaXNIVE1MU2hhZG93RWxlbWVudChwb2lu
dCkpIHsKKyAgICAgICAgICAgICAgICAgICAgaWYgKCFmaXJzdEFjdGl2ZVNoYWRvd0luc2VydGlv
blBvaW50KQorICAgICAgICAgICAgICAgICAgICAgICAgZmlyc3RBY3RpdmVTaGFkb3dJbnNlcnRp
b25Qb2ludCA9IHRvSFRNTFNoYWRvd0VsZW1lbnQocG9pbnQpOworICAgICAgICAgICAgICAgIH0g
ZWxzZSB7CisgICAgICAgICAgICAgICAgICAgIGRpc3RyaWJ1dGVTZWxlY3Rpb25zVG8ocG9pbnQs
IHBvb2wsIGRpc3RyaWJ1dGVkKTsKKyAgICAgICAgICAgICAgICAgICAgaWYgKEVsZW1lbnRTaGFk
b3cqIHNoYWRvdyA9IHBvaW50LT5wYXJlbnROb2RlKCktPmlzRWxlbWVudE5vZGUoKSA/IHRvRWxl
bWVudChwb2ludC0+cGFyZW50Tm9kZSgpKS0+c2hhZG93KCkgOiAwKQorICAgICAgICAgICAgICAg
ICAgICAgICAgc2hhZG93LT5pbnZhbGlkYXRlRGlzdHJpYnV0aW9uKCk7CisgICAgICAgICAgICAg
ICAgfQogICAgICAgICAgICAgfQogICAgICAgICB9CiAKQEAgLTIxOSw3ICsyNTcsNyBAQCB2b2lk
IENvbnRlbnREaXN0cmlidXRvcjo6ZGlzdHJpYnV0ZShFbGVtZW50KiBob3N0KQogICAgICAgICBB
U1NFUlQocm9vdCk7CiAgICAgICAgIGlmIChyb290LT5vbGRlclNoYWRvd1Jvb3QoKSkgewogICAg
ICAgICAgICAgZGlzdHJpYnV0ZU5vZGVDaGlsZHJlblRvKHNoYWRvd0VsZW1lbnQsIHJvb3QtPm9s
ZGVyU2hhZG93Um9vdCgpKTsKLSAgICAgICAgICAgIHJvb3QtPm9sZGVyU2hhZG93Um9vdCgpLT5z
ZXRBc3NpZ25lZFRvKHNoYWRvd0VsZW1lbnQpOworICAgICAgICAgICAgcm9vdC0+b2xkZXJTaGFk
b3dSb290KCktPmVuc3VyZVNjb3BlRGlzdHJpYnV0aW9uKCktPnNldEluc2VydGlvblBvaW50QXNz
aWduZWRUbyhzaGFkb3dFbGVtZW50KTsKICAgICAgICAgfSBlbHNlIHsKICAgICAgICAgICAgIGRp
c3RyaWJ1dGVTZWxlY3Rpb25zVG8oc2hhZG93RWxlbWVudCwgcG9vbCwgZGlzdHJpYnV0ZWQpOwog
ICAgICAgICAgICAgaWYgKEVsZW1lbnRTaGFkb3cqIHNoYWRvdyA9IHNoYWRvd0VsZW1lbnQtPnBh
cmVudE5vZGUoKS0+aXNFbGVtZW50Tm9kZSgpID8gdG9FbGVtZW50KHNoYWRvd0VsZW1lbnQtPnBh
cmVudE5vZGUoKSktPnNoYWRvdygpIDogMCkKQEAgLTIzNCwxMSArMjcyLDEzIEBAIGJvb2wgQ29u
dGVudERpc3RyaWJ1dG9yOjppbnZhbGlkYXRlKEVsZW1lbnQqIGhvc3QpCiAgICAgYm9vbCBuZWVk
c1JlYXR0YWNoID0gKG1fdmFsaWRpdHkgPT0gVW5kZXRlcm1pbmVkKSB8fCAhbV9ub2RlVG9JbnNl
cnRpb25Qb2ludC5pc0VtcHR5KCk7CiAKICAgICBmb3IgKFNoYWRvd1Jvb3QqIHJvb3QgPSBob3N0
LT55b3VuZ2VzdFNoYWRvd1Jvb3QoKTsgcm9vdDsgcm9vdCA9IHJvb3QtPm9sZGVyU2hhZG93Um9v
dCgpKSB7Ci0gICAgICAgIHJvb3QtPnNldEFzc2lnbmVkVG8oMCk7Ci0gICAgICAgIGNvbnN0IFZl
Y3RvcjxSZWZQdHI8SW5zZXJ0aW9uUG9pbnQ+ID4mIGluc2VydGlvblBvaW50cyA9IHJvb3QtPmlu
c2VydGlvblBvaW50TGlzdCgpOwotICAgICAgICBmb3IgKHNpemVfdCBpID0gMDsgaSA8IGluc2Vy
dGlvblBvaW50cy5zaXplKCk7ICsraSkgewotICAgICAgICAgICAgbmVlZHNSZWF0dGFjaCA9IG5l
ZWRzUmVhdHRhY2ggfHwgdHJ1ZTsKLSAgICAgICAgICAgIGluc2VydGlvblBvaW50c1tpXS0+Y2xl
YXJEaXN0cmlidXRpb24oKTsKKyAgICAgICAgaWYgKFNjb3BlQ29udGVudERpc3RyaWJ1dGlvbiog
c2NvcGUgPSByb290LT5zY29wZURpc3RyaWJ1dGlvbigpKSB7CisgICAgICAgICAgICBzY29wZS0+
c2V0SW5zZXJ0aW9uUG9pbnRBc3NpZ25lZFRvKDApOworICAgICAgICAgICAgY29uc3QgVmVjdG9y
PFJlZlB0cjxJbnNlcnRpb25Qb2ludD4gPiYgaW5zZXJ0aW9uUG9pbnRzID0gc2NvcGUtPmVuc3Vy
ZUluc2VydGlvblBvaW50TGlzdChyb290KTsKKyAgICAgICAgICAgIGZvciAoc2l6ZV90IGkgPSAw
OyBpIDwgaW5zZXJ0aW9uUG9pbnRzLnNpemUoKTsgKytpKSB7CisgICAgICAgICAgICAgICAgbmVl
ZHNSZWF0dGFjaCA9IG5lZWRzUmVhdHRhY2ggfHwgdHJ1ZTsKKyAgICAgICAgICAgICAgICBpbnNl
cnRpb25Qb2ludHNbaV0tPmNsZWFyRGlzdHJpYnV0aW9uKCk7CisgICAgICAgICAgICB9CiAgICAg
ICAgIH0KICAgICB9CiAKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJDb3JlL2h0bWwvc2hhZG93L0Nv
bnRlbnREaXN0cmlidXRvci5oIGIvU291cmNlL1dlYkNvcmUvaHRtbC9zaGFkb3cvQ29udGVudERp
c3RyaWJ1dG9yLmgKaW5kZXggNzcxMTg5YjYwNDA4YzdlMTk3YWNkNDE4ZDE5MWViMDk0ODgwNGY3
Zi4uZjk4MzgzN2YxMDY3M2FhZTRmODRiMzJlMDAwN2QyZGI0NjdlYTIzNyAxMDA2NDQKLS0tIGEv
U291cmNlL1dlYkNvcmUvaHRtbC9zaGFkb3cvQ29udGVudERpc3RyaWJ1dG9yLmgKKysrIGIvU291
cmNlL1dlYkNvcmUvaHRtbC9zaGFkb3cvQ29udGVudERpc3RyaWJ1dG9yLmgKQEAgLTcwLDI2ICs3
MCwzNSBAQCBwcml2YXRlOgogICAgIEhhc2hNYXA8Y29uc3QgTm9kZSosIHNpemVfdD4gbV9pbmRp
Y2VzOwogfTsKIAotY2xhc3MgU2hhZG93Um9vdENvbnRlbnREaXN0cmlidXRpb25EYXRhIHsKK2Ns
YXNzIFNjb3BlQ29udGVudERpc3RyaWJ1dGlvbiB7CiBwdWJsaWM6Ci0gICAgU2hhZG93Um9vdENv
bnRlbnREaXN0cmlidXRpb25EYXRhKCk7CisgICAgU2NvcGVDb250ZW50RGlzdHJpYnV0aW9uKCk7
CiAKICAgICBJbnNlcnRpb25Qb2ludCogaW5zZXJ0aW9uUG9pbnRBc3NpZ25lZFRvKCkgY29uc3Qg
eyByZXR1cm4gbV9pbnNlcnRpb25Qb2ludEFzc2lnbmVkVG87IH0KICAgICB2b2lkIHNldEluc2Vy
dGlvblBvaW50QXNzaWduZWRUbyhJbnNlcnRpb25Qb2ludCogaW5zZXJ0aW9uUG9pbnQpIHsgbV9p
bnNlcnRpb25Qb2ludEFzc2lnbmVkVG8gPSBpbnNlcnRpb25Qb2ludDsgfQogCi0gICAgdm9pZCBy
ZWdpdGVySW5zZXJ0aW9uUG9pbnQoU2hhZG93Um9vdCosIEluc2VydGlvblBvaW50Kik7CisgICAg
dm9pZCByZWdpc3Rlckluc2VydGlvblBvaW50KFNoYWRvd1Jvb3QqLCBJbnNlcnRpb25Qb2ludCop
OwogICAgIHZvaWQgdW5yZWdpc3Rlckluc2VydGlvblBvaW50KFNoYWRvd1Jvb3QqLCBJbnNlcnRp
b25Qb2ludCopOwogICAgIGJvb2wgaGFzU2hhZG93RWxlbWVudENoaWxkcmVuKCkgY29uc3QgeyBy
ZXR1cm4gbV9udW1iZXJPZlNoYWRvd0VsZW1lbnRDaGlsZHJlbiA+IDA7IH0KICAgICBib29sIGhh
c0NvbnRlbnRFbGVtZW50Q2hpbGRyZW4oKSBjb25zdCB7IHJldHVybiBtX251bWJlck9mQ29udGVu
dEVsZW1lbnRDaGlsZHJlbiA+IDA7IH0KIAotICAgIHZvaWQgaW5jcmVtZW50TnVtYmVyT2ZFbGVt
ZW50U2hhZG93Q2hpbGRyZW4oKSB7ICsrbV9udW1iZXJPZkVsZW1lbnRTaGFkb3dDaGlsZHJlbjsg
fQotICAgIHZvaWQgZGVjcmVtZW50TnVtYmVyT2ZFbGVtZW50U2hhZG93Q2hpbGRyZW4oKSB7IEFT
U0VSVChtX251bWJlck9mRWxlbWVudFNoYWRvd0NoaWxkcmVuID4gMCk7IC0tbV9udW1iZXJPZkVs
ZW1lbnRTaGFkb3dDaGlsZHJlbjsgfQorICAgIHZvaWQgcmVnaXN0ZXJFbGVtZW50U2hhZG93KCkg
eyArK21fbnVtYmVyT2ZFbGVtZW50U2hhZG93Q2hpbGRyZW47IH0KKyAgICB2b2lkIHVucmVnaXN0
ZXJFbGVtZW50U2hhZG93KCkgeyBBU1NFUlQobV9udW1iZXJPZkVsZW1lbnRTaGFkb3dDaGlsZHJl
biA+IDApOyAtLW1fbnVtYmVyT2ZFbGVtZW50U2hhZG93Q2hpbGRyZW47IH0KICAgICB1bnNpZ25l
ZCBudW1iZXJPZkVsZW1lbnRTaGFkb3dDaGlsZHJlbigpIGNvbnN0IHsgcmV0dXJuIG1fbnVtYmVy
T2ZFbGVtZW50U2hhZG93Q2hpbGRyZW47IH0KICAgICBib29sIGhhc0VsZW1lbnRTaGFkb3dDaGls
ZHJlbigpIGNvbnN0IHsgcmV0dXJuIG1fbnVtYmVyT2ZFbGVtZW50U2hhZG93Q2hpbGRyZW4gPiAw
OyB9CiAKICAgICB2b2lkIGludmFsaWRhdGVJbnNlcnRpb25Qb2ludExpc3QoKTsKICAgICBjb25z
dCBWZWN0b3I8UmVmUHRyPEluc2VydGlvblBvaW50PiA+JiBlbnN1cmVJbnNlcnRpb25Qb2ludExp
c3QoU2hhZG93Um9vdCopOwogCisgICAgYm9vbCBpc1VzZWRGb3JSZW5kZXJpbmcoKSBjb25zdDsK
KworICAgIHN0YXRpYyBib29sIGhhc1NoYWRvd0VsZW1lbnQoY29uc3QgU2hhZG93Um9vdCopOwor
ICAgIHN0YXRpYyBib29sIGhhc0NvbnRlbnRFbGVtZW50KGNvbnN0IFNoYWRvd1Jvb3QqKTsKKyAg
ICBzdGF0aWMgYm9vbCBoYXNJbnNlcnRpb25Qb2ludChjb25zdCBTaGFkb3dSb290Kik7CisgICAg
c3RhdGljIGJvb2wgaGFzRWxlbWVudFNoYWRvdyhjb25zdCBTaGFkb3dSb290KiBob2xkZXIpIHsg
cmV0dXJuIGNvdW50RWxlbWVudFNoYWRvdyhob2xkZXIpOyB9CisgICAgc3RhdGljIHVuc2lnbmVk
IGNvdW50RWxlbWVudFNoYWRvdyhjb25zdCBTaGFkb3dSb290Kik7CisgICAgc3RhdGljIEluc2Vy
dGlvblBvaW50KiBhc3NpZ25lZFRvKGNvbnN0IFNoYWRvd1Jvb3QqKTsKKwogcHJpdmF0ZToKICAg
ICBJbnNlcnRpb25Qb2ludCogbV9pbnNlcnRpb25Qb2ludEFzc2lnbmVkVG87CiAgICAgdW5zaWdu
ZWQgbV9udW1iZXJPZlNoYWRvd0VsZW1lbnRDaGlsZHJlbjsKZGlmZiAtLWdpdCBhL1NvdXJjZS9X
ZWJDb3JlL2h0bWwvc2hhZG93L0hUTUxTaGFkb3dFbGVtZW50LmNwcCBiL1NvdXJjZS9XZWJDb3Jl
L2h0bWwvc2hhZG93L0hUTUxTaGFkb3dFbGVtZW50LmNwcAppbmRleCBkOWUxZjE1NGI5Y2FhMjc2
ZDkyMjBiYmM1MjgxNTYzNWNmZjA3OTZlLi4yMmMwNzY1NmE1NTdlNDdjOTNmZWI1M2FiM2UzNTUy
MjA3YWY4ZTljIDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViQ29yZS9odG1sL3NoYWRvdy9IVE1MU2hh
ZG93RWxlbWVudC5jcHAKKysrIGIvU291cmNlL1dlYkNvcmUvaHRtbC9zaGFkb3cvSFRNTFNoYWRv
d0VsZW1lbnQuY3BwCkBAIC03Myw3ICs3Myw3IEBAIFNoYWRvd1Jvb3QqIEhUTUxTaGFkb3dFbGVt
ZW50OjpvbGRlclNoYWRvd1Jvb3QoKQogICAgIHRvU2hhZG93Um9vdCh0cmVlU2NvcGUoKS0+cm9v
dE5vZGUoKSktPm93bmVyKCktPmVuc3VyZURpc3RyaWJ1dGlvbkZyb21Eb2N1bWVudCgpOwogCiAg
ICAgU2hhZG93Um9vdCogb2xkZXIgPSB0b1NoYWRvd1Jvb3QodHJlZVNjb3BlKCktPnJvb3ROb2Rl
KCkpLT5vbGRlclNoYWRvd1Jvb3QoKTsKLSAgICBpZiAoIW9sZGVyIHx8IG9sZGVyLT50eXBlKCkg
IT0gU2hhZG93Um9vdDo6QXV0aG9yU2hhZG93Um9vdCB8fCBvbGRlci0+YXNzaWduZWRUbygpICE9
IHRoaXMpCisgICAgaWYgKCFvbGRlciB8fCBvbGRlci0+dHlwZSgpICE9IFNoYWRvd1Jvb3Q6OkF1
dGhvclNoYWRvd1Jvb3QgfHwgU2NvcGVDb250ZW50RGlzdHJpYnV0aW9uOjphc3NpZ25lZFRvKG9s
ZGVyKSAhPSB0aGlzKQogICAgICAgICByZXR1cm4gMDsKIAogICAgIHJldHVybiBvbGRlcjsKZGlm
ZiAtLWdpdCBhL1NvdXJjZS9XZWJDb3JlL2h0bWwvc2hhZG93L0luc2VydGlvblBvaW50LmNwcCBi
L1NvdXJjZS9XZWJDb3JlL2h0bWwvc2hhZG93L0luc2VydGlvblBvaW50LmNwcAppbmRleCAxOWE4
YzkxNTdjMmIzYTQ4YTczNTZlMDM0ZGJmNzY0YTc2Yzk3OWE5Li40NGUzNGI5NTM0NTc0ZWMwNjhk
ZWVkMmFmZDgwYTY5NjY0N2JhYzU5IDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViQ29yZS9odG1sL3No
YWRvdy9JbnNlcnRpb25Qb2ludC5jcHAKKysrIGIvU291cmNlL1dlYkNvcmUvaHRtbC9zaGFkb3cv
SW5zZXJ0aW9uUG9pbnQuY3BwCkBAIC0xMzUsNyArMTM1LDcgQEAgTm9kZTo6SW5zZXJ0aW9uTm90
aWZpY2F0aW9uUmVxdWVzdCBJbnNlcnRpb25Qb2ludDo6aW5zZXJ0ZWRJbnRvKENvbnRhaW5lck5v
ZGUqIGkKICAgICAgICAgICAgIHJvb3RPd25lci0+aW52YWxpZGF0ZURpc3RyaWJ1dGlvbigpOwog
ICAgICAgICAgICAgaWYgKGlzQWN0aXZlKCkgJiYgIW1fcmVnaXN0ZXJlZFdpdGhTaGFkb3dSb290
ICYmIGluc2VydGlvblBvaW50LT50cmVlU2NvcGUoKS0+cm9vdE5vZGUoKSA9PSByb290KSB7CiAg
ICAgICAgICAgICAgICAgbV9yZWdpc3RlcmVkV2l0aFNoYWRvd1Jvb3QgPSB0cnVlOwotICAgICAg
ICAgICAgICAgIHJvb3QtPnJlZ2lzdGVySW5zZXJ0aW9uUG9pbnQodGhpcyk7CisgICAgICAgICAg
ICAgICAgcm9vdC0+ZW5zdXJlU2NvcGVEaXN0cmlidXRpb24oKS0+cmVnaXN0ZXJJbnNlcnRpb25Q
b2ludChyb290LCB0aGlzKTsKICAgICAgICAgICAgIH0KICAgICAgICAgfQogICAgIH0KQEAgLTE2
MCw3ICsxNjAsNyBAQCB2b2lkIEluc2VydGlvblBvaW50OjpyZW1vdmVkRnJvbShDb250YWluZXJO
b2RlKiBpbnNlcnRpb25Qb2ludCkKICAgICBpZiAobV9yZWdpc3RlcmVkV2l0aFNoYWRvd1Jvb3Qg
JiYgaW5zZXJ0aW9uUG9pbnQtPnRyZWVTY29wZSgpLT5yb290Tm9kZSgpID09IHJvb3QpIHsKICAg
ICAgICAgQVNTRVJUKHJvb3QpOwogICAgICAgICBtX3JlZ2lzdGVyZWRXaXRoU2hhZG93Um9vdCA9
IGZhbHNlOwotICAgICAgICByb290LT51bnJlZ2lzdGVySW5zZXJ0aW9uUG9pbnQodGhpcyk7Cisg
ICAgICAgIHJvb3QtPmVuc3VyZVNjb3BlRGlzdHJpYnV0aW9uKCktPnVucmVnaXN0ZXJJbnNlcnRp
b25Qb2ludChyb290LCB0aGlzKTsKICAgICB9CiAKICAgICBIVE1MRWxlbWVudDo6cmVtb3ZlZEZy
b20oaW5zZXJ0aW9uUG9pbnQpOwpAQCAtMTg2LDQgKzE4NiwzOCBAQCB2b2lkIEluc2VydGlvblBv
aW50OjpzZXRSZXNldFN0eWxlSW5oZXJpdGFuY2UoYm9vbCB2YWx1ZSkKICAgICBzZXRCb29sZWFu
QXR0cmlidXRlKHJlc2V0X3N0eWxlX2luaGVyaXRhbmNlQXR0ciwgdmFsdWUpOwogfQogCitib29s
IEluc2VydGlvblBvaW50Ojpjb250YWlucyhjb25zdCBOb2RlKiBub2RlKSBjb25zdAoreworICAg
IHJldHVybiBtX2Rpc3RyaWJ1dGlvbi5jb250YWlucyhjb25zdF9jYXN0PE5vZGUqPihub2RlKSkg
fHwgKG5vZGUtPmlzU2hhZG93Um9vdCgpICYmIFNjb3BlQ29udGVudERpc3RyaWJ1dGlvbjo6YXNz
aWduZWRUbyh0b1NoYWRvd1Jvb3Qobm9kZSkpID09IHRoaXMpOworfQorCitJbnNlcnRpb25Qb2lu
dCogcmVzb2x2ZVJlcHJvamVjdGlvbihjb25zdCBOb2RlKiBwcm9qZWN0ZWROb2RlKQoreworICAg
IEluc2VydGlvblBvaW50KiBpbnNlcnRpb25Qb2ludCA9IDA7CisgICAgY29uc3QgTm9kZSogY3Vy
cmVudCA9IHByb2plY3RlZE5vZGU7CisKKyAgICB3aGlsZSAoY3VycmVudCkgeworICAgICAgICBp
ZiAoRWxlbWVudFNoYWRvdyogc2hhZG93ID0gc2hhZG93T2ZQYXJlbnRGb3JEaXN0cmlidXRpb24o
Y3VycmVudCkpIHsKKyAgICAgICAgICAgIHNoYWRvdy0+ZW5zdXJlRGlzdHJpYnV0aW9uKCk7Cisg
ICAgICAgICAgICBpZiAoSW5zZXJ0aW9uUG9pbnQqIGluc2VydGVkVG8gPSBzaGFkb3ctPmRpc3Ry
aWJ1dG9yKCkuZmluZEluc2VydGlvblBvaW50Rm9yKHByb2plY3RlZE5vZGUpKSB7CisgICAgICAg
ICAgICAgICAgY3VycmVudCA9IGluc2VydGVkVG87CisgICAgICAgICAgICAgICAgaW5zZXJ0aW9u
UG9pbnQgPSBpbnNlcnRlZFRvOworICAgICAgICAgICAgICAgIGNvbnRpbnVlOworICAgICAgICAg
ICAgfQorICAgICAgICB9CisKKyAgICAgICAgaWYgKE5vZGUqIHBhcmVudCA9IHBhcmVudE5vZGVG
b3JEaXN0cmlidXRpb24oY3VycmVudCkpIHsKKyAgICAgICAgICAgIGlmIChJbnNlcnRpb25Qb2lu
dCogaW5zZXJ0ZWRUbyA9IHBhcmVudC0+aXNTaGFkb3dSb290KCkgPyBTY29wZUNvbnRlbnREaXN0
cmlidXRpb246OmFzc2lnbmVkVG8odG9TaGFkb3dSb290KHBhcmVudCkpIDogMCkgeworICAgICAg
ICAgICAgICAgIGN1cnJlbnQgPSBpbnNlcnRlZFRvOworICAgICAgICAgICAgICAgIGluc2VydGlv
blBvaW50ID0gaW5zZXJ0ZWRUbzsKKyAgICAgICAgICAgICAgICBjb250aW51ZTsKKyAgICAgICAg
ICAgIH0KKyAgICAgICAgfQorCisgICAgICAgIGJyZWFrOworICAgIH0KKworICAgIHJldHVybiBp
bnNlcnRpb25Qb2ludDsKK30KKwogfSAvLyBuYW1lc3BhY2UgV2ViQ29yZQpkaWZmIC0tZ2l0IGEv
U291cmNlL1dlYkNvcmUvaHRtbC9zaGFkb3cvSW5zZXJ0aW9uUG9pbnQuaCBiL1NvdXJjZS9XZWJD
b3JlL2h0bWwvc2hhZG93L0luc2VydGlvblBvaW50LmgKaW5kZXggYWVkYWMxZDBmN2QxMGY2ZDg0
ZTEzNjBlODEwMDMzOGE5MGM4MTJlMS4uM2JkNzUyYzg3M2QxZjFhNTk5ZTQ3OTBiODY1OTRiMDc1
ZWVmN2VjZSAxMDA2NDQKLS0tIGEvU291cmNlL1dlYkNvcmUvaHRtbC9zaGFkb3cvSW5zZXJ0aW9u
UG9pbnQuaAorKysgYi9Tb3VyY2UvV2ViQ29yZS9odG1sL3NoYWRvdy9JbnNlcnRpb25Qb2ludC5o
CkBAIC03Miw3ICs3Miw3IEBAIHB1YmxpYzoKICAgICBib29sIHNob3VsZFVzZUZhbGxiYWNrRWxl
bWVudHMoKSBjb25zdDsKIAogICAgIHNpemVfdCBpbmRleE9mKE5vZGUqIG5vZGUpIGNvbnN0IHsg
cmV0dXJuIG1fZGlzdHJpYnV0aW9uLmZpbmQobm9kZSk7IH0KLSAgICBib29sIGNvbnRhaW5zKGNv
bnN0IE5vZGUqIG5vZGUpIGNvbnN0IHsgcmV0dXJuIG1fZGlzdHJpYnV0aW9uLmNvbnRhaW5zKGNv
bnN0X2Nhc3Q8Tm9kZSo+KG5vZGUpKSB8fCAobm9kZS0+aXNTaGFkb3dSb290KCkgJiYgdG9TaGFk
b3dSb290KG5vZGUpLT5hc3NpZ25lZFRvKCkgPT0gdGhpcyk7IH0KKyAgICBib29sIGNvbnRhaW5z
KGNvbnN0IE5vZGUqKSBjb25zdDsKICAgICBzaXplX3Qgc2l6ZSgpIGNvbnN0IHsgcmV0dXJuIG1f
ZGlzdHJpYnV0aW9uLnNpemUoKTsgfQogICAgIE5vZGUqIGF0KHNpemVfdCBpbmRleCkgIGNvbnN0
IHsgcmV0dXJuIG1fZGlzdHJpYnV0aW9uLmF0KGluZGV4KS5nZXQoKTsgfQogICAgIE5vZGUqIGZp
cnN0KCkgY29uc3QgeyByZXR1cm4gbV9kaXN0cmlidXRpb24uaXNFbXB0eSgpID8gMCA6IG1fZGlz
dHJpYnV0aW9uLmZpcnN0KCkuZ2V0KCk7IH0KQEAgLTE1MCwzNCArMTUwLDcgQEAgaW5saW5lIEVs
ZW1lbnRTaGFkb3cqIHNoYWRvd09mUGFyZW50Rm9yRGlzdHJpYnV0aW9uKGNvbnN0IE5vZGUqIG5v
ZGUpCiAgICAgcmV0dXJuIDA7CiB9CiAKLWlubGluZSBJbnNlcnRpb25Qb2ludCogcmVzb2x2ZVJl
cHJvamVjdGlvbihjb25zdCBOb2RlKiBwcm9qZWN0ZWROb2RlKQotewotICAgIEluc2VydGlvblBv
aW50KiBpbnNlcnRpb25Qb2ludCA9IDA7Ci0gICAgY29uc3QgTm9kZSogY3VycmVudCA9IHByb2pl
Y3RlZE5vZGU7Ci0KLSAgICB3aGlsZSAoY3VycmVudCkgewotICAgICAgICBpZiAoRWxlbWVudFNo
YWRvdyogc2hhZG93ID0gc2hhZG93T2ZQYXJlbnRGb3JEaXN0cmlidXRpb24oY3VycmVudCkpIHsK
LSAgICAgICAgICAgIHNoYWRvdy0+ZW5zdXJlRGlzdHJpYnV0aW9uKCk7Ci0gICAgICAgICAgICBp
ZiAoSW5zZXJ0aW9uUG9pbnQqIGluc2VydGVkVG8gPSBzaGFkb3ctPmRpc3RyaWJ1dG9yKCkuZmlu
ZEluc2VydGlvblBvaW50Rm9yKHByb2plY3RlZE5vZGUpKSB7Ci0gICAgICAgICAgICAgICAgY3Vy
cmVudCA9IGluc2VydGVkVG87Ci0gICAgICAgICAgICAgICAgaW5zZXJ0aW9uUG9pbnQgPSBpbnNl
cnRlZFRvOwotICAgICAgICAgICAgICAgIGNvbnRpbnVlOwotICAgICAgICAgICAgfQotICAgICAg
ICB9Ci0KLSAgICAgICAgaWYgKE5vZGUqIHBhcmVudCA9IHBhcmVudE5vZGVGb3JEaXN0cmlidXRp
b24oY3VycmVudCkpIHsKLSAgICAgICAgICAgIGlmIChJbnNlcnRpb25Qb2ludCogaW5zZXJ0ZWRU
byA9IHBhcmVudC0+aXNTaGFkb3dSb290KCkgPyB0b1NoYWRvd1Jvb3QocGFyZW50KS0+YXNzaWdu
ZWRUbygpIDogMCkgewotICAgICAgICAgICAgICAgIGN1cnJlbnQgPSBpbnNlcnRlZFRvOwotICAg
ICAgICAgICAgICAgIGluc2VydGlvblBvaW50ID0gaW5zZXJ0ZWRUbzsKLSAgICAgICAgICAgICAg
ICBjb250aW51ZTsKLSAgICAgICAgICAgIH0KLSAgICAgICAgfQotCi0gICAgICAgIGJyZWFrOwot
ICAgIH0KLQotICAgIHJldHVybiBpbnNlcnRpb25Qb2ludDsKLX0KK0luc2VydGlvblBvaW50KiBy
ZXNvbHZlUmVwcm9qZWN0aW9uKGNvbnN0IE5vZGUqKTsKIAogfSAvLyBuYW1lc3BhY2UgV2ViQ29y
ZQogCmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS90ZXN0aW5nL0ludGVybmFscy5jcHAgYi9T
b3VyY2UvV2ViQ29yZS90ZXN0aW5nL0ludGVybmFscy5jcHAKaW5kZXggOWI0NWZiNjAzNTE2ZTNi
MThmNTA0YjdjOWVmMDRmNDQ3OGNlYWZkMS4uZmEyZmViODcxZWY4NjIyMmM2YWJiNDA2NDllMmI0
YjY3ZTgxZjdlYSAxMDA2NDQKLS0tIGEvU291cmNlL1dlYkNvcmUvdGVzdGluZy9JbnRlcm5hbHMu
Y3BwCisrKyBiL1NvdXJjZS9XZWJDb3JlL3Rlc3RpbmcvSW50ZXJuYWxzLmNwcApAQCAtMzMsNiAr
MzMsNyBAQAogI2luY2x1ZGUgIkNsaWVudFJlY3QuaCIKICNpbmNsdWRlICJDbGllbnRSZWN0TGlz
dC5oIgogI2luY2x1ZGUgIkNvbXBvc2VkU2hhZG93VHJlZVdhbGtlci5oIgorI2luY2x1ZGUgIkNv
bnRlbnREaXN0cmlidXRvci5oIgogI2luY2x1ZGUgIkN1cnNvci5oIgogI2luY2x1ZGUgIkRPTVN0
cmluZ0xpc3QuaCIKICNpbmNsdWRlICJET01XaW5kb3cuaCIKQEAgLTQzNCw3ICs0MzUsNyBAQCBi
b29sIEludGVybmFsczo6cGF1c2VUcmFuc2l0aW9uQXRUaW1lT25Qc2V1ZG9FbGVtZW50KGNvbnN0
IFN0cmluZyYgcHJvcGVydHksIGRvdQogYm9vbCBJbnRlcm5hbHM6Omhhc1NoYWRvd0luc2VydGlv
blBvaW50KGNvbnN0IE5vZGUqIHJvb3QsIEV4Y2VwdGlvbkNvZGUmIGVjKSBjb25zdAogewogICAg
IGlmIChyb290ICYmIHJvb3QtPmlzU2hhZG93Um9vdCgpKQotICAgICAgICByZXR1cm4gdG9TaGFk
b3dSb290KHJvb3QpLT5oYXNTaGFkb3dJbnNlcnRpb25Qb2ludCgpOworICAgICAgICByZXR1cm4g
U2NvcGVDb250ZW50RGlzdHJpYnV0aW9uOjpoYXNTaGFkb3dFbGVtZW50KHRvU2hhZG93Um9vdChy
b290KSk7CiAKICAgICBlYyA9IElOVkFMSURfQUNDRVNTX0VSUjsKICAgICByZXR1cm4gMDsKQEAg
LTQ0Myw3ICs0NDQsNyBAQCBib29sIEludGVybmFsczo6aGFzU2hhZG93SW5zZXJ0aW9uUG9pbnQo
Y29uc3QgTm9kZSogcm9vdCwgRXhjZXB0aW9uQ29kZSYgZWMpIGNvbgogYm9vbCBJbnRlcm5hbHM6
Omhhc0NvbnRlbnRFbGVtZW50KGNvbnN0IE5vZGUqIHJvb3QsIEV4Y2VwdGlvbkNvZGUmIGVjKSBj
b25zdAogewogICAgIGlmIChyb290ICYmIHJvb3QtPmlzU2hhZG93Um9vdCgpKQotICAgICAgICBy
ZXR1cm4gdG9TaGFkb3dSb290KHJvb3QpLT5oYXNDb250ZW50RWxlbWVudCgpOworICAgICAgICBy
ZXR1cm4gU2NvcGVDb250ZW50RGlzdHJpYnV0aW9uOjpoYXNDb250ZW50RWxlbWVudCh0b1NoYWRv
d1Jvb3Qocm9vdCkpOwogCiAgICAgZWMgPSBJTlZBTElEX0FDQ0VTU19FUlI7CiAgICAgcmV0dXJu
IDA7CkBAIC00NTYsNyArNDU3LDcgQEAgc2l6ZV90IEludGVybmFsczo6Y291bnRFbGVtZW50U2hh
ZG93KGNvbnN0IE5vZGUqIHJvb3QsIEV4Y2VwdGlvbkNvZGUmIGVjKSBjb25zdAogICAgICAgICBy
ZXR1cm4gMDsKICAgICB9CiAKLSAgICByZXR1cm4gdG9TaGFkb3dSb290KHJvb3QpLT5jb3VudEVs
ZW1lbnRTaGFkb3coKTsKKyAgICByZXR1cm4gU2NvcGVDb250ZW50RGlzdHJpYnV0aW9uOjpjb3Vu
dEVsZW1lbnRTaGFkb3codG9TaGFkb3dSb290KHJvb3QpKTsKIH0KIAogYm9vbCBJbnRlcm5hbHM6
OmF0dGFjaGVkKE5vZGUqIG5vZGUsIEV4Y2VwdGlvbkNvZGUmIGVjKQpkaWZmIC0tZ2l0IGEvU291
cmNlL1dlYktpdC93aW4vV2ViS2l0LnZjcHJvai9XZWJLaXQuZGVmLmluIGIvU291cmNlL1dlYktp
dC93aW4vV2ViS2l0LnZjcHJvai9XZWJLaXQuZGVmLmluCmluZGV4IDMwM2I2NzMxMGNmMTljOTY2
MDkwMjNhNzU0N2IzMWE2MTMzNjBmNDcuLjcwZjM4ODFiMTM4NGUzNWYwOGY3MTFhYzljZDAwNjVl
NjY5Y2FkZjIgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJLaXQvd2luL1dlYktpdC52Y3Byb2ovV2Vi
S2l0LmRlZi5pbgorKysgYi9Tb3VyY2UvV2ViS2l0L3dpbi9XZWJLaXQudmNwcm9qL1dlYktpdC5k
ZWYuaW4KQEAgLTE5Niw5ICsxOTYsNiBAQCBFWFBPUlRTCiAgICAgICAgID9nZXREYXRhMTZTbG93
Q2FzZUBTdHJpbmdJbXBsQFdURkBAQUJFUEJfV1haCiAgICAgICAgID9nZXRMb2NhdGlvbkFuZExl
bmd0aEZyb21SYW5nZUBUZXh0SXRlcmF0b3JAV2ViQ29yZUBAU0FfTlBBVkVsZW1lbnRAMkBQQlZS
YW5nZUAyQEFBSTJAWgogICAgICAgICA/Z2V0UmVmZXJlbmNlZEZpbGVQYXRoc0BGb3JtQ29udHJv
bGxlckBXZWJDb3JlQEBTQT9BVj8kVmVjdG9yQFZTdHJpbmdAV1RGQEAkMEFAQFdURkBAQUJWMzRA
QFoKLSAgICAgICAgP2NvdW50RWxlbWVudFNoYWRvd0BTaGFkb3dSb290QFdlYkNvcmVAQFFCRUlY
WgotICAgICAgICA/aGFzU2hhZG93SW5zZXJ0aW9uUG9pbnRAU2hhZG93Um9vdEBXZWJDb3JlQEBR
QkVfTlhaCi0gICAgICAgID9oYXNDb250ZW50RWxlbWVudEBTaGFkb3dSb290QFdlYkNvcmVAQFFC
RV9OWFoKICAgICAgICAgP2lucHV0VGFnQEhUTUxOYW1lc0BXZWJDb3JlQEAzVlF1YWxpZmllZE5h
bWVAMkBCCiAjaWYgRU5BQkxFKElOU1BFQ1RPUikKICAgICAgICAgP2dldEhpZ2hsaWdodEBJbnNw
ZWN0b3JDb250cm9sbGVyQFdlYkNvcmVAQFFCRVhQQVVIaWdobGlnaHRAMkBAWgpAQCAtNTg4LDkg
KzU4NSw2IEBAIEVYUE9SVFMKICAgICAgICAgP2dldERhdGExNlNsb3dDYXNlQFN0cmluZ0ltcGxA
V1RGQEBBQkVQQl9XWFoKICAgICAgICAgP2dldExvY2F0aW9uQW5kTGVuZ3RoRnJvbVJhbmdlQFRl
eHRJdGVyYXRvckBXZWJDb3JlQEBTQV9OUEFWRWxlbWVudEAyQFBCVlJhbmdlQDJAQUFJMkBaCiAg
ICAgICAgID9nZXRSZWZlcmVuY2VkRmlsZVBhdGhzQEZvcm1Db250cm9sbGVyQFdlYkNvcmVAQFNB
P0FWPyRWZWN0b3JAVlN0cmluZ0BXVEZAQCQwQUBAV1RGQEBBQlYzNEBAWgotICAgICAgICA/Y291
bnRFbGVtZW50U2hhZG93QFNoYWRvd1Jvb3RAV2ViQ29yZUBAUUJFSVhaCi0gICAgICAgID9oYXNT
aGFkb3dJbnNlcnRpb25Qb2ludEBTaGFkb3dSb290QFdlYkNvcmVAQFFCRV9OWFoKLSAgICAgICAg
P2hhc0NvbnRlbnRFbGVtZW50QFNoYWRvd1Jvb3RAV2ViQ29yZUBAUUJFX05YWgogICAgICAgICA/
aW5wdXRUYWdASFRNTE5hbWVzQFdlYkNvcmVAQDNWUXVhbGlmaWVkTmFtZUAyQEIKICNpZiBFTkFC
TEUoSU5TUEVDVE9SKQogICAgICAgICA/Z2V0SGlnaGxpZ2h0QEluc3BlY3RvckNvbnRyb2xsZXJA
V2ViQ29yZUBAUUJFWFBBVUhpZ2hsaWdodEAyQEBaCkBAIC05ODAsOSArOTc0LDYgQEAgRVhQT1JU
UwogICAgICAgICA/Z2V0RGF0YTE2U2xvd0Nhc2VAU3RyaW5nSW1wbEBXVEZAQEFCRVBCX1dYWgog
ICAgICAgICA/Z2V0TG9jYXRpb25BbmRMZW5ndGhGcm9tUmFuZ2VAVGV4dEl0ZXJhdG9yQFdlYkNv
cmVAQFNBX05QQVZFbGVtZW50QDJAUEJWUmFuZ2VAMkBBQUkyQFoKICAgICAgICAgP2dldFJlZmVy
ZW5jZWRGaWxlUGF0aHNARm9ybUNvbnRyb2xsZXJAV2ViQ29yZUBAU0E/QVY/JFZlY3RvckBWU3Ry
aW5nQFdURkBAJDBBQEBXVEZAQEFCVjM0QEBaCi0gICAgICAgID9jb3VudEVsZW1lbnRTaGFkb3dA
U2hhZG93Um9vdEBXZWJDb3JlQEBRQkVJWFoKLSAgICAgICAgP2hhc1NoYWRvd0luc2VydGlvblBv
aW50QFNoYWRvd1Jvb3RAV2ViQ29yZUBAUUJFX05YWgotICAgICAgICA/aGFzQ29udGVudEVsZW1l
bnRAU2hhZG93Um9vdEBXZWJDb3JlQEBRQkVfTlhaCiAgICAgICAgID9pbnB1dFRhZ0BIVE1MTmFt
ZXNAV2ViQ29yZUBAM1ZRdWFsaWZpZWROYW1lQDJAQgogI2lmIEVOQUJMRShJTlNQRUNUT1IpCiAg
ICAgICAgID9nZXRIaWdobGlnaHRASW5zcGVjdG9yQ29udHJvbGxlckBXZWJDb3JlQEBRQkVYUEFV
SGlnaGxpZ2h0QDJAQFoKQEAgLTEzNzIsOSArMTM2Myw2IEBAIEVYUE9SVFMKICAgICAgICAgP2dl
dERhdGExNlNsb3dDYXNlQFN0cmluZ0ltcGxAV1RGQEBBQkVQQl9XWFoKICAgICAgICAgP2dldExv
Y2F0aW9uQW5kTGVuZ3RoRnJvbVJhbmdlQFRleHRJdGVyYXRvckBXZWJDb3JlQEBTQV9OUEFWRWxl
bWVudEAyQFBCVlJhbmdlQDJAQUFJMkBaCiAgICAgICAgID9nZXRSZWZlcmVuY2VkRmlsZVBhdGhz
QEZvcm1Db250cm9sbGVyQFdlYkNvcmVAQFNBP0FWPyRWZWN0b3JAVlN0cmluZ0BXVEZAQCQwQUBA
V1RGQEBBQlYzNEBAWgotICAgICAgICA/Y291bnRFbGVtZW50U2hhZG93QFNoYWRvd1Jvb3RAV2Vi
Q29yZUBAUUJFSVhaCi0gICAgICAgID9oYXNTaGFkb3dJbnNlcnRpb25Qb2ludEBTaGFkb3dSb290
QFdlYkNvcmVAQFFCRV9OWFoKLSAgICAgICAgP2hhc0NvbnRlbnRFbGVtZW50QFNoYWRvd1Jvb3RA
V2ViQ29yZUBAUUJFX05YWgogICAgICAgICA/aW5wdXRUYWdASFRNTE5hbWVzQFdlYkNvcmVAQDNW
UXVhbGlmaWVkTmFtZUAyQEIKICNpZiBFTkFCTEUoSU5TUEVDVE9SKQogICAgICAgICA/Z2V0SGln
aGxpZ2h0QEluc3BlY3RvckNvbnRyb2xsZXJAV2ViQ29yZUBAUUJFWFBBVUhpZ2hsaWdodEAyQEBa
CmRpZmYgLS1naXQgYS9Tb3VyY2UvYXV0b3Rvb2xzL3N5bWJvbHMuZmlsdGVyIGIvU291cmNlL2F1
dG90b29scy9zeW1ib2xzLmZpbHRlcgppbmRleCBjZjNmZDYzMzFiYjFhMzlkODA0ZjIyNGVmNGZm
ZGE3NmM0Y2RlNzgxLi45OWMyMmZhODllNzQ5MjIzMjkzMmNkNjNiNjI3ZGIyYzU3YWVjNTk3IDEw
MDY0NAotLS0gYS9Tb3VyY2UvYXV0b3Rvb2xzL3N5bWJvbHMuZmlsdGVyCisrKyBiL1NvdXJjZS9h
dXRvdG9vbHMvc3ltYm9scy5maWx0ZXIKQEAgLTQ5LDkgKzQ5LDYgQEAgX1pON1dlYkNvcmUxMEpT
RG9jdW1lbnQ2c19pbmZvRTsKIF9aTjdXZWJDb3JlMTB0b0RvY3VtZW50RU4zSlNDN0pTVmFsdWVF
OwogX1pON1dlYkNvcmUxMENsaWVudFJlY3RDMUV2OwogX1pON1dlYkNvcmUxMENsaWVudFJlY3RD
MUVSS05TXzdJbnRSZWN0RTsKLV9aTks3V2ViQ29yZTEwU2hhZG93Um9vdDE3aGFzQ29udGVudEVs
ZW1lbnRFdjsKLV9aTks3V2ViQ29yZTEwU2hhZG93Um9vdDE4Y291bnRFbGVtZW50U2hhZG93RXY7
Ci1fWk5LN1dlYkNvcmUxMFNoYWRvd1Jvb3QyM2hhc1NoYWRvd0luc2VydGlvblBvaW50RXY7CiBf
Wk43V2ViQ29yZTEwU2hhZG93Um9vdDZjcmVhdGVFUE5TXzdFbGVtZW50RVJpOwogX1pON1dlYkNv
cmUxMUV2ZW50VGFyZ2V0MTd0b0dlbmVyYXRlZFN0cmVhbUV2OwogX1pON1dlYkNvcmUxMUV2ZW50
VGFyZ2V0OHRvU3RyZWFtRXY7CkBAIC0yMzAsNiArMjI3LDkgQEAgX1pON1dlYkNvcmUyMVNlcmlh
bGl6ZWRTY3JpcHRWYWx1ZTZjcmVhdGVFUktOM1dURjZTdHJpbmdFOwogX1pON1dlYkNvcmUyMVNl
cmlhbGl6ZWRTY3JpcHRWYWx1ZUMxRVJOM1dURjZWZWN0b3JJaExqMEVFRTsKIF9aTjdXZWJDb3Jl
MjFTZXJpYWxpemVkU2NyaXB0VmFsdWVDMUVSTjNXVEY2VmVjdG9ySWhMbTBFRUU7CiBfWk43V2Vi
Q29yZTIxU2VyaWFsaXplZFNjcmlwdFZhbHVlRDFFdjsKK19aTjdXZWJDb3JlMjRTY29wZUNvbnRl
bnREaXN0cmlidXRpb24xNmhhc1NoYWRvd0VsZW1lbnRFUEtOU18xMFNoYWRvd1Jvb3RFCitfWk43
V2ViQ29yZTI0U2NvcGVDb250ZW50RGlzdHJpYnV0aW9uMThjb3VudEVsZW1lbnRTaGFkb3dFUEtO
U18xMFNoYWRvd1Jvb3RFCitfWk43V2ViQ29yZTI0U2NvcGVDb250ZW50RGlzdHJpYnV0aW9uMTdo
YXNDb250ZW50RWxlbWVudEVQS05TXzEwU2hhZG93Um9vdEUKIF9aTjdXZWJDb3JlMTZDU1NQYXJz
ZXJDb250ZXh0QzFFUE5TXzhEb2N1bWVudEVSS05TXzRLVVJMRVJLTjNXVEY2U3RyaW5nRTsKIF9a
TjdXZWJDb3JlMThTdHlsZVNoZWV0Q29udGVudHMxMXBhcnNlU3RyaW5nRVJLTjNXVEY2U3RyaW5n
RTsKIF9aTjdXZWJDb3JlMThTdHlsZVNoZWV0Q29udGVudHNDMUVQTlNfMTVTdHlsZVJ1bGVJbXBv
cnRFUktOM1dURjZTdHJpbmdFUktOU18xNkNTU1BhcnNlckNvbnRleHRFOwo=
</data>

          </attachment>
          <attachment
              isobsolete="0"
              ispatch="1"
              isprivate="0"
          >
            <attachid>181664</attachid>
            <date>2013-01-08 00:22:27 -0800</date>
            <delta_ts>2013-01-08 16:17:41 -0800</delta_ts>
            <desc>Patch</desc>
            <filename>bug-106282-20130108171931.patch</filename>
            <type>text/plain</type>
            <size>41272</size>
            <attacher name="Hajime Morrita">morrita</attacher>
            
              <data encoding="base64">U3VidmVyc2lvbiBSZXZpc2lvbjogMTM5MDI0CmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9D
aGFuZ2VMb2cgYi9Tb3VyY2UvV2ViQ29yZS9DaGFuZ2VMb2cKaW5kZXggYjM0ZDVhYmZmMTI1NTZi
MmU1NzU1NWIxNTdjZjQyNzlhMDljMThhMC4uMWExYjAzNzgyZWJhYjY3NGVkZmExODViNzFiNTQ2
Yjc4MDljZWUyMCAxMDA2NDQKLS0tIGEvU291cmNlL1dlYkNvcmUvQ2hhbmdlTG9nCisrKyBiL1Nv
dXJjZS9XZWJDb3JlL0NoYW5nZUxvZwpAQCAtMSwzICsxLDc5IEBACisyMDEzLTAxLTA3ICBIYWpp
bWUgTW9ycml0YSAgPG1vcnJpdGFAZ29vZ2xlLmNvbT4KKworICAgICAgICBbU2hhZG93IERPTV0g
RGlzdHJpYnV0aW9uIHJlbGF0ZWQgY29kZSBvbiBTaGFkb3dSb290IHNob3VsZCBiZSBtaW5pbWl6
ZWQuCisgICAgICAgIGh0dHBzOi8vYnVncy53ZWJraXQub3JnL3Nob3dfYnVnLmNnaT9pZD0xMDYy
ODIKKworICAgICAgICBSZXZpZXdlZCBieSBOT0JPRFkgKE9PUFMhKS4KKworICAgICAgICBTaGFk
b3dSb290IGhhZCBhIGNlcnRhaW4gYW1vdW50IG9mIGxvZ2ljIHdoaWNoIGlzIGRlZGljYXRlZCBm
b3IKKyAgICAgICAgbm9kZSBkaXN0cmlidXRpb24gY29tcHV0YXRpb24uICBUaGVzZSBjb2RlIGlz
IGdvaW5nIHRvIGJlIGNvbXBpbGVkCisgICAgICAgIG91dCAoQnVnIDEwMzMzOSkgYW5kIGJldHRl
ciBiZSBwYXJ0IG9mIHRoZSBub2RlIGRpc3RyaWJ1dGlvbgorICAgICAgICBhbGdvcml0aG0sIHdo
aWNoIGlzIFNjb3BlQ29udGVudERpc3RyaWJ1dGlvbiBjbGFzcy4KKworICAgICAgICBUaGlzIGNo
YW5nZQorCisgICAgICAgIC0gUmVuYW1lcyBTaGFkb3dSb290Q29udGVudERpc3RyaWJ1dGlvbkRh
dGEgdG8KKyAgICAgICAgICBTY29wZUNvbnRlbnREaXN0cmlidXRpb24uICBOZXcgbmFtZSBpcyBj
b25jaXNlIGFuZCBhIGJpdCBtb3JlCisgICAgICAgICAgbWVhbmluZ2Z1bDogSXQgb3ducyBwZXIg
VHJlZVNjb3BlIGRpc3RyaWJ1dGlvbiBzdGF0ZS4KKyAgICAgICAgLSBNb3ZlcyBkaXN0cmlidXRp
b24gcmVsYXRlZCBjb2RlIGZyb20gU2hhZG93Um9vdCB0byBTY29wZUNvbnRlbnREaXN0cmlidXRp
b24KKworICAgICAgICBObyBuZXcgdGVzdHMuIFJlZmFjdG9yaW5nLgorCisgICAgICAgICogV2Vi
Q29yZS5leHAuaW46CisgICAgICAgICogY3NzL1N0eWxlU2NvcGVSZXNvbHZlci5jcHA6CisgICAg
ICAgIChXZWJDb3JlOjpTdHlsZVNjb3BlUmVzb2x2ZXI6OnN0eWxlU2hhcmluZ0NhbmRpZGF0ZU1h
dGNoZXNIb3N0UnVsZXMpOgorICAgICAgICAoV2ViQ29yZTo6U3R5bGVTY29wZVJlc29sdmVyOjpt
YXRjaEhvc3RSdWxlcyk6CisgICAgICAgICogZG9tL0NvbXBvc2VkU2hhZG93VHJlZVdhbGtlci5j
cHA6CisgICAgICAgIChXZWJDb3JlOjpub2RlQ2FuQmVEaXN0cmlidXRlZCk6CisgICAgICAgIChX
ZWJDb3JlOjpDb21wb3NlZFNoYWRvd1RyZWVXYWxrZXI6OnRyYXZlcnNlQmFja1RvWW91bmdlclNo
YWRvd1Jvb3QpOgorICAgICAgICAoV2ViQ29yZTo6Q29tcG9zZWRTaGFkb3dUcmVlV2Fsa2VyOjp0
cmF2ZXJzZVBhcmVudEJhY2tUb1lvdW5nZXJTaGFkb3dSb290T3JIb3N0KToKKyAgICAgICAgKFdl
YkNvcmU6OkFuY2VzdG9yQ2hhaW5XYWxrZXI6OnBhcmVudCk6CisgICAgICAgICogZG9tL0VsZW1l
bnRTaGFkb3cuY3BwOgorICAgICAgICAoV2ViQ29yZTo6RWxlbWVudFNoYWRvdzo6Y29sbGVjdFNl
bGVjdEZlYXR1cmVTZXRGcm9tKToKKyAgICAgICAgKiBkb20vU2hhZG93Um9vdC5jcHA6CisgICAg
ICAgIChXZWJDb3JlOjpTaGFkb3dSb290OjppbnNlcnRlZEludG8pOgorICAgICAgICAoV2ViQ29y
ZTo6U2hhZG93Um9vdDo6cmVtb3ZlZEZyb20pOgorICAgICAgICAoV2ViQ29yZTo6U2hhZG93Um9v
dDo6ZW5zdXJlU2NvcGVEaXN0cmlidXRpb24pOgorICAgICAgICAoV2ViQ29yZTo6U2hhZG93Um9v
dDo6cmVwb3J0TWVtb3J5VXNhZ2UpOgorICAgICAgICAqIGRvbS9TaGFkb3dSb290Lmg6CisgICAg
ICAgIChXZWJDb3JlKToKKyAgICAgICAgKFNoYWRvd1Jvb3QpOgorICAgICAgICAoV2ViQ29yZTo6
U2hhZG93Um9vdDo6c2NvcGVEaXN0cmlidXRpb24pOgorICAgICAgICAqIGh0bWwvc2hhZG93L0Nv
bnRlbnREaXN0cmlidXRvci5jcHA6CisgICAgICAgIChXZWJDb3JlOjpTY29wZUNvbnRlbnREaXN0
cmlidXRpb246OlNjb3BlQ29udGVudERpc3RyaWJ1dGlvbik6CisgICAgICAgIChXZWJDb3JlOjpT
Y29wZUNvbnRlbnREaXN0cmlidXRpb246OmludmFsaWRhdGVJbnNlcnRpb25Qb2ludExpc3QpOgor
ICAgICAgICAoV2ViQ29yZTo6U2NvcGVDb250ZW50RGlzdHJpYnV0aW9uOjplbnN1cmVJbnNlcnRp
b25Qb2ludExpc3QpOgorICAgICAgICAoV2ViQ29yZTo6U2NvcGVDb250ZW50RGlzdHJpYnV0aW9u
OjpyZWdpc3Rlckluc2VydGlvblBvaW50KToKKyAgICAgICAgKFdlYkNvcmU6OlNjb3BlQ29udGVu
dERpc3RyaWJ1dGlvbjo6dW5yZWdpc3Rlckluc2VydGlvblBvaW50KToKKyAgICAgICAgKFdlYkNv
cmU6OlNjb3BlQ29udGVudERpc3RyaWJ1dGlvbjo6aGFzU2hhZG93RWxlbWVudCk6CisgICAgICAg
IChXZWJDb3JlKToKKyAgICAgICAgKFdlYkNvcmU6OlNjb3BlQ29udGVudERpc3RyaWJ1dGlvbjo6
aGFzQ29udGVudEVsZW1lbnQpOgorICAgICAgICAoV2ViQ29yZTo6U2NvcGVDb250ZW50RGlzdHJp
YnV0aW9uOjpjb3VudEVsZW1lbnRTaGFkb3cpOgorICAgICAgICAoV2ViQ29yZTo6U2NvcGVDb250
ZW50RGlzdHJpYnV0aW9uOjpoYXNJbnNlcnRpb25Qb2ludCk6CisgICAgICAgIChXZWJDb3JlOjpT
Y29wZUNvbnRlbnREaXN0cmlidXRpb246OmFzc2lnbmVkVG8pOgorICAgICAgICAoV2ViQ29yZTo6
Q29udGVudERpc3RyaWJ1dG9yOjpkaXN0cmlidXRlKToKKyAgICAgICAgKFdlYkNvcmU6OkNvbnRl
bnREaXN0cmlidXRvcjo6aW52YWxpZGF0ZSk6CisgICAgICAgICogaHRtbC9zaGFkb3cvQ29udGVu
dERpc3RyaWJ1dG9yLmg6CisgICAgICAgIChTY29wZUNvbnRlbnREaXN0cmlidXRpb24pOgorICAg
ICAgICAoV2ViQ29yZTo6U2NvcGVDb250ZW50RGlzdHJpYnV0aW9uOjpyZWdpc3RlckVsZW1lbnRT
aGFkb3cpOgorICAgICAgICAoV2ViQ29yZTo6U2NvcGVDb250ZW50RGlzdHJpYnV0aW9uOjp1bnJl
Z2lzdGVyRWxlbWVudFNoYWRvdyk6CisgICAgICAgIChXZWJDb3JlOjpTY29wZUNvbnRlbnREaXN0
cmlidXRpb246Omhhc0VsZW1lbnRTaGFkb3cpOgorICAgICAgICAqIGh0bWwvc2hhZG93L0hUTUxT
aGFkb3dFbGVtZW50LmNwcDoKKyAgICAgICAgKFdlYkNvcmU6OkhUTUxTaGFkb3dFbGVtZW50Ojpv
bGRlclNoYWRvd1Jvb3QpOgorICAgICAgICAqIGh0bWwvc2hhZG93L0luc2VydGlvblBvaW50LmNw
cDoKKyAgICAgICAgKFdlYkNvcmU6Okluc2VydGlvblBvaW50OjppbnNlcnRlZEludG8pOgorICAg
ICAgICAoV2ViQ29yZTo6SW5zZXJ0aW9uUG9pbnQ6OnJlbW92ZWRGcm9tKToKKyAgICAgICAgKFdl
YkNvcmU6Okluc2VydGlvblBvaW50Ojpjb250YWlucyk6CisgICAgICAgIChXZWJDb3JlKToKKyAg
ICAgICAgKFdlYkNvcmU6OnJlc29sdmVSZXByb2plY3Rpb24pOgorICAgICAgICAqIGh0bWwvc2hh
ZG93L0luc2VydGlvblBvaW50Lmg6CisgICAgICAgIChJbnNlcnRpb25Qb2ludCk6CisgICAgICAg
IChXZWJDb3JlKToKKyAgICAgICAgKiB0ZXN0aW5nL0ludGVybmFscy5jcHA6CisgICAgICAgIChX
ZWJDb3JlOjpJbnRlcm5hbHM6Omhhc1NoYWRvd0luc2VydGlvblBvaW50KToKKyAgICAgICAgKFdl
YkNvcmU6OkludGVybmFsczo6aGFzQ29udGVudEVsZW1lbnQpOgorICAgICAgICAoV2ViQ29yZTo6
SW50ZXJuYWxzOjpjb3VudEVsZW1lbnRTaGFkb3cpOgorCiAyMDEzLTAxLTA3ICBYaWFuemh1IFdh
bmcgIDx3YW5neGlhbnpodUBjaHJvbWl1bS5vcmc+CiAKICAgICAgICAgQWRkIGEgc2V0dGluZyB0
byBlbmFibGUgY29tcG9zaXRlZCBzY3JvbGxpbmcgZm9yIGZyYW1lcwpkaWZmIC0tZ2l0IGEvU291
cmNlL1dlYktpdC93aW4vQ2hhbmdlTG9nIGIvU291cmNlL1dlYktpdC93aW4vQ2hhbmdlTG9nCmlu
ZGV4IGRmNmMzZWU1N2UwM2YxOWE1YTcwZTk5YWIzN2JhNzE5ZmQxNjFhYWUuLmJjMGVjNjk5OTNh
ZmJkNzEwODZjZjk4ZjJhNzhiOGE4ZWNlYTNmOTggMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJLaXQv
d2luL0NoYW5nZUxvZworKysgYi9Tb3VyY2UvV2ViS2l0L3dpbi9DaGFuZ2VMb2cKQEAgLTEsMyAr
MSwxMiBAQAorMjAxMy0wMS0wOCAgSGFqaW1lIE1vcnJpdGEgIDxtb3JyaXRhQGdvb2dsZS5jb20+
CisKKyAgICAgICAgW1NoYWRvdyBET01dIERpc3RyaWJ1dGlvbiByZWxhdGVkIGNvZGUgb24gU2hh
ZG93Um9vdCBzaG91bGQgYmUgbWluaW1pemVkLgorICAgICAgICBodHRwczovL2J1Z3Mud2Via2l0
Lm9yZy9zaG93X2J1Zy5jZ2k/aWQ9MTA2MjgyCisKKyAgICAgICAgUmV2aWV3ZWQgYnkgTk9CT0RZ
IChPT1BTISkuCisKKyAgICAgICAgKiBXZWJLaXQudmNwcm9qL1dlYktpdC5kZWYuaW46CisKIDIw
MTMtMDEtMDQgIFJvZ2VyIEZvbmcgIDxyb2dlcl9mb25nQGFwcGxlLmNvbT4KIAogICAgICAgICBN
YWtlIHByaXZhdGUgYnJvd3Npbmcgd29yayBvbiBXaW5kb3dzLgpkaWZmIC0tZ2l0IGEvU291cmNl
L1dlYkNvcmUvV2ViQ29yZS5leHAuaW4gYi9Tb3VyY2UvV2ViQ29yZS9XZWJDb3JlLmV4cC5pbgpp
bmRleCBiZDNmZTg3ZDNmMTZmMDA0NjAwNzM3YmExZTllYjY5ZDhiMzRhMGJiLi4yNzkxYTI2OGY4
MTBhMGU0MjY3NjRlNDY2NDdhZDg5ZWQ3ZjU1ZjE4IDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViQ29y
ZS9XZWJDb3JlLmV4cC5pbgorKysgYi9Tb3VyY2UvV2ViQ29yZS9XZWJDb3JlLmV4cC5pbgpAQCAt
ODIsOSArODIsNiBAQCBfX1pON1dlYkNvcmUxMFNjcm9sbFZpZXcyMXNldERlbGVnYXRlc1Njcm9s
bGluZ0ViCiBfX1pON1dlYkNvcmUxMFNjcm9sbFZpZXcyM3NldFNjcm9sbGJhcnNTdXBwcmVzc2Vk
RWJiCiBfX1pON1dlYkNvcmUxMFNjcm9sbFZpZXcyNHdpbmRvd1Jlc2l6ZXJSZWN0Q2hhbmdlZEV2
CiBfX1pON1dlYkNvcmUxMFNjcm9sbFZpZXc4YWRkQ2hpbGRFTjNXVEYxMFBhc3NSZWZQdHJJTlNf
NldpZGdldEVFRQotX19aTks3V2ViQ29yZTEwU2hhZG93Um9vdDE3aGFzQ29udGVudEVsZW1lbnRF
dgotX19aTks3V2ViQ29yZTEwU2hhZG93Um9vdDE4Y291bnRFbGVtZW50U2hhZG93RXYKLV9fWk5L
N1dlYkNvcmUxMFNoYWRvd1Jvb3QyM2hhc1NoYWRvd0luc2VydGlvblBvaW50RXYKIF9fWk5LN1dl
YkNvcmUxNFNjcm9sbGFibGVBcmVhMTdyZXBvcnRNZW1vcnlVc2FnZUVQTjNXVEYxNk1lbW9yeU9i
amVjdEluZm9FCiBfX1pON1dlYkNvcmUxMFNoYWRvd1Jvb3Q2Y3JlYXRlRVBOU183RWxlbWVudEVS
aQogX19aTjdXZWJDb3JlMTBkZWxldGVGaWxlRVJLTjNXVEY2U3RyaW5nRQpAQCAtNjcyLDYgKzY2
OSw5IEBAIF9fWk43V2ViQ29yZTI0RnJhbWVEZXN0cnVjdGlvbk9ic2VydmVyMTRmcmFtZURlc3Ry
b3llZEV2CiBfX1pON1dlYkNvcmUyNEZyYW1lRGVzdHJ1Y3Rpb25PYnNlcnZlcjE0d2lsbERldGFj
aFBhZ2VFdgogX19aTjdXZWJDb3JlMjRGcmFtZURlc3RydWN0aW9uT2JzZXJ2ZXJDMkVQTlNfNUZy
YW1lRQogX19aTjdXZWJDb3JlMjRGcmFtZURlc3RydWN0aW9uT2JzZXJ2ZXJEMkV2CitfX1pON1dl
YkNvcmUyNFNjb3BlQ29udGVudERpc3RyaWJ1dGlvbjE2aGFzU2hhZG93RWxlbWVudEVQS05TXzEw
U2hhZG93Um9vdEUKK19fWk43V2ViQ29yZTI0U2NvcGVDb250ZW50RGlzdHJpYnV0aW9uMThjb3Vu
dEVsZW1lbnRTaGFkb3dFUEtOU18xMFNoYWRvd1Jvb3RFCitfX1pON1dlYkNvcmUyNFNjb3BlQ29u
dGVudERpc3RyaWJ1dGlvbjE3aGFzQ29udGVudEVsZW1lbnRFUEtOU18xMFNoYWRvd1Jvb3RFCiBf
X1pON1dlYkNvcmUyNGNyZWF0ZUZyYWdtZW50RnJvbU1hcmt1cEVQTlNfOERvY3VtZW50RVJLTjNX
VEY2U3RyaW5nRVM1X05TXzI3RnJhZ21lbnRTY3JpcHRpbmdQZXJtaXNzaW9uRQogX19aTjdXZWJD
b3JlMjRkZWNvZGVVUkxFc2NhcGVTZXF1ZW5jZXNFUktOM1dURjZTdHJpbmdFCiBfX1pON1dlYkNv
cmUyNGRlbGV0ZUNvb2tpZXNGb3JIb3N0bmFtZUVSS05TXzIxTmV0d29ya1N0b3JhZ2VTZXNzaW9u
RVJLTjNXVEY2U3RyaW5nRQpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYkNvcmUvY3NzL1N0eWxlU2Nv
cGVSZXNvbHZlci5jcHAgYi9Tb3VyY2UvV2ViQ29yZS9jc3MvU3R5bGVTY29wZVJlc29sdmVyLmNw
cAppbmRleCAxYzM5MTE3MjgwNzJjNjU4ZTllMjlmODYyNjBmYjY4OWFmMDk5NmNkLi5mZGViZGE0
Y2M4MDYwYmIxZmY5M2NlYWNlMjM5YTYyYWM1ZWQ0ZmE3IDEwMDY0NAotLS0gYS9Tb3VyY2UvV2Vi
Q29yZS9jc3MvU3R5bGVTY29wZVJlc29sdmVyLmNwcAorKysgYi9Tb3VyY2UvV2ViQ29yZS9jc3Mv
U3R5bGVTY29wZVJlc29sdmVyLmNwcApAQCAtMzEsNiArMzEsNyBAQAogCiAjaW5jbHVkZSAiQ1NT
U3R5bGVSdWxlLmgiCiAjaW5jbHVkZSAiQ1NTU3R5bGVTaGVldC5oIgorI2luY2x1ZGUgIkNvbnRl
bnREaXN0cmlidXRvci5oIgogI2luY2x1ZGUgIkNvbnRleHRGZWF0dXJlcy5oIgogI2luY2x1ZGUg
IkVsZW1lbnRTaGFkb3cuaCIKICNpbmNsdWRlICJIVE1MTmFtZXMuaCIKQEAgLTIxMCw3ICsyMTEs
NyBAQCBib29sIFN0eWxlU2NvcGVSZXNvbHZlcjo6c3R5bGVTaGFyaW5nQ2FuZGlkYXRlTWF0Y2hl
c0hvc3RSdWxlcyhjb25zdCBFbGVtZW50KiBlbAogICAgICAgICBpZiAoYXRIb3N0UnVsZVNldEZv
cihzaGFkb3dSb290KSkKICAgICAgICAgICAgIHJldHVybiB0cnVlOwogCi0gICAgICAgIGlmICgh
c2hhZG93Um9vdC0+aGFzU2hhZG93SW5zZXJ0aW9uUG9pbnQoKSkKKyAgICAgICAgaWYgKCFTY29w
ZUNvbnRlbnREaXN0cmlidXRpb246Omhhc1NoYWRvd0VsZW1lbnQoc2hhZG93Um9vdCkpCiAgICAg
ICAgICAgICBicmVhazsKICAgICB9CiAgICAgcmV0dXJuIGZhbHNlOwpAQCAtMjMyLDcgKzIzMyw3
IEBAIHZvaWQgU3R5bGVTY29wZVJlc29sdmVyOjptYXRjaEhvc3RSdWxlcyhjb25zdCBFbGVtZW50
KiBlbGVtZW50LCBWZWN0b3I8UnVsZVNldCo+CiAgICAgZm9yIChTaGFkb3dSb290KiBzaGFkb3dS
b290ID0gc2hhZG93LT55b3VuZ2VzdFNoYWRvd1Jvb3QoKTsgc2hhZG93Um9vdDsgc2hhZG93Um9v
dCA9IHNoYWRvd1Jvb3QtPm9sZGVyU2hhZG93Um9vdCgpKSB7IAogICAgICAgICBpZiAoUnVsZVNl
dCogcnVsZVNldCA9IGF0SG9zdFJ1bGVTZXRGb3Ioc2hhZG93Um9vdCkpCiAgICAgICAgICAgICBt
YXRjaGVkUnVsZXMuYXBwZW5kKHJ1bGVTZXQpOwotICAgICAgICBpZiAoIXNoYWRvd1Jvb3QtPmhh
c1NoYWRvd0luc2VydGlvblBvaW50KCkpCisgICAgICAgIGlmICghU2NvcGVDb250ZW50RGlzdHJp
YnV0aW9uOjpoYXNTaGFkb3dFbGVtZW50KHNoYWRvd1Jvb3QpKQogICAgICAgICAgICAgYnJlYWs7
CiAgICAgfQogfQpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYkNvcmUvZG9tL0NvbXBvc2VkU2hhZG93
VHJlZVdhbGtlci5jcHAgYi9Tb3VyY2UvV2ViQ29yZS9kb20vQ29tcG9zZWRTaGFkb3dUcmVlV2Fs
a2VyLmNwcAppbmRleCAxZDAzYzU0N2UwYjQ5ODdlMjY3MjJiOTM5OWQ2ZjViMGQ1ZmQyYjA4Li42
NWIxMzNjZmIyMjU4ZWVmMjI3OWFlNWFhNmQ1ODdiZDM5NmVlY2U2IDEwMDY0NAotLS0gYS9Tb3Vy
Y2UvV2ViQ29yZS9kb20vQ29tcG9zZWRTaGFkb3dUcmVlV2Fsa2VyLmNwcAorKysgYi9Tb3VyY2Uv
V2ViQ29yZS9kb20vQ29tcG9zZWRTaGFkb3dUcmVlV2Fsa2VyLmNwcApAQCAtNjMsNyArNjMsNyBA
QCBzdGF0aWMgaW5saW5lIGJvb2wgbm9kZUNhbkJlRGlzdHJpYnV0ZWQoY29uc3QgTm9kZSogbm9k
ZSkKICAgICAgICAgcmV0dXJuIGZhbHNlOwogCiAgICAgaWYgKFNoYWRvd1Jvb3QqIHNoYWRvd1Jv
b3QgPSBwYXJlbnQtPmlzU2hhZG93Um9vdCgpID8gdG9TaGFkb3dSb290KHBhcmVudCkgOiAwKQot
ICAgICAgICByZXR1cm4gc2hhZG93Um9vdC0+YXNzaWduZWRUbygpOworICAgICAgICByZXR1cm4g
U2NvcGVDb250ZW50RGlzdHJpYnV0aW9uOjphc3NpZ25lZFRvKHNoYWRvd1Jvb3QpOwogCiAgICAg
aWYgKHBhcmVudC0+aXNFbGVtZW50Tm9kZSgpICYmIHRvRWxlbWVudChwYXJlbnQpLT5zaGFkb3co
KSkKICAgICAgICAgcmV0dXJuIHRydWU7CkBAIC0xOTgsNyArMTk4LDcgQEAgTm9kZSogQ29tcG9z
ZWRTaGFkb3dUcmVlV2Fsa2VyOjp0cmF2ZXJzZUJhY2tUb1lvdW5nZXJTaGFkb3dSb290KGNvbnN0
IE5vZGUqIG5vZGUKICAgICBpZiAobm9kZS0+cGFyZW50Tm9kZSgpICYmIG5vZGUtPnBhcmVudE5v
ZGUoKS0+aXNTaGFkb3dSb290KCkpIHsKICAgICAgICAgU2hhZG93Um9vdCogcGFyZW50U2hhZG93
Um9vdCA9IHRvU2hhZG93Um9vdChub2RlLT5wYXJlbnROb2RlKCkpOwogICAgICAgICBpZiAoIXBh
cmVudFNoYWRvd1Jvb3QtPmlzWW91bmdlc3QoKSkgewotICAgICAgICAgICAgSW5zZXJ0aW9uUG9p
bnQqIGFzc2lnbmVkSW5zZXJ0aW9uUG9pbnQgPSBwYXJlbnRTaGFkb3dSb290LT5hc3NpZ25lZFRv
KCk7CisgICAgICAgICAgICBJbnNlcnRpb25Qb2ludCogYXNzaWduZWRJbnNlcnRpb25Qb2ludCA9
IFNjb3BlQ29udGVudERpc3RyaWJ1dGlvbjo6YXNzaWduZWRUbyhwYXJlbnRTaGFkb3dSb290KTsK
ICAgICAgICAgICAgIEFTU0VSVChhc3NpZ25lZEluc2VydGlvblBvaW50KTsKICAgICAgICAgICAg
IHJldHVybiB0cmF2ZXJzZVNpYmxpbmdJbkN1cnJlbnRUcmVlKGFzc2lnbmVkSW5zZXJ0aW9uUG9p
bnQsIGRpcmVjdGlvbik7CiAgICAgICAgIH0KQEAgLTI2Nyw3ICsyNjcsNyBAQCBpbmxpbmUgTm9k
ZSogQ29tcG9zZWRTaGFkb3dUcmVlV2Fsa2VyOjp0cmF2ZXJzZVBhcmVudEluQ3VycmVudFRyZWUo
Y29uc3QgTm9kZSogbgogTm9kZSogQ29tcG9zZWRTaGFkb3dUcmVlV2Fsa2VyOjp0cmF2ZXJzZVBh
cmVudEJhY2tUb1lvdW5nZXJTaGFkb3dSb290T3JIb3N0KGNvbnN0IFNoYWRvd1Jvb3QqIHNoYWRv
d1Jvb3QsIFBhcmVudFRyYXZlcnNhbERldGFpbHMqIGRldGFpbHMpIGNvbnN0CiB7CiAgICAgQVNT
RVJUKHNoYWRvd1Jvb3QpOwotICAgIEFTU0VSVCghc2hhZG93Um9vdC0+YXNzaWduZWRUbygpKTsK
KyAgICBBU1NFUlQoIVNjb3BlQ29udGVudERpc3RyaWJ1dGlvbjo6YXNzaWduZWRUbyhzaGFkb3dS
b290KSk7CiAKICAgICBpZiAoc2hhZG93Um9vdC0+aXNZb3VuZ2VzdCgpKSB7CiAgICAgICAgIGlm
IChjYW5Dcm9zc1VwcGVyQm91bmRhcnkoKSkgewpAQCAtMzQzLDE0ICszNDMsMTQgQEAgdm9pZCBB
bmNlc3RvckNoYWluV2Fsa2VyOjpwYXJlbnQoKQogICAgIH0KICAgICBpZiAoIW1fbm9kZS0+aXNT
aGFkb3dSb290KCkpIHsKICAgICAgICAgbV9ub2RlID0gbV9ub2RlLT5wYXJlbnROb2RlKCk7Ci0g
ICAgICAgIGlmICghKG1fbm9kZSAmJiBtX25vZGUtPmlzU2hhZG93Um9vdCgpICYmIHRvU2hhZG93
Um9vdChtX25vZGUpLT5hc3NpZ25lZFRvKCkpKQorICAgICAgICBpZiAoIShtX25vZGUgJiYgbV9u
b2RlLT5pc1NoYWRvd1Jvb3QoKSAmJiBTY29wZUNvbnRlbnREaXN0cmlidXRpb246OmFzc2lnbmVk
VG8odG9TaGFkb3dSb290KG1fbm9kZSkpKSkKICAgICAgICAgICAgIG1fZGlzdHJpYnV0ZWROb2Rl
ID0gbV9ub2RlOwogICAgICAgICBtX2lzQ3Jvc3NpbmdJbnNlcnRpb25Qb2ludCA9IGZhbHNlOwog
ICAgICAgICByZXR1cm47CiAgICAgfQogCiAgICAgY29uc3QgU2hhZG93Um9vdCogc2hhZG93Um9v
dCA9IHRvU2hhZG93Um9vdChtX25vZGUpOwotICAgIGlmIChJbnNlcnRpb25Qb2ludCogaW5zZXJ0
aW9uUG9pbnQgPSBzaGFkb3dSb290LT5hc3NpZ25lZFRvKCkpIHsKKyAgICBpZiAoSW5zZXJ0aW9u
UG9pbnQqIGluc2VydGlvblBvaW50ID0gU2NvcGVDb250ZW50RGlzdHJpYnV0aW9uOjphc3NpZ25l
ZFRvKHNoYWRvd1Jvb3QpKSB7CiAgICAgICAgIG1fbm9kZSA9IGluc2VydGlvblBvaW50OwogICAg
ICAgICBtX2lzQ3Jvc3NpbmdJbnNlcnRpb25Qb2ludCA9IHRydWU7CiAgICAgICAgIHJldHVybjsK
ZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJDb3JlL2RvbS9FbGVtZW50U2hhZG93LmNwcCBiL1NvdXJj
ZS9XZWJDb3JlL2RvbS9FbGVtZW50U2hhZG93LmNwcAppbmRleCAxNDkzYWY3OTI1MzJlMjdjYmIy
Zjg0MmE1NGNiNDZjYTQ0YzRmMmZiLi5kOTYyYzcwYmRjZDhiOTRkNjk1Y2U0N2NlNmU3MjNiNTJj
NzExMGNkIDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViQ29yZS9kb20vRWxlbWVudFNoYWRvdy5jcHAK
KysrIGIvU291cmNlL1dlYkNvcmUvZG9tL0VsZW1lbnRTaGFkb3cuY3BwCkBAIC0yMzMsNyArMjMz
LDcgQEAgdm9pZCBFbGVtZW50U2hhZG93OjplbnN1cmVTZWxlY3RGZWF0dXJlU2V0Q29sbGVjdGVk
KCkKIAogdm9pZCBFbGVtZW50U2hhZG93Ojpjb2xsZWN0U2VsZWN0RmVhdHVyZVNldEZyb20oU2hh
ZG93Um9vdCogcm9vdCkKIHsKLSAgICBpZiAocm9vdC0+aGFzRWxlbWVudFNoYWRvdygpKSB7Cisg
ICAgaWYgKFNjb3BlQ29udGVudERpc3RyaWJ1dGlvbjo6aGFzRWxlbWVudFNoYWRvdyhyb290KSkg
ewogICAgICAgICBmb3IgKEVsZW1lbnQqIGVsZW1lbnQgPSBFbGVtZW50VHJhdmVyc2FsOjpmaXJz
dFdpdGhpbihyb290KTsgZWxlbWVudDsgZWxlbWVudCA9IEVsZW1lbnRUcmF2ZXJzYWw6Om5leHQo
ZWxlbWVudCkpIHsKICAgICAgICAgICAgIGlmIChFbGVtZW50U2hhZG93KiBlbGVtZW50U2hhZG93
ID0gZWxlbWVudC0+c2hhZG93KCkpIHsKICAgICAgICAgICAgICAgICBlbGVtZW50U2hhZG93LT5l
bnN1cmVTZWxlY3RGZWF0dXJlU2V0Q29sbGVjdGVkKCk7CkBAIC0yNDIsNyArMjQyLDcgQEAgdm9p
ZCBFbGVtZW50U2hhZG93Ojpjb2xsZWN0U2VsZWN0RmVhdHVyZVNldEZyb20oU2hhZG93Um9vdCog
cm9vdCkKICAgICAgICAgfQogICAgIH0KIAotICAgIGlmIChyb290LT5oYXNDb250ZW50RWxlbWVu
dCgpKSB7CisgICAgaWYgKFNjb3BlQ29udGVudERpc3RyaWJ1dGlvbjo6aGFzQ29udGVudEVsZW1l
bnQocm9vdCkpIHsKICAgICAgICAgZm9yIChFbGVtZW50KiBlbGVtZW50ID0gRWxlbWVudFRyYXZl
cnNhbDo6Zmlyc3RXaXRoaW4ocm9vdCk7IGVsZW1lbnQ7IGVsZW1lbnQgPSBFbGVtZW50VHJhdmVy
c2FsOjpuZXh0KGVsZW1lbnQpKSB7CiAgICAgICAgICAgICBpZiAoaXNIVE1MQ29udGVudEVsZW1l
bnQoZWxlbWVudCkpIHsKICAgICAgICAgICAgICAgICBjb25zdCBDU1NTZWxlY3Rvckxpc3QmIGxp
c3QgPSB0b0hUTUxDb250ZW50RWxlbWVudChlbGVtZW50KS0+c2VsZWN0b3JMaXN0KCk7CmRpZmYg
LS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9kb20vU2hhZG93Um9vdC5jcHAgYi9Tb3VyY2UvV2ViQ29y
ZS9kb20vU2hhZG93Um9vdC5jcHAKaW5kZXggNjE5YTY0NmIwMjlmMDA0YjdhNzY3MDM2Mzk3ODU0
NzRhNzk5ZTMwOS4uNjMzZTRjNDdkY2RmMTA2M2VlMDJiMjY0YzU4MWE0MWQ3MzY2ZDk2OCAxMDA2
NDQKLS0tIGEvU291cmNlL1dlYkNvcmUvZG9tL1NoYWRvd1Jvb3QuY3BwCisrKyBiL1NvdXJjZS9X
ZWJDb3JlL2RvbS9TaGFkb3dSb290LmNwcApAQCAtMjI2LDExICsyMjYsNiBAQCBFbGVtZW50U2hh
ZG93KiBTaGFkb3dSb290Ojpvd25lcigpIGNvbnN0CiAgICAgcmV0dXJuIDA7CiB9CiAKLWJvb2wg
U2hhZG93Um9vdDo6aGFzSW5zZXJ0aW9uUG9pbnQoKSBjb25zdAotewotICAgIHJldHVybiBoYXNT
aGFkb3dJbnNlcnRpb25Qb2ludCgpIHx8IGhhc0NvbnRlbnRFbGVtZW50KCk7Ci19Ci0KIGJvb2wg
U2hhZG93Um9vdDo6YXBwbHlBdXRob3JTdHlsZXMoKSBjb25zdAogewogICAgIHJldHVybiBtX2Fw
cGx5QXV0aG9yU3R5bGVzOwpAQCAtMjg0LDcgKzI3OSw3IEBAIE5vZGU6Okluc2VydGlvbk5vdGlm
aWNhdGlvblJlcXVlc3QgU2hhZG93Um9vdDo6aW5zZXJ0ZWRJbnRvKENvbnRhaW5lck5vZGUqIGlu
c2VyCiAgICAgICAgIHJldHVybiBJbnNlcnRpb25Eb25lOwogCiAgICAgaWYgKFNoYWRvd1Jvb3Qq
IHJvb3QgPSBob3N0KCktPmNvbnRhaW5pbmdTaGFkb3dSb290KCkpIHsKLSAgICAgICAgcm9vdC0+
cmVnaXN0ZXJFbGVtZW50U2hhZG93KCk7CisgICAgICAgIHJvb3QtPmVuc3VyZVNjb3BlRGlzdHJp
YnV0aW9uKCktPnJlZ2lzdGVyRWxlbWVudFNoYWRvdygpOwogICAgICAgICBtX3JlZ2lzdGVyZWRX
aXRoUGFyZW50U2hhZG93Um9vdCA9IHRydWU7CiAgICAgfQogCkBAIC0yOTgsMjggKzI5MywxNCBA
QCB2b2lkIFNoYWRvd1Jvb3Q6OnJlbW92ZWRGcm9tKENvbnRhaW5lck5vZGUqIGluc2VydGlvblBv
aW50KQogICAgICAgICBpZiAoIXJvb3QpCiAgICAgICAgICAgICByb290ID0gaW5zZXJ0aW9uUG9p
bnQtPmNvbnRhaW5pbmdTaGFkb3dSb290KCk7CiAKLSAgICAgICAgaWYgKHJvb3QpCi0gICAgICAg
ICAgICByb290LT51bnJlZ2lzdGVyRWxlbWVudFNoYWRvdygpOworICAgICAgICBpZiAocm9vdCAm
JiByb290LT5zY29wZURpc3RyaWJ1dGlvbigpKQorICAgICAgICAgICAgcm9vdC0+c2NvcGVEaXN0
cmlidXRpb24oKS0+dW5yZWdpc3RlckVsZW1lbnRTaGFkb3coKTsKICAgICAgICAgbV9yZWdpc3Rl
cmVkV2l0aFBhcmVudFNoYWRvd1Jvb3QgPSBmYWxzZTsKICAgICB9CiAKICAgICBEb2N1bWVudEZy
YWdtZW50OjpyZW1vdmVkRnJvbShpbnNlcnRpb25Qb2ludCk7CiB9CiAKLUluc2VydGlvblBvaW50
KiBTaGFkb3dSb290Ojphc3NpZ25lZFRvKCkgY29uc3QKLXsKLSAgICBpZiAoIWRpc3RyaWJ1dGlv
bkRhdGEoKSkKLSAgICAgICAgcmV0dXJuIDA7Ci0KLSAgICByZXR1cm4gZGlzdHJpYnV0aW9uRGF0
YSgpLT5pbnNlcnRpb25Qb2ludEFzc2lnbmVkVG8oKTsKLX0KLQotdm9pZCBTaGFkb3dSb290Ojpz
ZXRBc3NpZ25lZFRvKEluc2VydGlvblBvaW50KiBpbnNlcnRpb25Qb2ludCkKLXsKLSAgICBBU1NF
UlQoIWFzc2lnbmVkVG8oKSB8fCAhaW5zZXJ0aW9uUG9pbnQpOwotICAgIGVuc3VyZURpc3RyaWJ1
dGlvbkRhdGEoKS0+c2V0SW5zZXJ0aW9uUG9pbnRBc3NpZ25lZFRvKGluc2VydGlvblBvaW50KTsK
LX0KLQogdm9pZCBTaGFkb3dSb290OjpjaGlsZHJlbkNoYW5nZWQoYm9vbCBjaGFuZ2VkQnlQYXJz
ZXIsIE5vZGUqIGJlZm9yZUNoYW5nZSwgTm9kZSogYWZ0ZXJDaGFuZ2UsIGludCBjaGlsZENvdW50
RGVsdGEpCiB7CiAgICAgR3VhcmRPcnBoYW5TaGFkb3dSb290KHsgfSk7CkBAIC0zMjgsMTQgKzMw
OSw2IEBAIHZvaWQgU2hhZG93Um9vdDo6Y2hpbGRyZW5DaGFuZ2VkKGJvb2wgY2hhbmdlZEJ5UGFy
c2VyLCBOb2RlKiBiZWZvcmVDaGFuZ2UsIE5vZGUqCiAgICAgb3duZXIoKS0+aW52YWxpZGF0ZURp
c3RyaWJ1dGlvbigpOwogfQogCi1jb25zdCBWZWN0b3I8UmVmUHRyPEluc2VydGlvblBvaW50PiA+
JiBTaGFkb3dSb290OjppbnNlcnRpb25Qb2ludExpc3QoKQotewotICAgIHR5cGVkZWYgVmVjdG9y
PFJlZlB0cjxJbnNlcnRpb25Qb2ludD4gPiBJbnNlcnRpb25Qb2ludFZlY3RvcjsKLSAgICBERUZJ
TkVfU1RBVElDX0xPQ0FMKEluc2VydGlvblBvaW50VmVjdG9yLCBlbXB0eVZlY3RvciwgKCkpOwot
Ci0gICAgcmV0dXJuIGRpc3RyaWJ1dGlvbkRhdGEoKSA/IGRpc3RyaWJ1dGlvbkRhdGEoKS0+ZW5z
dXJlSW5zZXJ0aW9uUG9pbnRMaXN0KHRoaXMpIDogZW1wdHlWZWN0b3I7Ci19Ci0KIHZvaWQgU2hh
ZG93Um9vdDo6cmVnaXN0ZXJTY29wZWRIVE1MU3R5bGVDaGlsZCgpCiB7CiAgICAgKyttX251bWJl
ck9mU3R5bGVzOwpAQCAtMzQ5LDY4ICszMjIsMTUgQEAgdm9pZCBTaGFkb3dSb290Ojp1bnJlZ2lz
dGVyU2NvcGVkSFRNTFN0eWxlQ2hpbGQoKQogICAgIHNldEhhc1Njb3BlZEhUTUxTdHlsZUNoaWxk
KG1fbnVtYmVyT2ZTdHlsZXMgPiAwKTsKIH0KIAotaW5saW5lIFNoYWRvd1Jvb3RDb250ZW50RGlz
dHJpYnV0aW9uRGF0YSogU2hhZG93Um9vdDo6ZW5zdXJlRGlzdHJpYnV0aW9uRGF0YSgpCitTY29w
ZUNvbnRlbnREaXN0cmlidXRpb24qIFNoYWRvd1Jvb3Q6OmVuc3VyZVNjb3BlRGlzdHJpYnV0aW9u
KCkKIHsKLSAgICBpZiAobV9kaXN0cmlidXRpb25EYXRhKQotICAgICAgICByZXR1cm4gbV9kaXN0
cmlidXRpb25EYXRhLmdldCgpOworICAgIGlmIChtX3Njb3BlRGlzdHJpYnV0aW9uKQorICAgICAg
ICByZXR1cm4gbV9zY29wZURpc3RyaWJ1dGlvbi5nZXQoKTsKIAotICAgIG1fZGlzdHJpYnV0aW9u
RGF0YSA9IGFkb3B0UHRyKG5ldyBTaGFkb3dSb290Q29udGVudERpc3RyaWJ1dGlvbkRhdGEpOwot
ICAgIHJldHVybiBtX2Rpc3RyaWJ1dGlvbkRhdGEuZ2V0KCk7CisgICAgbV9zY29wZURpc3RyaWJ1
dGlvbiA9IGFkb3B0UHRyKG5ldyBTY29wZUNvbnRlbnREaXN0cmlidXRpb24pOworICAgIHJldHVy
biBtX3Njb3BlRGlzdHJpYnV0aW9uLmdldCgpOwogfSAgIAogCi12b2lkIFNoYWRvd1Jvb3Q6OnJl
Z2lzdGVySW5zZXJ0aW9uUG9pbnQoSW5zZXJ0aW9uUG9pbnQqIHBvaW50KQotewotICAgIGVuc3Vy
ZURpc3RyaWJ1dGlvbkRhdGEoKS0+cmVnaXRlckluc2VydGlvblBvaW50KHRoaXMsIHBvaW50KTsK
LX0KLQotdm9pZCBTaGFkb3dSb290Ojp1bnJlZ2lzdGVySW5zZXJ0aW9uUG9pbnQoSW5zZXJ0aW9u
UG9pbnQqIHBvaW50KQotewotICAgIGVuc3VyZURpc3RyaWJ1dGlvbkRhdGEoKS0+dW5yZWdpc3Rl
ckluc2VydGlvblBvaW50KHRoaXMsIHBvaW50KTsKLX0KLQotYm9vbCBTaGFkb3dSb290OjpoYXNT
aGFkb3dJbnNlcnRpb25Qb2ludCgpIGNvbnN0Ci17Ci0gICAgaWYgKCFkaXN0cmlidXRpb25EYXRh
KCkpCi0gICAgICAgIHJldHVybiBmYWxzZTsKLQotICAgIHJldHVybiBkaXN0cmlidXRpb25EYXRh
KCktPmhhc1NoYWRvd0VsZW1lbnRDaGlsZHJlbigpOwotfQotCi1ib29sIFNoYWRvd1Jvb3Q6Omhh
c0NvbnRlbnRFbGVtZW50KCkgY29uc3QKLXsKLSAgICBpZiAoIWRpc3RyaWJ1dGlvbkRhdGEoKSkK
LSAgICAgICAgcmV0dXJuIGZhbHNlOwotCi0gICAgcmV0dXJuIGRpc3RyaWJ1dGlvbkRhdGEoKS0+
aGFzQ29udGVudEVsZW1lbnRDaGlsZHJlbigpOwotfQotCi12b2lkIFNoYWRvd1Jvb3Q6OnJlZ2lz
dGVyRWxlbWVudFNoYWRvdygpCi17Ci0gICAgZW5zdXJlRGlzdHJpYnV0aW9uRGF0YSgpLT5pbmNy
ZW1lbnROdW1iZXJPZkVsZW1lbnRTaGFkb3dDaGlsZHJlbigpOwotfQotCi12b2lkIFNoYWRvd1Jv
b3Q6OnVucmVnaXN0ZXJFbGVtZW50U2hhZG93KCkKLXsKLSAgICBBU1NFUlQoaGFzRWxlbWVudFNo
YWRvdygpKTsKLSAgICBkaXN0cmlidXRpb25EYXRhKCktPmRlY3JlbWVudE51bWJlck9mRWxlbWVu
dFNoYWRvd0NoaWxkcmVuKCk7Ci19Ci0KLWJvb2wgU2hhZG93Um9vdDo6aGFzRWxlbWVudFNoYWRv
dygpIGNvbnN0Ci17Ci0gICAgaWYgKCFkaXN0cmlidXRpb25EYXRhKCkpCi0gICAgICAgIHJldHVy
biBmYWxzZTsKLQotICAgIHJldHVybiBkaXN0cmlidXRpb25EYXRhKCktPmhhc0VsZW1lbnRTaGFk
b3dDaGlsZHJlbigpOwotfQotCi11bnNpZ25lZCBTaGFkb3dSb290Ojpjb3VudEVsZW1lbnRTaGFk
b3coKSBjb25zdCAKLXsKLSAgICBpZiAoIWRpc3RyaWJ1dGlvbkRhdGEoKSkKLSAgICAgICAgcmV0
dXJuIDA7Ci0KLSAgICByZXR1cm4gZGlzdHJpYnV0aW9uRGF0YSgpLT5udW1iZXJPZkVsZW1lbnRT
aGFkb3dDaGlsZHJlbigpOwotfQotCiB2b2lkIFNoYWRvd1Jvb3Q6OnJlcG9ydE1lbW9yeVVzYWdl
KE1lbW9yeU9iamVjdEluZm8qIG1lbW9yeU9iamVjdEluZm8pIGNvbnN0CiB7CiAgICAgTWVtb3J5
Q2xhc3NJbmZvIGluZm8obWVtb3J5T2JqZWN0SW5mbywgdGhpcywgV2ViQ29yZU1lbW9yeVR5cGVz
OjpET00pOwpAQCAtNDE4LDcgKzMzOCw3IEBAIHZvaWQgU2hhZG93Um9vdDo6cmVwb3J0TWVtb3J5
VXNhZ2UoTWVtb3J5T2JqZWN0SW5mbyogbWVtb3J5T2JqZWN0SW5mbykgY29uc3QKICAgICBUcmVl
U2NvcGU6OnJlcG9ydE1lbW9yeVVzYWdlKG1lbW9yeU9iamVjdEluZm8pOwogICAgIGluZm8uYWRk
TWVtYmVyKG1fcHJldik7CiAgICAgaW5mby5hZGRNZW1iZXIobV9uZXh0KTsKLSAgICBpbmZvLmFk
ZE1lbWJlcihtX2Rpc3RyaWJ1dGlvbkRhdGEpOworICAgIGluZm8uYWRkTWVtYmVyKG1fc2NvcGVE
aXN0cmlidXRpb24pOwogfQogCiB9CmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9kb20vU2hh
ZG93Um9vdC5oIGIvU291cmNlL1dlYkNvcmUvZG9tL1NoYWRvd1Jvb3QuaAppbmRleCA5NDE0ODhj
OTU4MDVjOTExMDMzN2RmOTBjZGRjYjE2NzBkNWUxMmY4Li40NzlhMWExZmJlNDVjM2U3OGU4OTU3
MGE2NmU4NmI4NTI3Y2VmNTc5IDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViQ29yZS9kb20vU2hhZG93
Um9vdC5oCisrKyBiL1NvdXJjZS9XZWJDb3JlL2RvbS9TaGFkb3dSb290LmgKQEAgLTQxLDcgKzQx
LDcgQEAgY2xhc3MgRG9jdW1lbnQ7CiBjbGFzcyBET01TZWxlY3Rpb247CiBjbGFzcyBFbGVtZW50
U2hhZG93OwogY2xhc3MgSW5zZXJ0aW9uUG9pbnQ7Ci1jbGFzcyBTaGFkb3dSb290Q29udGVudERp
c3RyaWJ1dGlvbkRhdGE7CitjbGFzcyBTY29wZUNvbnRlbnREaXN0cmlidXRpb247CiAKIGNsYXNz
IFNoYWRvd1Jvb3QgOiBwdWJsaWMgRG9jdW1lbnRGcmFnbWVudCwgcHVibGljIFRyZWVTY29wZSwg
cHVibGljIERvdWJseUxpbmtlZExpc3ROb2RlPFNoYWRvd1Jvb3Q+IHsKICAgICBmcmllbmQgY2xh
c3MgV1RGOjpEb3VibHlMaW5rZWRMaXN0Tm9kZTxTaGFkb3dSb290PjsKQEAgLTgwLDMzICs4MCwx
OCBAQCBwdWJsaWM6CiAgICAgYm9vbCBpc1lvdW5nZXN0KCkgY29uc3QgeyByZXR1cm4gIXlvdW5n
ZXJTaGFkb3dSb290KCk7IH0KICAgICBib29sIGlzT2xkZXN0KCkgY29uc3QgeyByZXR1cm4gIW9s
ZGVyU2hhZG93Um9vdCgpOyB9CiAKLSAgICBib29sIGhhc0luc2VydGlvblBvaW50KCkgY29uc3Q7
Ci0KICAgICB2aXJ0dWFsIHZvaWQgYXR0YWNoKCk7CiAKICAgICB2aXJ0dWFsIEluc2VydGlvbk5v
dGlmaWNhdGlvblJlcXVlc3QgaW5zZXJ0ZWRJbnRvKENvbnRhaW5lck5vZGUqKSBPVkVSUklERTsK
ICAgICB2aXJ0dWFsIHZvaWQgcmVtb3ZlZEZyb20oQ29udGFpbmVyTm9kZSopIE9WRVJSSURFOwog
Ci0gICAgYm9vbCBpc1VzZWRGb3JSZW5kZXJpbmcoKSBjb25zdDsKLSAgICBJbnNlcnRpb25Qb2lu
dCogYXNzaWduZWRUbygpIGNvbnN0OwotICAgIHZvaWQgc2V0QXNzaWduZWRUbyhJbnNlcnRpb25Q
b2ludCopOwotCi0gICAgYm9vbCBoYXNTaGFkb3dJbnNlcnRpb25Qb2ludCgpIGNvbnN0OwotICAg
IGJvb2wgaGFzQ29udGVudEVsZW1lbnQoKSBjb25zdDsKLQotICAgIHZvaWQgcmVnaXN0ZXJJbnNl
cnRpb25Qb2ludChJbnNlcnRpb25Qb2ludCopOwotICAgIHZvaWQgdW5yZWdpc3Rlckluc2VydGlv
blBvaW50KEluc2VydGlvblBvaW50Kik7Ci0gICAgCi0gICAgdm9pZCByZWdpc3RlckVsZW1lbnRT
aGFkb3coKTsKLSAgICB2b2lkIHVucmVnaXN0ZXJFbGVtZW50U2hhZG93KCk7Ci0gICAgYm9vbCBo
YXNFbGVtZW50U2hhZG93KCkgY29uc3Q7Ci0gICAgdW5zaWduZWQgY291bnRFbGVtZW50U2hhZG93
KCkgY29uc3Q7Ci0KLSAgICBjb25zdCBWZWN0b3I8UmVmUHRyPEluc2VydGlvblBvaW50PiA+JiBp
bnNlcnRpb25Qb2ludExpc3QoKTsKLQogICAgIHZpcnR1YWwgdm9pZCByZWdpc3RlclNjb3BlZEhU
TUxTdHlsZUNoaWxkKCkgT1ZFUlJJREU7CiAgICAgdmlydHVhbCB2b2lkIHVucmVnaXN0ZXJTY29w
ZWRIVE1MU3R5bGVDaGlsZCgpIE9WRVJSSURFOwogCisgICAgU2NvcGVDb250ZW50RGlzdHJpYnV0
aW9uKiBzY29wZURpc3RyaWJ1dGlvbigpIHsgcmV0dXJuIG1fc2NvcGVEaXN0cmlidXRpb24uZ2V0
KCk7IH0KKyAgICBjb25zdCBTY29wZUNvbnRlbnREaXN0cmlidXRpb24qIHNjb3BlRGlzdHJpYnV0
aW9uKCkgY29uc3QgeyByZXR1cm4gbV9zY29wZURpc3RyaWJ1dGlvbi5nZXQoKTsgfQorICAgIFNj
b3BlQ29udGVudERpc3RyaWJ1dGlvbiogZW5zdXJlU2NvcGVEaXN0cmlidXRpb24oKTsKKwogICAg
IFNoYWRvd1Jvb3RUeXBlIHR5cGUoKSBjb25zdCB7IHJldHVybiBtX2lzQXV0aG9yU2hhZG93Um9v
dCA/IEF1dGhvclNoYWRvd1Jvb3QgOiBVc2VyQWdlbnRTaGFkb3dSb290OyB9CiAgICAgYm9vbCBp
c0FjY2Vzc2libGUoKSBjb25zdCB7IHJldHVybiB0eXBlKCkgPT0gQXV0aG9yU2hhZG93Um9vdDsg
fQogCkBAIC0xMjQsMTMgKzEwOSw5IEBAIHByaXZhdGU6CiAKICAgICB2b2lkIHNldFR5cGUoU2hh
ZG93Um9vdFR5cGUgdHlwZSkgeyBtX2lzQXV0aG9yU2hhZG93Um9vdCA9IHR5cGUgPT0gQXV0aG9y
U2hhZG93Um9vdDsgfQogCi0gICAgU2hhZG93Um9vdENvbnRlbnREaXN0cmlidXRpb25EYXRhKiBk
aXN0cmlidXRpb25EYXRhKCkgeyByZXR1cm4gbV9kaXN0cmlidXRpb25EYXRhLmdldCgpOyB9Ci0g
ICAgY29uc3QgU2hhZG93Um9vdENvbnRlbnREaXN0cmlidXRpb25EYXRhKiBkaXN0cmlidXRpb25E
YXRhKCkgY29uc3QgeyByZXR1cm4gbV9kaXN0cmlidXRpb25EYXRhLmdldCgpOyB9Ci0gICAgU2hh
ZG93Um9vdENvbnRlbnREaXN0cmlidXRpb25EYXRhKiBlbnN1cmVEaXN0cmlidXRpb25EYXRhKCk7
Ci0KICAgICBTaGFkb3dSb290KiBtX3ByZXY7CiAgICAgU2hhZG93Um9vdCogbV9uZXh0OwotICAg
IE93blB0cjxTaGFkb3dSb290Q29udGVudERpc3RyaWJ1dGlvbkRhdGE+IG1fZGlzdHJpYnV0aW9u
RGF0YTsKKyAgICBPd25QdHI8U2NvcGVDb250ZW50RGlzdHJpYnV0aW9uPiBtX3Njb3BlRGlzdHJp
YnV0aW9uOwogICAgIHVuc2lnbmVkIG1fbnVtYmVyT2ZTdHlsZXMgOiAyODsKICAgICB1bnNpZ25l
ZCBtX2FwcGx5QXV0aG9yU3R5bGVzIDogMTsKICAgICB1bnNpZ25lZCBtX3Jlc2V0U3R5bGVJbmhl
cml0YW5jZSA6IDE7CkBAIC0xNDgsMTEgKzEyOSw2IEBAIGlubGluZSB2b2lkIFNoYWRvd1Jvb3Q6
OnNldEhvc3QoRWxlbWVudCogaG9zdCkKICAgICBzZXRQYXJlbnRPckhvc3ROb2RlKGhvc3QpOwog
fQogCi1pbmxpbmUgYm9vbCBTaGFkb3dSb290Ojppc1VzZWRGb3JSZW5kZXJpbmcoKSBjb25zdAot
ewotICAgIHJldHVybiBpc1lvdW5nZXN0KCkgfHwgYXNzaWduZWRUbygpOwotfQotCiBpbmxpbmUg
RWxlbWVudCogU2hhZG93Um9vdDo6YWN0aXZlRWxlbWVudCgpIGNvbnN0CiB7CiAgICAgaWYgKE5v
ZGUqIG5vZGUgPSB0cmVlU2NvcGUoKS0+Zm9jdXNlZE5vZGUoKSkKZGlmZiAtLWdpdCBhL1NvdXJj
ZS9XZWJDb3JlL2h0bWwvc2hhZG93L0NvbnRlbnREaXN0cmlidXRvci5jcHAgYi9Tb3VyY2UvV2Vi
Q29yZS9odG1sL3NoYWRvdy9Db250ZW50RGlzdHJpYnV0b3IuY3BwCmluZGV4IDI1MzdlOTljODUy
NmZhZjBjYTc3OWI2NjExYzlhZmY2Mjg3NGZiOTcuLjc3YzRkM2IxNmExZDA4MDAyZGY1Y2M1NjVm
NTBlNDU2Y2FkMTA3M2EgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJDb3JlL2h0bWwvc2hhZG93L0Nv
bnRlbnREaXN0cmlidXRvci5jcHAKKysrIGIvU291cmNlL1dlYkNvcmUvaHRtbC9zaGFkb3cvQ29u
dGVudERpc3RyaWJ1dG9yLmNwcApAQCAtNzYsNyArNzYsNyBAQCBOb2RlKiBDb250ZW50RGlzdHJp
YnV0aW9uOjpwcmV2aW91c1RvKGNvbnN0IE5vZGUqIG5vZGUpIGNvbnN0CiB9CiAKIAotU2hhZG93
Um9vdENvbnRlbnREaXN0cmlidXRpb25EYXRhOjpTaGFkb3dSb290Q29udGVudERpc3RyaWJ1dGlv
bkRhdGEoKQorU2NvcGVDb250ZW50RGlzdHJpYnV0aW9uOjpTY29wZUNvbnRlbnREaXN0cmlidXRp
b24oKQogICAgIDogbV9pbnNlcnRpb25Qb2ludEFzc2lnbmVkVG8oMCkKICAgICAsIG1fbnVtYmVy
T2ZTaGFkb3dFbGVtZW50Q2hpbGRyZW4oMCkKICAgICAsIG1fbnVtYmVyT2ZDb250ZW50RWxlbWVu
dENoaWxkcmVuKDApCkBAIC04NSwxMyArODUsMTMgQEAgU2hhZG93Um9vdENvbnRlbnREaXN0cmli
dXRpb25EYXRhOjpTaGFkb3dSb290Q29udGVudERpc3RyaWJ1dGlvbkRhdGEoKQogewogfQogCi12
b2lkIFNoYWRvd1Jvb3RDb250ZW50RGlzdHJpYnV0aW9uRGF0YTo6aW52YWxpZGF0ZUluc2VydGlv
blBvaW50TGlzdCgpCit2b2lkIFNjb3BlQ29udGVudERpc3RyaWJ1dGlvbjo6aW52YWxpZGF0ZUlu
c2VydGlvblBvaW50TGlzdCgpCiB7CiAgICAgbV9pbnNlcnRpb25Qb2ludExpc3RJc1ZhbGlkID0g
ZmFsc2U7CiAgICAgbV9pbnNlcnRpb25Qb2ludExpc3QuY2xlYXIoKTsKIH0KIAotY29uc3QgVmVj
dG9yPFJlZlB0cjxJbnNlcnRpb25Qb2ludD4gPiYgU2hhZG93Um9vdENvbnRlbnREaXN0cmlidXRp
b25EYXRhOjplbnN1cmVJbnNlcnRpb25Qb2ludExpc3QoU2hhZG93Um9vdCogc2hhZG93Um9vdCkK
K2NvbnN0IFZlY3RvcjxSZWZQdHI8SW5zZXJ0aW9uUG9pbnQ+ID4mIFNjb3BlQ29udGVudERpc3Ry
aWJ1dGlvbjo6ZW5zdXJlSW5zZXJ0aW9uUG9pbnRMaXN0KFNoYWRvd1Jvb3QqIHNoYWRvd1Jvb3Qp
CiB7CiAgICAgaWYgKG1faW5zZXJ0aW9uUG9pbnRMaXN0SXNWYWxpZCkKICAgICAgICAgcmV0dXJu
IG1faW5zZXJ0aW9uUG9pbnRMaXN0OwpAQCAtOTksNyArOTksNyBAQCBjb25zdCBWZWN0b3I8UmVm
UHRyPEluc2VydGlvblBvaW50PiA+JiBTaGFkb3dSb290Q29udGVudERpc3RyaWJ1dGlvbkRhdGE6
OmVuc3VyZQogICAgIG1faW5zZXJ0aW9uUG9pbnRMaXN0SXNWYWxpZCA9IHRydWU7CiAgICAgQVNT
RVJUKG1faW5zZXJ0aW9uUG9pbnRMaXN0LmlzRW1wdHkoKSk7CiAKLSAgICBpZiAoIXNoYWRvd1Jv
b3QtPmhhc0luc2VydGlvblBvaW50KCkpCisgICAgaWYgKCFoYXNJbnNlcnRpb25Qb2ludChzaGFk
b3dSb290KSkKICAgICAgICAgcmV0dXJuIG1faW5zZXJ0aW9uUG9pbnRMaXN0OwogCiAgICAgZm9y
IChFbGVtZW50KiBlbGVtZW50ID0gRWxlbWVudFRyYXZlcnNhbDo6Zmlyc3RXaXRoaW4oc2hhZG93
Um9vdCk7IGVsZW1lbnQ7IGVsZW1lbnQgPSBFbGVtZW50VHJhdmVyc2FsOjpuZXh0KGVsZW1lbnQs
IHNoYWRvd1Jvb3QpKSB7CkBAIC0xMTAsNyArMTEwLDcgQEAgY29uc3QgVmVjdG9yPFJlZlB0cjxJ
bnNlcnRpb25Qb2ludD4gPiYgU2hhZG93Um9vdENvbnRlbnREaXN0cmlidXRpb25EYXRhOjplbnN1
cmUKICAgICByZXR1cm4gbV9pbnNlcnRpb25Qb2ludExpc3Q7CiB9CiAKLXZvaWQgU2hhZG93Um9v
dENvbnRlbnREaXN0cmlidXRpb25EYXRhOjpyZWdpdGVySW5zZXJ0aW9uUG9pbnQoU2hhZG93Um9v
dCogc2NvcGUsIEluc2VydGlvblBvaW50KiBwb2ludCkKK3ZvaWQgU2NvcGVDb250ZW50RGlzdHJp
YnV0aW9uOjpyZWdpc3Rlckluc2VydGlvblBvaW50KFNoYWRvd1Jvb3QqIHNjb3BlLCBJbnNlcnRp
b25Qb2ludCogcG9pbnQpCiB7CiAgICAgc3dpdGNoIChwb2ludC0+aW5zZXJ0aW9uUG9pbnRUeXBl
KCkpIHsKICAgICBjYXNlIEluc2VydGlvblBvaW50OjpTaGFkb3dJbnNlcnRpb25Qb2ludDoKQEAg
LTEyNSw3ICsxMjUsNyBAQCB2b2lkIFNoYWRvd1Jvb3RDb250ZW50RGlzdHJpYnV0aW9uRGF0YTo6
cmVnaXRlckluc2VydGlvblBvaW50KFNoYWRvd1Jvb3QqIHNjb3BlLAogICAgIGludmFsaWRhdGVJ
bnNlcnRpb25Qb2ludExpc3QoKTsKIH0KIAotdm9pZCBTaGFkb3dSb290Q29udGVudERpc3RyaWJ1
dGlvbkRhdGE6OnVucmVnaXN0ZXJJbnNlcnRpb25Qb2ludChTaGFkb3dSb290KiBzY29wZSwgSW5z
ZXJ0aW9uUG9pbnQqIHBvaW50KQordm9pZCBTY29wZUNvbnRlbnREaXN0cmlidXRpb246OnVucmVn
aXN0ZXJJbnNlcnRpb25Qb2ludChTaGFkb3dSb290KiBzY29wZSwgSW5zZXJ0aW9uUG9pbnQqIHBv
aW50KQogewogICAgIHN3aXRjaCAocG9pbnQtPmluc2VydGlvblBvaW50VHlwZSgpKSB7CiAgICAg
Y2FzZSBJbnNlcnRpb25Qb2ludDo6U2hhZG93SW5zZXJ0aW9uUG9pbnQ6CkBAIC0xNDMsNiArMTQz
LDQyIEBAIHZvaWQgU2hhZG93Um9vdENvbnRlbnREaXN0cmlidXRpb25EYXRhOjp1bnJlZ2lzdGVy
SW5zZXJ0aW9uUG9pbnQoU2hhZG93Um9vdCogc2NvCiAgICAgaW52YWxpZGF0ZUluc2VydGlvblBv
aW50TGlzdCgpOwogfQogCitib29sIFNjb3BlQ29udGVudERpc3RyaWJ1dGlvbjo6aGFzU2hhZG93
RWxlbWVudChjb25zdCBTaGFkb3dSb290KiBob2xkZXIpCit7CisgICAgaWYgKCFob2xkZXItPnNj
b3BlRGlzdHJpYnV0aW9uKCkpCisgICAgICAgIHJldHVybiBmYWxzZTsKKworICAgIHJldHVybiBo
b2xkZXItPnNjb3BlRGlzdHJpYnV0aW9uKCktPmhhc1NoYWRvd0VsZW1lbnRDaGlsZHJlbigpOwor
fQorCitib29sIFNjb3BlQ29udGVudERpc3RyaWJ1dGlvbjo6aGFzQ29udGVudEVsZW1lbnQoY29u
c3QgU2hhZG93Um9vdCogaG9sZGVyKQoreworICAgIGlmICghaG9sZGVyLT5zY29wZURpc3RyaWJ1
dGlvbigpKQorICAgICAgICByZXR1cm4gZmFsc2U7CisKKyAgICByZXR1cm4gaG9sZGVyLT5zY29w
ZURpc3RyaWJ1dGlvbigpLT5oYXNDb250ZW50RWxlbWVudENoaWxkcmVuKCk7Cit9CisKK3Vuc2ln
bmVkIFNjb3BlQ29udGVudERpc3RyaWJ1dGlvbjo6Y291bnRFbGVtZW50U2hhZG93KGNvbnN0IFNo
YWRvd1Jvb3QqIGhvbGRlcikKK3sKKyAgICBpZiAoIWhvbGRlci0+c2NvcGVEaXN0cmlidXRpb24o
KSkKKyAgICAgICAgcmV0dXJuIDA7CisKKyAgICByZXR1cm4gaG9sZGVyLT5zY29wZURpc3RyaWJ1
dGlvbigpLT5udW1iZXJPZkVsZW1lbnRTaGFkb3dDaGlsZHJlbigpOworfQorCitib29sIFNjb3Bl
Q29udGVudERpc3RyaWJ1dGlvbjo6aGFzSW5zZXJ0aW9uUG9pbnQoY29uc3QgU2hhZG93Um9vdCog
aG9sZGVyKQoreworICAgIHJldHVybiBoYXNTaGFkb3dFbGVtZW50KGhvbGRlcikgfHwgaGFzQ29u
dGVudEVsZW1lbnQoaG9sZGVyKTsKK30KKworSW5zZXJ0aW9uUG9pbnQqIFNjb3BlQ29udGVudERp
c3RyaWJ1dGlvbjo6YXNzaWduZWRUbyhjb25zdCBTaGFkb3dSb290KiBob2xkZXIpCit7CisgICAg
aWYgKCFob2xkZXItPnNjb3BlRGlzdHJpYnV0aW9uKCkpCisgICAgICAgIHJldHVybiAwOworCisg
ICAgcmV0dXJuIGhvbGRlci0+c2NvcGVEaXN0cmlidXRpb24oKS0+aW5zZXJ0aW9uUG9pbnRBc3Np
Z25lZFRvKCk7Cit9CiAKIENvbnRlbnREaXN0cmlidXRvcjo6Q29udGVudERpc3RyaWJ1dG9yKCkK
ICAgICA6IG1fdmFsaWRpdHkoVW5kZXRlcm1pbmVkKQpAQCAtMTkzLDE5ICsyMjksMjEgQEAgdm9p
ZCBDb250ZW50RGlzdHJpYnV0b3I6OmRpc3RyaWJ1dGUoRWxlbWVudCogaG9zdCkKICAgICBmb3Ig
KFNoYWRvd1Jvb3QqIHJvb3QgPSBob3N0LT55b3VuZ2VzdFNoYWRvd1Jvb3QoKTsgcm9vdDsgcm9v
dCA9IHJvb3QtPm9sZGVyU2hhZG93Um9vdCgpKSB7CiAgICAgICAgIEhUTUxTaGFkb3dFbGVtZW50
KiBmaXJzdEFjdGl2ZVNoYWRvd0luc2VydGlvblBvaW50ID0gMDsKIAotICAgICAgICBjb25zdCBW
ZWN0b3I8UmVmUHRyPEluc2VydGlvblBvaW50PiA+JiBpbnNlcnRpb25Qb2ludHMgPSByb290LT5p
bnNlcnRpb25Qb2ludExpc3QoKTsKLSAgICAgICAgZm9yIChzaXplX3QgaSA9IDA7IGkgPCBpbnNl
cnRpb25Qb2ludHMuc2l6ZSgpOyArK2kpIHsKLSAgICAgICAgICAgIEluc2VydGlvblBvaW50KiBw
b2ludCA9IGluc2VydGlvblBvaW50c1tpXS5nZXQoKTsKLSAgICAgICAgICAgIGlmICghcG9pbnQt
PmlzQWN0aXZlKCkpCi0gICAgICAgICAgICAgICAgY29udGludWU7Ci0KLSAgICAgICAgICAgIGlm
IChpc0hUTUxTaGFkb3dFbGVtZW50KHBvaW50KSkgewotICAgICAgICAgICAgICAgIGlmICghZmly
c3RBY3RpdmVTaGFkb3dJbnNlcnRpb25Qb2ludCkKLSAgICAgICAgICAgICAgICAgICAgZmlyc3RB
Y3RpdmVTaGFkb3dJbnNlcnRpb25Qb2ludCA9IHRvSFRNTFNoYWRvd0VsZW1lbnQocG9pbnQpOwot
ICAgICAgICAgICAgfSBlbHNlIHsKLSAgICAgICAgICAgICAgICBkaXN0cmlidXRlU2VsZWN0aW9u
c1RvKHBvaW50LCBwb29sLCBkaXN0cmlidXRlZCk7Ci0gICAgICAgICAgICAgICAgaWYgKEVsZW1l
bnRTaGFkb3cqIHNoYWRvdyA9IHBvaW50LT5wYXJlbnROb2RlKCktPmlzRWxlbWVudE5vZGUoKSA/
IHRvRWxlbWVudChwb2ludC0+cGFyZW50Tm9kZSgpKS0+c2hhZG93KCkgOiAwKQotICAgICAgICAg
ICAgICAgICAgICBzaGFkb3ctPmludmFsaWRhdGVEaXN0cmlidXRpb24oKTsKKyAgICAgICAgaWYg
KFNjb3BlQ29udGVudERpc3RyaWJ1dGlvbiogc2NvcGUgPSByb290LT5zY29wZURpc3RyaWJ1dGlv
bigpKSB7CisgICAgICAgICAgICBjb25zdCBWZWN0b3I8UmVmUHRyPEluc2VydGlvblBvaW50PiA+
JiBpbnNlcnRpb25Qb2ludHMgPSBzY29wZS0+ZW5zdXJlSW5zZXJ0aW9uUG9pbnRMaXN0KHJvb3Qp
OworICAgICAgICAgICAgZm9yIChzaXplX3QgaSA9IDA7IGkgPCBpbnNlcnRpb25Qb2ludHMuc2l6
ZSgpOyArK2kpIHsKKyAgICAgICAgICAgICAgICBJbnNlcnRpb25Qb2ludCogcG9pbnQgPSBpbnNl
cnRpb25Qb2ludHNbaV0uZ2V0KCk7CisgICAgICAgICAgICAgICAgaWYgKCFwb2ludC0+aXNBY3Rp
dmUoKSkKKyAgICAgICAgICAgICAgICAgICAgY29udGludWU7CisKKyAgICAgICAgICAgICAgICBp
ZiAoaXNIVE1MU2hhZG93RWxlbWVudChwb2ludCkpIHsKKyAgICAgICAgICAgICAgICAgICAgaWYg
KCFmaXJzdEFjdGl2ZVNoYWRvd0luc2VydGlvblBvaW50KQorICAgICAgICAgICAgICAgICAgICAg
ICAgZmlyc3RBY3RpdmVTaGFkb3dJbnNlcnRpb25Qb2ludCA9IHRvSFRNTFNoYWRvd0VsZW1lbnQo
cG9pbnQpOworICAgICAgICAgICAgICAgIH0gZWxzZSB7CisgICAgICAgICAgICAgICAgICAgIGRp
c3RyaWJ1dGVTZWxlY3Rpb25zVG8ocG9pbnQsIHBvb2wsIGRpc3RyaWJ1dGVkKTsKKyAgICAgICAg
ICAgICAgICAgICAgaWYgKEVsZW1lbnRTaGFkb3cqIHNoYWRvdyA9IHBvaW50LT5wYXJlbnROb2Rl
KCktPmlzRWxlbWVudE5vZGUoKSA/IHRvRWxlbWVudChwb2ludC0+cGFyZW50Tm9kZSgpKS0+c2hh
ZG93KCkgOiAwKQorICAgICAgICAgICAgICAgICAgICAgICAgc2hhZG93LT5pbnZhbGlkYXRlRGlz
dHJpYnV0aW9uKCk7CisgICAgICAgICAgICAgICAgfQogICAgICAgICAgICAgfQogICAgICAgICB9
CiAKQEAgLTIxOSw3ICsyNTcsNyBAQCB2b2lkIENvbnRlbnREaXN0cmlidXRvcjo6ZGlzdHJpYnV0
ZShFbGVtZW50KiBob3N0KQogICAgICAgICBBU1NFUlQocm9vdCk7CiAgICAgICAgIGlmIChyb290
LT5vbGRlclNoYWRvd1Jvb3QoKSkgewogICAgICAgICAgICAgZGlzdHJpYnV0ZU5vZGVDaGlsZHJl
blRvKHNoYWRvd0VsZW1lbnQsIHJvb3QtPm9sZGVyU2hhZG93Um9vdCgpKTsKLSAgICAgICAgICAg
IHJvb3QtPm9sZGVyU2hhZG93Um9vdCgpLT5zZXRBc3NpZ25lZFRvKHNoYWRvd0VsZW1lbnQpOwor
ICAgICAgICAgICAgcm9vdC0+b2xkZXJTaGFkb3dSb290KCktPmVuc3VyZVNjb3BlRGlzdHJpYnV0
aW9uKCktPnNldEluc2VydGlvblBvaW50QXNzaWduZWRUbyhzaGFkb3dFbGVtZW50KTsKICAgICAg
ICAgfSBlbHNlIHsKICAgICAgICAgICAgIGRpc3RyaWJ1dGVTZWxlY3Rpb25zVG8oc2hhZG93RWxl
bWVudCwgcG9vbCwgZGlzdHJpYnV0ZWQpOwogICAgICAgICAgICAgaWYgKEVsZW1lbnRTaGFkb3cq
IHNoYWRvdyA9IHNoYWRvd0VsZW1lbnQtPnBhcmVudE5vZGUoKS0+aXNFbGVtZW50Tm9kZSgpID8g
dG9FbGVtZW50KHNoYWRvd0VsZW1lbnQtPnBhcmVudE5vZGUoKSktPnNoYWRvdygpIDogMCkKQEAg
LTIzNCwxMSArMjcyLDEzIEBAIGJvb2wgQ29udGVudERpc3RyaWJ1dG9yOjppbnZhbGlkYXRlKEVs
ZW1lbnQqIGhvc3QpCiAgICAgYm9vbCBuZWVkc1JlYXR0YWNoID0gKG1fdmFsaWRpdHkgPT0gVW5k
ZXRlcm1pbmVkKSB8fCAhbV9ub2RlVG9JbnNlcnRpb25Qb2ludC5pc0VtcHR5KCk7CiAKICAgICBm
b3IgKFNoYWRvd1Jvb3QqIHJvb3QgPSBob3N0LT55b3VuZ2VzdFNoYWRvd1Jvb3QoKTsgcm9vdDsg
cm9vdCA9IHJvb3QtPm9sZGVyU2hhZG93Um9vdCgpKSB7Ci0gICAgICAgIHJvb3QtPnNldEFzc2ln
bmVkVG8oMCk7Ci0gICAgICAgIGNvbnN0IFZlY3RvcjxSZWZQdHI8SW5zZXJ0aW9uUG9pbnQ+ID4m
IGluc2VydGlvblBvaW50cyA9IHJvb3QtPmluc2VydGlvblBvaW50TGlzdCgpOwotICAgICAgICBm
b3IgKHNpemVfdCBpID0gMDsgaSA8IGluc2VydGlvblBvaW50cy5zaXplKCk7ICsraSkgewotICAg
ICAgICAgICAgbmVlZHNSZWF0dGFjaCA9IG5lZWRzUmVhdHRhY2ggfHwgdHJ1ZTsKLSAgICAgICAg
ICAgIGluc2VydGlvblBvaW50c1tpXS0+Y2xlYXJEaXN0cmlidXRpb24oKTsKKyAgICAgICAgaWYg
KFNjb3BlQ29udGVudERpc3RyaWJ1dGlvbiogc2NvcGUgPSByb290LT5zY29wZURpc3RyaWJ1dGlv
bigpKSB7CisgICAgICAgICAgICBzY29wZS0+c2V0SW5zZXJ0aW9uUG9pbnRBc3NpZ25lZFRvKDAp
OworICAgICAgICAgICAgY29uc3QgVmVjdG9yPFJlZlB0cjxJbnNlcnRpb25Qb2ludD4gPiYgaW5z
ZXJ0aW9uUG9pbnRzID0gc2NvcGUtPmVuc3VyZUluc2VydGlvblBvaW50TGlzdChyb290KTsKKyAg
ICAgICAgICAgIGZvciAoc2l6ZV90IGkgPSAwOyBpIDwgaW5zZXJ0aW9uUG9pbnRzLnNpemUoKTsg
KytpKSB7CisgICAgICAgICAgICAgICAgbmVlZHNSZWF0dGFjaCA9IG5lZWRzUmVhdHRhY2ggfHwg
dHJ1ZTsKKyAgICAgICAgICAgICAgICBpbnNlcnRpb25Qb2ludHNbaV0tPmNsZWFyRGlzdHJpYnV0
aW9uKCk7CisgICAgICAgICAgICB9CiAgICAgICAgIH0KICAgICB9CiAKZGlmZiAtLWdpdCBhL1Nv
dXJjZS9XZWJDb3JlL2h0bWwvc2hhZG93L0NvbnRlbnREaXN0cmlidXRvci5oIGIvU291cmNlL1dl
YkNvcmUvaHRtbC9zaGFkb3cvQ29udGVudERpc3RyaWJ1dG9yLmgKaW5kZXggNzcxMTg5YjYwNDA4
YzdlMTk3YWNkNDE4ZDE5MWViMDk0ODgwNGY3Zi4uZjk4MzgzN2YxMDY3M2FhZTRmODRiMzJlMDAw
N2QyZGI0NjdlYTIzNyAxMDA2NDQKLS0tIGEvU291cmNlL1dlYkNvcmUvaHRtbC9zaGFkb3cvQ29u
dGVudERpc3RyaWJ1dG9yLmgKKysrIGIvU291cmNlL1dlYkNvcmUvaHRtbC9zaGFkb3cvQ29udGVu
dERpc3RyaWJ1dG9yLmgKQEAgLTcwLDI2ICs3MCwzNSBAQCBwcml2YXRlOgogICAgIEhhc2hNYXA8
Y29uc3QgTm9kZSosIHNpemVfdD4gbV9pbmRpY2VzOwogfTsKIAotY2xhc3MgU2hhZG93Um9vdENv
bnRlbnREaXN0cmlidXRpb25EYXRhIHsKK2NsYXNzIFNjb3BlQ29udGVudERpc3RyaWJ1dGlvbiB7
CiBwdWJsaWM6Ci0gICAgU2hhZG93Um9vdENvbnRlbnREaXN0cmlidXRpb25EYXRhKCk7CisgICAg
U2NvcGVDb250ZW50RGlzdHJpYnV0aW9uKCk7CiAKICAgICBJbnNlcnRpb25Qb2ludCogaW5zZXJ0
aW9uUG9pbnRBc3NpZ25lZFRvKCkgY29uc3QgeyByZXR1cm4gbV9pbnNlcnRpb25Qb2ludEFzc2ln
bmVkVG87IH0KICAgICB2b2lkIHNldEluc2VydGlvblBvaW50QXNzaWduZWRUbyhJbnNlcnRpb25Q
b2ludCogaW5zZXJ0aW9uUG9pbnQpIHsgbV9pbnNlcnRpb25Qb2ludEFzc2lnbmVkVG8gPSBpbnNl
cnRpb25Qb2ludDsgfQogCi0gICAgdm9pZCByZWdpdGVySW5zZXJ0aW9uUG9pbnQoU2hhZG93Um9v
dCosIEluc2VydGlvblBvaW50Kik7CisgICAgdm9pZCByZWdpc3Rlckluc2VydGlvblBvaW50KFNo
YWRvd1Jvb3QqLCBJbnNlcnRpb25Qb2ludCopOwogICAgIHZvaWQgdW5yZWdpc3Rlckluc2VydGlv
blBvaW50KFNoYWRvd1Jvb3QqLCBJbnNlcnRpb25Qb2ludCopOwogICAgIGJvb2wgaGFzU2hhZG93
RWxlbWVudENoaWxkcmVuKCkgY29uc3QgeyByZXR1cm4gbV9udW1iZXJPZlNoYWRvd0VsZW1lbnRD
aGlsZHJlbiA+IDA7IH0KICAgICBib29sIGhhc0NvbnRlbnRFbGVtZW50Q2hpbGRyZW4oKSBjb25z
dCB7IHJldHVybiBtX251bWJlck9mQ29udGVudEVsZW1lbnRDaGlsZHJlbiA+IDA7IH0KIAotICAg
IHZvaWQgaW5jcmVtZW50TnVtYmVyT2ZFbGVtZW50U2hhZG93Q2hpbGRyZW4oKSB7ICsrbV9udW1i
ZXJPZkVsZW1lbnRTaGFkb3dDaGlsZHJlbjsgfQotICAgIHZvaWQgZGVjcmVtZW50TnVtYmVyT2ZF
bGVtZW50U2hhZG93Q2hpbGRyZW4oKSB7IEFTU0VSVChtX251bWJlck9mRWxlbWVudFNoYWRvd0No
aWxkcmVuID4gMCk7IC0tbV9udW1iZXJPZkVsZW1lbnRTaGFkb3dDaGlsZHJlbjsgfQorICAgIHZv
aWQgcmVnaXN0ZXJFbGVtZW50U2hhZG93KCkgeyArK21fbnVtYmVyT2ZFbGVtZW50U2hhZG93Q2hp
bGRyZW47IH0KKyAgICB2b2lkIHVucmVnaXN0ZXJFbGVtZW50U2hhZG93KCkgeyBBU1NFUlQobV9u
dW1iZXJPZkVsZW1lbnRTaGFkb3dDaGlsZHJlbiA+IDApOyAtLW1fbnVtYmVyT2ZFbGVtZW50U2hh
ZG93Q2hpbGRyZW47IH0KICAgICB1bnNpZ25lZCBudW1iZXJPZkVsZW1lbnRTaGFkb3dDaGlsZHJl
bigpIGNvbnN0IHsgcmV0dXJuIG1fbnVtYmVyT2ZFbGVtZW50U2hhZG93Q2hpbGRyZW47IH0KICAg
ICBib29sIGhhc0VsZW1lbnRTaGFkb3dDaGlsZHJlbigpIGNvbnN0IHsgcmV0dXJuIG1fbnVtYmVy
T2ZFbGVtZW50U2hhZG93Q2hpbGRyZW4gPiAwOyB9CiAKICAgICB2b2lkIGludmFsaWRhdGVJbnNl
cnRpb25Qb2ludExpc3QoKTsKICAgICBjb25zdCBWZWN0b3I8UmVmUHRyPEluc2VydGlvblBvaW50
PiA+JiBlbnN1cmVJbnNlcnRpb25Qb2ludExpc3QoU2hhZG93Um9vdCopOwogCisgICAgYm9vbCBp
c1VzZWRGb3JSZW5kZXJpbmcoKSBjb25zdDsKKworICAgIHN0YXRpYyBib29sIGhhc1NoYWRvd0Vs
ZW1lbnQoY29uc3QgU2hhZG93Um9vdCopOworICAgIHN0YXRpYyBib29sIGhhc0NvbnRlbnRFbGVt
ZW50KGNvbnN0IFNoYWRvd1Jvb3QqKTsKKyAgICBzdGF0aWMgYm9vbCBoYXNJbnNlcnRpb25Qb2lu
dChjb25zdCBTaGFkb3dSb290Kik7CisgICAgc3RhdGljIGJvb2wgaGFzRWxlbWVudFNoYWRvdyhj
b25zdCBTaGFkb3dSb290KiBob2xkZXIpIHsgcmV0dXJuIGNvdW50RWxlbWVudFNoYWRvdyhob2xk
ZXIpOyB9CisgICAgc3RhdGljIHVuc2lnbmVkIGNvdW50RWxlbWVudFNoYWRvdyhjb25zdCBTaGFk
b3dSb290Kik7CisgICAgc3RhdGljIEluc2VydGlvblBvaW50KiBhc3NpZ25lZFRvKGNvbnN0IFNo
YWRvd1Jvb3QqKTsKKwogcHJpdmF0ZToKICAgICBJbnNlcnRpb25Qb2ludCogbV9pbnNlcnRpb25Q
b2ludEFzc2lnbmVkVG87CiAgICAgdW5zaWduZWQgbV9udW1iZXJPZlNoYWRvd0VsZW1lbnRDaGls
ZHJlbjsKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJDb3JlL2h0bWwvc2hhZG93L0hUTUxTaGFkb3dF
bGVtZW50LmNwcCBiL1NvdXJjZS9XZWJDb3JlL2h0bWwvc2hhZG93L0hUTUxTaGFkb3dFbGVtZW50
LmNwcAppbmRleCBkOWUxZjE1NGI5Y2FhMjc2ZDkyMjBiYmM1MjgxNTYzNWNmZjA3OTZlLi4yMmMw
NzY1NmE1NTdlNDdjOTNmZWI1M2FiM2UzNTUyMjA3YWY4ZTljIDEwMDY0NAotLS0gYS9Tb3VyY2Uv
V2ViQ29yZS9odG1sL3NoYWRvdy9IVE1MU2hhZG93RWxlbWVudC5jcHAKKysrIGIvU291cmNlL1dl
YkNvcmUvaHRtbC9zaGFkb3cvSFRNTFNoYWRvd0VsZW1lbnQuY3BwCkBAIC03Myw3ICs3Myw3IEBA
IFNoYWRvd1Jvb3QqIEhUTUxTaGFkb3dFbGVtZW50OjpvbGRlclNoYWRvd1Jvb3QoKQogICAgIHRv
U2hhZG93Um9vdCh0cmVlU2NvcGUoKS0+cm9vdE5vZGUoKSktPm93bmVyKCktPmVuc3VyZURpc3Ry
aWJ1dGlvbkZyb21Eb2N1bWVudCgpOwogCiAgICAgU2hhZG93Um9vdCogb2xkZXIgPSB0b1NoYWRv
d1Jvb3QodHJlZVNjb3BlKCktPnJvb3ROb2RlKCkpLT5vbGRlclNoYWRvd1Jvb3QoKTsKLSAgICBp
ZiAoIW9sZGVyIHx8IG9sZGVyLT50eXBlKCkgIT0gU2hhZG93Um9vdDo6QXV0aG9yU2hhZG93Um9v
dCB8fCBvbGRlci0+YXNzaWduZWRUbygpICE9IHRoaXMpCisgICAgaWYgKCFvbGRlciB8fCBvbGRl
ci0+dHlwZSgpICE9IFNoYWRvd1Jvb3Q6OkF1dGhvclNoYWRvd1Jvb3QgfHwgU2NvcGVDb250ZW50
RGlzdHJpYnV0aW9uOjphc3NpZ25lZFRvKG9sZGVyKSAhPSB0aGlzKQogICAgICAgICByZXR1cm4g
MDsKIAogICAgIHJldHVybiBvbGRlcjsKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJDb3JlL2h0bWwv
c2hhZG93L0luc2VydGlvblBvaW50LmNwcCBiL1NvdXJjZS9XZWJDb3JlL2h0bWwvc2hhZG93L0lu
c2VydGlvblBvaW50LmNwcAppbmRleCAxOWE4YzkxNTdjMmIzYTQ4YTczNTZlMDM0ZGJmNzY0YTc2
Yzk3OWE5Li40NGUzNGI5NTM0NTc0ZWMwNjhkZWVkMmFmZDgwYTY5NjY0N2JhYzU5IDEwMDY0NAot
LS0gYS9Tb3VyY2UvV2ViQ29yZS9odG1sL3NoYWRvdy9JbnNlcnRpb25Qb2ludC5jcHAKKysrIGIv
U291cmNlL1dlYkNvcmUvaHRtbC9zaGFkb3cvSW5zZXJ0aW9uUG9pbnQuY3BwCkBAIC0xMzUsNyAr
MTM1LDcgQEAgTm9kZTo6SW5zZXJ0aW9uTm90aWZpY2F0aW9uUmVxdWVzdCBJbnNlcnRpb25Qb2lu
dDo6aW5zZXJ0ZWRJbnRvKENvbnRhaW5lck5vZGUqIGkKICAgICAgICAgICAgIHJvb3RPd25lci0+
aW52YWxpZGF0ZURpc3RyaWJ1dGlvbigpOwogICAgICAgICAgICAgaWYgKGlzQWN0aXZlKCkgJiYg
IW1fcmVnaXN0ZXJlZFdpdGhTaGFkb3dSb290ICYmIGluc2VydGlvblBvaW50LT50cmVlU2NvcGUo
KS0+cm9vdE5vZGUoKSA9PSByb290KSB7CiAgICAgICAgICAgICAgICAgbV9yZWdpc3RlcmVkV2l0
aFNoYWRvd1Jvb3QgPSB0cnVlOwotICAgICAgICAgICAgICAgIHJvb3QtPnJlZ2lzdGVySW5zZXJ0
aW9uUG9pbnQodGhpcyk7CisgICAgICAgICAgICAgICAgcm9vdC0+ZW5zdXJlU2NvcGVEaXN0cmli
dXRpb24oKS0+cmVnaXN0ZXJJbnNlcnRpb25Qb2ludChyb290LCB0aGlzKTsKICAgICAgICAgICAg
IH0KICAgICAgICAgfQogICAgIH0KQEAgLTE2MCw3ICsxNjAsNyBAQCB2b2lkIEluc2VydGlvblBv
aW50OjpyZW1vdmVkRnJvbShDb250YWluZXJOb2RlKiBpbnNlcnRpb25Qb2ludCkKICAgICBpZiAo
bV9yZWdpc3RlcmVkV2l0aFNoYWRvd1Jvb3QgJiYgaW5zZXJ0aW9uUG9pbnQtPnRyZWVTY29wZSgp
LT5yb290Tm9kZSgpID09IHJvb3QpIHsKICAgICAgICAgQVNTRVJUKHJvb3QpOwogICAgICAgICBt
X3JlZ2lzdGVyZWRXaXRoU2hhZG93Um9vdCA9IGZhbHNlOwotICAgICAgICByb290LT51bnJlZ2lz
dGVySW5zZXJ0aW9uUG9pbnQodGhpcyk7CisgICAgICAgIHJvb3QtPmVuc3VyZVNjb3BlRGlzdHJp
YnV0aW9uKCktPnVucmVnaXN0ZXJJbnNlcnRpb25Qb2ludChyb290LCB0aGlzKTsKICAgICB9CiAK
ICAgICBIVE1MRWxlbWVudDo6cmVtb3ZlZEZyb20oaW5zZXJ0aW9uUG9pbnQpOwpAQCAtMTg2LDQg
KzE4NiwzOCBAQCB2b2lkIEluc2VydGlvblBvaW50OjpzZXRSZXNldFN0eWxlSW5oZXJpdGFuY2Uo
Ym9vbCB2YWx1ZSkKICAgICBzZXRCb29sZWFuQXR0cmlidXRlKHJlc2V0X3N0eWxlX2luaGVyaXRh
bmNlQXR0ciwgdmFsdWUpOwogfQogCitib29sIEluc2VydGlvblBvaW50Ojpjb250YWlucyhjb25z
dCBOb2RlKiBub2RlKSBjb25zdAoreworICAgIHJldHVybiBtX2Rpc3RyaWJ1dGlvbi5jb250YWlu
cyhjb25zdF9jYXN0PE5vZGUqPihub2RlKSkgfHwgKG5vZGUtPmlzU2hhZG93Um9vdCgpICYmIFNj
b3BlQ29udGVudERpc3RyaWJ1dGlvbjo6YXNzaWduZWRUbyh0b1NoYWRvd1Jvb3Qobm9kZSkpID09
IHRoaXMpOworfQorCitJbnNlcnRpb25Qb2ludCogcmVzb2x2ZVJlcHJvamVjdGlvbihjb25zdCBO
b2RlKiBwcm9qZWN0ZWROb2RlKQoreworICAgIEluc2VydGlvblBvaW50KiBpbnNlcnRpb25Qb2lu
dCA9IDA7CisgICAgY29uc3QgTm9kZSogY3VycmVudCA9IHByb2plY3RlZE5vZGU7CisKKyAgICB3
aGlsZSAoY3VycmVudCkgeworICAgICAgICBpZiAoRWxlbWVudFNoYWRvdyogc2hhZG93ID0gc2hh
ZG93T2ZQYXJlbnRGb3JEaXN0cmlidXRpb24oY3VycmVudCkpIHsKKyAgICAgICAgICAgIHNoYWRv
dy0+ZW5zdXJlRGlzdHJpYnV0aW9uKCk7CisgICAgICAgICAgICBpZiAoSW5zZXJ0aW9uUG9pbnQq
IGluc2VydGVkVG8gPSBzaGFkb3ctPmRpc3RyaWJ1dG9yKCkuZmluZEluc2VydGlvblBvaW50Rm9y
KHByb2plY3RlZE5vZGUpKSB7CisgICAgICAgICAgICAgICAgY3VycmVudCA9IGluc2VydGVkVG87
CisgICAgICAgICAgICAgICAgaW5zZXJ0aW9uUG9pbnQgPSBpbnNlcnRlZFRvOworICAgICAgICAg
ICAgICAgIGNvbnRpbnVlOworICAgICAgICAgICAgfQorICAgICAgICB9CisKKyAgICAgICAgaWYg
KE5vZGUqIHBhcmVudCA9IHBhcmVudE5vZGVGb3JEaXN0cmlidXRpb24oY3VycmVudCkpIHsKKyAg
ICAgICAgICAgIGlmIChJbnNlcnRpb25Qb2ludCogaW5zZXJ0ZWRUbyA9IHBhcmVudC0+aXNTaGFk
b3dSb290KCkgPyBTY29wZUNvbnRlbnREaXN0cmlidXRpb246OmFzc2lnbmVkVG8odG9TaGFkb3dS
b290KHBhcmVudCkpIDogMCkgeworICAgICAgICAgICAgICAgIGN1cnJlbnQgPSBpbnNlcnRlZFRv
OworICAgICAgICAgICAgICAgIGluc2VydGlvblBvaW50ID0gaW5zZXJ0ZWRUbzsKKyAgICAgICAg
ICAgICAgICBjb250aW51ZTsKKyAgICAgICAgICAgIH0KKyAgICAgICAgfQorCisgICAgICAgIGJy
ZWFrOworICAgIH0KKworICAgIHJldHVybiBpbnNlcnRpb25Qb2ludDsKK30KKwogfSAvLyBuYW1l
c3BhY2UgV2ViQ29yZQpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYkNvcmUvaHRtbC9zaGFkb3cvSW5z
ZXJ0aW9uUG9pbnQuaCBiL1NvdXJjZS9XZWJDb3JlL2h0bWwvc2hhZG93L0luc2VydGlvblBvaW50
LmgKaW5kZXggYWVkYWMxZDBmN2QxMGY2ZDg0ZTEzNjBlODEwMDMzOGE5MGM4MTJlMS4uM2JkNzUy
Yzg3M2QxZjFhNTk5ZTQ3OTBiODY1OTRiMDc1ZWVmN2VjZSAxMDA2NDQKLS0tIGEvU291cmNlL1dl
YkNvcmUvaHRtbC9zaGFkb3cvSW5zZXJ0aW9uUG9pbnQuaAorKysgYi9Tb3VyY2UvV2ViQ29yZS9o
dG1sL3NoYWRvdy9JbnNlcnRpb25Qb2ludC5oCkBAIC03Miw3ICs3Miw3IEBAIHB1YmxpYzoKICAg
ICBib29sIHNob3VsZFVzZUZhbGxiYWNrRWxlbWVudHMoKSBjb25zdDsKIAogICAgIHNpemVfdCBp
bmRleE9mKE5vZGUqIG5vZGUpIGNvbnN0IHsgcmV0dXJuIG1fZGlzdHJpYnV0aW9uLmZpbmQobm9k
ZSk7IH0KLSAgICBib29sIGNvbnRhaW5zKGNvbnN0IE5vZGUqIG5vZGUpIGNvbnN0IHsgcmV0dXJu
IG1fZGlzdHJpYnV0aW9uLmNvbnRhaW5zKGNvbnN0X2Nhc3Q8Tm9kZSo+KG5vZGUpKSB8fCAobm9k
ZS0+aXNTaGFkb3dSb290KCkgJiYgdG9TaGFkb3dSb290KG5vZGUpLT5hc3NpZ25lZFRvKCkgPT0g
dGhpcyk7IH0KKyAgICBib29sIGNvbnRhaW5zKGNvbnN0IE5vZGUqKSBjb25zdDsKICAgICBzaXpl
X3Qgc2l6ZSgpIGNvbnN0IHsgcmV0dXJuIG1fZGlzdHJpYnV0aW9uLnNpemUoKTsgfQogICAgIE5v
ZGUqIGF0KHNpemVfdCBpbmRleCkgIGNvbnN0IHsgcmV0dXJuIG1fZGlzdHJpYnV0aW9uLmF0KGlu
ZGV4KS5nZXQoKTsgfQogICAgIE5vZGUqIGZpcnN0KCkgY29uc3QgeyByZXR1cm4gbV9kaXN0cmli
dXRpb24uaXNFbXB0eSgpID8gMCA6IG1fZGlzdHJpYnV0aW9uLmZpcnN0KCkuZ2V0KCk7IH0KQEAg
LTE1MCwzNCArMTUwLDcgQEAgaW5saW5lIEVsZW1lbnRTaGFkb3cqIHNoYWRvd09mUGFyZW50Rm9y
RGlzdHJpYnV0aW9uKGNvbnN0IE5vZGUqIG5vZGUpCiAgICAgcmV0dXJuIDA7CiB9CiAKLWlubGlu
ZSBJbnNlcnRpb25Qb2ludCogcmVzb2x2ZVJlcHJvamVjdGlvbihjb25zdCBOb2RlKiBwcm9qZWN0
ZWROb2RlKQotewotICAgIEluc2VydGlvblBvaW50KiBpbnNlcnRpb25Qb2ludCA9IDA7Ci0gICAg
Y29uc3QgTm9kZSogY3VycmVudCA9IHByb2plY3RlZE5vZGU7Ci0KLSAgICB3aGlsZSAoY3VycmVu
dCkgewotICAgICAgICBpZiAoRWxlbWVudFNoYWRvdyogc2hhZG93ID0gc2hhZG93T2ZQYXJlbnRG
b3JEaXN0cmlidXRpb24oY3VycmVudCkpIHsKLSAgICAgICAgICAgIHNoYWRvdy0+ZW5zdXJlRGlz
dHJpYnV0aW9uKCk7Ci0gICAgICAgICAgICBpZiAoSW5zZXJ0aW9uUG9pbnQqIGluc2VydGVkVG8g
PSBzaGFkb3ctPmRpc3RyaWJ1dG9yKCkuZmluZEluc2VydGlvblBvaW50Rm9yKHByb2plY3RlZE5v
ZGUpKSB7Ci0gICAgICAgICAgICAgICAgY3VycmVudCA9IGluc2VydGVkVG87Ci0gICAgICAgICAg
ICAgICAgaW5zZXJ0aW9uUG9pbnQgPSBpbnNlcnRlZFRvOwotICAgICAgICAgICAgICAgIGNvbnRp
bnVlOwotICAgICAgICAgICAgfQotICAgICAgICB9Ci0KLSAgICAgICAgaWYgKE5vZGUqIHBhcmVu
dCA9IHBhcmVudE5vZGVGb3JEaXN0cmlidXRpb24oY3VycmVudCkpIHsKLSAgICAgICAgICAgIGlm
IChJbnNlcnRpb25Qb2ludCogaW5zZXJ0ZWRUbyA9IHBhcmVudC0+aXNTaGFkb3dSb290KCkgPyB0
b1NoYWRvd1Jvb3QocGFyZW50KS0+YXNzaWduZWRUbygpIDogMCkgewotICAgICAgICAgICAgICAg
IGN1cnJlbnQgPSBpbnNlcnRlZFRvOwotICAgICAgICAgICAgICAgIGluc2VydGlvblBvaW50ID0g
aW5zZXJ0ZWRUbzsKLSAgICAgICAgICAgICAgICBjb250aW51ZTsKLSAgICAgICAgICAgIH0KLSAg
ICAgICAgfQotCi0gICAgICAgIGJyZWFrOwotICAgIH0KLQotICAgIHJldHVybiBpbnNlcnRpb25Q
b2ludDsKLX0KK0luc2VydGlvblBvaW50KiByZXNvbHZlUmVwcm9qZWN0aW9uKGNvbnN0IE5vZGUq
KTsKIAogfSAvLyBuYW1lc3BhY2UgV2ViQ29yZQogCmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29y
ZS90ZXN0aW5nL0ludGVybmFscy5jcHAgYi9Tb3VyY2UvV2ViQ29yZS90ZXN0aW5nL0ludGVybmFs
cy5jcHAKaW5kZXggOWI0NWZiNjAzNTE2ZTNiMThmNTA0YjdjOWVmMDRmNDQ3OGNlYWZkMS4uZmEy
ZmViODcxZWY4NjIyMmM2YWJiNDA2NDllMmI0YjY3ZTgxZjdlYSAxMDA2NDQKLS0tIGEvU291cmNl
L1dlYkNvcmUvdGVzdGluZy9JbnRlcm5hbHMuY3BwCisrKyBiL1NvdXJjZS9XZWJDb3JlL3Rlc3Rp
bmcvSW50ZXJuYWxzLmNwcApAQCAtMzMsNiArMzMsNyBAQAogI2luY2x1ZGUgIkNsaWVudFJlY3Qu
aCIKICNpbmNsdWRlICJDbGllbnRSZWN0TGlzdC5oIgogI2luY2x1ZGUgIkNvbXBvc2VkU2hhZG93
VHJlZVdhbGtlci5oIgorI2luY2x1ZGUgIkNvbnRlbnREaXN0cmlidXRvci5oIgogI2luY2x1ZGUg
IkN1cnNvci5oIgogI2luY2x1ZGUgIkRPTVN0cmluZ0xpc3QuaCIKICNpbmNsdWRlICJET01XaW5k
b3cuaCIKQEAgLTQzNCw3ICs0MzUsNyBAQCBib29sIEludGVybmFsczo6cGF1c2VUcmFuc2l0aW9u
QXRUaW1lT25Qc2V1ZG9FbGVtZW50KGNvbnN0IFN0cmluZyYgcHJvcGVydHksIGRvdQogYm9vbCBJ
bnRlcm5hbHM6Omhhc1NoYWRvd0luc2VydGlvblBvaW50KGNvbnN0IE5vZGUqIHJvb3QsIEV4Y2Vw
dGlvbkNvZGUmIGVjKSBjb25zdAogewogICAgIGlmIChyb290ICYmIHJvb3QtPmlzU2hhZG93Um9v
dCgpKQotICAgICAgICByZXR1cm4gdG9TaGFkb3dSb290KHJvb3QpLT5oYXNTaGFkb3dJbnNlcnRp
b25Qb2ludCgpOworICAgICAgICByZXR1cm4gU2NvcGVDb250ZW50RGlzdHJpYnV0aW9uOjpoYXNT
aGFkb3dFbGVtZW50KHRvU2hhZG93Um9vdChyb290KSk7CiAKICAgICBlYyA9IElOVkFMSURfQUND
RVNTX0VSUjsKICAgICByZXR1cm4gMDsKQEAgLTQ0Myw3ICs0NDQsNyBAQCBib29sIEludGVybmFs
czo6aGFzU2hhZG93SW5zZXJ0aW9uUG9pbnQoY29uc3QgTm9kZSogcm9vdCwgRXhjZXB0aW9uQ29k
ZSYgZWMpIGNvbgogYm9vbCBJbnRlcm5hbHM6Omhhc0NvbnRlbnRFbGVtZW50KGNvbnN0IE5vZGUq
IHJvb3QsIEV4Y2VwdGlvbkNvZGUmIGVjKSBjb25zdAogewogICAgIGlmIChyb290ICYmIHJvb3Qt
PmlzU2hhZG93Um9vdCgpKQotICAgICAgICByZXR1cm4gdG9TaGFkb3dSb290KHJvb3QpLT5oYXND
b250ZW50RWxlbWVudCgpOworICAgICAgICByZXR1cm4gU2NvcGVDb250ZW50RGlzdHJpYnV0aW9u
OjpoYXNDb250ZW50RWxlbWVudCh0b1NoYWRvd1Jvb3Qocm9vdCkpOwogCiAgICAgZWMgPSBJTlZB
TElEX0FDQ0VTU19FUlI7CiAgICAgcmV0dXJuIDA7CkBAIC00NTYsNyArNDU3LDcgQEAgc2l6ZV90
IEludGVybmFsczo6Y291bnRFbGVtZW50U2hhZG93KGNvbnN0IE5vZGUqIHJvb3QsIEV4Y2VwdGlv
bkNvZGUmIGVjKSBjb25zdAogICAgICAgICByZXR1cm4gMDsKICAgICB9CiAKLSAgICByZXR1cm4g
dG9TaGFkb3dSb290KHJvb3QpLT5jb3VudEVsZW1lbnRTaGFkb3coKTsKKyAgICByZXR1cm4gU2Nv
cGVDb250ZW50RGlzdHJpYnV0aW9uOjpjb3VudEVsZW1lbnRTaGFkb3codG9TaGFkb3dSb290KHJv
b3QpKTsKIH0KIAogYm9vbCBJbnRlcm5hbHM6OmF0dGFjaGVkKE5vZGUqIG5vZGUsIEV4Y2VwdGlv
bkNvZGUmIGVjKQpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYktpdC93aW4vV2ViS2l0LnZjcHJvai9X
ZWJLaXQuZGVmLmluIGIvU291cmNlL1dlYktpdC93aW4vV2ViS2l0LnZjcHJvai9XZWJLaXQuZGVm
LmluCmluZGV4IDMwM2I2NzMxMGNmMTljOTY2MDkwMjNhNzU0N2IzMWE2MTMzNjBmNDcuLjZjODA1
ZmNjMWIxNmVhOTBjZTJhOTI4YzMzNjBiMmM2ZWVmM2UwYjEgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9X
ZWJLaXQvd2luL1dlYktpdC52Y3Byb2ovV2ViS2l0LmRlZi5pbgorKysgYi9Tb3VyY2UvV2ViS2l0
L3dpbi9XZWJLaXQudmNwcm9qL1dlYktpdC5kZWYuaW4KQEAgLTE5Niw5ICsxOTYsNiBAQCBFWFBP
UlRTCiAgICAgICAgID9nZXREYXRhMTZTbG93Q2FzZUBTdHJpbmdJbXBsQFdURkBAQUJFUEJfV1ha
CiAgICAgICAgID9nZXRMb2NhdGlvbkFuZExlbmd0aEZyb21SYW5nZUBUZXh0SXRlcmF0b3JAV2Vi
Q29yZUBAU0FfTlBBVkVsZW1lbnRAMkBQQlZSYW5nZUAyQEFBSTJAWgogICAgICAgICA/Z2V0UmVm
ZXJlbmNlZEZpbGVQYXRoc0BGb3JtQ29udHJvbGxlckBXZWJDb3JlQEBTQT9BVj8kVmVjdG9yQFZT
dHJpbmdAV1RGQEAkMEFAQFdURkBAQUJWMzRAQFoKLSAgICAgICAgP2NvdW50RWxlbWVudFNoYWRv
d0BTaGFkb3dSb290QFdlYkNvcmVAQFFCRUlYWgotICAgICAgICA/aGFzU2hhZG93SW5zZXJ0aW9u
UG9pbnRAU2hhZG93Um9vdEBXZWJDb3JlQEBRQkVfTlhaCi0gICAgICAgID9oYXNDb250ZW50RWxl
bWVudEBTaGFkb3dSb290QFdlYkNvcmVAQFFCRV9OWFoKICAgICAgICAgP2lucHV0VGFnQEhUTUxO
YW1lc0BXZWJDb3JlQEAzVlF1YWxpZmllZE5hbWVAMkBCCiAjaWYgRU5BQkxFKElOU1BFQ1RPUikK
ICAgICAgICAgP2dldEhpZ2hsaWdodEBJbnNwZWN0b3JDb250cm9sbGVyQFdlYkNvcmVAQFFCRVhQ
QVVIaWdobGlnaHRAMkBAWgpAQCAtNTg4LDkgKzU4NSw2IEBAIEVYUE9SVFMKICAgICAgICAgP2dl
dERhdGExNlNsb3dDYXNlQFN0cmluZ0ltcGxAV1RGQEBBQkVQQl9XWFoKICAgICAgICAgP2dldExv
Y2F0aW9uQW5kTGVuZ3RoRnJvbVJhbmdlQFRleHRJdGVyYXRvckBXZWJDb3JlQEBTQV9OUEFWRWxl
bWVudEAyQFBCVlJhbmdlQDJAQUFJMkBaCiAgICAgICAgID9nZXRSZWZlcmVuY2VkRmlsZVBhdGhz
QEZvcm1Db250cm9sbGVyQFdlYkNvcmVAQFNBP0FWPyRWZWN0b3JAVlN0cmluZ0BXVEZAQCQwQUBA
V1RGQEBBQlYzNEBAWgotICAgICAgICA/Y291bnRFbGVtZW50U2hhZG93QFNoYWRvd1Jvb3RAV2Vi
Q29yZUBAUUJFSVhaCi0gICAgICAgID9oYXNTaGFkb3dJbnNlcnRpb25Qb2ludEBTaGFkb3dSb290
QFdlYkNvcmVAQFFCRV9OWFoKLSAgICAgICAgP2hhc0NvbnRlbnRFbGVtZW50QFNoYWRvd1Jvb3RA
V2ViQ29yZUBAUUJFX05YWgogICAgICAgICA/aW5wdXRUYWdASFRNTE5hbWVzQFdlYkNvcmVAQDNW
UXVhbGlmaWVkTmFtZUAyQEIKICNpZiBFTkFCTEUoSU5TUEVDVE9SKQogICAgICAgICA/Z2V0SGln
aGxpZ2h0QEluc3BlY3RvckNvbnRyb2xsZXJAV2ViQ29yZUBAUUJFWFBBVUhpZ2hsaWdodEAyQEBa
CkBAIC05ODAsOSArOTc0LDYgQEAgRVhQT1JUUwogICAgICAgICA/Z2V0RGF0YTE2U2xvd0Nhc2VA
U3RyaW5nSW1wbEBXVEZAQEFCRVBCX1dYWgogICAgICAgICA/Z2V0TG9jYXRpb25BbmRMZW5ndGhG
cm9tUmFuZ2VAVGV4dEl0ZXJhdG9yQFdlYkNvcmVAQFNBX05QQVZFbGVtZW50QDJAUEJWUmFuZ2VA
MkBBQUkyQFoKICAgICAgICAgP2dldFJlZmVyZW5jZWRGaWxlUGF0aHNARm9ybUNvbnRyb2xsZXJA
V2ViQ29yZUBAU0E/QVY/JFZlY3RvckBWU3RyaW5nQFdURkBAJDBBQEBXVEZAQEFCVjM0QEBaCi0g
ICAgICAgID9jb3VudEVsZW1lbnRTaGFkb3dAU2hhZG93Um9vdEBXZWJDb3JlQEBRQkVJWFoKLSAg
ICAgICAgP2hhc1NoYWRvd0luc2VydGlvblBvaW50QFNoYWRvd1Jvb3RAV2ViQ29yZUBAUUJFX05Y
WgotICAgICAgICA/aGFzQ29udGVudEVsZW1lbnRAU2hhZG93Um9vdEBXZWJDb3JlQEBRQkVfTlha
CiAgICAgICAgID9pbnB1dFRhZ0BIVE1MTmFtZXNAV2ViQ29yZUBAM1ZRdWFsaWZpZWROYW1lQDJA
QgogI2lmIEVOQUJMRShJTlNQRUNUT1IpCiAgICAgICAgID9nZXRIaWdobGlnaHRASW5zcGVjdG9y
Q29udHJvbGxlckBXZWJDb3JlQEBRQkVYUEFVSGlnaGxpZ2h0QDJAQFoKQEAgLTEzNjIsNiArMTM1
Myw5IEBAIEVYUE9SVFMKICAgICAgICAgP2VxdWFsQFdURkBAWUFfTlBCVlN0cmluZ0ltcGxAMUAw
QFoKICAgICAgICAgP2VxdWFsSWdub3JpbmdDYXNlQFdURkBAWUFfTlBBVlN0cmluZ0ltcGxAMUBQ
QkVAWgogICAgICAgICA/ZXh0ZXJuYWxSZXByZXNlbnRhdGlvbkBXZWJDb3JlQEBZQT9BVlN0cmlu
Z0BXVEZAQFBBVkVsZW1lbnRAMUBJQFoKKyAgICAgICAgP2hhc1NoYWRvd0VsZW1lbnRAU2NvcGVD
b250ZW50RGlzdHJpYnV0aW9uQFdlYkNvcmVAQFNBX05QQlZTaGFkb3dSb290QDJAQFoKKyAgICAg
ICAgP2hhc0NvbnRlbnRFbGVtZW50QFNjb3BlQ29udGVudERpc3RyaWJ1dGlvbkBXZWJDb3JlQEBT
QV9OUEJWU2hhZG93Um9vdEAyQEBaCisgICAgICAgID9jb3VudEVsZW1lbnRTaGFkb3dAU2NvcGVD
b250ZW50RGlzdHJpYnV0aW9uQFdlYkNvcmVAQFNBSVBCVlNoYWRvd1Jvb3RAMkBAWgogICAgICAg
ICA/ZmluZEBTdHJpbmdJbXBsQFdURkBAUUFFSVBBVjEyQElAWgogICAgICAgICA/ZmluZEBTdHJp
bmdJbXBsQFdURkBAUUFFSVBBVjEyQEBaCiAgICAgICAgID9hYnNvbHV0ZUNhcmV0Qm91bmRzQEZy
YW1lU2VsZWN0aW9uQFdlYkNvcmVAQFFBRT9BVkludFJlY3RAMkBYWgpAQCAtMTM3Miw5ICsxMzY2
LDYgQEAgRVhQT1JUUwogICAgICAgICA/Z2V0RGF0YTE2U2xvd0Nhc2VAU3RyaW5nSW1wbEBXVEZA
QEFCRVBCX1dYWgogICAgICAgICA/Z2V0TG9jYXRpb25BbmRMZW5ndGhGcm9tUmFuZ2VAVGV4dEl0
ZXJhdG9yQFdlYkNvcmVAQFNBX05QQVZFbGVtZW50QDJAUEJWUmFuZ2VAMkBBQUkyQFoKICAgICAg
ICAgP2dldFJlZmVyZW5jZWRGaWxlUGF0aHNARm9ybUNvbnRyb2xsZXJAV2ViQ29yZUBAU0E/QVY/
JFZlY3RvckBWU3RyaW5nQFdURkBAJDBBQEBXVEZAQEFCVjM0QEBaCi0gICAgICAgID9jb3VudEVs
ZW1lbnRTaGFkb3dAU2hhZG93Um9vdEBXZWJDb3JlQEBRQkVJWFoKLSAgICAgICAgP2hhc1NoYWRv
d0luc2VydGlvblBvaW50QFNoYWRvd1Jvb3RAV2ViQ29yZUBAUUJFX05YWgotICAgICAgICA/aGFz
Q29udGVudEVsZW1lbnRAU2hhZG93Um9vdEBXZWJDb3JlQEBRQkVfTlhaCiAgICAgICAgID9pbnB1
dFRhZ0BIVE1MTmFtZXNAV2ViQ29yZUBAM1ZRdWFsaWZpZWROYW1lQDJAQgogI2lmIEVOQUJMRShJ
TlNQRUNUT1IpCiAgICAgICAgID9nZXRIaWdobGlnaHRASW5zcGVjdG9yQ29udHJvbGxlckBXZWJD
b3JlQEBRQkVYUEFVSGlnaGxpZ2h0QDJAQFoKZGlmZiAtLWdpdCBhL1NvdXJjZS9hdXRvdG9vbHMv
c3ltYm9scy5maWx0ZXIgYi9Tb3VyY2UvYXV0b3Rvb2xzL3N5bWJvbHMuZmlsdGVyCmluZGV4IGNm
M2ZkNjMzMWJiMWEzOWQ4MDRmMjI0ZWY0ZmZkYTc2YzRjZGU3ODEuLmE5MTQ3MDI4YjFhYzBiOTU1
NDg4ODA5N2FhY2RjZDE1MDFkMWFkZGMgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9hdXRvdG9vbHMvc3lt
Ym9scy5maWx0ZXIKKysrIGIvU291cmNlL2F1dG90b29scy9zeW1ib2xzLmZpbHRlcgpAQCAtNDks
OSArNDksNiBAQCBfWk43V2ViQ29yZTEwSlNEb2N1bWVudDZzX2luZm9FOwogX1pON1dlYkNvcmUx
MHRvRG9jdW1lbnRFTjNKU0M3SlNWYWx1ZUU7CiBfWk43V2ViQ29yZTEwQ2xpZW50UmVjdEMxRXY7
CiBfWk43V2ViQ29yZTEwQ2xpZW50UmVjdEMxRVJLTlNfN0ludFJlY3RFOwotX1pOSzdXZWJDb3Jl
MTBTaGFkb3dSb290MTdoYXNDb250ZW50RWxlbWVudEV2OwotX1pOSzdXZWJDb3JlMTBTaGFkb3dS
b290MThjb3VudEVsZW1lbnRTaGFkb3dFdjsKLV9aTks3V2ViQ29yZTEwU2hhZG93Um9vdDIzaGFz
U2hhZG93SW5zZXJ0aW9uUG9pbnRFdjsKIF9aTjdXZWJDb3JlMTBTaGFkb3dSb290NmNyZWF0ZUVQ
TlNfN0VsZW1lbnRFUmk7CiBfWk43V2ViQ29yZTExRXZlbnRUYXJnZXQxN3RvR2VuZXJhdGVkU3Ry
ZWFtRXY7CiBfWk43V2ViQ29yZTExRXZlbnRUYXJnZXQ4dG9TdHJlYW1FdjsKQEAgLTIzMCw2ICsy
MjcsOSBAQCBfWk43V2ViQ29yZTIxU2VyaWFsaXplZFNjcmlwdFZhbHVlNmNyZWF0ZUVSS04zV1RG
NlN0cmluZ0U7CiBfWk43V2ViQ29yZTIxU2VyaWFsaXplZFNjcmlwdFZhbHVlQzFFUk4zV1RGNlZl
Y3RvckloTGowRUVFOwogX1pON1dlYkNvcmUyMVNlcmlhbGl6ZWRTY3JpcHRWYWx1ZUMxRVJOM1dU
RjZWZWN0b3JJaExtMEVFRTsKIF9aTjdXZWJDb3JlMjFTZXJpYWxpemVkU2NyaXB0VmFsdWVEMUV2
OworX1pON1dlYkNvcmUyNFNjb3BlQ29udGVudERpc3RyaWJ1dGlvbjE2aGFzU2hhZG93RWxlbWVu
dEVQS05TXzEwU2hhZG93Um9vdEU7CitfWk43V2ViQ29yZTI0U2NvcGVDb250ZW50RGlzdHJpYnV0
aW9uMThjb3VudEVsZW1lbnRTaGFkb3dFUEtOU18xMFNoYWRvd1Jvb3RFOworX1pON1dlYkNvcmUy
NFNjb3BlQ29udGVudERpc3RyaWJ1dGlvbjE3aGFzQ29udGVudEVsZW1lbnRFUEtOU18xMFNoYWRv
d1Jvb3RFOwogX1pON1dlYkNvcmUxNkNTU1BhcnNlckNvbnRleHRDMUVQTlNfOERvY3VtZW50RVJL
TlNfNEtVUkxFUktOM1dURjZTdHJpbmdFOwogX1pON1dlYkNvcmUxOFN0eWxlU2hlZXRDb250ZW50
czExcGFyc2VTdHJpbmdFUktOM1dURjZTdHJpbmdFOwogX1pON1dlYkNvcmUxOFN0eWxlU2hlZXRD
b250ZW50c0MxRVBOU18xNVN0eWxlUnVsZUltcG9ydEVSS04zV1RGNlN0cmluZ0VSS05TXzE2Q1NT
UGFyc2VyQ29udGV4dEU7CmRpZmYgLS1naXQgYS9DaGFuZ2VMb2cgYi9DaGFuZ2VMb2cKaW5kZXgg
ZWIzOWEwYWVhZWYyNzcwM2M0N2JkNTcwZDBiMWQxZjQ1YWVjOWMyMy4uYmY4ZGE3YzRlM2M3ODNl
N2Y1ZjY3Y2Y5NDljOTlmMDk0OWFmNjJjZSAxMDA2NDQKLS0tIGEvQ2hhbmdlTG9nCisrKyBiL0No
YW5nZUxvZwpAQCAtMSwzICsxLDEyIEBACisyMDEzLTAxLTA4ICBIYWppbWUgTW9ycml0YSAgPG1v
cnJpdGFAZ29vZ2xlLmNvbT4KKworICAgICAgICBbU2hhZG93IERPTV0gRGlzdHJpYnV0aW9uIHJl
bGF0ZWQgY29kZSBvbiBTaGFkb3dSb290IHNob3VsZCBiZSBtaW5pbWl6ZWQuCisgICAgICAgIGh0
dHBzOi8vYnVncy53ZWJraXQub3JnL3Nob3dfYnVnLmNnaT9pZD0xMDYyODIKKworICAgICAgICBS
ZXZpZXdlZCBieSBOT0JPRFkgKE9PUFMhKS4KKworICAgICAgICAqIFNvdXJjZS9hdXRvdG9vbHMv
c3ltYm9scy5maWx0ZXI6CisKIDIwMTMtMDEtMDcgIFhpYW56aHUgV2FuZyAgPHdhbmd4aWFuemh1
QGNocm9taXVtLm9yZz4KIAogICAgICAgICBBZGQgd2luZG93LmludGVybmFscy5ub25GYXN0U2Ny
b2xsYWJsZVJlY3RzIGZvciB0ZXN0aW5nIHNjcm9sbGFibGUgYXJlYXMgaW4gZmFzdC9zbG93IHBh
dGhzCg==
</data>

          </attachment>
      

    </bug>

</bugzilla>