<?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>182453</bug_id>
          
          <creation_ts>2018-02-02 15:16:45 -0800</creation_ts>
          <short_desc>Make various DFG_ASSERTs provide more data to WTFCrashWithInfo</short_desc>
          <delta_ts>2018-02-02 16:43:20 -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>JavaScriptCore</component>
          <version>Safari Technology Preview</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>InRadar</keywords>
          <priority>P2</priority>
          <bug_severity>Normal</bug_severity>
          <target_milestone>---</target_milestone>
          
          
          <everconfirmed>1</everconfirmed>
          <reporter name="Saam Barati">saam</reporter>
          <assigned_to name="Saam Barati">saam</assigned_to>
          <cc>benjamin</cc>
    
    <cc>commit-queue</cc>
    
    <cc>fpizlo</cc>
    
    <cc>ggaren</cc>
    
    <cc>gskachkov</cc>
    
    <cc>jfbastien</cc>
    
    <cc>keith_miller</cc>
    
    <cc>mark.lam</cc>
    
    <cc>msaboff</cc>
    
    <cc>rmorisset</cc>
    
    <cc>ticaiolima</cc>
    
    <cc>webkit-bug-importer</cc>
    
    <cc>ysuzuki</cc>
          

      

      

      

          <comment_sort_order>oldest_to_newest</comment_sort_order>  
          <long_desc isprivate="0" >
    <commentid>1396025</commentid>
    <comment_count>0</comment_count>
    <who name="Saam Barati">saam</who>
    <bug_when>2018-02-02 15:16:45 -0800</bug_when>
    <thetext>Should help us when looking at the register file of a crashlog.</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>1396040</commentid>
    <comment_count>1</comment_count>
    <who name="Saam Barati">saam</who>
    <bug_when>2018-02-02 16:03:48 -0800</bug_when>
    <thetext>&lt;rdar://problem/37174236&gt;</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>1396041</commentid>
    <comment_count>2</comment_count>
      <attachid>333015</attachid>
    <who name="Saam Barati">saam</who>
    <bug_when>2018-02-02 16:06:25 -0800</bug_when>
    <thetext>Created attachment 333015
patch</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>1396043</commentid>
    <comment_count>3</comment_count>
      <attachid>333015</attachid>
    <who name="JF Bastien">jfbastien</who>
    <bug_when>2018-02-02 16:08:34 -0800</bug_when>
    <thetext>Comment on attachment 333015
patch

r=me</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>1396044</commentid>
    <comment_count>4</comment_count>
      <attachid>333015</attachid>
    <who name="Mark Lam">mark.lam</who>
    <bug_when>2018-02-02 16:10:07 -0800</bug_when>
    <thetext>Comment on attachment 333015
patch

View in context: https://bugs.webkit.org/attachment.cgi?id=333015&amp;action=review

r=me

&gt; Source/JavaScriptCore/ftl/FTLLowerDFGToB3.cpp:13057
&gt; +                DFG_ASSERT(m_graph, m_node, characterCases[i - 1].character &lt; characterCases[i].character, characterCases[i - 1].character, characterCases[i].character);

Is this an information leak in terms of privacy of the user?  Given that it&apos;s just 2 characters, I think it&apos;s safe.</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>1396045</commentid>
    <comment_count>5</comment_count>
    <who name="Saam Barati">saam</who>
    <bug_when>2018-02-02 16:10:33 -0800</bug_when>
    <thetext>(In reply to Mark Lam from comment #4)
&gt; Comment on attachment 333015 [details]
&gt; patch
&gt; 
&gt; View in context:
&gt; https://bugs.webkit.org/attachment.cgi?id=333015&amp;action=review
&gt; 
&gt; r=me
&gt; 
&gt; &gt; Source/JavaScriptCore/ftl/FTLLowerDFGToB3.cpp:13057
&gt; &gt; +                DFG_ASSERT(m_graph, m_node, characterCases[i - 1].character &lt; characterCases[i].character, characterCases[i - 1].character, characterCases[i].character);
&gt; 
&gt; Is this an information leak in terms of privacy of the user?  Given that
&gt; it&apos;s just 2 characters, I think it&apos;s safe.

Don&apos;t know, but let&apos;s not risk it. I&apos;ll remove it.</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>1396046</commentid>
    <comment_count>6</comment_count>
      <attachid>333017</attachid>
    <who name="Saam Barati">saam</who>
    <bug_when>2018-02-02 16:12:21 -0800</bug_when>
    <thetext>Created attachment 333017
patch for landing</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>1396056</commentid>
    <comment_count>7</comment_count>
      <attachid>333017</attachid>
    <who name="WebKit Commit Bot">commit-queue</who>
    <bug_when>2018-02-02 16:43:19 -0800</bug_when>
    <thetext>Comment on attachment 333017
patch for landing

Clearing flags on attachment: 333017

Committed r228035: &lt;https://trac.webkit.org/changeset/228035&gt;</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>1396057</commentid>
    <comment_count>8</comment_count>
    <who name="WebKit Commit Bot">commit-queue</who>
    <bug_when>2018-02-02 16:43:20 -0800</bug_when>
    <thetext>All reviewed patches have been landed.  Closing bug.</thetext>
  </long_desc>
      
          <attachment
              isobsolete="1"
              ispatch="1"
              isprivate="0"
          >
            <attachid>333015</attachid>
            <date>2018-02-02 16:06:25 -0800</date>
            <delta_ts>2018-02-02 16:12:21 -0800</delta_ts>
            <desc>patch</desc>
            <filename>b-backup.diff</filename>
            <type>text/plain</type>
            <size>37265</size>
            <attacher name="Saam Barati">saam</attacher>
            
              <data encoding="base64">SW5kZXg6IFNvdXJjZS9KYXZhU2NyaXB0Q29yZS9DaGFuZ2VMb2cKPT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PQotLS0gU291
cmNlL0phdmFTY3JpcHRDb3JlL0NoYW5nZUxvZwkocmV2aXNpb24gMjI4MDMyKQorKysgU291cmNl
L0phdmFTY3JpcHRDb3JlL0NoYW5nZUxvZwkod29ya2luZyBjb3B5KQpAQCAtMSwzICsxLDY2IEBA
CisyMDE4LTAyLTAyICBTYWFtIEJhcmF0aSAgPHNiYXJhdGlAYXBwbGUuY29tPgorCisgICAgICAg
IE1ha2UgdmFyaW91cyBERkdfQVNTRVJUcyBwcm92aWRlIG1vcmUgZGF0YSB0byBXVEZDcmFzaFdp
dGhJbmZvCisgICAgICAgIGh0dHBzOi8vYnVncy53ZWJraXQub3JnL3Nob3dfYnVnLmNnaT9pZD0x
ODI0NTMKKyAgICAgICAgPHJkYXI6Ly9wcm9ibGVtLzM3MTc0MjM2PgorCisgICAgICAgIFJldmll
d2VkIGJ5IE5PQk9EWSAoT09QUyEpLgorCisgICAgICAgICogZGZnL0RGR0Fic3RyYWN0SW50ZXJw
cmV0ZXJJbmxpbmVzLmg6CisgICAgICAgIChKU0M6OkRGRzo6QWJzdHJhY3RJbnRlcnByZXRlcjxB
YnN0cmFjdFN0YXRlVHlwZT46OmV4ZWN1dGVFZmZlY3RzKToKKyAgICAgICAgKiBkZmcvREZHQXJn
dW1lbnRzRWxpbWluYXRpb25QaGFzZS5jcHA6CisgICAgICAgICogZGZnL0RGR0FyZ3VtZW50c1V0
aWxpdGllcy5jcHA6CisgICAgICAgIChKU0M6OkRGRzo6ZW1pdENvZGVUb0dldEFyZ3VtZW50c0Fy
cmF5TGVuZ3RoKToKKyAgICAgICAgKiBkZmcvREZHRml4dXBQaGFzZS5jcHA6CisgICAgICAgIChK
U0M6OkRGRzo6Rml4dXBQaGFzZTo6Zml4dXBDaGVja3NJbkJsb2NrKToKKyAgICAgICAgKiBkZmcv
REZHRmxvd0luZGV4aW5nLmg6CisgICAgICAgIChKU0M6OkRGRzo6Rmxvd0luZGV4aW5nOjpzaGFk
b3dJbmRleCBjb25zdCk6CisgICAgICAgICogZGZnL0RGR0xJQ01QaGFzZS5jcHA6CisgICAgICAg
IChKU0M6OkRGRzo6TElDTVBoYXNlOjpydW4pOgorICAgICAgICAoSlNDOjpERkc6OkxJQ01QaGFz
ZTo6YXR0ZW1wdEhvaXN0KToKKyAgICAgICAgKiBkZmcvREZHTG9vcFByZUhlYWRlckNyZWF0aW9u
UGhhc2UuY3BwOgorICAgICAgICAoSlNDOjpERkc6Okxvb3BQcmVIZWFkZXJDcmVhdGlvblBoYXNl
OjpydW4pOgorICAgICAgICAqIGRmZy9ERkdQdXRTdGFja1NpbmtpbmdQaGFzZS5jcHA6CisgICAg
ICAgICogZGZnL0RGR1NwZWN1bGF0aXZlSklULmNwcDoKKyAgICAgICAgKEpTQzo6REZHOjpTcGVj
dWxhdGl2ZUpJVDo6Y29tcGlsZUFyaXRoQWJzKToKKyAgICAgICAgKEpTQzo6REZHOjpTcGVjdWxh
dGl2ZUpJVDo6Y29tcGlsZUFyaXRoUm91bmRpbmcpOgorICAgICAgICAoSlNDOjpERkc6OlNwZWN1
bGF0aXZlSklUOjpjb21waWxlVG9QcmltaXRpdmUpOgorICAgICAgICAqIGRmZy9ERkdTcGVjdWxh
dGl2ZUpJVDY0LmNwcDoKKyAgICAgICAgKEpTQzo6REZHOjpTcGVjdWxhdGl2ZUpJVDo6ZmlsbEpT
VmFsdWUpOgorICAgICAgICAoSlNDOjpERkc6OlNwZWN1bGF0aXZlSklUOjpmaWxsU3BlY3VsYXRl
SW50MzJJbnRlcm5hbCk6CisgICAgICAgIChKU0M6OkRGRzo6U3BlY3VsYXRpdmVKSVQ6OmZpbGxT
cGVjdWxhdGVJbnQzMlN0cmljdCk6CisgICAgICAgIChKU0M6OkRGRzo6U3BlY3VsYXRpdmVKSVQ6
OmZpbGxTcGVjdWxhdGVJbnQ1Mik6CisgICAgICAgIChKU0M6OkRGRzo6U3BlY3VsYXRpdmVKSVQ6
OmZpbGxTcGVjdWxhdGVEb3VibGUpOgorICAgICAgICAoSlNDOjpERkc6OlNwZWN1bGF0aXZlSklU
OjpmaWxsU3BlY3VsYXRlQm9vbGVhbik6CisgICAgICAgIChKU0M6OkRGRzo6U3BlY3VsYXRpdmVK
SVQ6OmNvbXBpbGUpOgorICAgICAgICAqIGRmZy9ERkdTdG9yZUJhcnJpZXJDbHVzdGVyaW5nUGhh
c2UuY3BwOgorICAgICAgICAqIGRmZy9ERkdTdG9yZUJhcnJpZXJJbnNlcnRpb25QaGFzZS5jcHA6
CisgICAgICAgICogZnRsL0ZUTExvd2VyREZHVG9CMy5jcHA6CisgICAgICAgIChKU0M6OkZUTDo6
REZHOjpMb3dlckRGR1RvQjM6OmNvbXBpbGVHZXRTdGFjayk6CisgICAgICAgIChKU0M6OkZUTDo6
REZHOjpMb3dlckRGR1RvQjM6OmNvbXBpbGVBcml0aENsejMyKToKKyAgICAgICAgKEpTQzo6RlRM
OjpERkc6Okxvd2VyREZHVG9CMzo6Y29tcGlsZUFyaXRoQWJzKToKKyAgICAgICAgKEpTQzo6RlRM
OjpERkc6Okxvd2VyREZHVG9CMzo6Y29tcGlsZUFyaXRoUm91bmQpOgorICAgICAgICAoSlNDOjpG
VEw6OkRGRzo6TG93ZXJERkdUb0IzOjpjb21waWxlQXJpdGhGbG9vcik6CisgICAgICAgIChKU0M6
OkZUTDo6REZHOjpMb3dlckRGR1RvQjM6OmNvbXBpbGVBcml0aENlaWwpOgorICAgICAgICAoSlND
OjpGVEw6OkRGRzo6TG93ZXJERkdUb0IzOjpjb21waWxlQXJpdGhUcnVuYyk6CisgICAgICAgIChK
U0M6OkZUTDo6REZHOjpMb3dlckRGR1RvQjM6OmNvbXBpbGVBcml0aE5lZ2F0ZSk6CisgICAgICAg
IChKU0M6OkZUTDo6REZHOjpMb3dlckRGR1RvQjM6OmNvbXBpbGVQdXRCeUlkKToKKyAgICAgICAg
KEpTQzo6RlRMOjpERkc6Okxvd2VyREZHVG9CMzo6Y29tcGlsZUdldEluZGV4ZWRQcm9wZXJ0eVN0
b3JhZ2UpOgorICAgICAgICAoSlNDOjpGVEw6OkRGRzo6TG93ZXJERkdUb0IzOjpjb21waWxlR2V0
QnlWYWwpOgorICAgICAgICAoSlNDOjpGVEw6OkRGRzo6TG93ZXJERkdUb0IzOjpjb21waWxlU3Ry
aW5nRnJvbUNoYXJDb2RlKToKKyAgICAgICAgKEpTQzo6RlRMOjpERkc6Okxvd2VyREZHVG9CMzo6
Y29tcGlsZU11bHRpUHV0QnlPZmZzZXQpOgorICAgICAgICAoSlNDOjpGVEw6OkRGRzo6TG93ZXJE
RkdUb0IzOjpjb21waWxlQ29tcGFyZUVxKToKKyAgICAgICAgKEpTQzo6RlRMOjpERkc6Okxvd2Vy
REZHVG9CMzo6Y29tcGlsZUNvbXBhcmVTdHJpY3RFcSk6CisgICAgICAgIChKU0M6OkZUTDo6REZH
OjpMb3dlckRGR1RvQjM6OmNvbXBpbGVJbik6CisgICAgICAgIChKU0M6OkZUTDo6REZHOjpMb3dl
ckRGR1RvQjM6OmNvbXBhcmUpOgorICAgICAgICAoSlNDOjpGVEw6OkRGRzo6TG93ZXJERkdUb0Iz
Ojpzd2l0Y2hTdHJpbmdSZWN1cnNlKToKKyAgICAgICAgKEpTQzo6RlRMOjpERkc6Okxvd2VyREZH
VG9CMzo6bG93SW50MzIpOgorICAgICAgICAoSlNDOjpGVEw6OkRGRzo6TG93ZXJERkdUb0IzOjps
b3dJbnQ1Mik6CisgICAgICAgIChKU0M6OkZUTDo6REZHOjpMb3dlckRGR1RvQjM6Omxvd0NlbGwp
OgorICAgICAgICAoSlNDOjpGVEw6OkRGRzo6TG93ZXJERkdUb0IzOjpsb3dCb29sZWFuKToKKyAg
ICAgICAgKEpTQzo6RlRMOjpERkc6Okxvd2VyREZHVG9CMzo6bG93RG91YmxlKToKKyAgICAgICAg
KEpTQzo6RlRMOjpERkc6Okxvd2VyREZHVG9CMzo6bG93SlNWYWx1ZSk6CisKIDIwMTgtMDItMDIg
IERvbiBPbG1zdGVhZCAgPGRvbi5vbG1zdGVhZEBzb255LmNvbT4KIAogICAgICAgICBKUyBCdWls
dGlucyBzaG91bGQgaW5jbHVkZSBKYXZhU2NyaXB0Q29yZSBoZWFkZXJzIGRpcmVjdGx5CkluZGV4
OiBTb3VyY2UvSmF2YVNjcmlwdENvcmUvZGZnL0RGR0Fic3RyYWN0SW50ZXJwcmV0ZXJJbmxpbmVz
LmgKPT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PQotLS0gU291cmNlL0phdmFTY3JpcHRDb3JlL2RmZy9ERkdBYnN0cmFjdElu
dGVycHJldGVySW5saW5lcy5oCShyZXZpc2lvbiAyMjgwMzEpCisrKyBTb3VyY2UvSmF2YVNjcmlw
dENvcmUvZGZnL0RGR0Fic3RyYWN0SW50ZXJwcmV0ZXJJbmxpbmVzLmgJKHdvcmtpbmcgY29weSkK
QEAgLTc2Myw3ICs3NjMsNyBAQCBib29sIEFic3RyYWN0SW50ZXJwcmV0ZXI8QWJzdHJhY3RTdGF0
ZVR5CiAgICAgICAgICAgICAgICAgICAgIGZvck5vZGUobm9kZS0+Y2hpbGQxKCkpLm1fdHlwZSkp
OwogICAgICAgICAgICAgYnJlYWs7CiAgICAgICAgIGRlZmF1bHQ6Ci0gICAgICAgICAgICBERkdf
QVNTRVJUKG1fZ3JhcGgsIG5vZGUsIG5vZGUtPmNoaWxkMSgpLnVzZUtpbmQoKSA9PSBVbnR5cGVk
VXNlKTsKKyAgICAgICAgICAgIERGR19BU1NFUlQobV9ncmFwaCwgbm9kZSwgbm9kZS0+Y2hpbGQx
KCkudXNlS2luZCgpID09IFVudHlwZWRVc2UsIG5vZGUtPmNoaWxkMSgpLnVzZUtpbmQoKSk7CiAg
ICAgICAgICAgICBjbG9iYmVyV29ybGQobm9kZS0+b3JpZ2luLnNlbWFudGljLCBjbG9iYmVyTGlt
aXQpOwogICAgICAgICAgICAgZm9yTm9kZShub2RlKS5zZXRUeXBlKFNwZWNCeXRlY29kZU51bWJl
cik7CiAgICAgICAgICAgICBicmVhazsKQEAgLTk3OCw3ICs5NzgsNyBAQCBib29sIEFic3RyYWN0
SW50ZXJwcmV0ZXI8QWJzdHJhY3RTdGF0ZVR5CiAgICAgICAgICAgICBmb3JOb2RlKG5vZGUpLnNl
dFR5cGUodHlwZU9mRG91YmxlQWJzKGZvck5vZGUobm9kZS0+Y2hpbGQxKCkpLm1fdHlwZSkpOwog
ICAgICAgICAgICAgYnJlYWs7CiAgICAgICAgIGRlZmF1bHQ6Ci0gICAgICAgICAgICBERkdfQVNT
RVJUKG1fZ3JhcGgsIG5vZGUsIG5vZGUtPmNoaWxkMSgpLnVzZUtpbmQoKSA9PSBVbnR5cGVkVXNl
KTsKKyAgICAgICAgICAgIERGR19BU1NFUlQobV9ncmFwaCwgbm9kZSwgbm9kZS0+Y2hpbGQxKCku
dXNlS2luZCgpID09IFVudHlwZWRVc2UsIG5vZGUtPmNoaWxkMSgpLnVzZUtpbmQoKSk7CiAgICAg
ICAgICAgICBjbG9iYmVyV29ybGQobm9kZS0+b3JpZ2luLnNlbWFudGljLCBjbG9iYmVyTGltaXQp
OwogICAgICAgICAgICAgZm9yTm9kZShub2RlKS5zZXRUeXBlKFNwZWNGdWxsTnVtYmVyKTsKICAg
ICAgICAgICAgIGJyZWFrOwpAQCAtMTA1NSw3ICsxMDU1LDcgQEAgYm9vbCBBYnN0cmFjdEludGVy
cHJldGVyPEFic3RyYWN0U3RhdGVUeQogICAgICAgICAgICAgZWxzZSBpZiAobm9kZS0+Y2hpbGQx
KCkudXNlS2luZCgpID09IERvdWJsZVJlcFVzZSkKICAgICAgICAgICAgICAgICBmb3JOb2RlKG5v
ZGUpLnNldFR5cGUodHlwZU9mRG91YmxlUm91bmRpbmcoZm9yTm9kZShub2RlLT5jaGlsZDEoKSku
bV90eXBlKSk7CiAgICAgICAgIH0gZWxzZSB7Ci0gICAgICAgICAgICBERkdfQVNTRVJUKG1fZ3Jh
cGgsIG5vZGUsIG5vZGUtPmNoaWxkMSgpLnVzZUtpbmQoKSA9PSBVbnR5cGVkVXNlKTsKKyAgICAg
ICAgICAgIERGR19BU1NFUlQobV9ncmFwaCwgbm9kZSwgbm9kZS0+Y2hpbGQxKCkudXNlS2luZCgp
ID09IFVudHlwZWRVc2UsIG5vZGUtPmNoaWxkMSgpLnVzZUtpbmQoKSk7CiAgICAgICAgICAgICBj
bG9iYmVyV29ybGQobm9kZS0+b3JpZ2luLnNlbWFudGljLCBjbG9iYmVyTGltaXQpOwogICAgICAg
ICAgICAgZm9yTm9kZShub2RlKS5zZXRUeXBlKFNwZWNGdWxsTnVtYmVyKTsKICAgICAgICAgfQpJ
bmRleDogU291cmNlL0phdmFTY3JpcHRDb3JlL2RmZy9ERkdBcmd1bWVudHNFbGltaW5hdGlvblBo
YXNlLmNwcAo9PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09Ci0tLSBTb3VyY2UvSmF2YVNjcmlwdENvcmUvZGZnL0RGR0FyZ3Vt
ZW50c0VsaW1pbmF0aW9uUGhhc2UuY3BwCShyZXZpc2lvbiAyMjgwMzEpCisrKyBTb3VyY2UvSmF2
YVNjcmlwdENvcmUvZGZnL0RGR0FyZ3VtZW50c0VsaW1pbmF0aW9uUGhhc2UuY3BwCSh3b3JraW5n
IGNvcHkpCkBAIC02ODksNyArNjg5LDcgQEAgcHJpdmF0ZToKICAgICAgICAgICAgICAgICAgICAg
ICAgIGJyZWFrOwogICAgICAgICAgICAgICAgICAgICAKICAgICAgICAgICAgICAgICAgICAgREZH
X0FTU0VSVCgKLSAgICAgICAgICAgICAgICAgICAgICAgIG1fZ3JhcGgsIG5vZGUsIG5vZGUtPmNo
aWxkMSgpLT5vcCgpID09IFBoYW50b21EaXJlY3RBcmd1bWVudHMpOworICAgICAgICAgICAgICAg
ICAgICAgICAgbV9ncmFwaCwgbm9kZSwgbm9kZS0+Y2hpbGQxKCktPm9wKCkgPT0gUGhhbnRvbURp
cmVjdEFyZ3VtZW50cywgbm9kZS0+Y2hpbGQxKCktPm9wKCkpOwogICAgICAgICAgICAgICAgICAg
ICBWaXJ0dWFsUmVnaXN0ZXIgcmVnID0KICAgICAgICAgICAgICAgICAgICAgICAgIHZpcnR1YWxS
ZWdpc3RlckZvckFyZ3VtZW50KG5vZGUtPmNhcHR1cmVkQXJndW1lbnRzT2Zmc2V0KCkub2Zmc2V0
KCkgKyAxKSArCiAgICAgICAgICAgICAgICAgICAgICAgICBub2RlLT5vcmlnaW4uc2VtYW50aWMu
c3RhY2tPZmZzZXQoKTsKQEAgLTg4Miw3ICs4ODIsNyBAQCBwcml2YXRlOgogICAgICAgICAgICAg
ICAgICAgICAgICAgICAgIGlmIChhcmd1bWVudENvdW50SW5jbHVkaW5nVGhpcyA8PSB2YXJhcmdz
RGF0YS0+bGltaXQpIHsKICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgc3RvcmVBcmd1
bWVudENvdW50SW5jbHVkaW5nVGhpcyhhcmd1bWVudENvdW50SW5jbHVkaW5nVGhpcyk7CiAKLSAg
ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgREZHX0FTU0VSVChtX2dyYXBoLCBub2RlLCB2
YXJhcmdzRGF0YS0+bGltaXQgLSAxID49IHZhcmFyZ3NEYXRhLT5tYW5kYXRvcnlNaW5pbXVtKTsK
KyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgREZHX0FTU0VSVChtX2dyYXBoLCBub2Rl
LCB2YXJhcmdzRGF0YS0+bGltaXQgLSAxID49IHZhcmFyZ3NEYXRhLT5tYW5kYXRvcnlNaW5pbXVt
LCB2YXJhcmdzRGF0YS0+bGltaXQsIHZhcmFyZ3NEYXRhLT5tYW5kYXRvcnlNaW5pbXVtKTsKICAg
ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgLy8gRGVmaW5lIG91ciBsaW1pdCB0byBleGNs
dWRlICJ0aGlzIiwgc2luY2UgdGhhdCdzIGEgYml0IGVhc2llciB0byByZWFzb24gYWJvdXQuCiAg
ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIHVuc2lnbmVkIGxpbWl0ID0gdmFyYXJnc0Rh
dGEtPmxpbWl0IC0gMTsKIApAQCAtOTcxLDcgKzk3MSw3IEBAIHByaXZhdGU6CiAgICAgICAgICAg
ICAgICAgICAgICAgICAgICAgICAgIAogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBz
dG9yZUFyZ3VtZW50Q291bnRJbmNsdWRpbmdUaGlzKGFyZ3VtZW50Q291bnRJbmNsdWRpbmdUaGlz
KTsKIAotICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBERkdfQVNTRVJUKG1fZ3JhcGgs
IG5vZGUsIHZhcmFyZ3NEYXRhLT5saW1pdCAtIDEgPj0gdmFyYXJnc0RhdGEtPm1hbmRhdG9yeU1p
bmltdW0pOworICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBERkdfQVNTRVJUKG1fZ3Jh
cGgsIG5vZGUsIHZhcmFyZ3NEYXRhLT5saW1pdCAtIDEgPj0gdmFyYXJnc0RhdGEtPm1hbmRhdG9y
eU1pbmltdW0sIHZhcmFyZ3NEYXRhLT5saW1pdCwgdmFyYXJnc0RhdGEtPm1hbmRhdG9yeU1pbmlt
dW0pOwogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAvLyBEZWZpbmUgb3VyIGxpbWl0
IHRvIGV4Y2x1ZGUgInRoaXMiLCBzaW5jZSB0aGF0J3MgYSBiaXQgZWFzaWVyIHRvIHJlYXNvbiBh
Ym91dC4KICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgdW5zaWduZWQgbGltaXQgPSB2
YXJhcmdzRGF0YS0+bGltaXQgLSAxOwogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBO
b2RlKiB1bmRlZmluZWQgPSBudWxscHRyOwpJbmRleDogU291cmNlL0phdmFTY3JpcHRDb3JlL2Rm
Zy9ERkdBcmd1bWVudHNVdGlsaXRpZXMuY3BwCj09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT0KLS0tIFNvdXJjZS9KYXZhU2Ny
aXB0Q29yZS9kZmcvREZHQXJndW1lbnRzVXRpbGl0aWVzLmNwcAkocmV2aXNpb24gMjI4MDMxKQor
KysgU291cmNlL0phdmFTY3JpcHRDb3JlL2RmZy9ERkdBcmd1bWVudHNVdGlsaXRpZXMuY3BwCSh3
b3JraW5nIGNvcHkpCkBAIC02Niw3ICs2Niw4IEBAIE5vZGUqIGVtaXRDb2RlVG9HZXRBcmd1bWVu
dHNBcnJheUxlbmd0aCgKICAgICAgICAgZ3JhcGgsIGFyZ3VtZW50cywKICAgICAgICAgYXJndW1l
bnRzLT5vcCgpID09IENyZWF0ZURpcmVjdEFyZ3VtZW50cyB8fCBhcmd1bWVudHMtPm9wKCkgPT0g
Q3JlYXRlU2NvcGVkQXJndW1lbnRzCiAgICAgICAgIHx8IGFyZ3VtZW50cy0+b3AoKSA9PSBDcmVh
dGVDbG9uZWRBcmd1bWVudHMgfHwgYXJndW1lbnRzLT5vcCgpID09IENyZWF0ZVJlc3QKLSAgICAg
ICAgfHwgYXJndW1lbnRzLT5vcCgpID09IFBoYW50b21EaXJlY3RBcmd1bWVudHMgfHwgYXJndW1l
bnRzLT5vcCgpID09IFBoYW50b21DbG9uZWRBcmd1bWVudHMgfHwgYXJndW1lbnRzLT5vcCgpID09
IFBoYW50b21DcmVhdGVSZXN0KTsKKyAgICAgICAgfHwgYXJndW1lbnRzLT5vcCgpID09IFBoYW50
b21EaXJlY3RBcmd1bWVudHMgfHwgYXJndW1lbnRzLT5vcCgpID09IFBoYW50b21DbG9uZWRBcmd1
bWVudHMgfHwgYXJndW1lbnRzLT5vcCgpID09IFBoYW50b21DcmVhdGVSZXN0LAorICAgICAgICBh
cmd1bWVudHMtPm9wKCkpOwogICAgIAogICAgIElubGluZUNhbGxGcmFtZSogaW5saW5lQ2FsbEZy
YW1lID0gYXJndW1lbnRzLT5vcmlnaW4uc2VtYW50aWMuaW5saW5lQ2FsbEZyYW1lOwogCkluZGV4
OiBTb3VyY2UvSmF2YVNjcmlwdENvcmUvZGZnL0RGR0ZpeHVwUGhhc2UuY3BwCj09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT0K
LS0tIFNvdXJjZS9KYXZhU2NyaXB0Q29yZS9kZmcvREZHRml4dXBQaGFzZS5jcHAJKHJldmlzaW9u
IDIyODAzMSkKKysrIFNvdXJjZS9KYXZhU2NyaXB0Q29yZS9kZmcvREZHRml4dXBQaGFzZS5jcHAJ
KHdvcmtpbmcgY29weSkKQEAgLTM2MjMsNyArMzYyMyw3IEBAIHByaXZhdGU6CiAgICAgICAgICAg
ICAgICAgICAgICAgICBkZWZhdWx0OgogICAgICAgICAgICAgICAgICAgICAgICAgICAgIC8vIFRo
aXMgY2FuIG9ubHkgYXJpc2UgaWYgd2UgaGF2ZSBhIENoZWNrIG5vZGUsIGFuZCBpbiB0aGF0IGNh
c2UsIHdlIGNhbgogICAgICAgICAgICAgICAgICAgICAgICAgICAgIC8vIGp1c3QgcmVtb3ZlIHRo
ZSBvcmlnaW5hbCBjaGVjay4KLSAgICAgICAgICAgICAgICAgICAgICAgICAgICBERkdfQVNTRVJU
KG1fZ3JhcGgsIG5vZGUsIG5vZGUtPm9wKCkgPT0gQ2hlY2spOworICAgICAgICAgICAgICAgICAg
ICAgICAgICAgIERGR19BU1NFUlQobV9ncmFwaCwgbm9kZSwgbm9kZS0+b3AoKSA9PSBDaGVjaywg
bm9kZS0+b3AoKSwgZWRnZS51c2VLaW5kKCkpOwogICAgICAgICAgICAgICAgICAgICAgICAgICAg
IGtub3duVXNlS2luZCA9IFVudHlwZWRVc2U7CiAgICAgICAgICAgICAgICAgICAgICAgICAgICAg
YnJlYWs7CiAgICAgICAgICAgICAgICAgICAgICAgICB9CkluZGV4OiBTb3VyY2UvSmF2YVNjcmlw
dENvcmUvZGZnL0RGR0Zsb3dJbmRleGluZy5oCj09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT0KLS0tIFNvdXJjZS9KYXZhU2Ny
aXB0Q29yZS9kZmcvREZHRmxvd0luZGV4aW5nLmgJKHJldmlzaW9uIDIyODAzMSkKKysrIFNvdXJj
ZS9KYXZhU2NyaXB0Q29yZS9kZmcvREZHRmxvd0luZGV4aW5nLmgJKHdvcmtpbmcgY29weSkKQEAg
LTU3LDcgKzU3LDcgQEAgcHVibGljOgogICAgIAogICAgIHVuc2lnbmVkIHNoYWRvd0luZGV4KE5v
ZGUqIG5vZGUpIGNvbnN0CiAgICAgewotICAgICAgICBERkdfQVNTRVJUKG1fZ3JhcGgsIG5vZGUs
IG5vZGUtPm9wKCkgPT0gUGhpKTsKKyAgICAgICAgREZHX0FTU0VSVChtX2dyYXBoLCBub2RlLCBu
b2RlLT5vcCgpID09IFBoaSwgbm9kZS0+b3AoKSk7CiAgICAgICAgIHJldHVybiBzaGFkb3dJbmRl
eChub2RlLT5pbmRleCgpKTsKICAgICB9CiAgICAgCkluZGV4OiBTb3VyY2UvSmF2YVNjcmlwdENv
cmUvZGZnL0RGR0xJQ01QaGFzZS5jcHAKPT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PQotLS0gU291cmNlL0phdmFTY3JpcHRD
b3JlL2RmZy9ERkdMSUNNUGhhc2UuY3BwCShyZXZpc2lvbiAyMjgwMzEpCisrKyBTb3VyY2UvSmF2
YVNjcmlwdENvcmUvZGZnL0RGR0xJQ01QaGFzZS5jcHAJKHdvcmtpbmcgY29weSkKQEAgLTEyNiw3
ICsxMjYsNyBAQCBwdWJsaWM6CiAgICAgICAgICAgICAvLyBUaGlzIGlzIGd1YXJhbnRlZWQgYmVj
YXVzZSB3ZSBleHBlY3QgdGhlIENGRyBub3QgdG8gaGF2ZSB1bnJlYWNoYWJsZSBjb2RlLiBUaGVy
ZWZvcmUsIGEKICAgICAgICAgICAgIC8vIGxvb3AgaGVhZGVyIG11c3QgaGF2ZSBhIHByZWRlY2Vz
c29yLiAoQWxzbywgd2UgZG9uJ3QgYWxsb3cgdGhlIHJvb3QgYmxvY2sgdG8gYmUgYSBsb29wLAog
ICAgICAgICAgICAgLy8gd2hpY2ggY3V0cyBvdXQgdGhlIG9uZSBvdGhlciB3YXkgb2YgaGF2aW5n
IGEgbG9vcCBoZWFkZXIgd2l0aCBvbmx5IG9uZSBwcmVkZWNlc3Nvci4pCi0gICAgICAgICAgICBE
RkdfQVNTRVJUKG1fZ3JhcGgsIGhlYWRlci0+YXQoMCksIGhlYWRlci0+cHJlZGVjZXNzb3JzLnNp
emUoKSA+IDEpOworICAgICAgICAgICAgREZHX0FTU0VSVChtX2dyYXBoLCBoZWFkZXItPmF0KDAp
LCBoZWFkZXItPnByZWRlY2Vzc29ycy5zaXplKCkgPiAxLCBoZWFkZXItPnByZWRlY2Vzc29ycy5z
aXplKCkpOwogICAgICAgICAgICAgCiAgICAgICAgICAgICBmb3IgKHVuc2lnbmVkIGkgPSBoZWFk
ZXItPnByZWRlY2Vzc29ycy5zaXplKCk7IGktLTspIHsKICAgICAgICAgICAgICAgICBCYXNpY0Js
b2NrKiBwcmVkZWNlc3NvciA9IGhlYWRlci0+cHJlZGVjZXNzb3JzW2ldOwpAQCAtMTU1LDcgKzE1
NSw3IEBAIHB1YmxpYzoKICAgICAgICAgICAgIC8vIFRoaXMgaXMgZ3VhcmFudGVlZCBiZWNhdXNl
IHRoZSBoZWFkZXIgaGFzIG11bHRpcGxlIHByZWRlY2Vzc29ycyBhbmQgY3JpdGljYWwgZWRnZXMg
YXJlCiAgICAgICAgICAgICAvLyBicm9rZW4uIFRoZXJlZm9yZSB0aGUgcHJlZGVjZXNzb3JzIG11
c3QgYWxsIGhhdmUgb25lIHN1Y2Nlc3Nvciwgd2hpY2ggaW1wbGllcyB0aGF0IHRoZXkKICAgICAg
ICAgICAgIC8vIG11c3QgZW5kIGluIGEgSnVtcC4KLSAgICAgICAgICAgIERGR19BU1NFUlQobV9n
cmFwaCwgcHJlSGVhZGVyLT50ZXJtaW5hbCgpLCBwcmVIZWFkZXItPnRlcm1pbmFsKCktPm9wKCkg
PT0gSnVtcCk7CisgICAgICAgICAgICBERkdfQVNTRVJUKG1fZ3JhcGgsIHByZUhlYWRlci0+dGVy
bWluYWwoKSwgcHJlSGVhZGVyLT50ZXJtaW5hbCgpLT5vcCgpID09IEp1bXAsIHByZUhlYWRlci0+
dGVybWluYWwoKS0+b3AoKSk7CiAKICAgICAgICAgICAgIGlmICghcHJlSGVhZGVyLT50ZXJtaW5h
bCgpLT5vcmlnaW4uZXhpdE9LKQogICAgICAgICAgICAgICAgIGNvbnRpbnVlOwpAQCAtMzQ2LDcg
KzM0Niw3IEBAIHByaXZhdGU6CiAgICAgICAgIC8vIEl0IGp1c3Qgc28gaGFwcGVucyB0aGF0IGFs
bCBvZiB0aGUgbm9kZXMgd2UgY3VycmVudGx5IGtub3cgaG93IHRvIGhvaXN0CiAgICAgICAgIC8v
IGRvbid0IGhhdmUgdmFyLWFyZyBjaGlsZHJlbi4gVGhhdCBtYXkgY2hhbmdlIGFuZCB0aGVuIHdl
IGNhbiBmaXggdGhpcwogICAgICAgICAvLyBjb2RlLiBCdXQgZm9yIG5vdyB3ZSBqdXN0IGFzc2Vy
dCB0aGF0J3MgdGhlIGNhc2UuCi0gICAgICAgIERGR19BU1NFUlQobV9ncmFwaCwgbm9kZSwgIShu
b2RlLT5mbGFncygpICYgTm9kZUhhc1ZhckFyZ3MpKTsKKyAgICAgICAgREZHX0FTU0VSVChtX2dy
YXBoLCBub2RlLCAhKG5vZGUtPmZsYWdzKCkgJiBOb2RlSGFzVmFyQXJncyksIG5vZGUtPm9wKCks
IG5vZGUtPmZsYWdzKCkpOwogICAgICAgICAKICAgICAgICAgbm9kZVJlZiA9IG1fZ3JhcGguYWRk
Tm9kZShDaGVjaywgb3JpZ2luYWxPcmlnaW4sIG5vZGUtPmNoaWxkcmVuKTsKICAgICAgICAgCklu
ZGV4OiBTb3VyY2UvSmF2YVNjcmlwdENvcmUvZGZnL0RGR0xvb3BQcmVIZWFkZXJDcmVhdGlvblBo
YXNlLmNwcAo9PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09Ci0tLSBTb3VyY2UvSmF2YVNjcmlwdENvcmUvZGZnL0RGR0xvb3BQ
cmVIZWFkZXJDcmVhdGlvblBoYXNlLmNwcAkocmV2aXNpb24gMjI4MDMxKQorKysgU291cmNlL0ph
dmFTY3JpcHRDb3JlL2RmZy9ERkdMb29wUHJlSGVhZGVyQ3JlYXRpb25QaGFzZS5jcHAJKHdvcmtp
bmcgY29weSkKQEAgLTE2Myw3ICsxNjMsNyBAQCBwdWJsaWM6CiAgICAgICAgICAgICAvLyBzb21l
IHByZWRlY2Vzc29yIG90aGVyIHRoYW4gdGhlIHByZS1oZWFkZXIuIFdlIG11c3QgaGF2ZSBicm9r
ZW4gY3JpdGljYWwgZWRnZXMKICAgICAgICAgICAgIC8vIGJlY2F1c2UgdGhhdCBpcyB0aGUgREZH
IFNTQSBjb252ZW50aW9uLiBUaGVyZWZvcmUsIGVhY2ggcHJlZGVjZXNzb3Igb2YgdGhlIGxvb3AK
ICAgICAgICAgICAgIC8vIGhlYWRlciBtdXN0IGhhdmUgb25seSBvbmUgc3VjY2Vzc29yLgotICAg
ICAgICAgICAgREZHX0FTU0VSVChtX2dyYXBoLCBudWxscHRyLCBleGlzdGluZ1ByZUhlYWRlci0+
dGVybWluYWwoKS0+b3AoKSA9PSBKdW1wKTsKKyAgICAgICAgICAgIERGR19BU1NFUlQobV9ncmFw
aCwgbnVsbHB0ciwgZXhpc3RpbmdQcmVIZWFkZXItPnRlcm1pbmFsKCktPm9wKCkgPT0gSnVtcCwg
ZXhpc3RpbmdQcmVIZWFkZXItPnRlcm1pbmFsKCktPm9wKCkpOwogCiAgICAgICAgICAgICAvLyBB
IHByZS1oZWFkZXIgaXMgbW9zdCB1c2VmdWwgaWYgaXQncyBwb3NzaWJsZSB0byBleGl0IGZyb20g
aXRzIHRlcm1pbmFsLiBIZW5jZQogICAgICAgICAgICAgLy8gaWYgdGhlIHRlcm1pbmFsIG9mIHRo
ZSBleGlzdGluZyBwcmUtaGVhZGVyIGRvZXNuJ3QgYWxsb3cgZm9yIGV4aXQsIGJ1dCB0aGUgZmly
c3QKSW5kZXg6IFNvdXJjZS9KYXZhU2NyaXB0Q29yZS9kZmcvREZHUHV0U3RhY2tTaW5raW5nUGhh
c2UuY3BwCj09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT0KLS0tIFNvdXJjZS9KYXZhU2NyaXB0Q29yZS9kZmcvREZHUHV0U3Rh
Y2tTaW5raW5nUGhhc2UuY3BwCShyZXZpc2lvbiAyMjgwMzEpCisrKyBTb3VyY2UvSmF2YVNjcmlw
dENvcmUvZGZnL0RGR1B1dFN0YWNrU2lua2luZ1BoYXNlLmNwcAkod29ya2luZyBjb3B5KQpAQCAt
NDUzLDcgKzQ1Myw3IEBAIHB1YmxpYzoKICAgICAgICAgICAgICAgICAgICAgaWYgKCFpc0NvbmNy
ZXRlKGZvcm1hdCkpIHsKICAgICAgICAgICAgICAgICAgICAgICAgIERGR19BU1NFUlQoCiAgICAg
ICAgICAgICAgICAgICAgICAgICAgICAgbV9ncmFwaCwgbm9kZSwKLSAgICAgICAgICAgICAgICAg
ICAgICAgICAgICBkZWZlcnJlZC5vcGVyYW5kKGRhdGEtPmxvY2FsKSAhPSBDb25mbGljdGluZ0Zs
dXNoKTsKKyAgICAgICAgICAgICAgICAgICAgICAgICAgICBkZWZlcnJlZC5vcGVyYW5kKGRhdGEt
PmxvY2FsKSAhPSBDb25mbGljdGluZ0ZsdXNoLCBkZWZlcnJlZC5vcGVyYW5kKGRhdGEtPmxvY2Fs
KSk7CiAgICAgICAgICAgICAgICAgICAgICAgICAKICAgICAgICAgICAgICAgICAgICAgICAgIC8v
IFRoaXMgbWVhbnMgdGhlcmUgaXMgbm8gZGVmZXJyYWwuIE5vIGRlZmVycmFsIG1lYW5zIHRoYXQg
dGhlIG1vc3QKICAgICAgICAgICAgICAgICAgICAgICAgIC8vIGF1dGhvcml0YXRpdmUgdmFsdWUg
Zm9yIHRoaXMgc3RhY2sgc2xvdCBpcyB3aGF0IGlzIHN0b3JlZCBpbiB0aGUgc3RhY2suIFNvLApA
QCAtNDY2LDcgKzQ2Niw3IEBAIHB1YmxpYzoKICAgICAgICAgICAgICAgICAgICAgLy8gd291bGQg
aGF2ZSBzdG9yZWQgYSB2YWx1ZSB3aXRoIGEgY2VydGFpbiBmb3JtYXQuIFRoYXQgZm9ybWF0IG11
c3QgbWF0Y2ggb3VyCiAgICAgICAgICAgICAgICAgICAgIC8vIGZvcm1hdC4gQnV0IG1vcmUgaW1w
b3J0YW50bHksIHdlIGNhbiBzaW1wbHkgdXNlIHRoZSB2YWx1ZSB0aGF0IHRoZSBQdXRTdGFjayB3
b3VsZAogICAgICAgICAgICAgICAgICAgICAvLyBoYXZlIHN0b3JlZCBhbmQgZ2V0IHJpZCBvZiB0
aGUgR2V0U3RhY2suCi0gICAgICAgICAgICAgICAgICAgIERGR19BU1NFUlQobV9ncmFwaCwgbm9k
ZSwgZm9ybWF0ID09IGRhdGEtPmZvcm1hdCk7CisgICAgICAgICAgICAgICAgICAgIERGR19BU1NF
UlQobV9ncmFwaCwgbm9kZSwgZm9ybWF0ID09IGRhdGEtPmZvcm1hdCwgZm9ybWF0LCBkYXRhLT5m
b3JtYXQpOwogICAgICAgICAgICAgICAgICAgICAKICAgICAgICAgICAgICAgICAgICAgTm9kZSog
aW5jb21pbmcgPSBtYXBwaW5nLm9wZXJhbmQoZGF0YS0+bG9jYWwpOwogICAgICAgICAgICAgICAg
ICAgICBub2RlLT5jaGlsZDEoKSA9IGluY29taW5nLT5kZWZhdWx0RWRnZSgpOwpAQCAtNTM0LDcg
KzUzNCw3IEBAIHB1YmxpYzoKICAgICAgICAgICAgICAgICAgICAgaWYgKERGR1B1dFN0YWNrU2lu
a2luZ1BoYXNlSW50ZXJuYWw6OnZlcmJvc2UpCiAgICAgICAgICAgICAgICAgICAgICAgICBkYXRh
TG9nKCJDcmVhdGluZyBVcHNpbG9uIGZvciAiLCBvcGVyYW5kLCAiIGF0ICIsIHBvaW50ZXJEdW1w
KGJsb2NrKSwgIi0+IiwgcG9pbnRlckR1bXAoc3VjY2Vzc29yQmxvY2spLCAiXG4iKTsKICAgICAg
ICAgICAgICAgICAgICAgRmx1c2hGb3JtYXQgZm9ybWF0ID0gZGVmZXJyZWRBdEhlYWRbc3VjY2Vz
c29yQmxvY2tdLm9wZXJhbmQob3BlcmFuZCk7Ci0gICAgICAgICAgICAgICAgICAgIERGR19BU1NF
UlQobV9ncmFwaCwgbnVsbHB0ciwgaXNDb25jcmV0ZShmb3JtYXQpKTsKKyAgICAgICAgICAgICAg
ICAgICAgREZHX0FTU0VSVChtX2dyYXBoLCBudWxscHRyLCBpc0NvbmNyZXRlKGZvcm1hdCksIGZv
cm1hdCk7CiAgICAgICAgICAgICAgICAgICAgIFVzZUtpbmQgdXNlS2luZCA9IHVuY2hlY2tlZFVz
ZUtpbmRGb3IoZm9ybWF0KTsKICAgICAgICAgICAgICAgICAgICAgCiAgICAgICAgICAgICAgICAg
ICAgIC8vIFdlIG5lZWQgdG8gZ2V0IGEgdmFsdWUgZm9yIHRoZSBzdGFjayBzbG90LiBUaGlzIHBo
YXNlIGRvZXNuJ3QgcmVhbGx5IGhhdmUgYQpJbmRleDogU291cmNlL0phdmFTY3JpcHRDb3JlL2Rm
Zy9ERkdTcGVjdWxhdGl2ZUpJVDY0LmNwcAo9PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09Ci0tLSBTb3VyY2UvSmF2YVNjcmlw
dENvcmUvZGZnL0RGR1NwZWN1bGF0aXZlSklUNjQuY3BwCShyZXZpc2lvbiAyMjgwMzEpCisrKyBT
b3VyY2UvSmF2YVNjcmlwdENvcmUvZGZnL0RGR1NwZWN1bGF0aXZlSklUNjQuY3BwCSh3b3JraW5n
IGNvcHkpCkBAIC0xMDcsNyArMTA3LDcgQEAgR1BSUmVnIFNwZWN1bGF0aXZlSklUOjpmaWxsSlNW
YWx1ZShFZGdlIAogICAgICAgICAgICAgICAgIAogICAgICAgICAgICAgZGVmYXVsdDoKICAgICAg
ICAgICAgICAgICBtX2ppdC5sb2FkNjQoSklUQ29tcGlsZXI6OmFkZHJlc3NGb3IodmlydHVhbFJl
Z2lzdGVyKSwgZ3ByKTsKLSAgICAgICAgICAgICAgICBERkdfQVNTRVJUKG1faml0LmdyYXBoKCks
IG1fY3VycmVudE5vZGUsIHNwaWxsRm9ybWF0ICYgRGF0YUZvcm1hdEpTKTsKKyAgICAgICAgICAg
ICAgICBERkdfQVNTRVJUKG1faml0LmdyYXBoKCksIG1fY3VycmVudE5vZGUsIHNwaWxsRm9ybWF0
ICYgRGF0YUZvcm1hdEpTLCBzcGlsbEZvcm1hdCk7CiAgICAgICAgICAgICAgICAgYnJlYWs7CiAg
ICAgICAgICAgICB9CiAgICAgICAgICAgICBpbmZvLmZpbGxKU1ZhbHVlKCptX3N0cmVhbSwgZ3By
LCBzcGlsbEZvcm1hdCk7CkBAIC0xMTExLDcgKzExMTEsNyBAQCBHUFJSZWcgU3BlY3VsYXRpdmVK
SVQ6OmZpbGxTcGVjdWxhdGVJbnQzCiAgICAgICAgIAogICAgICAgICBEYXRhRm9ybWF0IHNwaWxs
Rm9ybWF0ID0gaW5mby5zcGlsbEZvcm1hdCgpOwogICAgICAgICAKLSAgICAgICAgREZHX0FTU0VS
VChtX2ppdC5ncmFwaCgpLCBtX2N1cnJlbnROb2RlLCAoc3BpbGxGb3JtYXQgJiBEYXRhRm9ybWF0
SlMpIHx8IHNwaWxsRm9ybWF0ID09IERhdGFGb3JtYXRJbnQzMik7CisgICAgICAgIERGR19BU1NF
UlQobV9qaXQuZ3JhcGgoKSwgbV9jdXJyZW50Tm9kZSwgKHNwaWxsRm9ybWF0ICYgRGF0YUZvcm1h
dEpTKSB8fCBzcGlsbEZvcm1hdCA9PSBEYXRhRm9ybWF0SW50MzIsIHNwaWxsRm9ybWF0KTsKICAg
ICAgICAgCiAgICAgICAgIG1fZ3Bycy5yZXRhaW4oZ3ByLCB2aXJ0dWFsUmVnaXN0ZXIsIFNwaWxs
T3JkZXJTcGlsbGVkKTsKICAgICAgICAgCkBAIC0xMjIxLDcgKzEyMjEsNyBAQCBHUFJSZWcgU3Bl
Y3VsYXRpdmVKSVQ6OmZpbGxTcGVjdWxhdGVJbnQzCiB7CiAgICAgRGF0YUZvcm1hdCBtdXN0QmVE
YXRhRm9ybWF0SW50MzI7CiAgICAgR1BSUmVnIHJlc3VsdCA9IGZpbGxTcGVjdWxhdGVJbnQzMklu
dGVybmFsPHRydWU+KGVkZ2UsIG11c3RCZURhdGFGb3JtYXRJbnQzMik7Ci0gICAgREZHX0FTU0VS
VChtX2ppdC5ncmFwaCgpLCBtX2N1cnJlbnROb2RlLCBtdXN0QmVEYXRhRm9ybWF0SW50MzIgPT0g
RGF0YUZvcm1hdEludDMyKTsKKyAgICBERkdfQVNTRVJUKG1faml0LmdyYXBoKCksIG1fY3VycmVu
dE5vZGUsIG11c3RCZURhdGFGb3JtYXRJbnQzMiA9PSBEYXRhRm9ybWF0SW50MzIsIG11c3RCZURh
dGFGb3JtYXRJbnQzMik7CiAgICAgcmV0dXJuIHJlc3VsdDsKIH0KIApAQCAtMTI1Nyw3ICsxMjU3
LDcgQEAgR1BSUmVnIFNwZWN1bGF0aXZlSklUOjpmaWxsU3BlY3VsYXRlSW50NQogICAgICAgICAK
ICAgICAgICAgRGF0YUZvcm1hdCBzcGlsbEZvcm1hdCA9IGluZm8uc3BpbGxGb3JtYXQoKTsKICAg
ICAgICAgCi0gICAgICAgIERGR19BU1NFUlQobV9qaXQuZ3JhcGgoKSwgbV9jdXJyZW50Tm9kZSwg
c3BpbGxGb3JtYXQgPT0gRGF0YUZvcm1hdEludDUyIHx8IHNwaWxsRm9ybWF0ID09IERhdGFGb3Jt
YXRTdHJpY3RJbnQ1Mik7CisgICAgICAgIERGR19BU1NFUlQobV9qaXQuZ3JhcGgoKSwgbV9jdXJy
ZW50Tm9kZSwgc3BpbGxGb3JtYXQgPT0gRGF0YUZvcm1hdEludDUyIHx8IHNwaWxsRm9ybWF0ID09
IERhdGFGb3JtYXRTdHJpY3RJbnQ1Miwgc3BpbGxGb3JtYXQpOwogICAgICAgICAKICAgICAgICAg
bV9ncHJzLnJldGFpbihncHIsIHZpcnR1YWxSZWdpc3RlciwgU3BpbGxPcmRlclNwaWxsZWQpOwog
ICAgICAgICAKQEAgLTEzNTAsNyArMTM1MCw3IEBAIEZQUlJlZyBTcGVjdWxhdGl2ZUpJVDo6Zmls
bFNwZWN1bGF0ZURvdWIKICAgICAgICAgICAgICAgICAgICAgIkV4cGVjdGVkICIsIGVkZ2UsICIg
dG8gaGF2ZSBkb3VibGUgZm9ybWF0IGJ1dCBpbnN0ZWFkIGl0IGlzIHNwaWxsZWQgYXMgIiwKICAg
ICAgICAgICAgICAgICAgICAgZGF0YUZvcm1hdFRvU3RyaW5nKHNwaWxsRm9ybWF0KSkuZGF0YSgp
KTsKICAgICAgICAgfQotICAgICAgICBERkdfQVNTRVJUKG1faml0LmdyYXBoKCksIG1fY3VycmVu
dE5vZGUsIHNwaWxsRm9ybWF0ID09IERhdGFGb3JtYXREb3VibGUpOworICAgICAgICBERkdfQVNT
RVJUKG1faml0LmdyYXBoKCksIG1fY3VycmVudE5vZGUsIHNwaWxsRm9ybWF0ID09IERhdGFGb3Jt
YXREb3VibGUsIHNwaWxsRm9ybWF0KTsKICAgICAgICAgRlBSUmVnIGZwciA9IGZwckFsbG9jYXRl
KCk7CiAgICAgICAgIG1faml0LmxvYWREb3VibGUoSklUQ29tcGlsZXI6OmFkZHJlc3NGb3Iodmly
dHVhbFJlZ2lzdGVyKSwgZnByKTsKICAgICAgICAgbV9mcHJzLnJldGFpbihmcHIsIHZpcnR1YWxS
ZWdpc3RlciwgU3BpbGxPcmRlckRvdWJsZSk7CkBAIC0xMzU4LDcgKzEzNTgsNyBAQCBGUFJSZWcg
U3BlY3VsYXRpdmVKSVQ6OmZpbGxTcGVjdWxhdGVEb3ViCiAgICAgICAgIHJldHVybiBmcHI7CiAg
ICAgfQogCi0gICAgREZHX0FTU0VSVChtX2ppdC5ncmFwaCgpLCBtX2N1cnJlbnROb2RlLCBpbmZv
LnJlZ2lzdGVyRm9ybWF0KCkgPT0gRGF0YUZvcm1hdERvdWJsZSk7CisgICAgREZHX0FTU0VSVCht
X2ppdC5ncmFwaCgpLCBtX2N1cnJlbnROb2RlLCBpbmZvLnJlZ2lzdGVyRm9ybWF0KCkgPT0gRGF0
YUZvcm1hdERvdWJsZSwgaW5mby5yZWdpc3RlckZvcm1hdCgpKTsKICAgICBGUFJSZWcgZnByID0g
aW5mby5mcHIoKTsKICAgICBtX2ZwcnMubG9jayhmcHIpOwogICAgIHJldHVybiBmcHI7CkBAIC0x
NDY1LDcgKzE0NjUsNyBAQCBHUFJSZWcgU3BlY3VsYXRpdmVKSVQ6OmZpbGxTcGVjdWxhdGVCb29s
CiAgICAgICAgICAgICBpbmZvLmZpbGxKU1ZhbHVlKCptX3N0cmVhbSwgZ3ByLCBEYXRhRm9ybWF0
SlNCb29sZWFuKTsKICAgICAgICAgICAgIHJldHVybiBncHI7CiAgICAgICAgIH0KLSAgICAgICAg
REZHX0FTU0VSVChtX2ppdC5ncmFwaCgpLCBtX2N1cnJlbnROb2RlLCBpbmZvLnNwaWxsRm9ybWF0
KCkgJiBEYXRhRm9ybWF0SlMpOworICAgICAgICBERkdfQVNTRVJUKG1faml0LmdyYXBoKCksIG1f
Y3VycmVudE5vZGUsIGluZm8uc3BpbGxGb3JtYXQoKSAmIERhdGFGb3JtYXRKUywgaW5mby5zcGls
bEZvcm1hdCgpKTsKICAgICAgICAgbV9ncHJzLnJldGFpbihncHIsIHZpcnR1YWxSZWdpc3Rlciwg
U3BpbGxPcmRlclNwaWxsZWQpOwogICAgICAgICBtX2ppdC5sb2FkNjQoSklUQ29tcGlsZXI6OmFk
ZHJlc3NGb3IodmlydHVhbFJlZ2lzdGVyKSwgZ3ByKTsKIApAQCAtMjk2Myw3ICsyOTYzLDcgQEAg
dm9pZCBTcGVjdWxhdGl2ZUpJVDo6Y29tcGlsZShOb2RlKiBub2RlKQogICAgICAgICAgICAgREZH
X0NSQVNIKG1faml0LmdyYXBoKCksIG5vZGUsICJCYWQgYXJyYXkgbW9kZSB0eXBlIik7CiAgICAg
ICAgICAgICBicmVhazsKICAgICAgICAgY2FzZSBBcnJheTo6R2VuZXJpYzogewotICAgICAgICAg
ICAgREZHX0FTU0VSVChtX2ppdC5ncmFwaCgpLCBub2RlLCBub2RlLT5vcCgpID09IFB1dEJ5VmFs
IHx8IG5vZGUtPm9wKCkgPT0gUHV0QnlWYWxEaXJlY3QpOworICAgICAgICAgICAgREZHX0FTU0VS
VChtX2ppdC5ncmFwaCgpLCBub2RlLCBub2RlLT5vcCgpID09IFB1dEJ5VmFsIHx8IG5vZGUtPm9w
KCkgPT0gUHV0QnlWYWxEaXJlY3QsIG5vZGUtPm9wKCkpOwogCiAgICAgICAgICAgICBpZiAoY2hp
bGQxLnVzZUtpbmQoKSA9PSBDZWxsVXNlKSB7CiAgICAgICAgICAgICAgICAgaWYgKGNoaWxkMi51
c2VLaW5kKCkgPT0gU3RyaW5nVXNlKSB7CkBAIC0zNzI3LDcgKzM3MjcsNyBAQCB2b2lkIFNwZWN1
bGF0aXZlSklUOjpjb21waWxlKE5vZGUqIG5vZGUpCiAgICAgICAgIEpTR2xvYmFsT2JqZWN0KiBn
bG9iYWxPYmplY3QgPSBtX2ppdC5ncmFwaCgpLmdsb2JhbE9iamVjdEZvcihub2RlLT5vcmlnaW4u
c2VtYW50aWMpOwogICAgICAgICBpZiAoIWdsb2JhbE9iamVjdC0+aXNIYXZpbmdBQmFkVGltZSgp
ICYmICFoYXNBbnlBcnJheVN0b3JhZ2Uobm9kZS0+aW5kZXhpbmdUeXBlKCkpKSB7CiAgICAgICAg
ICAgICBSZWdpc3RlcmVkU3RydWN0dXJlIHN0cnVjdHVyZSA9IG1faml0LmdyYXBoKCkucmVnaXN0
ZXJTdHJ1Y3R1cmUoZ2xvYmFsT2JqZWN0LT5hcnJheVN0cnVjdHVyZUZvckluZGV4aW5nVHlwZUR1
cmluZ0FsbG9jYXRpb24obm9kZS0+aW5kZXhpbmdUeXBlKCkpKTsKLSAgICAgICAgICAgIERGR19B
U1NFUlQobV9qaXQuZ3JhcGgoKSwgbm9kZSwgc3RydWN0dXJlLT5pbmRleGluZ1R5cGUoKSA9PSBu
b2RlLT5pbmRleGluZ1R5cGUoKSk7CisgICAgICAgICAgICBERkdfQVNTRVJUKG1faml0LmdyYXBo
KCksIG5vZGUsIHN0cnVjdHVyZS0+aW5kZXhpbmdUeXBlKCkgPT0gbm9kZS0+aW5kZXhpbmdUeXBl
KCksIHN0cnVjdHVyZS0+aW5kZXhpbmdUeXBlKCksIG5vZGUtPmluZGV4aW5nVHlwZSgpKTsKICAg
ICAgICAgICAgIEFTU0VSVCgKICAgICAgICAgICAgICAgICBoYXNVbmRlY2lkZWQoc3RydWN0dXJl
LT5pbmRleGluZ1R5cGUoKSkKICAgICAgICAgICAgICAgICB8fCBoYXNJbnQzMihzdHJ1Y3R1cmUt
PmluZGV4aW5nVHlwZSgpKQpAQCAtMzkyOCw3ICszOTI4LDcgQEAgdm9pZCBTcGVjdWxhdGl2ZUpJ
VDo6Y29tcGlsZShOb2RlKiBub2RlKQogCiAgICAgICAgICAgICBlbWl0QWxsb2NhdGVSYXdPYmpl
Y3QocmVzdWx0R1BSLCBtX2ppdC5ncmFwaCgpLnJlZ2lzdGVyU3RydWN0dXJlKGdsb2JhbE9iamVj
dC0+YXJyYXlTdHJ1Y3R1cmVGb3JJbmRleGluZ1R5cGVEdXJpbmdBbGxvY2F0aW9uKGluZGV4aW5n
VHlwZSkpLCBzdG9yYWdlR1BSLCBudW1FbGVtZW50cywgdmVjdG9yTGVuZ3RoSGludCk7CiAgICAg
ICAgICAgICAKLSAgICAgICAgICAgIERGR19BU1NFUlQobV9qaXQuZ3JhcGgoKSwgbm9kZSwgaW5k
ZXhpbmdUeXBlICYgSXNBcnJheSk7CisgICAgICAgICAgICBERkdfQVNTRVJUKG1faml0LmdyYXBo
KCksIG5vZGUsIGluZGV4aW5nVHlwZSAmIElzQXJyYXksIGluZGV4aW5nVHlwZSk7CiAKICAgICAg
ICAgICAgIGZvciAodW5zaWduZWQgaW5kZXggPSAwOyBpbmRleCA8IG51bUVsZW1lbnRzOyArK2lu
ZGV4KSB7CiAgICAgICAgICAgICAgICAgaW50NjRfdCB2YWx1ZTsKSW5kZXg6IFNvdXJjZS9KYXZh
U2NyaXB0Q29yZS9kZmcvREZHU3BlY3VsYXRpdmVKSVQuY3BwCj09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT0KLS0tIFNvdXJj
ZS9KYXZhU2NyaXB0Q29yZS9kZmcvREZHU3BlY3VsYXRpdmVKSVQuY3BwCShyZXZpc2lvbiAyMjgw
MzEpCisrKyBTb3VyY2UvSmF2YVNjcmlwdENvcmUvZGZnL0RGR1NwZWN1bGF0aXZlSklULmNwcAko
d29ya2luZyBjb3B5KQpAQCAtNDI4Nyw3ICs0Mjg3LDcgQEAgdm9pZCBTcGVjdWxhdGl2ZUpJVDo6
Y29tcGlsZUFyaXRoQWJzKE5vZAogICAgIH0KIAogICAgIGRlZmF1bHQ6IHsKLSAgICAgICAgREZH
X0FTU0VSVChtX2ppdC5ncmFwaCgpLCBub2RlLCBub2RlLT5jaGlsZDEoKS51c2VLaW5kKCkgPT0g
VW50eXBlZFVzZSk7CisgICAgICAgIERGR19BU1NFUlQobV9qaXQuZ3JhcGgoKSwgbm9kZSwgbm9k
ZS0+Y2hpbGQxKCkudXNlS2luZCgpID09IFVudHlwZWRVc2UsIG5vZGUtPmNoaWxkMSgpLnVzZUtp
bmQoKSk7CiAgICAgICAgIEpTVmFsdWVPcGVyYW5kIG9wMSh0aGlzLCBub2RlLT5jaGlsZDEoKSk7
CiAgICAgICAgIEpTVmFsdWVSZWdzIG9wMVJlZ3MgPSBvcDEuanNWYWx1ZVJlZ3MoKTsKICAgICAg
ICAgZmx1c2hSZWdpc3RlcnMoKTsKQEAgLTU0NTcsNyArNTQ1Nyw3IEBAIHZvaWQgU3BlY3VsYXRp
dmVKSVQ6OmNvbXBpbGVBcml0aFJvdW5kaW4KICAgICAgICAgcmV0dXJuOwogICAgIH0KIAotICAg
IERGR19BU1NFUlQobV9qaXQuZ3JhcGgoKSwgbm9kZSwgbm9kZS0+Y2hpbGQxKCkudXNlS2luZCgp
ID09IFVudHlwZWRVc2UpOworICAgIERGR19BU1NFUlQobV9qaXQuZ3JhcGgoKSwgbm9kZSwgbm9k
ZS0+Y2hpbGQxKCkudXNlS2luZCgpID09IFVudHlwZWRVc2UsIG5vZGUtPmNoaWxkMSgpLnVzZUtp
bmQoKSk7CiAKICAgICBKU1ZhbHVlT3BlcmFuZCBhcmd1bWVudCh0aGlzLCBub2RlLT5jaGlsZDEo
KSk7CiAgICAgSlNWYWx1ZVJlZ3MgYXJndW1lbnRSZWdzID0gYXJndW1lbnQuanNWYWx1ZVJlZ3Mo
KTsKQEAgLTExNTM2LDcgKzExNTM2LDcgQEAgdm9pZCBTcGVjdWxhdGl2ZUpJVDo6Y29tcGlsZU5l
d09iamVjdChObwogCiB2b2lkIFNwZWN1bGF0aXZlSklUOjpjb21waWxlVG9QcmltaXRpdmUoTm9k
ZSogbm9kZSkKIHsKLSAgICBERkdfQVNTRVJUKG1faml0LmdyYXBoKCksIG5vZGUsIG5vZGUtPmNo
aWxkMSgpLnVzZUtpbmQoKSA9PSBVbnR5cGVkVXNlKTsKKyAgICBERkdfQVNTRVJUKG1faml0Lmdy
YXBoKCksIG5vZGUsIG5vZGUtPmNoaWxkMSgpLnVzZUtpbmQoKSA9PSBVbnR5cGVkVXNlLCBub2Rl
LT5jaGlsZDEoKS51c2VLaW5kKCkpOwogICAgIEpTVmFsdWVPcGVyYW5kIGFyZ3VtZW50KHRoaXMs
IG5vZGUtPmNoaWxkMSgpKTsKICAgICBKU1ZhbHVlUmVnc1RlbXBvcmFyeSByZXN1bHQodGhpcywg
UmV1c2UsIGFyZ3VtZW50KTsKIApJbmRleDogU291cmNlL0phdmFTY3JpcHRDb3JlL2RmZy9ERkdT
dG9yZUJhcnJpZXJDbHVzdGVyaW5nUGhhc2UuY3BwCj09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT0KLS0tIFNvdXJjZS9KYXZh
U2NyaXB0Q29yZS9kZmcvREZHU3RvcmVCYXJyaWVyQ2x1c3RlcmluZ1BoYXNlLmNwcAkocmV2aXNp
b24gMjI4MDMxKQorKysgU291cmNlL0phdmFTY3JpcHRDb3JlL2RmZy9ERkdTdG9yZUJhcnJpZXJD
bHVzdGVyaW5nUGhhc2UuY3BwCSh3b3JraW5nIGNvcHkpCkBAIC0xMTYsNyArMTE2LDcgQEAgcHJp
dmF0ZToKICAgICAgICAgICAgICAgICBjb250aW51ZTsKICAgICAgICAgICAgIAogICAgICAgICAg
ICAgREZHX0FTU0VSVChtX2dyYXBoLCBub2RlLCAhbm9kZS0+b3JpZ2luLndhc0hvaXN0ZWQpOwot
ICAgICAgICAgICAgREZHX0FTU0VSVChtX2dyYXBoLCBub2RlLCBub2RlLT5jaGlsZDEoKS51c2VL
aW5kKCkgPT0gS25vd25DZWxsVXNlKTsKKyAgICAgICAgICAgIERGR19BU1NFUlQobV9ncmFwaCwg
bm9kZSwgbm9kZS0+Y2hpbGQxKCkudXNlS2luZCgpID09IEtub3duQ2VsbFVzZSwgbm9kZS0+b3Ao
KSwgbm9kZS0+Y2hpbGQxKCkudXNlS2luZCgpKTsKICAgICAgICAgICAgIAogICAgICAgICAgICAg
Tm9kZU9yaWdpbiBvcmlnaW4gPSBub2RlLT5vcmlnaW47CiAgICAgICAgICAgICBtX25lZWRlZEJh
cnJpZXJzLmFwcGVuZChDaGlsZEFuZE9yaWdpbihub2RlLT5jaGlsZDEoKS5ub2RlKCksIG9yaWdp
bi5zZW1hbnRpYykpOwpJbmRleDogU291cmNlL0phdmFTY3JpcHRDb3JlL2RmZy9ERkdTdG9yZUJh
cnJpZXJJbnNlcnRpb25QaGFzZS5jcHAKPT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PQotLS0gU291cmNlL0phdmFTY3JpcHRD
b3JlL2RmZy9ERkdTdG9yZUJhcnJpZXJJbnNlcnRpb25QaGFzZS5jcHAJKHJldmlzaW9uIDIyODAz
MSkKKysrIFNvdXJjZS9KYXZhU2NyaXB0Q29yZS9kZmcvREZHU3RvcmVCYXJyaWVySW5zZXJ0aW9u
UGhhc2UuY3BwCSh3b3JraW5nIGNvcHkpCkBAIC00NjcsNyArNDY3LDcgQEAgcHJpdmF0ZToKICAg
ICAgICAgLy8gRklYTUU6IFdlIGNvdWxkIHN1cHBvcnQgU3RvcmVCYXJyaWVyKFVudHlwZWRVc2U6
KS4gVGhhdCB3b3VsZCBiZSBzb3J0IG9mIGNvb2wuCiAgICAgICAgIC8vIEJ1dCByaWdodCBub3cg
d2UgZG9uJ3QgbmVlZCBpdC4KIAotICAgICAgICBERkdfQVNTRVJUKG1fZ3JhcGgsIG1fbm9kZSwg
aXNDZWxsKGJhc2UudXNlS2luZCgpKSk7CisgICAgICAgIERGR19BU1NFUlQobV9ncmFwaCwgbV9u
b2RlLCBpc0NlbGwoYmFzZS51c2VLaW5kKCkpLCBtX25vZGUtPm9wKCksIGJhc2UudXNlS2luZCgp
KTsKICAgICAgICAgCiAgICAgICAgIC8vIEJhcnJpZXJzIGFyZSBhbHdheXMgaW5zZXJ0ZWQgYWZ0
ZXIgdGhlIG5vZGUgdGhhdCB0aGV5IHNlcnZpY2UuIFRoZXJlZm9yZSwgd2UgYWx3YXlzIGtub3cK
ICAgICAgICAgLy8gdGhhdCB0aGUgdGhpbmcgaXMgYSBjZWxsIG5vdy4KSW5kZXg6IFNvdXJjZS9K
YXZhU2NyaXB0Q29yZS9mdGwvRlRMTG93ZXJERkdUb0IzLmNwcAo9PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09Ci0tLSBTb3Vy
Y2UvSmF2YVNjcmlwdENvcmUvZnRsL0ZUTExvd2VyREZHVG9CMy5jcHAJKHJldmlzaW9uIDIyODAz
MSkKKysrIFNvdXJjZS9KYXZhU2NyaXB0Q29yZS9mdGwvRlRMTG93ZXJERkdUb0IzLmNwcAkod29y
a2luZyBjb3B5KQpAQCAtMTY2Nyw4ICsxNjY3LDggQEAgcHJpdmF0ZToKICAgICAgICAgU3RhY2tB
Y2Nlc3NEYXRhKiBkYXRhID0gbV9ub2RlLT5zdGFja0FjY2Vzc0RhdGEoKTsKICAgICAgICAgQWJz
dHJhY3RWYWx1ZSYgdmFsdWUgPSBtX3N0YXRlLnZhcmlhYmxlcygpLm9wZXJhbmQoZGF0YS0+bG9j
YWwpOwogICAgICAgICAKLSAgICAgICAgREZHX0FTU0VSVChtX2dyYXBoLCBtX25vZGUsIGlzQ29u
Y3JldGUoZGF0YS0+Zm9ybWF0KSk7Ci0gICAgICAgIERGR19BU1NFUlQobV9ncmFwaCwgbV9ub2Rl
LCBkYXRhLT5mb3JtYXQgIT0gRmx1c2hlZERvdWJsZSk7IC8vIFRoaXMganVzdCBoYXBwZW5zIHRv
IG5vdCBhcmlzZSBmb3IgR2V0U3RhY2tzLCByaWdodCBub3cuIEl0IHdvdWxkIGJlIHRyaXZpYWwg
dG8gc3VwcG9ydC4KKyAgICAgICAgREZHX0FTU0VSVChtX2dyYXBoLCBtX25vZGUsIGlzQ29uY3Jl
dGUoZGF0YS0+Zm9ybWF0KSwgZGF0YS0+Zm9ybWF0KTsKKyAgICAgICAgREZHX0FTU0VSVChtX2dy
YXBoLCBtX25vZGUsIGRhdGEtPmZvcm1hdCAhPSBGbHVzaGVkRG91YmxlLCBkYXRhLT5mb3JtYXQp
OyAvLyBUaGlzIGp1c3QgaGFwcGVucyB0byBub3QgYXJpc2UgZm9yIEdldFN0YWNrcywgcmlnaHQg
bm93LiBJdCB3b3VsZCBiZSB0cml2aWFsIHRvIHN1cHBvcnQuCiAgICAgICAgIAogICAgICAgICBp
ZiAoaXNJbnQzMlNwZWN1bGF0aW9uKHZhbHVlLm1fdHlwZSkpCiAgICAgICAgICAgICBzZXRJbnQz
MihtX291dC5sb2FkMzIocGF5bG9hZEZvcihkYXRhLT5tYWNoaW5lTG9jYWwpKSk7CkBAIC0yMDY5
LDcgKzIwNjksNyBAQCBwcml2YXRlOgogICAgICAgICAgICAgc2V0SW50MzIobV9vdXQuY3RsejMy
KG9wZXJhbmQpKTsKICAgICAgICAgICAgIHJldHVybjsKICAgICAgICAgfQotICAgICAgICBERkdf
QVNTRVJUKG1fZ3JhcGgsIG1fbm9kZSwgbV9ub2RlLT5jaGlsZDEoKS51c2VLaW5kKCkgPT0gVW50
eXBlZFVzZSk7CisgICAgICAgIERGR19BU1NFUlQobV9ncmFwaCwgbV9ub2RlLCBtX25vZGUtPmNo
aWxkMSgpLnVzZUtpbmQoKSA9PSBVbnR5cGVkVXNlLCBtX25vZGUtPmNoaWxkMSgpLnVzZUtpbmQo
KSk7CiAgICAgICAgIExWYWx1ZSBhcmd1bWVudCA9IGxvd0pTVmFsdWUobV9ub2RlLT5jaGlsZDEo
KSk7CiAgICAgICAgIExWYWx1ZSByZXN1bHQgPSB2bUNhbGwoSW50MzIsIG1fb3V0Lm9wZXJhdGlv
bihvcGVyYXRpb25Bcml0aENsejMyKSwgbV9jYWxsRnJhbWUsIGFyZ3VtZW50KTsKICAgICAgICAg
c2V0SW50MzIocmVzdWx0KTsKQEAgLTIzNjAsNyArMjM2MCw3IEBAIHByaXZhdGU6CiAgICAgICAg
IH0KICAgICAgICAgICAgIAogICAgICAgICBkZWZhdWx0OiB7Ci0gICAgICAgICAgICBERkdfQVNT
RVJUKG1fZ3JhcGgsIG1fbm9kZSwgbV9ub2RlLT5jaGlsZDEoKS51c2VLaW5kKCkgPT0gVW50eXBl
ZFVzZSk7CisgICAgICAgICAgICBERkdfQVNTRVJUKG1fZ3JhcGgsIG1fbm9kZSwgbV9ub2RlLT5j
aGlsZDEoKS51c2VLaW5kKCkgPT0gVW50eXBlZFVzZSwgbV9ub2RlLT5jaGlsZDEoKS51c2VLaW5k
KCkpOwogICAgICAgICAgICAgTFZhbHVlIGFyZ3VtZW50ID0gbG93SlNWYWx1ZShtX25vZGUtPmNo
aWxkMSgpKTsKICAgICAgICAgICAgIExWYWx1ZSByZXN1bHQgPSB2bUNhbGwoRG91YmxlLCBtX291
dC5vcGVyYXRpb24ob3BlcmF0aW9uQXJpdGhBYnMpLCBtX2NhbGxGcmFtZSwgYXJndW1lbnQpOwog
ICAgICAgICAgICAgc2V0RG91YmxlKHJlc3VsdCk7CkBAIC0yNjAwLDcgKzI2MDAsNyBAQCBwcml2
YXRlOgogICAgICAgICAgICAgcmV0dXJuOwogICAgICAgICB9CiAKLSAgICAgICAgREZHX0FTU0VS
VChtX2dyYXBoLCBtX25vZGUsIG1fbm9kZS0+Y2hpbGQxKCkudXNlS2luZCgpID09IFVudHlwZWRV
c2UpOworICAgICAgICBERkdfQVNTRVJUKG1fZ3JhcGgsIG1fbm9kZSwgbV9ub2RlLT5jaGlsZDEo
KS51c2VLaW5kKCkgPT0gVW50eXBlZFVzZSwgbV9ub2RlLT5jaGlsZDEoKS51c2VLaW5kKCkpOwog
ICAgICAgICBMVmFsdWUgYXJndW1lbnQgPSBsb3dKU1ZhbHVlKG1fbm9kZS0+Y2hpbGQxKCkpOwog
ICAgICAgICBzZXRKU1ZhbHVlKHZtQ2FsbChJbnQ2NCwgbV9vdXQub3BlcmF0aW9uKG9wZXJhdGlv
bkFyaXRoUm91bmQpLCBtX2NhbGxGcmFtZSwgYXJndW1lbnQpKTsKICAgICB9CkBAIC0yNjE2LDcg
KzI2MTYsNyBAQCBwcml2YXRlOgogICAgICAgICAgICAgICAgIHNldERvdWJsZShpbnRlZ2VyVmFs
dWUpOwogICAgICAgICAgICAgcmV0dXJuOwogICAgICAgICB9Ci0gICAgICAgIERGR19BU1NFUlQo
bV9ncmFwaCwgbV9ub2RlLCBtX25vZGUtPmNoaWxkMSgpLnVzZUtpbmQoKSA9PSBVbnR5cGVkVXNl
KTsKKyAgICAgICAgREZHX0FTU0VSVChtX2dyYXBoLCBtX25vZGUsIG1fbm9kZS0+Y2hpbGQxKCku
dXNlS2luZCgpID09IFVudHlwZWRVc2UsIG1fbm9kZS0+Y2hpbGQxKCkudXNlS2luZCgpKTsKICAg
ICAgICAgTFZhbHVlIGFyZ3VtZW50ID0gbG93SlNWYWx1ZShtX25vZGUtPmNoaWxkMSgpKTsKICAg
ICAgICAgc2V0SlNWYWx1ZSh2bUNhbGwoSW50NjQsIG1fb3V0Lm9wZXJhdGlvbihvcGVyYXRpb25B
cml0aEZsb29yKSwgbV9jYWxsRnJhbWUsIGFyZ3VtZW50KSk7CiAgICAgfQpAQCAtMjYzMiw3ICsy
NjMyLDcgQEAgcHJpdmF0ZToKICAgICAgICAgICAgICAgICBzZXREb3VibGUoaW50ZWdlclZhbHVl
KTsKICAgICAgICAgICAgIHJldHVybjsKICAgICAgICAgfQotICAgICAgICBERkdfQVNTRVJUKG1f
Z3JhcGgsIG1fbm9kZSwgbV9ub2RlLT5jaGlsZDEoKS51c2VLaW5kKCkgPT0gVW50eXBlZFVzZSk7
CisgICAgICAgIERGR19BU1NFUlQobV9ncmFwaCwgbV9ub2RlLCBtX25vZGUtPmNoaWxkMSgpLnVz
ZUtpbmQoKSA9PSBVbnR5cGVkVXNlLCBtX25vZGUtPmNoaWxkMSgpLnVzZUtpbmQoKSk7CiAgICAg
ICAgIExWYWx1ZSBhcmd1bWVudCA9IGxvd0pTVmFsdWUobV9ub2RlLT5jaGlsZDEoKSk7CiAgICAg
ICAgIHNldEpTVmFsdWUodm1DYWxsKEludDY0LCBtX291dC5vcGVyYXRpb24ob3BlcmF0aW9uQXJp
dGhDZWlsKSwgbV9jYWxsRnJhbWUsIGFyZ3VtZW50KSk7CiAgICAgfQpAQCAtMjY0OCw3ICsyNjQ4
LDcgQEAgcHJpdmF0ZToKICAgICAgICAgICAgICAgICBzZXREb3VibGUocmVzdWx0KTsKICAgICAg
ICAgICAgIHJldHVybjsKICAgICAgICAgfQotICAgICAgICBERkdfQVNTRVJUKG1fZ3JhcGgsIG1f
bm9kZSwgbV9ub2RlLT5jaGlsZDEoKS51c2VLaW5kKCkgPT0gVW50eXBlZFVzZSk7CisgICAgICAg
IERGR19BU1NFUlQobV9ncmFwaCwgbV9ub2RlLCBtX25vZGUtPmNoaWxkMSgpLnVzZUtpbmQoKSA9
PSBVbnR5cGVkVXNlLCBtX25vZGUtPmNoaWxkMSgpLnVzZUtpbmQoKSk7CiAgICAgICAgIExWYWx1
ZSBhcmd1bWVudCA9IGxvd0pTVmFsdWUobV9ub2RlLT5jaGlsZDEoKSk7CiAgICAgICAgIHNldEpT
VmFsdWUodm1DYWxsKEludDY0LCBtX291dC5vcGVyYXRpb24ob3BlcmF0aW9uQXJpdGhUcnVuYyks
IG1fY2FsbEZyYW1lLCBhcmd1bWVudCkpOwogICAgIH0KQEAgLTI3MjMsNyArMjcyMyw3IEBAIHBy
aXZhdGU6CiAgICAgICAgIH0KICAgICAgICAgICAgIAogICAgICAgICBkZWZhdWx0OgotICAgICAg
ICAgICAgREZHX0FTU0VSVChtX2dyYXBoLCBtX25vZGUsIG1fbm9kZS0+Y2hpbGQxKCkudXNlS2lu
ZCgpID09IFVudHlwZWRVc2UpOworICAgICAgICAgICAgREZHX0FTU0VSVChtX2dyYXBoLCBtX25v
ZGUsIG1fbm9kZS0+Y2hpbGQxKCkudXNlS2luZCgpID09IFVudHlwZWRVc2UsIG1fbm9kZS0+Y2hp
bGQxKCkudXNlS2luZCgpKTsKICAgICAgICAgICAgIEFyaXRoUHJvZmlsZSogYXJpdGhQcm9maWxl
ID0gbV9mdGxTdGF0ZS5ncmFwaC5iYXNlbGluZUNvZGVCbG9ja0ZvcihtX25vZGUtPm9yaWdpbi5z
ZW1hbnRpYyktPmFyaXRoUHJvZmlsZUZvckJ5dGVjb2RlT2Zmc2V0KG1fbm9kZS0+b3JpZ2luLnNl
bWFudGljLmJ5dGVjb2RlSW5kZXgpOwogICAgICAgICAgICAgYXV0byByZXBhdGNoaW5nRnVuY3Rp
b24gPSBvcGVyYXRpb25Bcml0aE5lZ2F0ZU9wdGltaXplOwogICAgICAgICAgICAgYXV0byBub25S
ZXBhdGNoaW5nRnVuY3Rpb24gPSBvcGVyYXRpb25Bcml0aE5lZ2F0ZTsKQEAgLTMzNjYsNyArMzM2
Niw3IEBAIHByaXZhdGU6CiAgICAgCiAgICAgdm9pZCBjb21waWxlUHV0QnlJZCgpCiAgICAgewot
ICAgICAgICBERkdfQVNTRVJUKG1fZ3JhcGgsIG1fbm9kZSwgbV9ub2RlLT5jaGlsZDEoKS51c2VL
aW5kKCkgPT0gQ2VsbFVzZSk7CisgICAgICAgIERGR19BU1NFUlQobV9ncmFwaCwgbV9ub2RlLCBt
X25vZGUtPmNoaWxkMSgpLnVzZUtpbmQoKSA9PSBDZWxsVXNlLCBtX25vZGUtPmNoaWxkMSgpLnVz
ZUtpbmQoKSk7CiAKICAgICAgICAgTm9kZSogbm9kZSA9IG1fbm9kZTsKICAgICAgICAgTFZhbHVl
IGJhc2UgPSBsb3dDZWxsKG5vZGUtPmNoaWxkMSgpKTsKQEAgLTM0NzIsNyArMzQ3Miw3IEBAIHBy
aXZhdGU6CiAgICAgICAgICAgICByZXR1cm47CiAgICAgICAgIH0KIAotICAgICAgICBERkdfQVNT
RVJUKG1fZ3JhcGgsIG1fbm9kZSwgaXNUeXBlZFZpZXcobV9ub2RlLT5hcnJheU1vZGUoKS50eXBl
ZEFycmF5VHlwZSgpKSk7CisgICAgICAgIERGR19BU1NFUlQobV9ncmFwaCwgbV9ub2RlLCBpc1R5
cGVkVmlldyhtX25vZGUtPmFycmF5TW9kZSgpLnR5cGVkQXJyYXlUeXBlKCkpLCBtX25vZGUtPmFy
cmF5TW9kZSgpLnR5cGVkQXJyYXlUeXBlKCkpOwogICAgICAgICBMVmFsdWUgcG9pc29uZWRWZWN0
b3IgPSBtX291dC5sb2FkUHRyKGNlbGwsIG1faGVhcHMuSlNBcnJheUJ1ZmZlclZpZXdfcG9pc29u
ZWRWZWN0b3IpOwogI2lmIEVOQUJMRShQT0lTT04pCiAgICAgICAgIGF1dG8gdHlwZWRBcnJheVR5
cGUgPSBtX25vZGUtPmFycmF5TW9kZSgpLnR5cGVkQXJyYXlUeXBlKCk7CkBAIC0zNzA2LDcgKzM3
MDYsNyBAQCBwcml2YXRlOgogICAgICAgICAgICAgICAgIExWYWx1ZSBpc0hvbGUgPSBtX291dC5p
c1plcm82NChyZXN1bHQpOwogICAgICAgICAgICAgICAgIGlmIChtX25vZGUtPmFycmF5TW9kZSgp
LmlzU2FuZUNoYWluKCkpIHsKICAgICAgICAgICAgICAgICAgICAgREZHX0FTU0VSVCgKLSAgICAg
ICAgICAgICAgICAgICAgICAgIG1fZ3JhcGgsIG1fbm9kZSwgbV9ub2RlLT5hcnJheU1vZGUoKS50
eXBlKCkgPT0gQXJyYXk6OkNvbnRpZ3VvdXMpOworICAgICAgICAgICAgICAgICAgICAgICAgbV9n
cmFwaCwgbV9ub2RlLCBtX25vZGUtPmFycmF5TW9kZSgpLnR5cGUoKSA9PSBBcnJheTo6Q29udGln
dW91cywgbV9ub2RlLT5hcnJheU1vZGUoKS50eXBlKCkpOwogICAgICAgICAgICAgICAgICAgICBy
ZXN1bHQgPSBtX291dC5zZWxlY3QoCiAgICAgICAgICAgICAgICAgICAgICAgICBpc0hvbGUsIG1f
b3V0LmNvbnN0SW50NjQoSlNWYWx1ZTo6ZW5jb2RlKGpzVW5kZWZpbmVkKCkpKSwgcmVzdWx0KTsK
ICAgICAgICAgICAgICAgICB9IGVsc2UKQEAgLTYxMzQsNyArNjEzNCw3IEBAIHByaXZhdGU6CiAg
ICAgICAgICAgICByZXR1cm47CiAgICAgICAgIH0KIAotICAgICAgICBERkdfQVNTRVJUKG1fZ3Jh
cGgsIG1fbm9kZSwgY2hpbGRFZGdlLnVzZUtpbmQoKSA9PSBJbnQzMlVzZSk7CisgICAgICAgIERG
R19BU1NFUlQobV9ncmFwaCwgbV9ub2RlLCBjaGlsZEVkZ2UudXNlS2luZCgpID09IEludDMyVXNl
LCBjaGlsZEVkZ2UudXNlS2luZCgpKTsKIAogICAgICAgICBMVmFsdWUgdmFsdWUgPSBsb3dJbnQz
MihjaGlsZEVkZ2UpOwogICAgICAgICAKQEAgLTYzMTUsNyArNjMxNSw3IEBAIHByaXZhdGU6CiAg
ICAgICAgICAgICAgICAgZWxzZQogICAgICAgICAgICAgICAgICAgICBzdG9yYWdlID0gbV9vdXQu
bG9hZFB0cihiYXNlLCBtX2hlYXBzLkpTT2JqZWN0X2J1dHRlcmZseSk7CiAgICAgICAgICAgICB9
IGVsc2UgewotICAgICAgICAgICAgICAgIERGR19BU1NFUlQobV9ncmFwaCwgbV9ub2RlLCB2YXJp
YW50LmtpbmQoKSA9PSBQdXRCeUlkVmFyaWFudDo6VHJhbnNpdGlvbik7CisgICAgICAgICAgICAg
ICAgREZHX0FTU0VSVChtX2dyYXBoLCBtX25vZGUsIHZhcmlhbnQua2luZCgpID09IFB1dEJ5SWRW
YXJpYW50OjpUcmFuc2l0aW9uLCB2YXJpYW50LmtpbmQoKSk7CiAgICAgICAgICAgICAgICAgbV9n
cmFwaC5tX3BsYW4udHJhbnNpdGlvbnMuYWRkTGF6aWx5KAogICAgICAgICAgICAgICAgICAgICBj
b2RlQmxvY2soKSwgbV9ub2RlLT5vcmlnaW4uc2VtYW50aWMuY29kZU9yaWdpbk93bmVyKCksCiAg
ICAgICAgICAgICAgICAgICAgIHZhcmlhbnQub2xkU3RydWN0dXJlRm9yVHJhbnNpdGlvbigpLCB2
YXJpYW50Lm5ld1N0cnVjdHVyZSgpKTsKQEAgLTY1MTAsNyArNjUxMCw3IEBAIHByaXZhdGU6CiAg
ICAgICAgICAgICByZXR1cm47CiAgICAgICAgIH0KIAotICAgICAgICBERkdfQVNTRVJUKG1fZ3Jh
cGgsIG1fbm9kZSwgbV9ub2RlLT5pc0JpbmFyeVVzZUtpbmQoVW50eXBlZFVzZSkpOworICAgICAg
ICBERkdfQVNTRVJUKG1fZ3JhcGgsIG1fbm9kZSwgbV9ub2RlLT5pc0JpbmFyeVVzZUtpbmQoVW50
eXBlZFVzZSksIG1fbm9kZS0+Y2hpbGQxKCkudXNlS2luZCgpLCBtX25vZGUtPmNoaWxkMigpLnVz
ZUtpbmQoKSk7CiAgICAgICAgIG5vblNwZWN1bGF0aXZlQ29tcGFyZSgKICAgICAgICAgICAgIFsm
XSAoTFZhbHVlIGxlZnQsIExWYWx1ZSByaWdodCkgewogICAgICAgICAgICAgICAgIHJldHVybiBt
X291dC5lcXVhbChsZWZ0LCByaWdodCk7CkBAIC02Njc1LDcgKzY2NzUsNyBAQCBwcml2YXRlOgog
ICAgICAgICAgICAgcmV0dXJuOwogICAgICAgICB9CiAKLSAgICAgICAgREZHX0FTU0VSVChtX2dy
YXBoLCBtX25vZGUsIG1fbm9kZS0+aXNCaW5hcnlVc2VLaW5kKFVudHlwZWRVc2UpKTsKKyAgICAg
ICAgREZHX0FTU0VSVChtX2dyYXBoLCBtX25vZGUsIG1fbm9kZS0+aXNCaW5hcnlVc2VLaW5kKFVu
dHlwZWRVc2UpLCBtX25vZGUtPmNoaWxkMSgpLnVzZUtpbmQoKSwgbV9ub2RlLT5jaGlsZDIoKS51
c2VLaW5kKCkpOwogICAgICAgICBub25TcGVjdWxhdGl2ZUNvbXBhcmUoCiAgICAgICAgICAgICBb
Jl0gKExWYWx1ZSBsZWZ0LCBMVmFsdWUgcmlnaHQpIHsKICAgICAgICAgICAgICAgICByZXR1cm4g
bV9vdXQuZXF1YWwobGVmdCwgcmlnaHQpOwpAQCAtOTMxMSw3ICs5MzExLDcgQEAgcHJpdmF0ZToK
ICAgICAKICAgICB2b2lkIGNvbXBpbGVJbigpCiAgICAgewotICAgICAgICBERkdfQVNTRVJUKG1f
Z3JhcGgsIG1fbm9kZSwgbV9ub2RlLT5jaGlsZDEoKS51c2VLaW5kKCkgPT0gQ2VsbFVzZSk7Cisg
ICAgICAgIERGR19BU1NFUlQobV9ncmFwaCwgbV9ub2RlLCBtX25vZGUtPmNoaWxkMSgpLnVzZUtp
bmQoKSA9PSBDZWxsVXNlLCBtX25vZGUtPmNoaWxkMSgpLnVzZUtpbmQoKSk7CiAKICAgICAgICAg
Tm9kZSogbm9kZSA9IG1fbm9kZTsKICAgICAgICAgRWRnZSBiYXNlID0gbm9kZS0+Y2hpbGQxKCk7
CkBAIC0xMTI1Myw3ICsxMTI1Myw3IEBAIHByaXZhdGU6CiAgICAgICAgICAgICByZXR1cm47CiAg
ICAgICAgIH0KIAotICAgICAgICBERkdfQVNTRVJUKG1fZ3JhcGgsIG1fbm9kZSwgbV9ub2RlLT5p
c0JpbmFyeVVzZUtpbmQoVW50eXBlZFVzZSkpOworICAgICAgICBERkdfQVNTRVJUKG1fZ3JhcGgs
IG1fbm9kZSwgbV9ub2RlLT5pc0JpbmFyeVVzZUtpbmQoVW50eXBlZFVzZSksIG1fbm9kZS0+Y2hp
bGQxKCkudXNlS2luZCgpLCBtX25vZGUtPmNoaWxkMigpLnVzZUtpbmQoKSk7CiAgICAgICAgIG5v
blNwZWN1bGF0aXZlQ29tcGFyZShpbnRGdW5jdG9yLCBmYWxsYmFja0Z1bmN0aW9uKTsKICAgICB9
CiAKQEAgLTEyOTgwLDExICsxMjk4MCwxMSBAQCBwcml2YXRlOgogICAgICAgICB9CiAgICAgICAg
IAogICAgICAgICBpZiAoY2hlY2tlZEV4YWN0TGVuZ3RoKSB7Ci0gICAgICAgICAgICBERkdfQVNT
RVJUKG1fZ3JhcGgsIG1fbm9kZSwgYWxyZWFkeUNoZWNrZWRMZW5ndGggPT0gbWluTGVuZ3RoKTsK
KyAgICAgICAgICAgIERGR19BU1NFUlQobV9ncmFwaCwgbV9ub2RlLCBhbHJlYWR5Q2hlY2tlZExl
bmd0aCA9PSBtaW5MZW5ndGgsIGFscmVhZHlDaGVja2VkTGVuZ3RoLCBtaW5MZW5ndGgpOwogICAg
ICAgICAgICAgREZHX0FTU0VSVChtX2dyYXBoLCBtX25vZGUsIGFsbExlbmd0aHNFcXVhbCk7CiAg
ICAgICAgIH0KICAgICAgICAgCi0gICAgICAgIERGR19BU1NFUlQobV9ncmFwaCwgbV9ub2RlLCBt
aW5MZW5ndGggPj0gY29tbW9uQ2hhcnMpOworICAgICAgICBERkdfQVNTRVJUKG1fZ3JhcGgsIG1f
bm9kZSwgbWluTGVuZ3RoID49IGNvbW1vbkNoYXJzLCBtaW5MZW5ndGgsIGNvbW1vbkNoYXJzKTsK
ICAgICAgICAgCiAgICAgICAgIGlmICghYWxsTGVuZ3Roc0VxdWFsICYmIGFscmVhZHlDaGVja2Vk
TGVuZ3RoIDwgbWluTGVuZ3RoKQogICAgICAgICAgICAgbV9vdXQuY2hlY2sobV9vdXQuYmVsb3co
bGVuZ3RoLCBtX291dC5jb25zdEludDMyKG1pbkxlbmd0aCkpLCB1bnN1cmUoZmFsbFRocm91Z2gp
KTsKQEAgLTEzMDA0LDEyICsxMzAwNCwxMiBAQCBwcml2YXRlOgogICAgICAgICAgICAgLy8gV2Un
dmUgYWxyZWFkeSBjaGVja2VkIHRoYXQgdGhlIGlucHV0IHN0cmluZyBpcyBhIHByZWZpeCBvZiBh
bGwgb2YgdGhlIGNhc2VzLAogICAgICAgICAgICAgLy8gc28gd2UganVzdCBjaGVjayBsZW5ndGgg
dG8ganVtcCB0byB0aGF0IGNhc2UuCiAgICAgICAgICAgICAKLSAgICAgICAgICAgIERGR19BU1NF
UlQobV9ncmFwaCwgbV9ub2RlLCBjYXNlc1tiZWdpbl0uc3RyaW5nLT5sZW5ndGgoKSA9PSBjb21t
b25DaGFycyk7CisgICAgICAgICAgICBERkdfQVNTRVJUKG1fZ3JhcGgsIG1fbm9kZSwgY2FzZXNb
YmVnaW5dLnN0cmluZy0+bGVuZ3RoKCkgPT0gY29tbW9uQ2hhcnMsIGNhc2VzW2JlZ2luXS5zdHJp
bmctPmxlbmd0aCgpLCBjb21tb25DaGFycyk7CiAgICAgICAgICAgICBmb3IgKHVuc2lnbmVkIGkg
PSBiZWdpbiArIDE7IGkgPCBlbmQ7ICsraSkKLSAgICAgICAgICAgICAgICBERkdfQVNTRVJUKG1f
Z3JhcGgsIG1fbm9kZSwgY2FzZXNbaV0uc3RyaW5nLT5sZW5ndGgoKSA+IGNvbW1vbkNoYXJzKTsK
KyAgICAgICAgICAgICAgICBERkdfQVNTRVJUKG1fZ3JhcGgsIG1fbm9kZSwgY2FzZXNbaV0uc3Ry
aW5nLT5sZW5ndGgoKSA+IGNvbW1vbkNoYXJzLCBjYXNlc1tpXS5zdHJpbmctPmxlbmd0aCgpLCBj
b21tb25DaGFycyk7CiAgICAgICAgICAgICAKICAgICAgICAgICAgIGlmIChhbGxMZW5ndGhzRXF1
YWwpIHsKLSAgICAgICAgICAgICAgICBERkdfQVNTRVJUKG1fZ3JhcGgsIG1fbm9kZSwgZW5kID09
IGJlZ2luICsgMSk7CisgICAgICAgICAgICAgICAgREZHX0FTU0VSVChtX2dyYXBoLCBtX25vZGUs
IGVuZCA9PSBiZWdpbiArIDEsIGVuZCwgYmVnaW4pOwogICAgICAgICAgICAgICAgIG1fb3V0Lmp1
bXAoY2FzZXNbYmVnaW5dLnRhcmdldCk7CiAgICAgICAgICAgICAgICAgcmV0dXJuOwogICAgICAg
ICAgICAgfQpAQCAtMTMwMzAsNyArMTMwMzAsNyBAQCBwcml2YXRlOgogICAgICAgICAvLyBjb21t
b25DaGFycy4gVXNlIGEgYmluYXJ5IHN3aXRjaCBvbiB0aGUgbmV4dCB1bmNoZWNrZWQgY2hhcmFj
dGVyLCBpLmUuCiAgICAgICAgIC8vIHN0cmluZ1tjb21tb25DaGFyc10uCiAgICAgICAgIAotICAg
ICAgICBERkdfQVNTRVJUKG1fZ3JhcGgsIG1fbm9kZSwgZW5kID49IGJlZ2luICsgMik7CisgICAg
ICAgIERGR19BU1NFUlQobV9ncmFwaCwgbV9ub2RlLCBlbmQgPj0gYmVnaW4gKyAyLCBlbmQsIGJl
Z2luKTsKICAgICAgICAgCiAgICAgICAgIExWYWx1ZSB1bmNoZWNrZWRDaGFyID0gbV9vdXQubG9h
ZDhaZXJvRXh0MzIoYnVmZmVyLCBtX2hlYXBzLmNoYXJhY3RlcnM4W2NvbW1vbkNoYXJzXSk7CiAg
ICAgICAgIApAQCAtMTMwNTQsNyArMTMwNTQsNyBAQCBwcml2YXRlOgogICAgICAgICBWZWN0b3I8
U3dpdGNoQ2FzZT4gc3dpdGNoQ2FzZXM7CiAgICAgICAgIGZvciAodW5zaWduZWQgaSA9IDA7IGkg
PCBjaGFyYWN0ZXJDYXNlcy5zaXplKCk7ICsraSkgewogICAgICAgICAgICAgaWYgKGkpCi0gICAg
ICAgICAgICAgICAgREZHX0FTU0VSVChtX2dyYXBoLCBtX25vZGUsIGNoYXJhY3RlckNhc2VzW2kg
LSAxXS5jaGFyYWN0ZXIgPCBjaGFyYWN0ZXJDYXNlc1tpXS5jaGFyYWN0ZXIpOworICAgICAgICAg
ICAgICAgIERGR19BU1NFUlQobV9ncmFwaCwgbV9ub2RlLCBjaGFyYWN0ZXJDYXNlc1tpIC0gMV0u
Y2hhcmFjdGVyIDwgY2hhcmFjdGVyQ2FzZXNbaV0uY2hhcmFjdGVyLCBjaGFyYWN0ZXJDYXNlc1tp
IC0gMV0uY2hhcmFjdGVyLCBjaGFyYWN0ZXJDYXNlc1tpXS5jaGFyYWN0ZXIpOwogICAgICAgICAg
ICAgc3dpdGNoQ2FzZXMuYXBwZW5kKFN3aXRjaENhc2UoCiAgICAgICAgICAgICAgICAgbV9vdXQu
Y29uc3RJbnQzMihjaGFyYWN0ZXJDYXNlc1tpXS5jaGFyYWN0ZXIpLCBjaGFyYWN0ZXJCbG9ja3Nb
aV0sIFdlaWdodCgpKSk7CiAgICAgICAgIH0KQEAgLTEzNzMzLDcgKzEzNzMzLDcgQEAgcHJpdmF0
ZToKICAgICAgICAgICAgIHJldHVybiByZXN1bHQ7CiAgICAgICAgIH0KIAotICAgICAgICBERkdf
QVNTRVJUKG1fZ3JhcGgsIG1fbm9kZSwgIShwcm92ZW5UeXBlKGVkZ2UpICYgU3BlY0ludDMyT25s
eSkpOworICAgICAgICBERkdfQVNTRVJUKG1fZ3JhcGgsIG1fbm9kZSwgIShwcm92ZW5UeXBlKGVk
Z2UpICYgU3BlY0ludDMyT25seSksIHByb3ZlblR5cGUoZWRnZSkpOwogICAgICAgICB0ZXJtaW5h
dGUoVW5jb3VudGFibGUpOwogICAgICAgICByZXR1cm4gbV9vdXQuaW50MzJaZXJvOwogICAgIH0K
QEAgLTEzNzQxLDcgKzEzNzQxLDcgQEAgcHJpdmF0ZToKICAgICBlbnVtIEludDUyS2luZCB7IFN0
cmljdEludDUyLCBJbnQ1MiB9OwogICAgIExWYWx1ZSBsb3dJbnQ1MihFZGdlIGVkZ2UsIEludDUy
S2luZCBraW5kKQogICAgIHsKLSAgICAgICAgREZHX0FTU0VSVChtX2dyYXBoLCBtX25vZGUsIGVk
Z2UudXNlS2luZCgpID09IEludDUyUmVwVXNlKTsKKyAgICAgICAgREZHX0FTU0VSVChtX2dyYXBo
LCBtX25vZGUsIGVkZ2UudXNlS2luZCgpID09IEludDUyUmVwVXNlLCBlZGdlLnVzZUtpbmQoKSk7
CiAgICAgICAgIAogICAgICAgICBMb3dlcmVkTm9kZVZhbHVlIHZhbHVlOwogICAgICAgICAKQEAg
LTEzNzY3LDcgKzEzNzY3LDcgQEAgcHJpdmF0ZToKICAgICAgICAgICAgIGJyZWFrOwogICAgICAg
ICB9CiAKLSAgICAgICAgREZHX0FTU0VSVChtX2dyYXBoLCBtX25vZGUsICFwcm92ZW5UeXBlKGVk
Z2UpKTsKKyAgICAgICAgREZHX0FTU0VSVChtX2dyYXBoLCBtX25vZGUsICFwcm92ZW5UeXBlKGVk
Z2UpLCBwcm92ZW5UeXBlKGVkZ2UpKTsKICAgICAgICAgdGVybWluYXRlKFVuY291bnRhYmxlKTsK
ICAgICAgICAgcmV0dXJuIG1fb3V0LmludDY0WmVybzsKICAgICB9CkBAIC0xMzgxNSw3ICsxMzgx
NSw3IEBAIHByaXZhdGU6CiAgICAgCiAgICAgTFZhbHVlIGxvd0NlbGwoRWRnZSBlZGdlLCBPcGVy
YW5kU3BlY3VsYXRpb25Nb2RlIG1vZGUgPSBBdXRvbWF0aWNPcGVyYW5kU3BlY3VsYXRpb24pCiAg
ICAgewotICAgICAgICBERkdfQVNTRVJUKG1fZ3JhcGgsIG1fbm9kZSwgbW9kZSA9PSBNYW51YWxP
cGVyYW5kU3BlY3VsYXRpb24gfHwgREZHOjppc0NlbGwoZWRnZS51c2VLaW5kKCkpKTsKKyAgICAg
ICAgREZHX0FTU0VSVChtX2dyYXBoLCBtX25vZGUsIG1vZGUgPT0gTWFudWFsT3BlcmFuZFNwZWN1
bGF0aW9uIHx8IERGRzo6aXNDZWxsKGVkZ2UudXNlS2luZCgpKSwgZWRnZS51c2VLaW5kKCkpOwog
ICAgICAgICAKICAgICAgICAgaWYgKGVkZ2UtPm9wKCkgPT0gSlNDb25zdGFudCkgewogICAgICAg
ICAgICAgRnJvemVuVmFsdWUqIHZhbHVlID0gZWRnZS0+Y29uc3RhbnQoKTsKQEAgLTEzODM2LDcg
KzEzODM2LDcgQEAgcHJpdmF0ZToKICAgICAgICAgICAgIHJldHVybiB1bmNoZWNrZWRWYWx1ZTsK
ICAgICAgICAgfQogICAgICAgICAKLSAgICAgICAgREZHX0FTU0VSVChtX2dyYXBoLCBtX25vZGUs
ICEocHJvdmVuVHlwZShlZGdlKSAmIFNwZWNDZWxsQ2hlY2spKTsKKyAgICAgICAgREZHX0FTU0VS
VChtX2dyYXBoLCBtX25vZGUsICEocHJvdmVuVHlwZShlZGdlKSAmIFNwZWNDZWxsQ2hlY2spLCBw
cm92ZW5UeXBlKGVkZ2UpKTsKICAgICAgICAgdGVybWluYXRlKFVuY291bnRhYmxlKTsKICAgICAg
ICAgcmV0dXJuIG1fb3V0LmludFB0clplcm87CiAgICAgfQpAQCAtMTM5NTEsMjggKzEzOTUxLDI4
IEBAIHByaXZhdGU6CiAgICAgICAgICAgICByZXR1cm4gcmVzdWx0OwogICAgICAgICB9CiAgICAg
ICAgIAotICAgICAgICBERkdfQVNTRVJUKG1fZ3JhcGgsIG1fbm9kZSwgIShwcm92ZW5UeXBlKGVk
Z2UpICYgU3BlY0Jvb2xlYW4pKTsKKyAgICAgICAgREZHX0FTU0VSVChtX2dyYXBoLCBtX25vZGUs
ICEocHJvdmVuVHlwZShlZGdlKSAmIFNwZWNCb29sZWFuKSwgcHJvdmVuVHlwZShlZGdlKSk7CiAg
ICAgICAgIHRlcm1pbmF0ZShVbmNvdW50YWJsZSk7CiAgICAgICAgIHJldHVybiBtX291dC5ib29s
ZWFuRmFsc2U7CiAgICAgfQogICAgIAogICAgIExWYWx1ZSBsb3dEb3VibGUoRWRnZSBlZGdlKQog
ICAgIHsKLSAgICAgICAgREZHX0FTU0VSVChtX2dyYXBoLCBtX25vZGUsIGlzRG91YmxlKGVkZ2Uu
dXNlS2luZCgpKSk7CisgICAgICAgIERGR19BU1NFUlQobV9ncmFwaCwgbV9ub2RlLCBpc0RvdWJs
ZShlZGdlLnVzZUtpbmQoKSksIGVkZ2UudXNlS2luZCgpKTsKICAgICAgICAgCiAgICAgICAgIExv
d2VyZWROb2RlVmFsdWUgdmFsdWUgPSBtX2RvdWJsZVZhbHVlcy5nZXQoZWRnZS5ub2RlKCkpOwog
ICAgICAgICBpZiAoaXNWYWxpZCh2YWx1ZSkpCiAgICAgICAgICAgICByZXR1cm4gdmFsdWUudmFs
dWUoKTsKLSAgICAgICAgREZHX0FTU0VSVChtX2dyYXBoLCBtX25vZGUsICFwcm92ZW5UeXBlKGVk
Z2UpKTsKKyAgICAgICAgREZHX0FTU0VSVChtX2dyYXBoLCBtX25vZGUsICFwcm92ZW5UeXBlKGVk
Z2UpLCBwcm92ZW5UeXBlKGVkZ2UpKTsKICAgICAgICAgdGVybWluYXRlKFVuY291bnRhYmxlKTsK
ICAgICAgICAgcmV0dXJuIG1fb3V0LmRvdWJsZVplcm87CiAgICAgfQogICAgIAogICAgIExWYWx1
ZSBsb3dKU1ZhbHVlKEVkZ2UgZWRnZSwgT3BlcmFuZFNwZWN1bGF0aW9uTW9kZSBtb2RlID0gQXV0
b21hdGljT3BlcmFuZFNwZWN1bGF0aW9uKQogICAgIHsKLSAgICAgICAgREZHX0FTU0VSVChtX2dy
YXBoLCBtX25vZGUsIG1vZGUgPT0gTWFudWFsT3BlcmFuZFNwZWN1bGF0aW9uIHx8IGVkZ2UudXNl
S2luZCgpID09IFVudHlwZWRVc2UpOwotICAgICAgICBERkdfQVNTRVJUKG1fZ3JhcGgsIG1fbm9k
ZSwgIWlzRG91YmxlKGVkZ2UudXNlS2luZCgpKSk7Ci0gICAgICAgIERGR19BU1NFUlQobV9ncmFw
aCwgbV9ub2RlLCBlZGdlLnVzZUtpbmQoKSAhPSBJbnQ1MlJlcFVzZSk7CisgICAgICAgIERGR19B
U1NFUlQobV9ncmFwaCwgbV9ub2RlLCBtb2RlID09IE1hbnVhbE9wZXJhbmRTcGVjdWxhdGlvbiB8
fCBlZGdlLnVzZUtpbmQoKSA9PSBVbnR5cGVkVXNlLCBtX25vZGUtPm9wKCksIGVkZ2UudXNlS2lu
ZCgpKTsKKyAgICAgICAgREZHX0FTU0VSVChtX2dyYXBoLCBtX25vZGUsICFpc0RvdWJsZShlZGdl
LnVzZUtpbmQoKSksIG1fbm9kZS0+b3AoKSwgZWRnZS51c2VLaW5kKCkpOworICAgICAgICBERkdf
QVNTRVJUKG1fZ3JhcGgsIG1fbm9kZSwgZWRnZS51c2VLaW5kKCkgIT0gSW50NTJSZXBVc2UsIG1f
bm9kZS0+b3AoKSwgZWRnZS51c2VLaW5kKCkpOwogICAgICAgICAKICAgICAgICAgaWYgKGVkZ2Ut
Pmhhc0NvbnN0YW50KCkpIHsKICAgICAgICAgICAgIExWYWx1ZSByZXN1bHQgPSBtX291dC5jb25z
dEludDY0KEpTVmFsdWU6OmVuY29kZShlZGdlLT5hc0pTVmFsdWUoKSkpOwo=
</data>
<flag name="review"
          id="351938"
          type_id="1"
          status="+"
          setter="jfbastien"
    />
          </attachment>
          <attachment
              isobsolete="0"
              ispatch="1"
              isprivate="0"
          >
            <attachid>333017</attachid>
            <date>2018-02-02 16:12:21 -0800</date>
            <delta_ts>2018-02-02 16:43:19 -0800</delta_ts>
            <desc>patch for landing</desc>
            <filename>b-backup.diff</filename>
            <type>text/plain</type>
            <size>36685</size>
            <attacher name="Saam Barati">saam</attacher>
            
              <data encoding="base64">SW5kZXg6IFNvdXJjZS9KYXZhU2NyaXB0Q29yZS9DaGFuZ2VMb2cKPT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PQotLS0gU291
cmNlL0phdmFTY3JpcHRDb3JlL0NoYW5nZUxvZwkocmV2aXNpb24gMjI4MDMyKQorKysgU291cmNl
L0phdmFTY3JpcHRDb3JlL0NoYW5nZUxvZwkod29ya2luZyBjb3B5KQpAQCAtMSwzICsxLDY2IEBA
CisyMDE4LTAyLTAyICBTYWFtIEJhcmF0aSAgPHNiYXJhdGlAYXBwbGUuY29tPgorCisgICAgICAg
IE1ha2UgdmFyaW91cyBERkdfQVNTRVJUcyBwcm92aWRlIG1vcmUgZGF0YSB0byBXVEZDcmFzaFdp
dGhJbmZvCisgICAgICAgIGh0dHBzOi8vYnVncy53ZWJraXQub3JnL3Nob3dfYnVnLmNnaT9pZD0x
ODI0NTMKKyAgICAgICAgPHJkYXI6Ly9wcm9ibGVtLzM3MTc0MjM2PgorCisgICAgICAgIFJldmll
d2VkIGJ5IEpGIEJhc3RpZW4gYW5kIE1hcmsgTGFtLgorCisgICAgICAgICogZGZnL0RGR0Fic3Ry
YWN0SW50ZXJwcmV0ZXJJbmxpbmVzLmg6CisgICAgICAgIChKU0M6OkRGRzo6QWJzdHJhY3RJbnRl
cnByZXRlcjxBYnN0cmFjdFN0YXRlVHlwZT46OmV4ZWN1dGVFZmZlY3RzKToKKyAgICAgICAgKiBk
ZmcvREZHQXJndW1lbnRzRWxpbWluYXRpb25QaGFzZS5jcHA6CisgICAgICAgICogZGZnL0RGR0Fy
Z3VtZW50c1V0aWxpdGllcy5jcHA6CisgICAgICAgIChKU0M6OkRGRzo6ZW1pdENvZGVUb0dldEFy
Z3VtZW50c0FycmF5TGVuZ3RoKToKKyAgICAgICAgKiBkZmcvREZHRml4dXBQaGFzZS5jcHA6Cisg
ICAgICAgIChKU0M6OkRGRzo6Rml4dXBQaGFzZTo6Zml4dXBDaGVja3NJbkJsb2NrKToKKyAgICAg
ICAgKiBkZmcvREZHRmxvd0luZGV4aW5nLmg6CisgICAgICAgIChKU0M6OkRGRzo6Rmxvd0luZGV4
aW5nOjpzaGFkb3dJbmRleCBjb25zdCk6CisgICAgICAgICogZGZnL0RGR0xJQ01QaGFzZS5jcHA6
CisgICAgICAgIChKU0M6OkRGRzo6TElDTVBoYXNlOjpydW4pOgorICAgICAgICAoSlNDOjpERkc6
OkxJQ01QaGFzZTo6YXR0ZW1wdEhvaXN0KToKKyAgICAgICAgKiBkZmcvREZHTG9vcFByZUhlYWRl
ckNyZWF0aW9uUGhhc2UuY3BwOgorICAgICAgICAoSlNDOjpERkc6Okxvb3BQcmVIZWFkZXJDcmVh
dGlvblBoYXNlOjpydW4pOgorICAgICAgICAqIGRmZy9ERkdQdXRTdGFja1NpbmtpbmdQaGFzZS5j
cHA6CisgICAgICAgICogZGZnL0RGR1NwZWN1bGF0aXZlSklULmNwcDoKKyAgICAgICAgKEpTQzo6
REZHOjpTcGVjdWxhdGl2ZUpJVDo6Y29tcGlsZUFyaXRoQWJzKToKKyAgICAgICAgKEpTQzo6REZH
OjpTcGVjdWxhdGl2ZUpJVDo6Y29tcGlsZUFyaXRoUm91bmRpbmcpOgorICAgICAgICAoSlNDOjpE
Rkc6OlNwZWN1bGF0aXZlSklUOjpjb21waWxlVG9QcmltaXRpdmUpOgorICAgICAgICAqIGRmZy9E
RkdTcGVjdWxhdGl2ZUpJVDY0LmNwcDoKKyAgICAgICAgKEpTQzo6REZHOjpTcGVjdWxhdGl2ZUpJ
VDo6ZmlsbEpTVmFsdWUpOgorICAgICAgICAoSlNDOjpERkc6OlNwZWN1bGF0aXZlSklUOjpmaWxs
U3BlY3VsYXRlSW50MzJJbnRlcm5hbCk6CisgICAgICAgIChKU0M6OkRGRzo6U3BlY3VsYXRpdmVK
SVQ6OmZpbGxTcGVjdWxhdGVJbnQzMlN0cmljdCk6CisgICAgICAgIChKU0M6OkRGRzo6U3BlY3Vs
YXRpdmVKSVQ6OmZpbGxTcGVjdWxhdGVJbnQ1Mik6CisgICAgICAgIChKU0M6OkRGRzo6U3BlY3Vs
YXRpdmVKSVQ6OmZpbGxTcGVjdWxhdGVEb3VibGUpOgorICAgICAgICAoSlNDOjpERkc6OlNwZWN1
bGF0aXZlSklUOjpmaWxsU3BlY3VsYXRlQm9vbGVhbik6CisgICAgICAgIChKU0M6OkRGRzo6U3Bl
Y3VsYXRpdmVKSVQ6OmNvbXBpbGUpOgorICAgICAgICAqIGRmZy9ERkdTdG9yZUJhcnJpZXJDbHVz
dGVyaW5nUGhhc2UuY3BwOgorICAgICAgICAqIGRmZy9ERkdTdG9yZUJhcnJpZXJJbnNlcnRpb25Q
aGFzZS5jcHA6CisgICAgICAgICogZnRsL0ZUTExvd2VyREZHVG9CMy5jcHA6CisgICAgICAgIChK
U0M6OkZUTDo6REZHOjpMb3dlckRGR1RvQjM6OmNvbXBpbGVHZXRTdGFjayk6CisgICAgICAgIChK
U0M6OkZUTDo6REZHOjpMb3dlckRGR1RvQjM6OmNvbXBpbGVBcml0aENsejMyKToKKyAgICAgICAg
KEpTQzo6RlRMOjpERkc6Okxvd2VyREZHVG9CMzo6Y29tcGlsZUFyaXRoQWJzKToKKyAgICAgICAg
KEpTQzo6RlRMOjpERkc6Okxvd2VyREZHVG9CMzo6Y29tcGlsZUFyaXRoUm91bmQpOgorICAgICAg
ICAoSlNDOjpGVEw6OkRGRzo6TG93ZXJERkdUb0IzOjpjb21waWxlQXJpdGhGbG9vcik6CisgICAg
ICAgIChKU0M6OkZUTDo6REZHOjpMb3dlckRGR1RvQjM6OmNvbXBpbGVBcml0aENlaWwpOgorICAg
ICAgICAoSlNDOjpGVEw6OkRGRzo6TG93ZXJERkdUb0IzOjpjb21waWxlQXJpdGhUcnVuYyk6Cisg
ICAgICAgIChKU0M6OkZUTDo6REZHOjpMb3dlckRGR1RvQjM6OmNvbXBpbGVBcml0aE5lZ2F0ZSk6
CisgICAgICAgIChKU0M6OkZUTDo6REZHOjpMb3dlckRGR1RvQjM6OmNvbXBpbGVQdXRCeUlkKToK
KyAgICAgICAgKEpTQzo6RlRMOjpERkc6Okxvd2VyREZHVG9CMzo6Y29tcGlsZUdldEluZGV4ZWRQ
cm9wZXJ0eVN0b3JhZ2UpOgorICAgICAgICAoSlNDOjpGVEw6OkRGRzo6TG93ZXJERkdUb0IzOjpj
b21waWxlR2V0QnlWYWwpOgorICAgICAgICAoSlNDOjpGVEw6OkRGRzo6TG93ZXJERkdUb0IzOjpj
b21waWxlU3RyaW5nRnJvbUNoYXJDb2RlKToKKyAgICAgICAgKEpTQzo6RlRMOjpERkc6Okxvd2Vy
REZHVG9CMzo6Y29tcGlsZU11bHRpUHV0QnlPZmZzZXQpOgorICAgICAgICAoSlNDOjpGVEw6OkRG
Rzo6TG93ZXJERkdUb0IzOjpjb21waWxlQ29tcGFyZUVxKToKKyAgICAgICAgKEpTQzo6RlRMOjpE
Rkc6Okxvd2VyREZHVG9CMzo6Y29tcGlsZUNvbXBhcmVTdHJpY3RFcSk6CisgICAgICAgIChKU0M6
OkZUTDo6REZHOjpMb3dlckRGR1RvQjM6OmNvbXBpbGVJbik6CisgICAgICAgIChKU0M6OkZUTDo6
REZHOjpMb3dlckRGR1RvQjM6OmNvbXBhcmUpOgorICAgICAgICAoSlNDOjpGVEw6OkRGRzo6TG93
ZXJERkdUb0IzOjpzd2l0Y2hTdHJpbmdSZWN1cnNlKToKKyAgICAgICAgKEpTQzo6RlRMOjpERkc6
Okxvd2VyREZHVG9CMzo6bG93SW50MzIpOgorICAgICAgICAoSlNDOjpGVEw6OkRGRzo6TG93ZXJE
RkdUb0IzOjpsb3dJbnQ1Mik6CisgICAgICAgIChKU0M6OkZUTDo6REZHOjpMb3dlckRGR1RvQjM6
Omxvd0NlbGwpOgorICAgICAgICAoSlNDOjpGVEw6OkRGRzo6TG93ZXJERkdUb0IzOjpsb3dCb29s
ZWFuKToKKyAgICAgICAgKEpTQzo6RlRMOjpERkc6Okxvd2VyREZHVG9CMzo6bG93RG91YmxlKToK
KyAgICAgICAgKEpTQzo6RlRMOjpERkc6Okxvd2VyREZHVG9CMzo6bG93SlNWYWx1ZSk6CisKIDIw
MTgtMDItMDIgIERvbiBPbG1zdGVhZCAgPGRvbi5vbG1zdGVhZEBzb255LmNvbT4KIAogICAgICAg
ICBKUyBCdWlsdGlucyBzaG91bGQgaW5jbHVkZSBKYXZhU2NyaXB0Q29yZSBoZWFkZXJzIGRpcmVj
dGx5CkluZGV4OiBTb3VyY2UvSmF2YVNjcmlwdENvcmUvZGZnL0RGR0Fic3RyYWN0SW50ZXJwcmV0
ZXJJbmxpbmVzLmgKPT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PQotLS0gU291cmNlL0phdmFTY3JpcHRDb3JlL2RmZy9ERkdB
YnN0cmFjdEludGVycHJldGVySW5saW5lcy5oCShyZXZpc2lvbiAyMjgwMzEpCisrKyBTb3VyY2Uv
SmF2YVNjcmlwdENvcmUvZGZnL0RGR0Fic3RyYWN0SW50ZXJwcmV0ZXJJbmxpbmVzLmgJKHdvcmtp
bmcgY29weSkKQEAgLTc2Myw3ICs3NjMsNyBAQCBib29sIEFic3RyYWN0SW50ZXJwcmV0ZXI8QWJz
dHJhY3RTdGF0ZVR5CiAgICAgICAgICAgICAgICAgICAgIGZvck5vZGUobm9kZS0+Y2hpbGQxKCkp
Lm1fdHlwZSkpOwogICAgICAgICAgICAgYnJlYWs7CiAgICAgICAgIGRlZmF1bHQ6Ci0gICAgICAg
ICAgICBERkdfQVNTRVJUKG1fZ3JhcGgsIG5vZGUsIG5vZGUtPmNoaWxkMSgpLnVzZUtpbmQoKSA9
PSBVbnR5cGVkVXNlKTsKKyAgICAgICAgICAgIERGR19BU1NFUlQobV9ncmFwaCwgbm9kZSwgbm9k
ZS0+Y2hpbGQxKCkudXNlS2luZCgpID09IFVudHlwZWRVc2UsIG5vZGUtPmNoaWxkMSgpLnVzZUtp
bmQoKSk7CiAgICAgICAgICAgICBjbG9iYmVyV29ybGQobm9kZS0+b3JpZ2luLnNlbWFudGljLCBj
bG9iYmVyTGltaXQpOwogICAgICAgICAgICAgZm9yTm9kZShub2RlKS5zZXRUeXBlKFNwZWNCeXRl
Y29kZU51bWJlcik7CiAgICAgICAgICAgICBicmVhazsKQEAgLTk3OCw3ICs5NzgsNyBAQCBib29s
IEFic3RyYWN0SW50ZXJwcmV0ZXI8QWJzdHJhY3RTdGF0ZVR5CiAgICAgICAgICAgICBmb3JOb2Rl
KG5vZGUpLnNldFR5cGUodHlwZU9mRG91YmxlQWJzKGZvck5vZGUobm9kZS0+Y2hpbGQxKCkpLm1f
dHlwZSkpOwogICAgICAgICAgICAgYnJlYWs7CiAgICAgICAgIGRlZmF1bHQ6Ci0gICAgICAgICAg
ICBERkdfQVNTRVJUKG1fZ3JhcGgsIG5vZGUsIG5vZGUtPmNoaWxkMSgpLnVzZUtpbmQoKSA9PSBV
bnR5cGVkVXNlKTsKKyAgICAgICAgICAgIERGR19BU1NFUlQobV9ncmFwaCwgbm9kZSwgbm9kZS0+
Y2hpbGQxKCkudXNlS2luZCgpID09IFVudHlwZWRVc2UsIG5vZGUtPmNoaWxkMSgpLnVzZUtpbmQo
KSk7CiAgICAgICAgICAgICBjbG9iYmVyV29ybGQobm9kZS0+b3JpZ2luLnNlbWFudGljLCBjbG9i
YmVyTGltaXQpOwogICAgICAgICAgICAgZm9yTm9kZShub2RlKS5zZXRUeXBlKFNwZWNGdWxsTnVt
YmVyKTsKICAgICAgICAgICAgIGJyZWFrOwpAQCAtMTA1NSw3ICsxMDU1LDcgQEAgYm9vbCBBYnN0
cmFjdEludGVycHJldGVyPEFic3RyYWN0U3RhdGVUeQogICAgICAgICAgICAgZWxzZSBpZiAobm9k
ZS0+Y2hpbGQxKCkudXNlS2luZCgpID09IERvdWJsZVJlcFVzZSkKICAgICAgICAgICAgICAgICBm
b3JOb2RlKG5vZGUpLnNldFR5cGUodHlwZU9mRG91YmxlUm91bmRpbmcoZm9yTm9kZShub2RlLT5j
aGlsZDEoKSkubV90eXBlKSk7CiAgICAgICAgIH0gZWxzZSB7Ci0gICAgICAgICAgICBERkdfQVNT
RVJUKG1fZ3JhcGgsIG5vZGUsIG5vZGUtPmNoaWxkMSgpLnVzZUtpbmQoKSA9PSBVbnR5cGVkVXNl
KTsKKyAgICAgICAgICAgIERGR19BU1NFUlQobV9ncmFwaCwgbm9kZSwgbm9kZS0+Y2hpbGQxKCku
dXNlS2luZCgpID09IFVudHlwZWRVc2UsIG5vZGUtPmNoaWxkMSgpLnVzZUtpbmQoKSk7CiAgICAg
ICAgICAgICBjbG9iYmVyV29ybGQobm9kZS0+b3JpZ2luLnNlbWFudGljLCBjbG9iYmVyTGltaXQp
OwogICAgICAgICAgICAgZm9yTm9kZShub2RlKS5zZXRUeXBlKFNwZWNGdWxsTnVtYmVyKTsKICAg
ICAgICAgfQpJbmRleDogU291cmNlL0phdmFTY3JpcHRDb3JlL2RmZy9ERkdBcmd1bWVudHNFbGlt
aW5hdGlvblBoYXNlLmNwcAo9PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09Ci0tLSBTb3VyY2UvSmF2YVNjcmlwdENvcmUvZGZn
L0RGR0FyZ3VtZW50c0VsaW1pbmF0aW9uUGhhc2UuY3BwCShyZXZpc2lvbiAyMjgwMzEpCisrKyBT
b3VyY2UvSmF2YVNjcmlwdENvcmUvZGZnL0RGR0FyZ3VtZW50c0VsaW1pbmF0aW9uUGhhc2UuY3Bw
CSh3b3JraW5nIGNvcHkpCkBAIC02ODksNyArNjg5LDcgQEAgcHJpdmF0ZToKICAgICAgICAgICAg
ICAgICAgICAgICAgIGJyZWFrOwogICAgICAgICAgICAgICAgICAgICAKICAgICAgICAgICAgICAg
ICAgICAgREZHX0FTU0VSVCgKLSAgICAgICAgICAgICAgICAgICAgICAgIG1fZ3JhcGgsIG5vZGUs
IG5vZGUtPmNoaWxkMSgpLT5vcCgpID09IFBoYW50b21EaXJlY3RBcmd1bWVudHMpOworICAgICAg
ICAgICAgICAgICAgICAgICAgbV9ncmFwaCwgbm9kZSwgbm9kZS0+Y2hpbGQxKCktPm9wKCkgPT0g
UGhhbnRvbURpcmVjdEFyZ3VtZW50cywgbm9kZS0+Y2hpbGQxKCktPm9wKCkpOwogICAgICAgICAg
ICAgICAgICAgICBWaXJ0dWFsUmVnaXN0ZXIgcmVnID0KICAgICAgICAgICAgICAgICAgICAgICAg
IHZpcnR1YWxSZWdpc3RlckZvckFyZ3VtZW50KG5vZGUtPmNhcHR1cmVkQXJndW1lbnRzT2Zmc2V0
KCkub2Zmc2V0KCkgKyAxKSArCiAgICAgICAgICAgICAgICAgICAgICAgICBub2RlLT5vcmlnaW4u
c2VtYW50aWMuc3RhY2tPZmZzZXQoKTsKQEAgLTg4Miw3ICs4ODIsNyBAQCBwcml2YXRlOgogICAg
ICAgICAgICAgICAgICAgICAgICAgICAgIGlmIChhcmd1bWVudENvdW50SW5jbHVkaW5nVGhpcyA8
PSB2YXJhcmdzRGF0YS0+bGltaXQpIHsKICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg
c3RvcmVBcmd1bWVudENvdW50SW5jbHVkaW5nVGhpcyhhcmd1bWVudENvdW50SW5jbHVkaW5nVGhp
cyk7CiAKLSAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgREZHX0FTU0VSVChtX2dyYXBo
LCBub2RlLCB2YXJhcmdzRGF0YS0+bGltaXQgLSAxID49IHZhcmFyZ3NEYXRhLT5tYW5kYXRvcnlN
aW5pbXVtKTsKKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgREZHX0FTU0VSVChtX2dy
YXBoLCBub2RlLCB2YXJhcmdzRGF0YS0+bGltaXQgLSAxID49IHZhcmFyZ3NEYXRhLT5tYW5kYXRv
cnlNaW5pbXVtLCB2YXJhcmdzRGF0YS0+bGltaXQsIHZhcmFyZ3NEYXRhLT5tYW5kYXRvcnlNaW5p
bXVtKTsKICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgLy8gRGVmaW5lIG91ciBsaW1p
dCB0byBleGNsdWRlICJ0aGlzIiwgc2luY2UgdGhhdCdzIGEgYml0IGVhc2llciB0byByZWFzb24g
YWJvdXQuCiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIHVuc2lnbmVkIGxpbWl0ID0g
dmFyYXJnc0RhdGEtPmxpbWl0IC0gMTsKIApAQCAtOTcxLDcgKzk3MSw3IEBAIHByaXZhdGU6CiAg
ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIAogICAgICAgICAgICAgICAgICAgICAgICAg
ICAgICAgICBzdG9yZUFyZ3VtZW50Q291bnRJbmNsdWRpbmdUaGlzKGFyZ3VtZW50Q291bnRJbmNs
dWRpbmdUaGlzKTsKIAotICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBERkdfQVNTRVJU
KG1fZ3JhcGgsIG5vZGUsIHZhcmFyZ3NEYXRhLT5saW1pdCAtIDEgPj0gdmFyYXJnc0RhdGEtPm1h
bmRhdG9yeU1pbmltdW0pOworICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBERkdfQVNT
RVJUKG1fZ3JhcGgsIG5vZGUsIHZhcmFyZ3NEYXRhLT5saW1pdCAtIDEgPj0gdmFyYXJnc0RhdGEt
Pm1hbmRhdG9yeU1pbmltdW0sIHZhcmFyZ3NEYXRhLT5saW1pdCwgdmFyYXJnc0RhdGEtPm1hbmRh
dG9yeU1pbmltdW0pOwogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAvLyBEZWZpbmUg
b3VyIGxpbWl0IHRvIGV4Y2x1ZGUgInRoaXMiLCBzaW5jZSB0aGF0J3MgYSBiaXQgZWFzaWVyIHRv
IHJlYXNvbiBhYm91dC4KICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgdW5zaWduZWQg
bGltaXQgPSB2YXJhcmdzRGF0YS0+bGltaXQgLSAxOwogICAgICAgICAgICAgICAgICAgICAgICAg
ICAgICAgICBOb2RlKiB1bmRlZmluZWQgPSBudWxscHRyOwpJbmRleDogU291cmNlL0phdmFTY3Jp
cHRDb3JlL2RmZy9ERkdBcmd1bWVudHNVdGlsaXRpZXMuY3BwCj09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT0KLS0tIFNvdXJj
ZS9KYXZhU2NyaXB0Q29yZS9kZmcvREZHQXJndW1lbnRzVXRpbGl0aWVzLmNwcAkocmV2aXNpb24g
MjI4MDMxKQorKysgU291cmNlL0phdmFTY3JpcHRDb3JlL2RmZy9ERkdBcmd1bWVudHNVdGlsaXRp
ZXMuY3BwCSh3b3JraW5nIGNvcHkpCkBAIC02Niw3ICs2Niw4IEBAIE5vZGUqIGVtaXRDb2RlVG9H
ZXRBcmd1bWVudHNBcnJheUxlbmd0aCgKICAgICAgICAgZ3JhcGgsIGFyZ3VtZW50cywKICAgICAg
ICAgYXJndW1lbnRzLT5vcCgpID09IENyZWF0ZURpcmVjdEFyZ3VtZW50cyB8fCBhcmd1bWVudHMt
Pm9wKCkgPT0gQ3JlYXRlU2NvcGVkQXJndW1lbnRzCiAgICAgICAgIHx8IGFyZ3VtZW50cy0+b3Ao
KSA9PSBDcmVhdGVDbG9uZWRBcmd1bWVudHMgfHwgYXJndW1lbnRzLT5vcCgpID09IENyZWF0ZVJl
c3QKLSAgICAgICAgfHwgYXJndW1lbnRzLT5vcCgpID09IFBoYW50b21EaXJlY3RBcmd1bWVudHMg
fHwgYXJndW1lbnRzLT5vcCgpID09IFBoYW50b21DbG9uZWRBcmd1bWVudHMgfHwgYXJndW1lbnRz
LT5vcCgpID09IFBoYW50b21DcmVhdGVSZXN0KTsKKyAgICAgICAgfHwgYXJndW1lbnRzLT5vcCgp
ID09IFBoYW50b21EaXJlY3RBcmd1bWVudHMgfHwgYXJndW1lbnRzLT5vcCgpID09IFBoYW50b21D
bG9uZWRBcmd1bWVudHMgfHwgYXJndW1lbnRzLT5vcCgpID09IFBoYW50b21DcmVhdGVSZXN0LAor
ICAgICAgICBhcmd1bWVudHMtPm9wKCkpOwogICAgIAogICAgIElubGluZUNhbGxGcmFtZSogaW5s
aW5lQ2FsbEZyYW1lID0gYXJndW1lbnRzLT5vcmlnaW4uc2VtYW50aWMuaW5saW5lQ2FsbEZyYW1l
OwogCkluZGV4OiBTb3VyY2UvSmF2YVNjcmlwdENvcmUvZGZnL0RGR0ZpeHVwUGhhc2UuY3BwCj09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT0KLS0tIFNvdXJjZS9KYXZhU2NyaXB0Q29yZS9kZmcvREZHRml4dXBQaGFzZS5jcHAJ
KHJldmlzaW9uIDIyODAzMSkKKysrIFNvdXJjZS9KYXZhU2NyaXB0Q29yZS9kZmcvREZHRml4dXBQ
aGFzZS5jcHAJKHdvcmtpbmcgY29weSkKQEAgLTM2MjMsNyArMzYyMyw3IEBAIHByaXZhdGU6CiAg
ICAgICAgICAgICAgICAgICAgICAgICBkZWZhdWx0OgogICAgICAgICAgICAgICAgICAgICAgICAg
ICAgIC8vIFRoaXMgY2FuIG9ubHkgYXJpc2UgaWYgd2UgaGF2ZSBhIENoZWNrIG5vZGUsIGFuZCBp
biB0aGF0IGNhc2UsIHdlIGNhbgogICAgICAgICAgICAgICAgICAgICAgICAgICAgIC8vIGp1c3Qg
cmVtb3ZlIHRoZSBvcmlnaW5hbCBjaGVjay4KLSAgICAgICAgICAgICAgICAgICAgICAgICAgICBE
RkdfQVNTRVJUKG1fZ3JhcGgsIG5vZGUsIG5vZGUtPm9wKCkgPT0gQ2hlY2spOworICAgICAgICAg
ICAgICAgICAgICAgICAgICAgIERGR19BU1NFUlQobV9ncmFwaCwgbm9kZSwgbm9kZS0+b3AoKSA9
PSBDaGVjaywgbm9kZS0+b3AoKSwgZWRnZS51c2VLaW5kKCkpOwogICAgICAgICAgICAgICAgICAg
ICAgICAgICAgIGtub3duVXNlS2luZCA9IFVudHlwZWRVc2U7CiAgICAgICAgICAgICAgICAgICAg
ICAgICAgICAgYnJlYWs7CiAgICAgICAgICAgICAgICAgICAgICAgICB9CkluZGV4OiBTb3VyY2Uv
SmF2YVNjcmlwdENvcmUvZGZnL0RGR0Zsb3dJbmRleGluZy5oCj09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT0KLS0tIFNvdXJj
ZS9KYXZhU2NyaXB0Q29yZS9kZmcvREZHRmxvd0luZGV4aW5nLmgJKHJldmlzaW9uIDIyODAzMSkK
KysrIFNvdXJjZS9KYXZhU2NyaXB0Q29yZS9kZmcvREZHRmxvd0luZGV4aW5nLmgJKHdvcmtpbmcg
Y29weSkKQEAgLTU3LDcgKzU3LDcgQEAgcHVibGljOgogICAgIAogICAgIHVuc2lnbmVkIHNoYWRv
d0luZGV4KE5vZGUqIG5vZGUpIGNvbnN0CiAgICAgewotICAgICAgICBERkdfQVNTRVJUKG1fZ3Jh
cGgsIG5vZGUsIG5vZGUtPm9wKCkgPT0gUGhpKTsKKyAgICAgICAgREZHX0FTU0VSVChtX2dyYXBo
LCBub2RlLCBub2RlLT5vcCgpID09IFBoaSwgbm9kZS0+b3AoKSk7CiAgICAgICAgIHJldHVybiBz
aGFkb3dJbmRleChub2RlLT5pbmRleCgpKTsKICAgICB9CiAgICAgCkluZGV4OiBTb3VyY2UvSmF2
YVNjcmlwdENvcmUvZGZnL0RGR0xJQ01QaGFzZS5jcHAKPT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PQotLS0gU291cmNlL0ph
dmFTY3JpcHRDb3JlL2RmZy9ERkdMSUNNUGhhc2UuY3BwCShyZXZpc2lvbiAyMjgwMzEpCisrKyBT
b3VyY2UvSmF2YVNjcmlwdENvcmUvZGZnL0RGR0xJQ01QaGFzZS5jcHAJKHdvcmtpbmcgY29weSkK
QEAgLTEyNiw3ICsxMjYsNyBAQCBwdWJsaWM6CiAgICAgICAgICAgICAvLyBUaGlzIGlzIGd1YXJh
bnRlZWQgYmVjYXVzZSB3ZSBleHBlY3QgdGhlIENGRyBub3QgdG8gaGF2ZSB1bnJlYWNoYWJsZSBj
b2RlLiBUaGVyZWZvcmUsIGEKICAgICAgICAgICAgIC8vIGxvb3AgaGVhZGVyIG11c3QgaGF2ZSBh
IHByZWRlY2Vzc29yLiAoQWxzbywgd2UgZG9uJ3QgYWxsb3cgdGhlIHJvb3QgYmxvY2sgdG8gYmUg
YSBsb29wLAogICAgICAgICAgICAgLy8gd2hpY2ggY3V0cyBvdXQgdGhlIG9uZSBvdGhlciB3YXkg
b2YgaGF2aW5nIGEgbG9vcCBoZWFkZXIgd2l0aCBvbmx5IG9uZSBwcmVkZWNlc3Nvci4pCi0gICAg
ICAgICAgICBERkdfQVNTRVJUKG1fZ3JhcGgsIGhlYWRlci0+YXQoMCksIGhlYWRlci0+cHJlZGVj
ZXNzb3JzLnNpemUoKSA+IDEpOworICAgICAgICAgICAgREZHX0FTU0VSVChtX2dyYXBoLCBoZWFk
ZXItPmF0KDApLCBoZWFkZXItPnByZWRlY2Vzc29ycy5zaXplKCkgPiAxLCBoZWFkZXItPnByZWRl
Y2Vzc29ycy5zaXplKCkpOwogICAgICAgICAgICAgCiAgICAgICAgICAgICBmb3IgKHVuc2lnbmVk
IGkgPSBoZWFkZXItPnByZWRlY2Vzc29ycy5zaXplKCk7IGktLTspIHsKICAgICAgICAgICAgICAg
ICBCYXNpY0Jsb2NrKiBwcmVkZWNlc3NvciA9IGhlYWRlci0+cHJlZGVjZXNzb3JzW2ldOwpAQCAt
MTU1LDcgKzE1NSw3IEBAIHB1YmxpYzoKICAgICAgICAgICAgIC8vIFRoaXMgaXMgZ3VhcmFudGVl
ZCBiZWNhdXNlIHRoZSBoZWFkZXIgaGFzIG11bHRpcGxlIHByZWRlY2Vzc29ycyBhbmQgY3JpdGlj
YWwgZWRnZXMgYXJlCiAgICAgICAgICAgICAvLyBicm9rZW4uIFRoZXJlZm9yZSB0aGUgcHJlZGVj
ZXNzb3JzIG11c3QgYWxsIGhhdmUgb25lIHN1Y2Nlc3Nvciwgd2hpY2ggaW1wbGllcyB0aGF0IHRo
ZXkKICAgICAgICAgICAgIC8vIG11c3QgZW5kIGluIGEgSnVtcC4KLSAgICAgICAgICAgIERGR19B
U1NFUlQobV9ncmFwaCwgcHJlSGVhZGVyLT50ZXJtaW5hbCgpLCBwcmVIZWFkZXItPnRlcm1pbmFs
KCktPm9wKCkgPT0gSnVtcCk7CisgICAgICAgICAgICBERkdfQVNTRVJUKG1fZ3JhcGgsIHByZUhl
YWRlci0+dGVybWluYWwoKSwgcHJlSGVhZGVyLT50ZXJtaW5hbCgpLT5vcCgpID09IEp1bXAsIHBy
ZUhlYWRlci0+dGVybWluYWwoKS0+b3AoKSk7CiAKICAgICAgICAgICAgIGlmICghcHJlSGVhZGVy
LT50ZXJtaW5hbCgpLT5vcmlnaW4uZXhpdE9LKQogICAgICAgICAgICAgICAgIGNvbnRpbnVlOwpA
QCAtMzQ2LDcgKzM0Niw3IEBAIHByaXZhdGU6CiAgICAgICAgIC8vIEl0IGp1c3Qgc28gaGFwcGVu
cyB0aGF0IGFsbCBvZiB0aGUgbm9kZXMgd2UgY3VycmVudGx5IGtub3cgaG93IHRvIGhvaXN0CiAg
ICAgICAgIC8vIGRvbid0IGhhdmUgdmFyLWFyZyBjaGlsZHJlbi4gVGhhdCBtYXkgY2hhbmdlIGFu
ZCB0aGVuIHdlIGNhbiBmaXggdGhpcwogICAgICAgICAvLyBjb2RlLiBCdXQgZm9yIG5vdyB3ZSBq
dXN0IGFzc2VydCB0aGF0J3MgdGhlIGNhc2UuCi0gICAgICAgIERGR19BU1NFUlQobV9ncmFwaCwg
bm9kZSwgIShub2RlLT5mbGFncygpICYgTm9kZUhhc1ZhckFyZ3MpKTsKKyAgICAgICAgREZHX0FT
U0VSVChtX2dyYXBoLCBub2RlLCAhKG5vZGUtPmZsYWdzKCkgJiBOb2RlSGFzVmFyQXJncyksIG5v
ZGUtPm9wKCksIG5vZGUtPmZsYWdzKCkpOwogICAgICAgICAKICAgICAgICAgbm9kZVJlZiA9IG1f
Z3JhcGguYWRkTm9kZShDaGVjaywgb3JpZ2luYWxPcmlnaW4sIG5vZGUtPmNoaWxkcmVuKTsKICAg
ICAgICAgCkluZGV4OiBTb3VyY2UvSmF2YVNjcmlwdENvcmUvZGZnL0RGR0xvb3BQcmVIZWFkZXJD
cmVhdGlvblBoYXNlLmNwcAo9PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09Ci0tLSBTb3VyY2UvSmF2YVNjcmlwdENvcmUvZGZn
L0RGR0xvb3BQcmVIZWFkZXJDcmVhdGlvblBoYXNlLmNwcAkocmV2aXNpb24gMjI4MDMxKQorKysg
U291cmNlL0phdmFTY3JpcHRDb3JlL2RmZy9ERkdMb29wUHJlSGVhZGVyQ3JlYXRpb25QaGFzZS5j
cHAJKHdvcmtpbmcgY29weSkKQEAgLTE2Myw3ICsxNjMsNyBAQCBwdWJsaWM6CiAgICAgICAgICAg
ICAvLyBzb21lIHByZWRlY2Vzc29yIG90aGVyIHRoYW4gdGhlIHByZS1oZWFkZXIuIFdlIG11c3Qg
aGF2ZSBicm9rZW4gY3JpdGljYWwgZWRnZXMKICAgICAgICAgICAgIC8vIGJlY2F1c2UgdGhhdCBp
cyB0aGUgREZHIFNTQSBjb252ZW50aW9uLiBUaGVyZWZvcmUsIGVhY2ggcHJlZGVjZXNzb3Igb2Yg
dGhlIGxvb3AKICAgICAgICAgICAgIC8vIGhlYWRlciBtdXN0IGhhdmUgb25seSBvbmUgc3VjY2Vz
c29yLgotICAgICAgICAgICAgREZHX0FTU0VSVChtX2dyYXBoLCBudWxscHRyLCBleGlzdGluZ1By
ZUhlYWRlci0+dGVybWluYWwoKS0+b3AoKSA9PSBKdW1wKTsKKyAgICAgICAgICAgIERGR19BU1NF
UlQobV9ncmFwaCwgbnVsbHB0ciwgZXhpc3RpbmdQcmVIZWFkZXItPnRlcm1pbmFsKCktPm9wKCkg
PT0gSnVtcCwgZXhpc3RpbmdQcmVIZWFkZXItPnRlcm1pbmFsKCktPm9wKCkpOwogCiAgICAgICAg
ICAgICAvLyBBIHByZS1oZWFkZXIgaXMgbW9zdCB1c2VmdWwgaWYgaXQncyBwb3NzaWJsZSB0byBl
eGl0IGZyb20gaXRzIHRlcm1pbmFsLiBIZW5jZQogICAgICAgICAgICAgLy8gaWYgdGhlIHRlcm1p
bmFsIG9mIHRoZSBleGlzdGluZyBwcmUtaGVhZGVyIGRvZXNuJ3QgYWxsb3cgZm9yIGV4aXQsIGJ1
dCB0aGUgZmlyc3QKSW5kZXg6IFNvdXJjZS9KYXZhU2NyaXB0Q29yZS9kZmcvREZHUHV0U3RhY2tT
aW5raW5nUGhhc2UuY3BwCj09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT0KLS0tIFNvdXJjZS9KYXZhU2NyaXB0Q29yZS9kZmcv
REZHUHV0U3RhY2tTaW5raW5nUGhhc2UuY3BwCShyZXZpc2lvbiAyMjgwMzEpCisrKyBTb3VyY2Uv
SmF2YVNjcmlwdENvcmUvZGZnL0RGR1B1dFN0YWNrU2lua2luZ1BoYXNlLmNwcAkod29ya2luZyBj
b3B5KQpAQCAtNDUzLDcgKzQ1Myw3IEBAIHB1YmxpYzoKICAgICAgICAgICAgICAgICAgICAgaWYg
KCFpc0NvbmNyZXRlKGZvcm1hdCkpIHsKICAgICAgICAgICAgICAgICAgICAgICAgIERGR19BU1NF
UlQoCiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgbV9ncmFwaCwgbm9kZSwKLSAgICAgICAg
ICAgICAgICAgICAgICAgICAgICBkZWZlcnJlZC5vcGVyYW5kKGRhdGEtPmxvY2FsKSAhPSBDb25m
bGljdGluZ0ZsdXNoKTsKKyAgICAgICAgICAgICAgICAgICAgICAgICAgICBkZWZlcnJlZC5vcGVy
YW5kKGRhdGEtPmxvY2FsKSAhPSBDb25mbGljdGluZ0ZsdXNoLCBkZWZlcnJlZC5vcGVyYW5kKGRh
dGEtPmxvY2FsKSk7CiAgICAgICAgICAgICAgICAgICAgICAgICAKICAgICAgICAgICAgICAgICAg
ICAgICAgIC8vIFRoaXMgbWVhbnMgdGhlcmUgaXMgbm8gZGVmZXJyYWwuIE5vIGRlZmVycmFsIG1l
YW5zIHRoYXQgdGhlIG1vc3QKICAgICAgICAgICAgICAgICAgICAgICAgIC8vIGF1dGhvcml0YXRp
dmUgdmFsdWUgZm9yIHRoaXMgc3RhY2sgc2xvdCBpcyB3aGF0IGlzIHN0b3JlZCBpbiB0aGUgc3Rh
Y2suIFNvLApAQCAtNDY2LDcgKzQ2Niw3IEBAIHB1YmxpYzoKICAgICAgICAgICAgICAgICAgICAg
Ly8gd291bGQgaGF2ZSBzdG9yZWQgYSB2YWx1ZSB3aXRoIGEgY2VydGFpbiBmb3JtYXQuIFRoYXQg
Zm9ybWF0IG11c3QgbWF0Y2ggb3VyCiAgICAgICAgICAgICAgICAgICAgIC8vIGZvcm1hdC4gQnV0
IG1vcmUgaW1wb3J0YW50bHksIHdlIGNhbiBzaW1wbHkgdXNlIHRoZSB2YWx1ZSB0aGF0IHRoZSBQ
dXRTdGFjayB3b3VsZAogICAgICAgICAgICAgICAgICAgICAvLyBoYXZlIHN0b3JlZCBhbmQgZ2V0
IHJpZCBvZiB0aGUgR2V0U3RhY2suCi0gICAgICAgICAgICAgICAgICAgIERGR19BU1NFUlQobV9n
cmFwaCwgbm9kZSwgZm9ybWF0ID09IGRhdGEtPmZvcm1hdCk7CisgICAgICAgICAgICAgICAgICAg
IERGR19BU1NFUlQobV9ncmFwaCwgbm9kZSwgZm9ybWF0ID09IGRhdGEtPmZvcm1hdCwgZm9ybWF0
LCBkYXRhLT5mb3JtYXQpOwogICAgICAgICAgICAgICAgICAgICAKICAgICAgICAgICAgICAgICAg
ICAgTm9kZSogaW5jb21pbmcgPSBtYXBwaW5nLm9wZXJhbmQoZGF0YS0+bG9jYWwpOwogICAgICAg
ICAgICAgICAgICAgICBub2RlLT5jaGlsZDEoKSA9IGluY29taW5nLT5kZWZhdWx0RWRnZSgpOwpA
QCAtNTM0LDcgKzUzNCw3IEBAIHB1YmxpYzoKICAgICAgICAgICAgICAgICAgICAgaWYgKERGR1B1
dFN0YWNrU2lua2luZ1BoYXNlSW50ZXJuYWw6OnZlcmJvc2UpCiAgICAgICAgICAgICAgICAgICAg
ICAgICBkYXRhTG9nKCJDcmVhdGluZyBVcHNpbG9uIGZvciAiLCBvcGVyYW5kLCAiIGF0ICIsIHBv
aW50ZXJEdW1wKGJsb2NrKSwgIi0+IiwgcG9pbnRlckR1bXAoc3VjY2Vzc29yQmxvY2spLCAiXG4i
KTsKICAgICAgICAgICAgICAgICAgICAgRmx1c2hGb3JtYXQgZm9ybWF0ID0gZGVmZXJyZWRBdEhl
YWRbc3VjY2Vzc29yQmxvY2tdLm9wZXJhbmQob3BlcmFuZCk7Ci0gICAgICAgICAgICAgICAgICAg
IERGR19BU1NFUlQobV9ncmFwaCwgbnVsbHB0ciwgaXNDb25jcmV0ZShmb3JtYXQpKTsKKyAgICAg
ICAgICAgICAgICAgICAgREZHX0FTU0VSVChtX2dyYXBoLCBudWxscHRyLCBpc0NvbmNyZXRlKGZv
cm1hdCksIGZvcm1hdCk7CiAgICAgICAgICAgICAgICAgICAgIFVzZUtpbmQgdXNlS2luZCA9IHVu
Y2hlY2tlZFVzZUtpbmRGb3IoZm9ybWF0KTsKICAgICAgICAgICAgICAgICAgICAgCiAgICAgICAg
ICAgICAgICAgICAgIC8vIFdlIG5lZWQgdG8gZ2V0IGEgdmFsdWUgZm9yIHRoZSBzdGFjayBzbG90
LiBUaGlzIHBoYXNlIGRvZXNuJ3QgcmVhbGx5IGhhdmUgYQpJbmRleDogU291cmNlL0phdmFTY3Jp
cHRDb3JlL2RmZy9ERkdTcGVjdWxhdGl2ZUpJVDY0LmNwcAo9PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09Ci0tLSBTb3VyY2Uv
SmF2YVNjcmlwdENvcmUvZGZnL0RGR1NwZWN1bGF0aXZlSklUNjQuY3BwCShyZXZpc2lvbiAyMjgw
MzEpCisrKyBTb3VyY2UvSmF2YVNjcmlwdENvcmUvZGZnL0RGR1NwZWN1bGF0aXZlSklUNjQuY3Bw
CSh3b3JraW5nIGNvcHkpCkBAIC0xMDcsNyArMTA3LDcgQEAgR1BSUmVnIFNwZWN1bGF0aXZlSklU
OjpmaWxsSlNWYWx1ZShFZGdlIAogICAgICAgICAgICAgICAgIAogICAgICAgICAgICAgZGVmYXVs
dDoKICAgICAgICAgICAgICAgICBtX2ppdC5sb2FkNjQoSklUQ29tcGlsZXI6OmFkZHJlc3NGb3Io
dmlydHVhbFJlZ2lzdGVyKSwgZ3ByKTsKLSAgICAgICAgICAgICAgICBERkdfQVNTRVJUKG1faml0
LmdyYXBoKCksIG1fY3VycmVudE5vZGUsIHNwaWxsRm9ybWF0ICYgRGF0YUZvcm1hdEpTKTsKKyAg
ICAgICAgICAgICAgICBERkdfQVNTRVJUKG1faml0LmdyYXBoKCksIG1fY3VycmVudE5vZGUsIHNw
aWxsRm9ybWF0ICYgRGF0YUZvcm1hdEpTLCBzcGlsbEZvcm1hdCk7CiAgICAgICAgICAgICAgICAg
YnJlYWs7CiAgICAgICAgICAgICB9CiAgICAgICAgICAgICBpbmZvLmZpbGxKU1ZhbHVlKCptX3N0
cmVhbSwgZ3ByLCBzcGlsbEZvcm1hdCk7CkBAIC0xMTExLDcgKzExMTEsNyBAQCBHUFJSZWcgU3Bl
Y3VsYXRpdmVKSVQ6OmZpbGxTcGVjdWxhdGVJbnQzCiAgICAgICAgIAogICAgICAgICBEYXRhRm9y
bWF0IHNwaWxsRm9ybWF0ID0gaW5mby5zcGlsbEZvcm1hdCgpOwogICAgICAgICAKLSAgICAgICAg
REZHX0FTU0VSVChtX2ppdC5ncmFwaCgpLCBtX2N1cnJlbnROb2RlLCAoc3BpbGxGb3JtYXQgJiBE
YXRhRm9ybWF0SlMpIHx8IHNwaWxsRm9ybWF0ID09IERhdGFGb3JtYXRJbnQzMik7CisgICAgICAg
IERGR19BU1NFUlQobV9qaXQuZ3JhcGgoKSwgbV9jdXJyZW50Tm9kZSwgKHNwaWxsRm9ybWF0ICYg
RGF0YUZvcm1hdEpTKSB8fCBzcGlsbEZvcm1hdCA9PSBEYXRhRm9ybWF0SW50MzIsIHNwaWxsRm9y
bWF0KTsKICAgICAgICAgCiAgICAgICAgIG1fZ3Bycy5yZXRhaW4oZ3ByLCB2aXJ0dWFsUmVnaXN0
ZXIsIFNwaWxsT3JkZXJTcGlsbGVkKTsKICAgICAgICAgCkBAIC0xMjIxLDcgKzEyMjEsNyBAQCBH
UFJSZWcgU3BlY3VsYXRpdmVKSVQ6OmZpbGxTcGVjdWxhdGVJbnQzCiB7CiAgICAgRGF0YUZvcm1h
dCBtdXN0QmVEYXRhRm9ybWF0SW50MzI7CiAgICAgR1BSUmVnIHJlc3VsdCA9IGZpbGxTcGVjdWxh
dGVJbnQzMkludGVybmFsPHRydWU+KGVkZ2UsIG11c3RCZURhdGFGb3JtYXRJbnQzMik7Ci0gICAg
REZHX0FTU0VSVChtX2ppdC5ncmFwaCgpLCBtX2N1cnJlbnROb2RlLCBtdXN0QmVEYXRhRm9ybWF0
SW50MzIgPT0gRGF0YUZvcm1hdEludDMyKTsKKyAgICBERkdfQVNTRVJUKG1faml0LmdyYXBoKCks
IG1fY3VycmVudE5vZGUsIG11c3RCZURhdGFGb3JtYXRJbnQzMiA9PSBEYXRhRm9ybWF0SW50MzIs
IG11c3RCZURhdGFGb3JtYXRJbnQzMik7CiAgICAgcmV0dXJuIHJlc3VsdDsKIH0KIApAQCAtMTI1
Nyw3ICsxMjU3LDcgQEAgR1BSUmVnIFNwZWN1bGF0aXZlSklUOjpmaWxsU3BlY3VsYXRlSW50NQog
ICAgICAgICAKICAgICAgICAgRGF0YUZvcm1hdCBzcGlsbEZvcm1hdCA9IGluZm8uc3BpbGxGb3Jt
YXQoKTsKICAgICAgICAgCi0gICAgICAgIERGR19BU1NFUlQobV9qaXQuZ3JhcGgoKSwgbV9jdXJy
ZW50Tm9kZSwgc3BpbGxGb3JtYXQgPT0gRGF0YUZvcm1hdEludDUyIHx8IHNwaWxsRm9ybWF0ID09
IERhdGFGb3JtYXRTdHJpY3RJbnQ1Mik7CisgICAgICAgIERGR19BU1NFUlQobV9qaXQuZ3JhcGgo
KSwgbV9jdXJyZW50Tm9kZSwgc3BpbGxGb3JtYXQgPT0gRGF0YUZvcm1hdEludDUyIHx8IHNwaWxs
Rm9ybWF0ID09IERhdGFGb3JtYXRTdHJpY3RJbnQ1Miwgc3BpbGxGb3JtYXQpOwogICAgICAgICAK
ICAgICAgICAgbV9ncHJzLnJldGFpbihncHIsIHZpcnR1YWxSZWdpc3RlciwgU3BpbGxPcmRlclNw
aWxsZWQpOwogICAgICAgICAKQEAgLTEzNTAsNyArMTM1MCw3IEBAIEZQUlJlZyBTcGVjdWxhdGl2
ZUpJVDo6ZmlsbFNwZWN1bGF0ZURvdWIKICAgICAgICAgICAgICAgICAgICAgIkV4cGVjdGVkICIs
IGVkZ2UsICIgdG8gaGF2ZSBkb3VibGUgZm9ybWF0IGJ1dCBpbnN0ZWFkIGl0IGlzIHNwaWxsZWQg
YXMgIiwKICAgICAgICAgICAgICAgICAgICAgZGF0YUZvcm1hdFRvU3RyaW5nKHNwaWxsRm9ybWF0
KSkuZGF0YSgpKTsKICAgICAgICAgfQotICAgICAgICBERkdfQVNTRVJUKG1faml0LmdyYXBoKCks
IG1fY3VycmVudE5vZGUsIHNwaWxsRm9ybWF0ID09IERhdGFGb3JtYXREb3VibGUpOworICAgICAg
ICBERkdfQVNTRVJUKG1faml0LmdyYXBoKCksIG1fY3VycmVudE5vZGUsIHNwaWxsRm9ybWF0ID09
IERhdGFGb3JtYXREb3VibGUsIHNwaWxsRm9ybWF0KTsKICAgICAgICAgRlBSUmVnIGZwciA9IGZw
ckFsbG9jYXRlKCk7CiAgICAgICAgIG1faml0LmxvYWREb3VibGUoSklUQ29tcGlsZXI6OmFkZHJl
c3NGb3IodmlydHVhbFJlZ2lzdGVyKSwgZnByKTsKICAgICAgICAgbV9mcHJzLnJldGFpbihmcHIs
IHZpcnR1YWxSZWdpc3RlciwgU3BpbGxPcmRlckRvdWJsZSk7CkBAIC0xMzU4LDcgKzEzNTgsNyBA
QCBGUFJSZWcgU3BlY3VsYXRpdmVKSVQ6OmZpbGxTcGVjdWxhdGVEb3ViCiAgICAgICAgIHJldHVy
biBmcHI7CiAgICAgfQogCi0gICAgREZHX0FTU0VSVChtX2ppdC5ncmFwaCgpLCBtX2N1cnJlbnRO
b2RlLCBpbmZvLnJlZ2lzdGVyRm9ybWF0KCkgPT0gRGF0YUZvcm1hdERvdWJsZSk7CisgICAgREZH
X0FTU0VSVChtX2ppdC5ncmFwaCgpLCBtX2N1cnJlbnROb2RlLCBpbmZvLnJlZ2lzdGVyRm9ybWF0
KCkgPT0gRGF0YUZvcm1hdERvdWJsZSwgaW5mby5yZWdpc3RlckZvcm1hdCgpKTsKICAgICBGUFJS
ZWcgZnByID0gaW5mby5mcHIoKTsKICAgICBtX2ZwcnMubG9jayhmcHIpOwogICAgIHJldHVybiBm
cHI7CkBAIC0xNDY1LDcgKzE0NjUsNyBAQCBHUFJSZWcgU3BlY3VsYXRpdmVKSVQ6OmZpbGxTcGVj
dWxhdGVCb29sCiAgICAgICAgICAgICBpbmZvLmZpbGxKU1ZhbHVlKCptX3N0cmVhbSwgZ3ByLCBE
YXRhRm9ybWF0SlNCb29sZWFuKTsKICAgICAgICAgICAgIHJldHVybiBncHI7CiAgICAgICAgIH0K
LSAgICAgICAgREZHX0FTU0VSVChtX2ppdC5ncmFwaCgpLCBtX2N1cnJlbnROb2RlLCBpbmZvLnNw
aWxsRm9ybWF0KCkgJiBEYXRhRm9ybWF0SlMpOworICAgICAgICBERkdfQVNTRVJUKG1faml0Lmdy
YXBoKCksIG1fY3VycmVudE5vZGUsIGluZm8uc3BpbGxGb3JtYXQoKSAmIERhdGFGb3JtYXRKUywg
aW5mby5zcGlsbEZvcm1hdCgpKTsKICAgICAgICAgbV9ncHJzLnJldGFpbihncHIsIHZpcnR1YWxS
ZWdpc3RlciwgU3BpbGxPcmRlclNwaWxsZWQpOwogICAgICAgICBtX2ppdC5sb2FkNjQoSklUQ29t
cGlsZXI6OmFkZHJlc3NGb3IodmlydHVhbFJlZ2lzdGVyKSwgZ3ByKTsKIApAQCAtMjk2Myw3ICsy
OTYzLDcgQEAgdm9pZCBTcGVjdWxhdGl2ZUpJVDo6Y29tcGlsZShOb2RlKiBub2RlKQogICAgICAg
ICAgICAgREZHX0NSQVNIKG1faml0LmdyYXBoKCksIG5vZGUsICJCYWQgYXJyYXkgbW9kZSB0eXBl
Iik7CiAgICAgICAgICAgICBicmVhazsKICAgICAgICAgY2FzZSBBcnJheTo6R2VuZXJpYzogewot
ICAgICAgICAgICAgREZHX0FTU0VSVChtX2ppdC5ncmFwaCgpLCBub2RlLCBub2RlLT5vcCgpID09
IFB1dEJ5VmFsIHx8IG5vZGUtPm9wKCkgPT0gUHV0QnlWYWxEaXJlY3QpOworICAgICAgICAgICAg
REZHX0FTU0VSVChtX2ppdC5ncmFwaCgpLCBub2RlLCBub2RlLT5vcCgpID09IFB1dEJ5VmFsIHx8
IG5vZGUtPm9wKCkgPT0gUHV0QnlWYWxEaXJlY3QsIG5vZGUtPm9wKCkpOwogCiAgICAgICAgICAg
ICBpZiAoY2hpbGQxLnVzZUtpbmQoKSA9PSBDZWxsVXNlKSB7CiAgICAgICAgICAgICAgICAgaWYg
KGNoaWxkMi51c2VLaW5kKCkgPT0gU3RyaW5nVXNlKSB7CkBAIC0zNzI3LDcgKzM3MjcsNyBAQCB2
b2lkIFNwZWN1bGF0aXZlSklUOjpjb21waWxlKE5vZGUqIG5vZGUpCiAgICAgICAgIEpTR2xvYmFs
T2JqZWN0KiBnbG9iYWxPYmplY3QgPSBtX2ppdC5ncmFwaCgpLmdsb2JhbE9iamVjdEZvcihub2Rl
LT5vcmlnaW4uc2VtYW50aWMpOwogICAgICAgICBpZiAoIWdsb2JhbE9iamVjdC0+aXNIYXZpbmdB
QmFkVGltZSgpICYmICFoYXNBbnlBcnJheVN0b3JhZ2Uobm9kZS0+aW5kZXhpbmdUeXBlKCkpKSB7
CiAgICAgICAgICAgICBSZWdpc3RlcmVkU3RydWN0dXJlIHN0cnVjdHVyZSA9IG1faml0LmdyYXBo
KCkucmVnaXN0ZXJTdHJ1Y3R1cmUoZ2xvYmFsT2JqZWN0LT5hcnJheVN0cnVjdHVyZUZvckluZGV4
aW5nVHlwZUR1cmluZ0FsbG9jYXRpb24obm9kZS0+aW5kZXhpbmdUeXBlKCkpKTsKLSAgICAgICAg
ICAgIERGR19BU1NFUlQobV9qaXQuZ3JhcGgoKSwgbm9kZSwgc3RydWN0dXJlLT5pbmRleGluZ1R5
cGUoKSA9PSBub2RlLT5pbmRleGluZ1R5cGUoKSk7CisgICAgICAgICAgICBERkdfQVNTRVJUKG1f
aml0LmdyYXBoKCksIG5vZGUsIHN0cnVjdHVyZS0+aW5kZXhpbmdUeXBlKCkgPT0gbm9kZS0+aW5k
ZXhpbmdUeXBlKCksIHN0cnVjdHVyZS0+aW5kZXhpbmdUeXBlKCksIG5vZGUtPmluZGV4aW5nVHlw
ZSgpKTsKICAgICAgICAgICAgIEFTU0VSVCgKICAgICAgICAgICAgICAgICBoYXNVbmRlY2lkZWQo
c3RydWN0dXJlLT5pbmRleGluZ1R5cGUoKSkKICAgICAgICAgICAgICAgICB8fCBoYXNJbnQzMihz
dHJ1Y3R1cmUtPmluZGV4aW5nVHlwZSgpKQpAQCAtMzkyOCw3ICszOTI4LDcgQEAgdm9pZCBTcGVj
dWxhdGl2ZUpJVDo6Y29tcGlsZShOb2RlKiBub2RlKQogCiAgICAgICAgICAgICBlbWl0QWxsb2Nh
dGVSYXdPYmplY3QocmVzdWx0R1BSLCBtX2ppdC5ncmFwaCgpLnJlZ2lzdGVyU3RydWN0dXJlKGds
b2JhbE9iamVjdC0+YXJyYXlTdHJ1Y3R1cmVGb3JJbmRleGluZ1R5cGVEdXJpbmdBbGxvY2F0aW9u
KGluZGV4aW5nVHlwZSkpLCBzdG9yYWdlR1BSLCBudW1FbGVtZW50cywgdmVjdG9yTGVuZ3RoSGlu
dCk7CiAgICAgICAgICAgICAKLSAgICAgICAgICAgIERGR19BU1NFUlQobV9qaXQuZ3JhcGgoKSwg
bm9kZSwgaW5kZXhpbmdUeXBlICYgSXNBcnJheSk7CisgICAgICAgICAgICBERkdfQVNTRVJUKG1f
aml0LmdyYXBoKCksIG5vZGUsIGluZGV4aW5nVHlwZSAmIElzQXJyYXksIGluZGV4aW5nVHlwZSk7
CiAKICAgICAgICAgICAgIGZvciAodW5zaWduZWQgaW5kZXggPSAwOyBpbmRleCA8IG51bUVsZW1l
bnRzOyArK2luZGV4KSB7CiAgICAgICAgICAgICAgICAgaW50NjRfdCB2YWx1ZTsKSW5kZXg6IFNv
dXJjZS9KYXZhU2NyaXB0Q29yZS9kZmcvREZHU3BlY3VsYXRpdmVKSVQuY3BwCj09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT0K
LS0tIFNvdXJjZS9KYXZhU2NyaXB0Q29yZS9kZmcvREZHU3BlY3VsYXRpdmVKSVQuY3BwCShyZXZp
c2lvbiAyMjgwMzEpCisrKyBTb3VyY2UvSmF2YVNjcmlwdENvcmUvZGZnL0RGR1NwZWN1bGF0aXZl
SklULmNwcAkod29ya2luZyBjb3B5KQpAQCAtNDI4Nyw3ICs0Mjg3LDcgQEAgdm9pZCBTcGVjdWxh
dGl2ZUpJVDo6Y29tcGlsZUFyaXRoQWJzKE5vZAogICAgIH0KIAogICAgIGRlZmF1bHQ6IHsKLSAg
ICAgICAgREZHX0FTU0VSVChtX2ppdC5ncmFwaCgpLCBub2RlLCBub2RlLT5jaGlsZDEoKS51c2VL
aW5kKCkgPT0gVW50eXBlZFVzZSk7CisgICAgICAgIERGR19BU1NFUlQobV9qaXQuZ3JhcGgoKSwg
bm9kZSwgbm9kZS0+Y2hpbGQxKCkudXNlS2luZCgpID09IFVudHlwZWRVc2UsIG5vZGUtPmNoaWxk
MSgpLnVzZUtpbmQoKSk7CiAgICAgICAgIEpTVmFsdWVPcGVyYW5kIG9wMSh0aGlzLCBub2RlLT5j
aGlsZDEoKSk7CiAgICAgICAgIEpTVmFsdWVSZWdzIG9wMVJlZ3MgPSBvcDEuanNWYWx1ZVJlZ3Mo
KTsKICAgICAgICAgZmx1c2hSZWdpc3RlcnMoKTsKQEAgLTU0NTcsNyArNTQ1Nyw3IEBAIHZvaWQg
U3BlY3VsYXRpdmVKSVQ6OmNvbXBpbGVBcml0aFJvdW5kaW4KICAgICAgICAgcmV0dXJuOwogICAg
IH0KIAotICAgIERGR19BU1NFUlQobV9qaXQuZ3JhcGgoKSwgbm9kZSwgbm9kZS0+Y2hpbGQxKCku
dXNlS2luZCgpID09IFVudHlwZWRVc2UpOworICAgIERGR19BU1NFUlQobV9qaXQuZ3JhcGgoKSwg
bm9kZSwgbm9kZS0+Y2hpbGQxKCkudXNlS2luZCgpID09IFVudHlwZWRVc2UsIG5vZGUtPmNoaWxk
MSgpLnVzZUtpbmQoKSk7CiAKICAgICBKU1ZhbHVlT3BlcmFuZCBhcmd1bWVudCh0aGlzLCBub2Rl
LT5jaGlsZDEoKSk7CiAgICAgSlNWYWx1ZVJlZ3MgYXJndW1lbnRSZWdzID0gYXJndW1lbnQuanNW
YWx1ZVJlZ3MoKTsKQEAgLTExNTM2LDcgKzExNTM2LDcgQEAgdm9pZCBTcGVjdWxhdGl2ZUpJVDo6
Y29tcGlsZU5ld09iamVjdChObwogCiB2b2lkIFNwZWN1bGF0aXZlSklUOjpjb21waWxlVG9Qcmlt
aXRpdmUoTm9kZSogbm9kZSkKIHsKLSAgICBERkdfQVNTRVJUKG1faml0LmdyYXBoKCksIG5vZGUs
IG5vZGUtPmNoaWxkMSgpLnVzZUtpbmQoKSA9PSBVbnR5cGVkVXNlKTsKKyAgICBERkdfQVNTRVJU
KG1faml0LmdyYXBoKCksIG5vZGUsIG5vZGUtPmNoaWxkMSgpLnVzZUtpbmQoKSA9PSBVbnR5cGVk
VXNlLCBub2RlLT5jaGlsZDEoKS51c2VLaW5kKCkpOwogICAgIEpTVmFsdWVPcGVyYW5kIGFyZ3Vt
ZW50KHRoaXMsIG5vZGUtPmNoaWxkMSgpKTsKICAgICBKU1ZhbHVlUmVnc1RlbXBvcmFyeSByZXN1
bHQodGhpcywgUmV1c2UsIGFyZ3VtZW50KTsKIApJbmRleDogU291cmNlL0phdmFTY3JpcHRDb3Jl
L2RmZy9ERkdTdG9yZUJhcnJpZXJDbHVzdGVyaW5nUGhhc2UuY3BwCj09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT0KLS0tIFNv
dXJjZS9KYXZhU2NyaXB0Q29yZS9kZmcvREZHU3RvcmVCYXJyaWVyQ2x1c3RlcmluZ1BoYXNlLmNw
cAkocmV2aXNpb24gMjI4MDMxKQorKysgU291cmNlL0phdmFTY3JpcHRDb3JlL2RmZy9ERkdTdG9y
ZUJhcnJpZXJDbHVzdGVyaW5nUGhhc2UuY3BwCSh3b3JraW5nIGNvcHkpCkBAIC0xMTYsNyArMTE2
LDcgQEAgcHJpdmF0ZToKICAgICAgICAgICAgICAgICBjb250aW51ZTsKICAgICAgICAgICAgIAog
ICAgICAgICAgICAgREZHX0FTU0VSVChtX2dyYXBoLCBub2RlLCAhbm9kZS0+b3JpZ2luLndhc0hv
aXN0ZWQpOwotICAgICAgICAgICAgREZHX0FTU0VSVChtX2dyYXBoLCBub2RlLCBub2RlLT5jaGls
ZDEoKS51c2VLaW5kKCkgPT0gS25vd25DZWxsVXNlKTsKKyAgICAgICAgICAgIERGR19BU1NFUlQo
bV9ncmFwaCwgbm9kZSwgbm9kZS0+Y2hpbGQxKCkudXNlS2luZCgpID09IEtub3duQ2VsbFVzZSwg
bm9kZS0+b3AoKSwgbm9kZS0+Y2hpbGQxKCkudXNlS2luZCgpKTsKICAgICAgICAgICAgIAogICAg
ICAgICAgICAgTm9kZU9yaWdpbiBvcmlnaW4gPSBub2RlLT5vcmlnaW47CiAgICAgICAgICAgICBt
X25lZWRlZEJhcnJpZXJzLmFwcGVuZChDaGlsZEFuZE9yaWdpbihub2RlLT5jaGlsZDEoKS5ub2Rl
KCksIG9yaWdpbi5zZW1hbnRpYykpOwpJbmRleDogU291cmNlL0phdmFTY3JpcHRDb3JlL2RmZy9E
RkdTdG9yZUJhcnJpZXJJbnNlcnRpb25QaGFzZS5jcHAKPT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PQotLS0gU291cmNlL0ph
dmFTY3JpcHRDb3JlL2RmZy9ERkdTdG9yZUJhcnJpZXJJbnNlcnRpb25QaGFzZS5jcHAJKHJldmlz
aW9uIDIyODAzMSkKKysrIFNvdXJjZS9KYXZhU2NyaXB0Q29yZS9kZmcvREZHU3RvcmVCYXJyaWVy
SW5zZXJ0aW9uUGhhc2UuY3BwCSh3b3JraW5nIGNvcHkpCkBAIC00NjcsNyArNDY3LDcgQEAgcHJp
dmF0ZToKICAgICAgICAgLy8gRklYTUU6IFdlIGNvdWxkIHN1cHBvcnQgU3RvcmVCYXJyaWVyKFVu
dHlwZWRVc2U6KS4gVGhhdCB3b3VsZCBiZSBzb3J0IG9mIGNvb2wuCiAgICAgICAgIC8vIEJ1dCBy
aWdodCBub3cgd2UgZG9uJ3QgbmVlZCBpdC4KIAotICAgICAgICBERkdfQVNTRVJUKG1fZ3JhcGgs
IG1fbm9kZSwgaXNDZWxsKGJhc2UudXNlS2luZCgpKSk7CisgICAgICAgIERGR19BU1NFUlQobV9n
cmFwaCwgbV9ub2RlLCBpc0NlbGwoYmFzZS51c2VLaW5kKCkpLCBtX25vZGUtPm9wKCksIGJhc2Uu
dXNlS2luZCgpKTsKICAgICAgICAgCiAgICAgICAgIC8vIEJhcnJpZXJzIGFyZSBhbHdheXMgaW5z
ZXJ0ZWQgYWZ0ZXIgdGhlIG5vZGUgdGhhdCB0aGV5IHNlcnZpY2UuIFRoZXJlZm9yZSwgd2UgYWx3
YXlzIGtub3cKICAgICAgICAgLy8gdGhhdCB0aGUgdGhpbmcgaXMgYSBjZWxsIG5vdy4KSW5kZXg6
IFNvdXJjZS9KYXZhU2NyaXB0Q29yZS9mdGwvRlRMTG93ZXJERkdUb0IzLmNwcAo9PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
Ci0tLSBTb3VyY2UvSmF2YVNjcmlwdENvcmUvZnRsL0ZUTExvd2VyREZHVG9CMy5jcHAJKHJldmlz
aW9uIDIyODAzMSkKKysrIFNvdXJjZS9KYXZhU2NyaXB0Q29yZS9mdGwvRlRMTG93ZXJERkdUb0Iz
LmNwcAkod29ya2luZyBjb3B5KQpAQCAtMTY2Nyw4ICsxNjY3LDggQEAgcHJpdmF0ZToKICAgICAg
ICAgU3RhY2tBY2Nlc3NEYXRhKiBkYXRhID0gbV9ub2RlLT5zdGFja0FjY2Vzc0RhdGEoKTsKICAg
ICAgICAgQWJzdHJhY3RWYWx1ZSYgdmFsdWUgPSBtX3N0YXRlLnZhcmlhYmxlcygpLm9wZXJhbmQo
ZGF0YS0+bG9jYWwpOwogICAgICAgICAKLSAgICAgICAgREZHX0FTU0VSVChtX2dyYXBoLCBtX25v
ZGUsIGlzQ29uY3JldGUoZGF0YS0+Zm9ybWF0KSk7Ci0gICAgICAgIERGR19BU1NFUlQobV9ncmFw
aCwgbV9ub2RlLCBkYXRhLT5mb3JtYXQgIT0gRmx1c2hlZERvdWJsZSk7IC8vIFRoaXMganVzdCBo
YXBwZW5zIHRvIG5vdCBhcmlzZSBmb3IgR2V0U3RhY2tzLCByaWdodCBub3cuIEl0IHdvdWxkIGJl
IHRyaXZpYWwgdG8gc3VwcG9ydC4KKyAgICAgICAgREZHX0FTU0VSVChtX2dyYXBoLCBtX25vZGUs
IGlzQ29uY3JldGUoZGF0YS0+Zm9ybWF0KSwgZGF0YS0+Zm9ybWF0KTsKKyAgICAgICAgREZHX0FT
U0VSVChtX2dyYXBoLCBtX25vZGUsIGRhdGEtPmZvcm1hdCAhPSBGbHVzaGVkRG91YmxlLCBkYXRh
LT5mb3JtYXQpOyAvLyBUaGlzIGp1c3QgaGFwcGVucyB0byBub3QgYXJpc2UgZm9yIEdldFN0YWNr
cywgcmlnaHQgbm93LiBJdCB3b3VsZCBiZSB0cml2aWFsIHRvIHN1cHBvcnQuCiAgICAgICAgIAog
ICAgICAgICBpZiAoaXNJbnQzMlNwZWN1bGF0aW9uKHZhbHVlLm1fdHlwZSkpCiAgICAgICAgICAg
ICBzZXRJbnQzMihtX291dC5sb2FkMzIocGF5bG9hZEZvcihkYXRhLT5tYWNoaW5lTG9jYWwpKSk7
CkBAIC0yMDY5LDcgKzIwNjksNyBAQCBwcml2YXRlOgogICAgICAgICAgICAgc2V0SW50MzIobV9v
dXQuY3RsejMyKG9wZXJhbmQpKTsKICAgICAgICAgICAgIHJldHVybjsKICAgICAgICAgfQotICAg
ICAgICBERkdfQVNTRVJUKG1fZ3JhcGgsIG1fbm9kZSwgbV9ub2RlLT5jaGlsZDEoKS51c2VLaW5k
KCkgPT0gVW50eXBlZFVzZSk7CisgICAgICAgIERGR19BU1NFUlQobV9ncmFwaCwgbV9ub2RlLCBt
X25vZGUtPmNoaWxkMSgpLnVzZUtpbmQoKSA9PSBVbnR5cGVkVXNlLCBtX25vZGUtPmNoaWxkMSgp
LnVzZUtpbmQoKSk7CiAgICAgICAgIExWYWx1ZSBhcmd1bWVudCA9IGxvd0pTVmFsdWUobV9ub2Rl
LT5jaGlsZDEoKSk7CiAgICAgICAgIExWYWx1ZSByZXN1bHQgPSB2bUNhbGwoSW50MzIsIG1fb3V0
Lm9wZXJhdGlvbihvcGVyYXRpb25Bcml0aENsejMyKSwgbV9jYWxsRnJhbWUsIGFyZ3VtZW50KTsK
ICAgICAgICAgc2V0SW50MzIocmVzdWx0KTsKQEAgLTIzNjAsNyArMjM2MCw3IEBAIHByaXZhdGU6
CiAgICAgICAgIH0KICAgICAgICAgICAgIAogICAgICAgICBkZWZhdWx0OiB7Ci0gICAgICAgICAg
ICBERkdfQVNTRVJUKG1fZ3JhcGgsIG1fbm9kZSwgbV9ub2RlLT5jaGlsZDEoKS51c2VLaW5kKCkg
PT0gVW50eXBlZFVzZSk7CisgICAgICAgICAgICBERkdfQVNTRVJUKG1fZ3JhcGgsIG1fbm9kZSwg
bV9ub2RlLT5jaGlsZDEoKS51c2VLaW5kKCkgPT0gVW50eXBlZFVzZSwgbV9ub2RlLT5jaGlsZDEo
KS51c2VLaW5kKCkpOwogICAgICAgICAgICAgTFZhbHVlIGFyZ3VtZW50ID0gbG93SlNWYWx1ZSht
X25vZGUtPmNoaWxkMSgpKTsKICAgICAgICAgICAgIExWYWx1ZSByZXN1bHQgPSB2bUNhbGwoRG91
YmxlLCBtX291dC5vcGVyYXRpb24ob3BlcmF0aW9uQXJpdGhBYnMpLCBtX2NhbGxGcmFtZSwgYXJn
dW1lbnQpOwogICAgICAgICAgICAgc2V0RG91YmxlKHJlc3VsdCk7CkBAIC0yNjAwLDcgKzI2MDAs
NyBAQCBwcml2YXRlOgogICAgICAgICAgICAgcmV0dXJuOwogICAgICAgICB9CiAKLSAgICAgICAg
REZHX0FTU0VSVChtX2dyYXBoLCBtX25vZGUsIG1fbm9kZS0+Y2hpbGQxKCkudXNlS2luZCgpID09
IFVudHlwZWRVc2UpOworICAgICAgICBERkdfQVNTRVJUKG1fZ3JhcGgsIG1fbm9kZSwgbV9ub2Rl
LT5jaGlsZDEoKS51c2VLaW5kKCkgPT0gVW50eXBlZFVzZSwgbV9ub2RlLT5jaGlsZDEoKS51c2VL
aW5kKCkpOwogICAgICAgICBMVmFsdWUgYXJndW1lbnQgPSBsb3dKU1ZhbHVlKG1fbm9kZS0+Y2hp
bGQxKCkpOwogICAgICAgICBzZXRKU1ZhbHVlKHZtQ2FsbChJbnQ2NCwgbV9vdXQub3BlcmF0aW9u
KG9wZXJhdGlvbkFyaXRoUm91bmQpLCBtX2NhbGxGcmFtZSwgYXJndW1lbnQpKTsKICAgICB9CkBA
IC0yNjE2LDcgKzI2MTYsNyBAQCBwcml2YXRlOgogICAgICAgICAgICAgICAgIHNldERvdWJsZShp
bnRlZ2VyVmFsdWUpOwogICAgICAgICAgICAgcmV0dXJuOwogICAgICAgICB9Ci0gICAgICAgIERG
R19BU1NFUlQobV9ncmFwaCwgbV9ub2RlLCBtX25vZGUtPmNoaWxkMSgpLnVzZUtpbmQoKSA9PSBV
bnR5cGVkVXNlKTsKKyAgICAgICAgREZHX0FTU0VSVChtX2dyYXBoLCBtX25vZGUsIG1fbm9kZS0+
Y2hpbGQxKCkudXNlS2luZCgpID09IFVudHlwZWRVc2UsIG1fbm9kZS0+Y2hpbGQxKCkudXNlS2lu
ZCgpKTsKICAgICAgICAgTFZhbHVlIGFyZ3VtZW50ID0gbG93SlNWYWx1ZShtX25vZGUtPmNoaWxk
MSgpKTsKICAgICAgICAgc2V0SlNWYWx1ZSh2bUNhbGwoSW50NjQsIG1fb3V0Lm9wZXJhdGlvbihv
cGVyYXRpb25Bcml0aEZsb29yKSwgbV9jYWxsRnJhbWUsIGFyZ3VtZW50KSk7CiAgICAgfQpAQCAt
MjYzMiw3ICsyNjMyLDcgQEAgcHJpdmF0ZToKICAgICAgICAgICAgICAgICBzZXREb3VibGUoaW50
ZWdlclZhbHVlKTsKICAgICAgICAgICAgIHJldHVybjsKICAgICAgICAgfQotICAgICAgICBERkdf
QVNTRVJUKG1fZ3JhcGgsIG1fbm9kZSwgbV9ub2RlLT5jaGlsZDEoKS51c2VLaW5kKCkgPT0gVW50
eXBlZFVzZSk7CisgICAgICAgIERGR19BU1NFUlQobV9ncmFwaCwgbV9ub2RlLCBtX25vZGUtPmNo
aWxkMSgpLnVzZUtpbmQoKSA9PSBVbnR5cGVkVXNlLCBtX25vZGUtPmNoaWxkMSgpLnVzZUtpbmQo
KSk7CiAgICAgICAgIExWYWx1ZSBhcmd1bWVudCA9IGxvd0pTVmFsdWUobV9ub2RlLT5jaGlsZDEo
KSk7CiAgICAgICAgIHNldEpTVmFsdWUodm1DYWxsKEludDY0LCBtX291dC5vcGVyYXRpb24ob3Bl
cmF0aW9uQXJpdGhDZWlsKSwgbV9jYWxsRnJhbWUsIGFyZ3VtZW50KSk7CiAgICAgfQpAQCAtMjY0
OCw3ICsyNjQ4LDcgQEAgcHJpdmF0ZToKICAgICAgICAgICAgICAgICBzZXREb3VibGUocmVzdWx0
KTsKICAgICAgICAgICAgIHJldHVybjsKICAgICAgICAgfQotICAgICAgICBERkdfQVNTRVJUKG1f
Z3JhcGgsIG1fbm9kZSwgbV9ub2RlLT5jaGlsZDEoKS51c2VLaW5kKCkgPT0gVW50eXBlZFVzZSk7
CisgICAgICAgIERGR19BU1NFUlQobV9ncmFwaCwgbV9ub2RlLCBtX25vZGUtPmNoaWxkMSgpLnVz
ZUtpbmQoKSA9PSBVbnR5cGVkVXNlLCBtX25vZGUtPmNoaWxkMSgpLnVzZUtpbmQoKSk7CiAgICAg
ICAgIExWYWx1ZSBhcmd1bWVudCA9IGxvd0pTVmFsdWUobV9ub2RlLT5jaGlsZDEoKSk7CiAgICAg
ICAgIHNldEpTVmFsdWUodm1DYWxsKEludDY0LCBtX291dC5vcGVyYXRpb24ob3BlcmF0aW9uQXJp
dGhUcnVuYyksIG1fY2FsbEZyYW1lLCBhcmd1bWVudCkpOwogICAgIH0KQEAgLTI3MjMsNyArMjcy
Myw3IEBAIHByaXZhdGU6CiAgICAgICAgIH0KICAgICAgICAgICAgIAogICAgICAgICBkZWZhdWx0
OgotICAgICAgICAgICAgREZHX0FTU0VSVChtX2dyYXBoLCBtX25vZGUsIG1fbm9kZS0+Y2hpbGQx
KCkudXNlS2luZCgpID09IFVudHlwZWRVc2UpOworICAgICAgICAgICAgREZHX0FTU0VSVChtX2dy
YXBoLCBtX25vZGUsIG1fbm9kZS0+Y2hpbGQxKCkudXNlS2luZCgpID09IFVudHlwZWRVc2UsIG1f
bm9kZS0+Y2hpbGQxKCkudXNlS2luZCgpKTsKICAgICAgICAgICAgIEFyaXRoUHJvZmlsZSogYXJp
dGhQcm9maWxlID0gbV9mdGxTdGF0ZS5ncmFwaC5iYXNlbGluZUNvZGVCbG9ja0ZvcihtX25vZGUt
Pm9yaWdpbi5zZW1hbnRpYyktPmFyaXRoUHJvZmlsZUZvckJ5dGVjb2RlT2Zmc2V0KG1fbm9kZS0+
b3JpZ2luLnNlbWFudGljLmJ5dGVjb2RlSW5kZXgpOwogICAgICAgICAgICAgYXV0byByZXBhdGNo
aW5nRnVuY3Rpb24gPSBvcGVyYXRpb25Bcml0aE5lZ2F0ZU9wdGltaXplOwogICAgICAgICAgICAg
YXV0byBub25SZXBhdGNoaW5nRnVuY3Rpb24gPSBvcGVyYXRpb25Bcml0aE5lZ2F0ZTsKQEAgLTMz
NjYsNyArMzM2Niw3IEBAIHByaXZhdGU6CiAgICAgCiAgICAgdm9pZCBjb21waWxlUHV0QnlJZCgp
CiAgICAgewotICAgICAgICBERkdfQVNTRVJUKG1fZ3JhcGgsIG1fbm9kZSwgbV9ub2RlLT5jaGls
ZDEoKS51c2VLaW5kKCkgPT0gQ2VsbFVzZSk7CisgICAgICAgIERGR19BU1NFUlQobV9ncmFwaCwg
bV9ub2RlLCBtX25vZGUtPmNoaWxkMSgpLnVzZUtpbmQoKSA9PSBDZWxsVXNlLCBtX25vZGUtPmNo
aWxkMSgpLnVzZUtpbmQoKSk7CiAKICAgICAgICAgTm9kZSogbm9kZSA9IG1fbm9kZTsKICAgICAg
ICAgTFZhbHVlIGJhc2UgPSBsb3dDZWxsKG5vZGUtPmNoaWxkMSgpKTsKQEAgLTM0NzIsNyArMzQ3
Miw3IEBAIHByaXZhdGU6CiAgICAgICAgICAgICByZXR1cm47CiAgICAgICAgIH0KIAotICAgICAg
ICBERkdfQVNTRVJUKG1fZ3JhcGgsIG1fbm9kZSwgaXNUeXBlZFZpZXcobV9ub2RlLT5hcnJheU1v
ZGUoKS50eXBlZEFycmF5VHlwZSgpKSk7CisgICAgICAgIERGR19BU1NFUlQobV9ncmFwaCwgbV9u
b2RlLCBpc1R5cGVkVmlldyhtX25vZGUtPmFycmF5TW9kZSgpLnR5cGVkQXJyYXlUeXBlKCkpLCBt
X25vZGUtPmFycmF5TW9kZSgpLnR5cGVkQXJyYXlUeXBlKCkpOwogICAgICAgICBMVmFsdWUgcG9p
c29uZWRWZWN0b3IgPSBtX291dC5sb2FkUHRyKGNlbGwsIG1faGVhcHMuSlNBcnJheUJ1ZmZlclZp
ZXdfcG9pc29uZWRWZWN0b3IpOwogI2lmIEVOQUJMRShQT0lTT04pCiAgICAgICAgIGF1dG8gdHlw
ZWRBcnJheVR5cGUgPSBtX25vZGUtPmFycmF5TW9kZSgpLnR5cGVkQXJyYXlUeXBlKCk7CkBAIC0z
NzA2LDcgKzM3MDYsNyBAQCBwcml2YXRlOgogICAgICAgICAgICAgICAgIExWYWx1ZSBpc0hvbGUg
PSBtX291dC5pc1plcm82NChyZXN1bHQpOwogICAgICAgICAgICAgICAgIGlmIChtX25vZGUtPmFy
cmF5TW9kZSgpLmlzU2FuZUNoYWluKCkpIHsKICAgICAgICAgICAgICAgICAgICAgREZHX0FTU0VS
VCgKLSAgICAgICAgICAgICAgICAgICAgICAgIG1fZ3JhcGgsIG1fbm9kZSwgbV9ub2RlLT5hcnJh
eU1vZGUoKS50eXBlKCkgPT0gQXJyYXk6OkNvbnRpZ3VvdXMpOworICAgICAgICAgICAgICAgICAg
ICAgICAgbV9ncmFwaCwgbV9ub2RlLCBtX25vZGUtPmFycmF5TW9kZSgpLnR5cGUoKSA9PSBBcnJh
eTo6Q29udGlndW91cywgbV9ub2RlLT5hcnJheU1vZGUoKS50eXBlKCkpOwogICAgICAgICAgICAg
ICAgICAgICByZXN1bHQgPSBtX291dC5zZWxlY3QoCiAgICAgICAgICAgICAgICAgICAgICAgICBp
c0hvbGUsIG1fb3V0LmNvbnN0SW50NjQoSlNWYWx1ZTo6ZW5jb2RlKGpzVW5kZWZpbmVkKCkpKSwg
cmVzdWx0KTsKICAgICAgICAgICAgICAgICB9IGVsc2UKQEAgLTYxMzQsNyArNjEzNCw3IEBAIHBy
aXZhdGU6CiAgICAgICAgICAgICByZXR1cm47CiAgICAgICAgIH0KIAotICAgICAgICBERkdfQVNT
RVJUKG1fZ3JhcGgsIG1fbm9kZSwgY2hpbGRFZGdlLnVzZUtpbmQoKSA9PSBJbnQzMlVzZSk7Cisg
ICAgICAgIERGR19BU1NFUlQobV9ncmFwaCwgbV9ub2RlLCBjaGlsZEVkZ2UudXNlS2luZCgpID09
IEludDMyVXNlLCBjaGlsZEVkZ2UudXNlS2luZCgpKTsKIAogICAgICAgICBMVmFsdWUgdmFsdWUg
PSBsb3dJbnQzMihjaGlsZEVkZ2UpOwogICAgICAgICAKQEAgLTYzMTUsNyArNjMxNSw3IEBAIHBy
aXZhdGU6CiAgICAgICAgICAgICAgICAgZWxzZQogICAgICAgICAgICAgICAgICAgICBzdG9yYWdl
ID0gbV9vdXQubG9hZFB0cihiYXNlLCBtX2hlYXBzLkpTT2JqZWN0X2J1dHRlcmZseSk7CiAgICAg
ICAgICAgICB9IGVsc2UgewotICAgICAgICAgICAgICAgIERGR19BU1NFUlQobV9ncmFwaCwgbV9u
b2RlLCB2YXJpYW50LmtpbmQoKSA9PSBQdXRCeUlkVmFyaWFudDo6VHJhbnNpdGlvbik7CisgICAg
ICAgICAgICAgICAgREZHX0FTU0VSVChtX2dyYXBoLCBtX25vZGUsIHZhcmlhbnQua2luZCgpID09
IFB1dEJ5SWRWYXJpYW50OjpUcmFuc2l0aW9uLCB2YXJpYW50LmtpbmQoKSk7CiAgICAgICAgICAg
ICAgICAgbV9ncmFwaC5tX3BsYW4udHJhbnNpdGlvbnMuYWRkTGF6aWx5KAogICAgICAgICAgICAg
ICAgICAgICBjb2RlQmxvY2soKSwgbV9ub2RlLT5vcmlnaW4uc2VtYW50aWMuY29kZU9yaWdpbk93
bmVyKCksCiAgICAgICAgICAgICAgICAgICAgIHZhcmlhbnQub2xkU3RydWN0dXJlRm9yVHJhbnNp
dGlvbigpLCB2YXJpYW50Lm5ld1N0cnVjdHVyZSgpKTsKQEAgLTY1MTAsNyArNjUxMCw3IEBAIHBy
aXZhdGU6CiAgICAgICAgICAgICByZXR1cm47CiAgICAgICAgIH0KIAotICAgICAgICBERkdfQVNT
RVJUKG1fZ3JhcGgsIG1fbm9kZSwgbV9ub2RlLT5pc0JpbmFyeVVzZUtpbmQoVW50eXBlZFVzZSkp
OworICAgICAgICBERkdfQVNTRVJUKG1fZ3JhcGgsIG1fbm9kZSwgbV9ub2RlLT5pc0JpbmFyeVVz
ZUtpbmQoVW50eXBlZFVzZSksIG1fbm9kZS0+Y2hpbGQxKCkudXNlS2luZCgpLCBtX25vZGUtPmNo
aWxkMigpLnVzZUtpbmQoKSk7CiAgICAgICAgIG5vblNwZWN1bGF0aXZlQ29tcGFyZSgKICAgICAg
ICAgICAgIFsmXSAoTFZhbHVlIGxlZnQsIExWYWx1ZSByaWdodCkgewogICAgICAgICAgICAgICAg
IHJldHVybiBtX291dC5lcXVhbChsZWZ0LCByaWdodCk7CkBAIC02Njc1LDcgKzY2NzUsNyBAQCBw
cml2YXRlOgogICAgICAgICAgICAgcmV0dXJuOwogICAgICAgICB9CiAKLSAgICAgICAgREZHX0FT
U0VSVChtX2dyYXBoLCBtX25vZGUsIG1fbm9kZS0+aXNCaW5hcnlVc2VLaW5kKFVudHlwZWRVc2Up
KTsKKyAgICAgICAgREZHX0FTU0VSVChtX2dyYXBoLCBtX25vZGUsIG1fbm9kZS0+aXNCaW5hcnlV
c2VLaW5kKFVudHlwZWRVc2UpLCBtX25vZGUtPmNoaWxkMSgpLnVzZUtpbmQoKSwgbV9ub2RlLT5j
aGlsZDIoKS51c2VLaW5kKCkpOwogICAgICAgICBub25TcGVjdWxhdGl2ZUNvbXBhcmUoCiAgICAg
ICAgICAgICBbJl0gKExWYWx1ZSBsZWZ0LCBMVmFsdWUgcmlnaHQpIHsKICAgICAgICAgICAgICAg
ICByZXR1cm4gbV9vdXQuZXF1YWwobGVmdCwgcmlnaHQpOwpAQCAtOTMxMSw3ICs5MzExLDcgQEAg
cHJpdmF0ZToKICAgICAKICAgICB2b2lkIGNvbXBpbGVJbigpCiAgICAgewotICAgICAgICBERkdf
QVNTRVJUKG1fZ3JhcGgsIG1fbm9kZSwgbV9ub2RlLT5jaGlsZDEoKS51c2VLaW5kKCkgPT0gQ2Vs
bFVzZSk7CisgICAgICAgIERGR19BU1NFUlQobV9ncmFwaCwgbV9ub2RlLCBtX25vZGUtPmNoaWxk
MSgpLnVzZUtpbmQoKSA9PSBDZWxsVXNlLCBtX25vZGUtPmNoaWxkMSgpLnVzZUtpbmQoKSk7CiAK
ICAgICAgICAgTm9kZSogbm9kZSA9IG1fbm9kZTsKICAgICAgICAgRWRnZSBiYXNlID0gbm9kZS0+
Y2hpbGQxKCk7CkBAIC0xMTI1Myw3ICsxMTI1Myw3IEBAIHByaXZhdGU6CiAgICAgICAgICAgICBy
ZXR1cm47CiAgICAgICAgIH0KIAotICAgICAgICBERkdfQVNTRVJUKG1fZ3JhcGgsIG1fbm9kZSwg
bV9ub2RlLT5pc0JpbmFyeVVzZUtpbmQoVW50eXBlZFVzZSkpOworICAgICAgICBERkdfQVNTRVJU
KG1fZ3JhcGgsIG1fbm9kZSwgbV9ub2RlLT5pc0JpbmFyeVVzZUtpbmQoVW50eXBlZFVzZSksIG1f
bm9kZS0+Y2hpbGQxKCkudXNlS2luZCgpLCBtX25vZGUtPmNoaWxkMigpLnVzZUtpbmQoKSk7CiAg
ICAgICAgIG5vblNwZWN1bGF0aXZlQ29tcGFyZShpbnRGdW5jdG9yLCBmYWxsYmFja0Z1bmN0aW9u
KTsKICAgICB9CiAKQEAgLTEyOTgwLDExICsxMjk4MCwxMSBAQCBwcml2YXRlOgogICAgICAgICB9
CiAgICAgICAgIAogICAgICAgICBpZiAoY2hlY2tlZEV4YWN0TGVuZ3RoKSB7Ci0gICAgICAgICAg
ICBERkdfQVNTRVJUKG1fZ3JhcGgsIG1fbm9kZSwgYWxyZWFkeUNoZWNrZWRMZW5ndGggPT0gbWlu
TGVuZ3RoKTsKKyAgICAgICAgICAgIERGR19BU1NFUlQobV9ncmFwaCwgbV9ub2RlLCBhbHJlYWR5
Q2hlY2tlZExlbmd0aCA9PSBtaW5MZW5ndGgsIGFscmVhZHlDaGVja2VkTGVuZ3RoLCBtaW5MZW5n
dGgpOwogICAgICAgICAgICAgREZHX0FTU0VSVChtX2dyYXBoLCBtX25vZGUsIGFsbExlbmd0aHNF
cXVhbCk7CiAgICAgICAgIH0KICAgICAgICAgCi0gICAgICAgIERGR19BU1NFUlQobV9ncmFwaCwg
bV9ub2RlLCBtaW5MZW5ndGggPj0gY29tbW9uQ2hhcnMpOworICAgICAgICBERkdfQVNTRVJUKG1f
Z3JhcGgsIG1fbm9kZSwgbWluTGVuZ3RoID49IGNvbW1vbkNoYXJzLCBtaW5MZW5ndGgsIGNvbW1v
bkNoYXJzKTsKICAgICAgICAgCiAgICAgICAgIGlmICghYWxsTGVuZ3Roc0VxdWFsICYmIGFscmVh
ZHlDaGVja2VkTGVuZ3RoIDwgbWluTGVuZ3RoKQogICAgICAgICAgICAgbV9vdXQuY2hlY2sobV9v
dXQuYmVsb3cobGVuZ3RoLCBtX291dC5jb25zdEludDMyKG1pbkxlbmd0aCkpLCB1bnN1cmUoZmFs
bFRocm91Z2gpKTsKQEAgLTEzMDA0LDEyICsxMzAwNCwxMiBAQCBwcml2YXRlOgogICAgICAgICAg
ICAgLy8gV2UndmUgYWxyZWFkeSBjaGVja2VkIHRoYXQgdGhlIGlucHV0IHN0cmluZyBpcyBhIHBy
ZWZpeCBvZiBhbGwgb2YgdGhlIGNhc2VzLAogICAgICAgICAgICAgLy8gc28gd2UganVzdCBjaGVj
ayBsZW5ndGggdG8ganVtcCB0byB0aGF0IGNhc2UuCiAgICAgICAgICAgICAKLSAgICAgICAgICAg
IERGR19BU1NFUlQobV9ncmFwaCwgbV9ub2RlLCBjYXNlc1tiZWdpbl0uc3RyaW5nLT5sZW5ndGgo
KSA9PSBjb21tb25DaGFycyk7CisgICAgICAgICAgICBERkdfQVNTRVJUKG1fZ3JhcGgsIG1fbm9k
ZSwgY2FzZXNbYmVnaW5dLnN0cmluZy0+bGVuZ3RoKCkgPT0gY29tbW9uQ2hhcnMsIGNhc2VzW2Jl
Z2luXS5zdHJpbmctPmxlbmd0aCgpLCBjb21tb25DaGFycyk7CiAgICAgICAgICAgICBmb3IgKHVu
c2lnbmVkIGkgPSBiZWdpbiArIDE7IGkgPCBlbmQ7ICsraSkKLSAgICAgICAgICAgICAgICBERkdf
QVNTRVJUKG1fZ3JhcGgsIG1fbm9kZSwgY2FzZXNbaV0uc3RyaW5nLT5sZW5ndGgoKSA+IGNvbW1v
bkNoYXJzKTsKKyAgICAgICAgICAgICAgICBERkdfQVNTRVJUKG1fZ3JhcGgsIG1fbm9kZSwgY2Fz
ZXNbaV0uc3RyaW5nLT5sZW5ndGgoKSA+IGNvbW1vbkNoYXJzLCBjYXNlc1tpXS5zdHJpbmctPmxl
bmd0aCgpLCBjb21tb25DaGFycyk7CiAgICAgICAgICAgICAKICAgICAgICAgICAgIGlmIChhbGxM
ZW5ndGhzRXF1YWwpIHsKLSAgICAgICAgICAgICAgICBERkdfQVNTRVJUKG1fZ3JhcGgsIG1fbm9k
ZSwgZW5kID09IGJlZ2luICsgMSk7CisgICAgICAgICAgICAgICAgREZHX0FTU0VSVChtX2dyYXBo
LCBtX25vZGUsIGVuZCA9PSBiZWdpbiArIDEsIGVuZCwgYmVnaW4pOwogICAgICAgICAgICAgICAg
IG1fb3V0Lmp1bXAoY2FzZXNbYmVnaW5dLnRhcmdldCk7CiAgICAgICAgICAgICAgICAgcmV0dXJu
OwogICAgICAgICAgICAgfQpAQCAtMTMwMzAsNyArMTMwMzAsNyBAQCBwcml2YXRlOgogICAgICAg
ICAvLyBjb21tb25DaGFycy4gVXNlIGEgYmluYXJ5IHN3aXRjaCBvbiB0aGUgbmV4dCB1bmNoZWNr
ZWQgY2hhcmFjdGVyLCBpLmUuCiAgICAgICAgIC8vIHN0cmluZ1tjb21tb25DaGFyc10uCiAgICAg
ICAgIAotICAgICAgICBERkdfQVNTRVJUKG1fZ3JhcGgsIG1fbm9kZSwgZW5kID49IGJlZ2luICsg
Mik7CisgICAgICAgIERGR19BU1NFUlQobV9ncmFwaCwgbV9ub2RlLCBlbmQgPj0gYmVnaW4gKyAy
LCBlbmQsIGJlZ2luKTsKICAgICAgICAgCiAgICAgICAgIExWYWx1ZSB1bmNoZWNrZWRDaGFyID0g
bV9vdXQubG9hZDhaZXJvRXh0MzIoYnVmZmVyLCBtX2hlYXBzLmNoYXJhY3RlcnM4W2NvbW1vbkNo
YXJzXSk7CiAgICAgICAgIApAQCAtMTM3MzMsNyArMTM3MzMsNyBAQCBwcml2YXRlOgogICAgICAg
ICAgICAgcmV0dXJuIHJlc3VsdDsKICAgICAgICAgfQogCi0gICAgICAgIERGR19BU1NFUlQobV9n
cmFwaCwgbV9ub2RlLCAhKHByb3ZlblR5cGUoZWRnZSkgJiBTcGVjSW50MzJPbmx5KSk7CisgICAg
ICAgIERGR19BU1NFUlQobV9ncmFwaCwgbV9ub2RlLCAhKHByb3ZlblR5cGUoZWRnZSkgJiBTcGVj
SW50MzJPbmx5KSwgcHJvdmVuVHlwZShlZGdlKSk7CiAgICAgICAgIHRlcm1pbmF0ZShVbmNvdW50
YWJsZSk7CiAgICAgICAgIHJldHVybiBtX291dC5pbnQzMlplcm87CiAgICAgfQpAQCAtMTM3NDEs
NyArMTM3NDEsNyBAQCBwcml2YXRlOgogICAgIGVudW0gSW50NTJLaW5kIHsgU3RyaWN0SW50NTIs
IEludDUyIH07CiAgICAgTFZhbHVlIGxvd0ludDUyKEVkZ2UgZWRnZSwgSW50NTJLaW5kIGtpbmQp
CiAgICAgewotICAgICAgICBERkdfQVNTRVJUKG1fZ3JhcGgsIG1fbm9kZSwgZWRnZS51c2VLaW5k
KCkgPT0gSW50NTJSZXBVc2UpOworICAgICAgICBERkdfQVNTRVJUKG1fZ3JhcGgsIG1fbm9kZSwg
ZWRnZS51c2VLaW5kKCkgPT0gSW50NTJSZXBVc2UsIGVkZ2UudXNlS2luZCgpKTsKICAgICAgICAg
CiAgICAgICAgIExvd2VyZWROb2RlVmFsdWUgdmFsdWU7CiAgICAgICAgIApAQCAtMTM3NjcsNyAr
MTM3NjcsNyBAQCBwcml2YXRlOgogICAgICAgICAgICAgYnJlYWs7CiAgICAgICAgIH0KIAotICAg
ICAgICBERkdfQVNTRVJUKG1fZ3JhcGgsIG1fbm9kZSwgIXByb3ZlblR5cGUoZWRnZSkpOworICAg
ICAgICBERkdfQVNTRVJUKG1fZ3JhcGgsIG1fbm9kZSwgIXByb3ZlblR5cGUoZWRnZSksIHByb3Zl
blR5cGUoZWRnZSkpOwogICAgICAgICB0ZXJtaW5hdGUoVW5jb3VudGFibGUpOwogICAgICAgICBy
ZXR1cm4gbV9vdXQuaW50NjRaZXJvOwogICAgIH0KQEAgLTEzODE1LDcgKzEzODE1LDcgQEAgcHJp
dmF0ZToKICAgICAKICAgICBMVmFsdWUgbG93Q2VsbChFZGdlIGVkZ2UsIE9wZXJhbmRTcGVjdWxh
dGlvbk1vZGUgbW9kZSA9IEF1dG9tYXRpY09wZXJhbmRTcGVjdWxhdGlvbikKICAgICB7Ci0gICAg
ICAgIERGR19BU1NFUlQobV9ncmFwaCwgbV9ub2RlLCBtb2RlID09IE1hbnVhbE9wZXJhbmRTcGVj
dWxhdGlvbiB8fCBERkc6OmlzQ2VsbChlZGdlLnVzZUtpbmQoKSkpOworICAgICAgICBERkdfQVNT
RVJUKG1fZ3JhcGgsIG1fbm9kZSwgbW9kZSA9PSBNYW51YWxPcGVyYW5kU3BlY3VsYXRpb24gfHwg
REZHOjppc0NlbGwoZWRnZS51c2VLaW5kKCkpLCBlZGdlLnVzZUtpbmQoKSk7CiAgICAgICAgIAog
ICAgICAgICBpZiAoZWRnZS0+b3AoKSA9PSBKU0NvbnN0YW50KSB7CiAgICAgICAgICAgICBGcm96
ZW5WYWx1ZSogdmFsdWUgPSBlZGdlLT5jb25zdGFudCgpOwpAQCAtMTM4MzYsNyArMTM4MzYsNyBA
QCBwcml2YXRlOgogICAgICAgICAgICAgcmV0dXJuIHVuY2hlY2tlZFZhbHVlOwogICAgICAgICB9
CiAgICAgICAgIAotICAgICAgICBERkdfQVNTRVJUKG1fZ3JhcGgsIG1fbm9kZSwgIShwcm92ZW5U
eXBlKGVkZ2UpICYgU3BlY0NlbGxDaGVjaykpOworICAgICAgICBERkdfQVNTRVJUKG1fZ3JhcGgs
IG1fbm9kZSwgIShwcm92ZW5UeXBlKGVkZ2UpICYgU3BlY0NlbGxDaGVjayksIHByb3ZlblR5cGUo
ZWRnZSkpOwogICAgICAgICB0ZXJtaW5hdGUoVW5jb3VudGFibGUpOwogICAgICAgICByZXR1cm4g
bV9vdXQuaW50UHRyWmVybzsKICAgICB9CkBAIC0xMzk1MSwyOCArMTM5NTEsMjggQEAgcHJpdmF0
ZToKICAgICAgICAgICAgIHJldHVybiByZXN1bHQ7CiAgICAgICAgIH0KICAgICAgICAgCi0gICAg
ICAgIERGR19BU1NFUlQobV9ncmFwaCwgbV9ub2RlLCAhKHByb3ZlblR5cGUoZWRnZSkgJiBTcGVj
Qm9vbGVhbikpOworICAgICAgICBERkdfQVNTRVJUKG1fZ3JhcGgsIG1fbm9kZSwgIShwcm92ZW5U
eXBlKGVkZ2UpICYgU3BlY0Jvb2xlYW4pLCBwcm92ZW5UeXBlKGVkZ2UpKTsKICAgICAgICAgdGVy
bWluYXRlKFVuY291bnRhYmxlKTsKICAgICAgICAgcmV0dXJuIG1fb3V0LmJvb2xlYW5GYWxzZTsK
ICAgICB9CiAgICAgCiAgICAgTFZhbHVlIGxvd0RvdWJsZShFZGdlIGVkZ2UpCiAgICAgewotICAg
ICAgICBERkdfQVNTRVJUKG1fZ3JhcGgsIG1fbm9kZSwgaXNEb3VibGUoZWRnZS51c2VLaW5kKCkp
KTsKKyAgICAgICAgREZHX0FTU0VSVChtX2dyYXBoLCBtX25vZGUsIGlzRG91YmxlKGVkZ2UudXNl
S2luZCgpKSwgZWRnZS51c2VLaW5kKCkpOwogICAgICAgICAKICAgICAgICAgTG93ZXJlZE5vZGVW
YWx1ZSB2YWx1ZSA9IG1fZG91YmxlVmFsdWVzLmdldChlZGdlLm5vZGUoKSk7CiAgICAgICAgIGlm
IChpc1ZhbGlkKHZhbHVlKSkKICAgICAgICAgICAgIHJldHVybiB2YWx1ZS52YWx1ZSgpOwotICAg
ICAgICBERkdfQVNTRVJUKG1fZ3JhcGgsIG1fbm9kZSwgIXByb3ZlblR5cGUoZWRnZSkpOworICAg
ICAgICBERkdfQVNTRVJUKG1fZ3JhcGgsIG1fbm9kZSwgIXByb3ZlblR5cGUoZWRnZSksIHByb3Zl
blR5cGUoZWRnZSkpOwogICAgICAgICB0ZXJtaW5hdGUoVW5jb3VudGFibGUpOwogICAgICAgICBy
ZXR1cm4gbV9vdXQuZG91YmxlWmVybzsKICAgICB9CiAgICAgCiAgICAgTFZhbHVlIGxvd0pTVmFs
dWUoRWRnZSBlZGdlLCBPcGVyYW5kU3BlY3VsYXRpb25Nb2RlIG1vZGUgPSBBdXRvbWF0aWNPcGVy
YW5kU3BlY3VsYXRpb24pCiAgICAgewotICAgICAgICBERkdfQVNTRVJUKG1fZ3JhcGgsIG1fbm9k
ZSwgbW9kZSA9PSBNYW51YWxPcGVyYW5kU3BlY3VsYXRpb24gfHwgZWRnZS51c2VLaW5kKCkgPT0g
VW50eXBlZFVzZSk7Ci0gICAgICAgIERGR19BU1NFUlQobV9ncmFwaCwgbV9ub2RlLCAhaXNEb3Vi
bGUoZWRnZS51c2VLaW5kKCkpKTsKLSAgICAgICAgREZHX0FTU0VSVChtX2dyYXBoLCBtX25vZGUs
IGVkZ2UudXNlS2luZCgpICE9IEludDUyUmVwVXNlKTsKKyAgICAgICAgREZHX0FTU0VSVChtX2dy
YXBoLCBtX25vZGUsIG1vZGUgPT0gTWFudWFsT3BlcmFuZFNwZWN1bGF0aW9uIHx8IGVkZ2UudXNl
S2luZCgpID09IFVudHlwZWRVc2UsIG1fbm9kZS0+b3AoKSwgZWRnZS51c2VLaW5kKCkpOworICAg
ICAgICBERkdfQVNTRVJUKG1fZ3JhcGgsIG1fbm9kZSwgIWlzRG91YmxlKGVkZ2UudXNlS2luZCgp
KSwgbV9ub2RlLT5vcCgpLCBlZGdlLnVzZUtpbmQoKSk7CisgICAgICAgIERGR19BU1NFUlQobV9n
cmFwaCwgbV9ub2RlLCBlZGdlLnVzZUtpbmQoKSAhPSBJbnQ1MlJlcFVzZSwgbV9ub2RlLT5vcCgp
LCBlZGdlLnVzZUtpbmQoKSk7CiAgICAgICAgIAogICAgICAgICBpZiAoZWRnZS0+aGFzQ29uc3Rh
bnQoKSkgewogICAgICAgICAgICAgTFZhbHVlIHJlc3VsdCA9IG1fb3V0LmNvbnN0SW50NjQoSlNW
YWx1ZTo6ZW5jb2RlKGVkZ2UtPmFzSlNWYWx1ZSgpKSk7Cg==
</data>

          </attachment>
      

    </bug>

</bugzilla>