<?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>143713</bug_id>
          
          <creation_ts>2015-04-14 08:46:53 -0700</creation_ts>
          <short_desc>Generalize &quot;isPlayingAudio&quot; to include other media characteristics</short_desc>
          <delta_ts>2015-04-15 09:22:01 -0700</delta_ts>
          <reporter_accessible>1</reporter_accessible>
          <cclist_accessible>1</cclist_accessible>
          <classification_id>1</classification_id>
          <classification>Unclassified</classification>
          <product>WebKit</product>
          <component>Media</component>
          <version>528+ (Nightly build)</version>
          <rep_platform>Unspecified</rep_platform>
          <op_sys>Unspecified</op_sys>
          <bug_status>RESOLVED</bug_status>
          <resolution>FIXED</resolution>
          
          
          <bug_file_loc></bug_file_loc>
          <status_whiteboard></status_whiteboard>
          <keywords></keywords>
          <priority>P2</priority>
          <bug_severity>Normal</bug_severity>
          <target_milestone>---</target_milestone>
          
          
          <everconfirmed>1</everconfirmed>
          <reporter name="Eric Carlson">eric.carlson</reporter>
          <assigned_to name="Eric Carlson">eric.carlson</assigned_to>
          <cc>commit-queue</cc>
    
    <cc>jer.noble</cc>
          

      

      

      

          <comment_sort_order>oldest_to_newest</comment_sort_order>  
          <long_desc isprivate="0" >
    <commentid>1085142</commentid>
    <comment_count>0</comment_count>
    <who name="Eric Carlson">eric.carlson</who>
    <bug_when>2015-04-14 08:46:53 -0700</bug_when>
    <thetext>Generalize &quot;isPlayingAudio&quot; to include other media characteristics</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>1085146</commentid>
    <comment_count>1</comment_count>
      <attachid>250709</attachid>
    <who name="Eric Carlson">eric.carlson</who>
    <bug_when>2015-04-14 08:59:45 -0700</bug_when>
    <thetext>Created attachment 250709
Proposed patch</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>1085187</commentid>
    <comment_count>2</comment_count>
      <attachid>250709</attachid>
    <who name="Jer Noble">jer.noble</who>
    <bug_when>2015-04-14 10:37:16 -0700</bug_when>
    <thetext>Comment on attachment 250709
Proposed patch

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

r=me, with questions:

&gt; Source/WebCore/page/Page.cpp:-111
&gt; -#include &quot;MediaPlaybackTargetPickerClient.h&quot;

Is this really no longer needed?

&gt; Source/WebCore/page/Page.cpp:1216
&gt; -    chrome().client().isPlayingAudioDidChange(m_isPlayingAudio);
&gt; +    chrome().client().isPlayingMediaDidChange(m_isPlayingAudio ? ChromeClient::IsPlayingAudio : ChromeClient::IsNotPlaying);
&gt;  }

Are we going to add support for IsPlayingVideo and IsPlayingToExternalDevice in a follow-up patch?</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>1085217</commentid>
    <comment_count>3</comment_count>
      <attachid>250726</attachid>
    <who name="Eric Carlson">eric.carlson</who>
    <bug_when>2015-04-14 12:50:01 -0700</bug_when>
    <thetext>Created attachment 250726
Patch for the landing.</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>1085219</commentid>
    <comment_count>4</comment_count>
    <who name="WebKit Commit Bot">commit-queue</who>
    <bug_when>2015-04-14 12:51:28 -0700</bug_when>
    <thetext>Attachment 250726 did not pass style-queue:


ERROR: Source/WebKit2/UIProcess/API/C/WKPage.cpp:1938:  Place brace on its own line for function definitions.  [whitespace/braces] [4]
ERROR: Source/WebKit2/UIProcess/API/C/WKPage.cpp:1938:  Extra space before [  [whitespace/braces] [5]
Total errors found: 2 in 20 files


If any of these errors are false positives, please file a bug against check-webkit-style.</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>1085446</commentid>
    <comment_count>5</comment_count>
      <attachid>250786</attachid>
    <who name="Eric Carlson">eric.carlson</who>
    <bug_when>2015-04-15 05:46:35 -0700</bug_when>
    <thetext>Created attachment 250786
Patch for the bots.</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>1085447</commentid>
    <comment_count>6</comment_count>
    <who name="WebKit Commit Bot">commit-queue</who>
    <bug_when>2015-04-15 05:48:21 -0700</bug_when>
    <thetext>Attachment 250786 did not pass style-queue:


ERROR: Source/WebKit2/UIProcess/API/C/WKPage.cpp:1938:  Place brace on its own line for function definitions.  [whitespace/braces] [4]
ERROR: Source/WebKit2/UIProcess/API/C/WKPage.cpp:1938:  Extra space before [  [whitespace/braces] [5]
Total errors found: 2 in 21 files


If any of these errors are false positives, please file a bug against check-webkit-style.</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>1085487</commentid>
    <comment_count>7</comment_count>
      <attachid>250792</attachid>
    <who name="Eric Carlson">eric.carlson</who>
    <bug_when>2015-04-15 08:50:51 -0700</bug_when>
    <thetext>Created attachment 250792
Another patch for the bots.</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>1085488</commentid>
    <comment_count>8</comment_count>
    <who name="WebKit Commit Bot">commit-queue</who>
    <bug_when>2015-04-15 08:52:32 -0700</bug_when>
    <thetext>Attachment 250792 did not pass style-queue:


ERROR: Source/WebKit2/UIProcess/API/C/WKPage.cpp:1938:  Extra space before [  [whitespace/braces] [5]
ERROR: Source/WebKit2/UIProcess/API/gtk/WebKitWebView.cpp:3102:  Place brace on its own line for function definitions.  [whitespace/braces] [4]
Total errors found: 2 in 22 files


If any of these errors are false positives, please file a bug against check-webkit-style.</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>1085499</commentid>
    <comment_count>9</comment_count>
    <who name="Eric Carlson">eric.carlson</who>
    <bug_when>2015-04-15 09:21:42 -0700</bug_when>
    <thetext>Committed r182842: https://trac.webkit.org/r182842</thetext>
  </long_desc>
      
          <attachment
              isobsolete="0"
              ispatch="1"
              isprivate="0"
          >
            <attachid>250709</attachid>
            <date>2015-04-14 08:59:45 -0700</date>
            <delta_ts>2015-04-15 09:22:01 -0700</delta_ts>
            <desc>Proposed patch</desc>
            <filename>media_play_state_patch_2.txt</filename>
            <type>text/plain</type>
            <size>12803</size>
            <attacher name="Eric Carlson">eric.carlson</attacher>
            
              <data encoding="base64">SW5kZXg6IFNvdXJjZS9XZWJDb3JlL0NoYW5nZUxvZwo9PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09Ci0tLSBTb3VyY2UvV2Vi
Q29yZS9DaGFuZ2VMb2cJKHJldmlzaW9uIDE4Mjc5NikKKysrIFNvdXJjZS9XZWJDb3JlL0NoYW5n
ZUxvZwkod29ya2luZyBjb3B5KQpAQCAtMSwzICsxLDMzIEBACisyMDE1LTA0LTE0ICBFcmljIENh
cmxzb24gIDxlcmljLmNhcmxzb25AYXBwbGUuY29tPgorCisgICAgICAgIEdlbmVyYWxpemUgImlz
UGxheWluZ0F1ZGlvIiB0byBpbmNsdWRlIG90aGVyIG1lZGlhIGNoYXJhY3RlcmlzdGljcworICAg
ICAgICBodHRwczovL2J1Z3Mud2Via2l0Lm9yZy9zaG93X2J1Zy5jZ2k/aWQ9MTQzNzEzCisKKyAg
ICAgICAgUmV2aWV3ZWQgYnkgTk9CT0RZIChPT1BTISkuCisKKyAgICAgICAgTm8gbmV3IGZ1bmN0
aW9uYWxpdHkuCisKKyAgICAgICAgKiBNb2R1bGVzL3dlYmF1ZGlvL0F1ZGlvQ29udGV4dC5jcHA6
CisgICAgICAgIChXZWJDb3JlOjpBdWRpb0NvbnRleHQ6OnN0b3ApOiB1cGRhdGVJc1BsYXlpbmdB
dWRpbyAtPiB1cGRhdGVJc1BsYXlpbmdNZWRpYS4KKyAgICAgICAgKFdlYkNvcmU6OkF1ZGlvQ29u
dGV4dDo6aXNQbGF5aW5nQXVkaW9EaWRDaGFuZ2UpOiBEaXR0by4KKworICAgICAgICAqIGRvbS9E
b2N1bWVudC5jcHA6CisgICAgICAgIChXZWJDb3JlOjpEb2N1bWVudDo6YWRkQXVkaW9Qcm9kdWNl
cik6IERpdHRvLgorICAgICAgICAoV2ViQ29yZTo6RG9jdW1lbnQ6OnJlbW92ZUF1ZGlvUHJvZHVj
ZXIpOiBEaXR0by4KKyAgICAgICAgKFdlYkNvcmU6OkRvY3VtZW50Ojp1cGRhdGVJc1BsYXlpbmdN
ZWRpYSk6IFJlbmFtZWQuCisgICAgICAgIChXZWJDb3JlOjpEb2N1bWVudDo6dXBkYXRlSXNQbGF5
aW5nQXVkaW8pOiBEZWxldGVkLgorICAgICAgICAqIGRvbS9Eb2N1bWVudC5oOgorCisgICAgICAg
ICogaHRtbC9IVE1MTWVkaWFFbGVtZW50LmNwcDoKKyAgICAgICAgKFdlYkNvcmU6OkhUTUxNZWRp
YUVsZW1lbnQ6OnNldE11dGVkKTogdXBkYXRlSXNQbGF5aW5nQXVkaW8gLT4gdXBkYXRlSXNQbGF5
aW5nTWVkaWEuCisgICAgICAgIChXZWJDb3JlOjpIVE1MTWVkaWFFbGVtZW50OjpzZXRQbGF5aW5n
KTogRGl0dG8uCisKKyAgICAgICAgKiBwYWdlL0Nocm9tZUNsaWVudC5oOgorICAgICAgICAqIHBh
Z2UvUGFnZS5jcHA6CisgICAgICAgIChXZWJDb3JlOjpQYWdlOjp1cGRhdGVJc1BsYXlpbmdNZWRp
YSk6IFJlbmFtZWQuCisgICAgICAgIChXZWJDb3JlOjpQYWdlOjp1cGRhdGVJc1BsYXlpbmdBdWRp
byk6IERlbGV0ZWQuCisgICAgICAgICogcGFnZS9QYWdlLmg6CisKIDIwMTUtMDQtMTQgIFBlciBB
cm5lIFZvbGxhbiAgPHBlYXZvQG91dGxvb2suY29tPgogCiAgICAgICAgIFtXaW5DYWlyb10gVW5y
ZXZpZXdlZCBidWlsZCBmaXggYWZ0ZXIgcjE4MjcwNy4KSW5kZXg6IFNvdXJjZS9XZWJDb3JlL01v
ZHVsZXMvd2ViYXVkaW8vQXVkaW9Db250ZXh0LmNwcAo9PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09Ci0tLSBTb3VyY2UvV2Vi
Q29yZS9Nb2R1bGVzL3dlYmF1ZGlvL0F1ZGlvQ29udGV4dC5jcHAJKHJldmlzaW9uIDE4Mjc5NSkK
KysrIFNvdXJjZS9XZWJDb3JlL01vZHVsZXMvd2ViYXVkaW8vQXVkaW9Db250ZXh0LmNwcAkod29y
a2luZyBjb3B5KQpAQCAtMzQ0LDcgKzM0NCw3IEBAIHZvaWQgQXVkaW9Db250ZXh0OjpzdG9wKCkK
ICAgICAgICAgcmV0dXJuOwogICAgIG1faXNTdG9wU2NoZWR1bGVkID0gdHJ1ZTsKIAotICAgIGRv
Y3VtZW50KCktPnVwZGF0ZUlzUGxheWluZ0F1ZGlvKCk7CisgICAgZG9jdW1lbnQoKS0+dXBkYXRl
SXNQbGF5aW5nTWVkaWEoKTsKIAogICAgIG1fZXZlbnRRdWV1ZS0+Y2xvc2UoKTsKIApAQCAtMTAz
OCw3ICsxMDM4LDcgQEAgdm9pZCBBdWRpb0NvbnRleHQ6OnBhZ2VNdXRlZFN0YXRlRGlkQ2hhbgog
CiB2b2lkIEF1ZGlvQ29udGV4dDo6aXNQbGF5aW5nQXVkaW9EaWRDaGFuZ2UoKQogewotICAgIGRv
Y3VtZW50KCktPnVwZGF0ZUlzUGxheWluZ0F1ZGlvKCk7CisgICAgZG9jdW1lbnQoKS0+dXBkYXRl
SXNQbGF5aW5nTWVkaWEoKTsKIH0KIAogdm9pZCBBdWRpb0NvbnRleHQ6OmZpcmVDb21wbGV0aW9u
RXZlbnQoKQpJbmRleDogU291cmNlL1dlYkNvcmUvZG9tL0RvY3VtZW50LmNwcAo9PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
Ci0tLSBTb3VyY2UvV2ViQ29yZS9kb20vRG9jdW1lbnQuY3BwCShyZXZpc2lvbiAxODI3OTUpCisr
KyBTb3VyY2UvV2ViQ29yZS9kb20vRG9jdW1lbnQuY3BwCSh3b3JraW5nIGNvcHkpCkBAIC0zNDE2
LDE2ICszNDE2LDE2IEBAIHZvaWQgRG9jdW1lbnQ6OnVwZGF0ZVZpZXdwb3J0VW5pdHNPblJlc2kK
IHZvaWQgRG9jdW1lbnQ6OmFkZEF1ZGlvUHJvZHVjZXIoQXVkaW9Qcm9kdWNlciogYXVkaW9Qcm9k
dWNlcikKIHsKICAgICBtX2F1ZGlvUHJvZHVjZXJzLmFkZChhdWRpb1Byb2R1Y2VyKTsKLSAgICB1
cGRhdGVJc1BsYXlpbmdBdWRpbygpOworICAgIHVwZGF0ZUlzUGxheWluZ01lZGlhKCk7CiB9CiAK
IHZvaWQgRG9jdW1lbnQ6OnJlbW92ZUF1ZGlvUHJvZHVjZXIoQXVkaW9Qcm9kdWNlciogYXVkaW9Q
cm9kdWNlcikKIHsKICAgICBtX2F1ZGlvUHJvZHVjZXJzLnJlbW92ZShhdWRpb1Byb2R1Y2VyKTsK
LSAgICB1cGRhdGVJc1BsYXlpbmdBdWRpbygpOworICAgIHVwZGF0ZUlzUGxheWluZ01lZGlhKCk7
CiB9CiAKLXZvaWQgRG9jdW1lbnQ6OnVwZGF0ZUlzUGxheWluZ0F1ZGlvKCkKK3ZvaWQgRG9jdW1l
bnQ6OnVwZGF0ZUlzUGxheWluZ01lZGlhKCkKIHsKICAgICBib29sIGlzUGxheWluZ0F1ZGlvID0g
ZmFsc2U7CiAgICAgZm9yIChhdXRvIGF1ZGlvUHJvZHVjZXIgOiBtX2F1ZGlvUHJvZHVjZXJzKSB7
CkBAIC0zNDQxLDcgKzM0NDEsNyBAQCB2b2lkIERvY3VtZW50Ojp1cGRhdGVJc1BsYXlpbmdBdWRp
bygpCiAgICAgbV9pc1BsYXlpbmdBdWRpbyA9IGlzUGxheWluZ0F1ZGlvOwogCiAgICAgaWYgKHBh
Z2UoKSkKLSAgICAgICAgcGFnZSgpLT51cGRhdGVJc1BsYXlpbmdBdWRpbygpOworICAgICAgICBw
YWdlKCktPnVwZGF0ZUlzUGxheWluZ01lZGlhKCk7CiB9CiAKIHZvaWQgRG9jdW1lbnQ6OnBhZ2VN
dXRlZFN0YXRlRGlkQ2hhbmdlKCkKSW5kZXg6IFNvdXJjZS9XZWJDb3JlL2RvbS9Eb2N1bWVudC5o
Cj09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT0KLS0tIFNvdXJjZS9XZWJDb3JlL2RvbS9Eb2N1bWVudC5oCShyZXZpc2lvbiAx
ODI3OTUpCisrKyBTb3VyY2UvV2ViQ29yZS9kb20vRG9jdW1lbnQuaAkod29ya2luZyBjb3B5KQpA
QCAtMTIyOSw3ICsxMjI5LDcgQEAgcHVibGljOgogICAgIFdFQkNPUkVfRVhQT1JUIHZvaWQgYWRk
QXVkaW9Qcm9kdWNlcihBdWRpb1Byb2R1Y2VyKik7CiAgICAgV0VCQ09SRV9FWFBPUlQgdm9pZCBy
ZW1vdmVBdWRpb1Byb2R1Y2VyKEF1ZGlvUHJvZHVjZXIqKTsKICAgICBib29sIGlzUGxheWluZ0F1
ZGlvKCkgY29uc3QgeyByZXR1cm4gbV9pc1BsYXlpbmdBdWRpbzsgfQotICAgIFdFQkNPUkVfRVhQ
T1JUIHZvaWQgdXBkYXRlSXNQbGF5aW5nQXVkaW8oKTsKKyAgICBXRUJDT1JFX0VYUE9SVCB2b2lk
IHVwZGF0ZUlzUGxheWluZ01lZGlhKCk7CiAgICAgdm9pZCBwYWdlTXV0ZWRTdGF0ZURpZENoYW5n
ZSgpOwogICAgIFdlYWtQdHI8RG9jdW1lbnQ+IGNyZWF0ZVdlYWtQdHIoKSB7IHJldHVybiBtX3dl
YWtGYWN0b3J5LmNyZWF0ZVdlYWtQdHIoKTsgfQogCkluZGV4OiBTb3VyY2UvV2ViQ29yZS9odG1s
L0hUTUxNZWRpYUVsZW1lbnQuY3BwCj09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT0KLS0tIFNvdXJjZS9XZWJDb3JlL2h0bWwv
SFRNTE1lZGlhRWxlbWVudC5jcHAJKHJldmlzaW9uIDE4Mjc5NSkKKysrIFNvdXJjZS9XZWJDb3Jl
L2h0bWwvSFRNTE1lZGlhRWxlbWVudC5jcHAJKHdvcmtpbmcgY29weSkKQEAgLTI5OTUsNyArMjk5
NSw3IEBAIHZvaWQgSFRNTE1lZGlhRWxlbWVudDo6c2V0TXV0ZWQoYm9vbCBtdXQKICAgICAgICAg
ICAgIH0KICAgICAgICAgfQogICAgICAgICBzY2hlZHVsZUV2ZW50KGV2ZW50TmFtZXMoKS52b2x1
bWVjaGFuZ2VFdmVudCk7Ci0gICAgICAgIGRvY3VtZW50KCkudXBkYXRlSXNQbGF5aW5nQXVkaW8o
KTsKKyAgICAgICAgZG9jdW1lbnQoKS51cGRhdGVJc1BsYXlpbmdNZWRpYSgpOwogICAgIH0KICNl
bmRpZgogfQpAQCAtNDMyMyw3ICs0MzIzLDcgQEAgdm9pZCBIVE1MTWVkaWFFbGVtZW50OjptZWRp
YVBsYXllckNoYXJhYwogICAgIGlmIChyZW5kZXJlcigpKQogICAgICAgICByZW5kZXJlcigpLT51
cGRhdGVGcm9tRWxlbWVudCgpOwogCi0gICAgZG9jdW1lbnQoKS51cGRhdGVJc1BsYXlpbmdBdWRp
bygpOworICAgIGRvY3VtZW50KCkudXBkYXRlSXNQbGF5aW5nTWVkaWEoKTsKIAogICAgIGVuZFBy
b2Nlc3NpbmdNZWRpYVBsYXllckNhbGxiYWNrKCk7CiB9CkBAIC00NTc4LDcgKzQ1NzgsNyBAQCB2
b2lkIEhUTUxNZWRpYUVsZW1lbnQ6OnNldFBsYXlpbmcoYm9vbCBwCiAgICAgICAgIHJldHVybjsK
ICAgICAKICAgICBtX3BsYXlpbmcgPSBwbGF5aW5nOwotICAgIGRvY3VtZW50KCkudXBkYXRlSXNQ
bGF5aW5nQXVkaW8oKTsKKyAgICBkb2N1bWVudCgpLnVwZGF0ZUlzUGxheWluZ01lZGlhKCk7CiB9
CiAKIHZvaWQgSFRNTE1lZGlhRWxlbWVudDo6c2V0UGF1c2VkSW50ZXJuYWwoYm9vbCBiKQpJbmRl
eDogU291cmNlL1dlYkNvcmUvcGFnZS9DaHJvbWVDbGllbnQuaAo9PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09Ci0tLSBTb3Vy
Y2UvV2ViQ29yZS9wYWdlL0Nocm9tZUNsaWVudC5oCShyZXZpc2lvbiAxODI3OTUpCisrKyBTb3Vy
Y2UvV2ViQ29yZS9wYWdlL0Nocm9tZUNsaWVudC5oCSh3b3JraW5nIGNvcHkpCkBAIC00MjMsNyAr
NDIzLDE1IEBAIHB1YmxpYzoKIAogICAgIHZpcnR1YWwgYm9vbCBzaG91bGRVc2VUaWxlZEJhY2tp
bmdGb3JGcmFtZVZpZXcoY29uc3QgRnJhbWVWaWV3KikgY29uc3QgeyByZXR1cm4gZmFsc2U7IH0K
IAotICAgIHZpcnR1YWwgdm9pZCBpc1BsYXlpbmdBdWRpb0RpZENoYW5nZShib29sKSB7IH0KKyAg
ICBlbnVtIE1lZGlhU3RhdGUgeworICAgICAgICBJc05vdFBsYXlpbmcgPSAwLAorICAgICAgICBJ
c1BsYXlpbmdBdWRpbyA9IDEgPDwgMCwKKyAgICAgICAgSXNQbGF5aW5nVmlkZW8gPSAxIDw8IDEs
CisgICAgICAgIElzUGxheWluZ1RvRXh0ZXJuYWxEZXZpY2UgPSAxIDw8IDIsCisgICAgfTsKKyAg
ICB0eXBlZGVmIHVuc2lnbmVkIE1lZGlhU3RhdGVGbGFnczsKKyAgICB2aXJ0dWFsIHZvaWQgaXNQ
bGF5aW5nTWVkaWFEaWRDaGFuZ2UoTWVkaWFTdGF0ZUZsYWdzKSB7IH0KKwogICAgIHZpcnR1YWwg
dm9pZCBzZXRQYWdlQWN0aXZpdHlTdGF0ZShQYWdlQWN0aXZpdHlTdGF0ZTo6RmxhZ3MpIHsgfQog
CiAjaWYgRU5BQkxFKFNVQlRMRV9DUllQVE8pCkluZGV4OiBTb3VyY2UvV2ViQ29yZS9wYWdlL1Bh
Z2UuY3BwCj09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT0KLS0tIFNvdXJjZS9XZWJDb3JlL3BhZ2UvUGFnZS5jcHAJKHJldmlz
aW9uIDE4Mjc5NSkKKysrIFNvdXJjZS9XZWJDb3JlL3BhZ2UvUGFnZS5jcHAJKHdvcmtpbmcgY29w
eSkKQEAgLTEwOCw3ICsxMDgsNiBAQAogI2lmIEVOQUJMRShXSVJFTEVTU19QTEFZQkFDS19UQVJH
RVQpCiAjaW5jbHVkZSAiSFRNTFZpZGVvRWxlbWVudC5oIgogI2luY2x1ZGUgIk1lZGlhUGxheWJh
Y2tUYXJnZXQuaCIKLSNpbmNsdWRlICJNZWRpYVBsYXliYWNrVGFyZ2V0UGlja2VyQ2xpZW50Lmgi
CiAjZW5kaWYKIAogbmFtZXNwYWNlIFdlYkNvcmUgewpAQCAtMTE5OCw3ICsxMTk3LDcgQEAgdm9p
ZCBQYWdlOjplbmFibGVMZWdhY3lQcml2YXRlQnJvd3NpbmcoYgogICAgIHNldFNlc3Npb25JRChw
cml2YXRlQnJvd3NpbmdFbmFibGVkID8gU2Vzc2lvbklEOjpsZWdhY3lQcml2YXRlU2Vzc2lvbklE
KCkgOiBTZXNzaW9uSUQ6OmRlZmF1bHRTZXNzaW9uSUQoKSk7CiB9CiAKLXZvaWQgUGFnZTo6dXBk
YXRlSXNQbGF5aW5nQXVkaW8oKQordm9pZCBQYWdlOjp1cGRhdGVJc1BsYXlpbmdNZWRpYSgpCiB7
CiAgICAgYm9vbCBpc1BsYXlpbmdBdWRpbyA9IGZhbHNlOwogICAgIGZvciAoRnJhbWUqIGZyYW1l
ID0gJm1haW5GcmFtZSgpOyBmcmFtZTsgZnJhbWUgPSBmcmFtZS0+dHJlZSgpLnRyYXZlcnNlTmV4
dCgpKSB7CkBAIC0xMjEzLDcgKzEyMTIsNyBAQCB2b2lkIFBhZ2U6OnVwZGF0ZUlzUGxheWluZ0F1
ZGlvKCkKIAogICAgIG1faXNQbGF5aW5nQXVkaW8gPSBpc1BsYXlpbmdBdWRpbzsKIAotICAgIGNo
cm9tZSgpLmNsaWVudCgpLmlzUGxheWluZ0F1ZGlvRGlkQ2hhbmdlKG1faXNQbGF5aW5nQXVkaW8p
OworICAgIGNocm9tZSgpLmNsaWVudCgpLmlzUGxheWluZ01lZGlhRGlkQ2hhbmdlKG1faXNQbGF5
aW5nQXVkaW8gPyBDaHJvbWVDbGllbnQ6OklzUGxheWluZ0F1ZGlvIDogQ2hyb21lQ2xpZW50OjpJ
c05vdFBsYXlpbmcpOwogfQogCiB2b2lkIFBhZ2U6OnNldE11dGVkKGJvb2wgbXV0ZWQpCkluZGV4
OiBTb3VyY2UvV2ViQ29yZS9wYWdlL1BhZ2UuaAo9PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09Ci0tLSBTb3VyY2UvV2ViQ29y
ZS9wYWdlL1BhZ2UuaAkocmV2aXNpb24gMTgyNzk1KQorKysgU291cmNlL1dlYkNvcmUvcGFnZS9Q
YWdlLmgJKHdvcmtpbmcgY29weSkKQEAgLTQyMyw3ICs0MjMsNyBAQCBwdWJsaWM6CiAgICAgYm9v
bCB1c2VzRXBoZW1lcmFsU2Vzc2lvbigpIGNvbnN0IHsgcmV0dXJuIG1fc2Vzc2lvbklELmlzRXBo
ZW1lcmFsKCk7IH0KIAogICAgIGJvb2wgaXNQbGF5aW5nQXVkaW8oKSBjb25zdCB7IHJldHVybiBt
X2lzUGxheWluZ0F1ZGlvOyB9Ci0gICAgdm9pZCB1cGRhdGVJc1BsYXlpbmdBdWRpbygpOworICAg
IHZvaWQgdXBkYXRlSXNQbGF5aW5nTWVkaWEoKTsKICAgICBib29sIGlzTXV0ZWQoKSBjb25zdCB7
IHJldHVybiBtX211dGVkOyB9CiAgICAgV0VCQ09SRV9FWFBPUlQgdm9pZCBzZXRNdXRlZChib29s
KTsKIApJbmRleDogU291cmNlL1dlYktpdDIvQ2hhbmdlTG9nCj09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT0KLS0tIFNvdXJj
ZS9XZWJLaXQyL0NoYW5nZUxvZwkocmV2aXNpb24gMTgyNzk2KQorKysgU291cmNlL1dlYktpdDIv
Q2hhbmdlTG9nCSh3b3JraW5nIGNvcHkpCkBAIC0xLDMgKzEsMjIgQEAKKzIwMTUtMDQtMTQgIEVy
aWMgQ2FybHNvbiAgPGVyaWMuY2FybHNvbkBhcHBsZS5jb20+CisKKyAgICAgICAgR2VuZXJhbGl6
ZSAiaXNQbGF5aW5nQXVkaW8iIHRvIGluY2x1ZGUgb3RoZXIgbWVkaWEgY2hhcmFjdGVyaXN0aWNz
CisgICAgICAgIGh0dHBzOi8vYnVncy53ZWJraXQub3JnL3Nob3dfYnVnLmNnaT9pZD0xNDM3MTMK
KworICAgICAgICBSZXZpZXdlZCBieSBOT0JPRFkgKE9PUFMhKS4KKworICAgICAgICAqIFVJUHJv
Y2Vzcy9XZWJQYWdlUHJveHkuY3BwOgorICAgICAgICAoV2ViS2l0OjpXZWJQYWdlUHJveHk6Omlz
UGxheWluZ01lZGlhRGlkQ2hhbmdlKToKKyAgICAgICAgKFdlYktpdDo6V2ViUGFnZVByb3h5Ojpp
c1BsYXlpbmdBdWRpb0RpZENoYW5nZSk6IERlbGV0ZWQuCisgICAgICAgICogVUlQcm9jZXNzL1dl
YlBhZ2VQcm94eS5oOgorICAgICAgICAqIFVJUHJvY2Vzcy9XZWJQYWdlUHJveHkubWVzc2FnZXMu
aW46CisgICAgICAgICogV2ViUHJvY2Vzcy9QbHVnaW5zL1BsdWdpblZpZXcuY3BwOgorICAgICAg
ICAoV2ViS2l0OjpQbHVnaW5WaWV3OjpzZXRQbHVnaW5Jc1BsYXlpbmdBdWRpbyk6CisgICAgICAg
ICogV2ViUHJvY2Vzcy9XZWJDb3JlU3VwcG9ydC9XZWJDaHJvbWVDbGllbnQuY3BwOgorICAgICAg
ICAoV2ViS2l0OjpXZWJDaHJvbWVDbGllbnQ6OmlzUGxheWluZ01lZGlhRGlkQ2hhbmdlKToKKyAg
ICAgICAgKFdlYktpdDo6V2ViQ2hyb21lQ2xpZW50Ojppc1BsYXlpbmdBdWRpb0RpZENoYW5nZSk6
IERlbGV0ZWQuCisgICAgICAgICogV2ViUHJvY2Vzcy9XZWJDb3JlU3VwcG9ydC9XZWJDaHJvbWVD
bGllbnQuaDoKKwogMjAxNS0wNC0xMyAgQWxleGV5IFByb3NrdXJ5YWtvdiAgPGFwQGFwcGxlLmNv
bT4KIAogICAgICAgICBCdWlsZCBmaXhlcyBhZnRlciByMTgyNzcyLgpJbmRleDogU291cmNlL1dl
YktpdDIvVUlQcm9jZXNzL1dlYlBhZ2VQcm94eS5jcHAKPT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PQotLS0gU291cmNlL1dl
YktpdDIvVUlQcm9jZXNzL1dlYlBhZ2VQcm94eS5jcHAJKHJldmlzaW9uIDE4Mjc5NSkKKysrIFNv
dXJjZS9XZWJLaXQyL1VJUHJvY2Vzcy9XZWJQYWdlUHJveHkuY3BwCSh3b3JraW5nIGNvcHkpCkBA
IC01NjQwLDEyICs1NjQwLDEzIEBAIHZvaWQgV2ViUGFnZVByb3h5OjpuYXZpZ2F0aW9uR2VzdHVy
ZVNuYXAKICAgICBtX2lzU2hvd2luZ05hdmlnYXRpb25HZXN0dXJlU25hcHNob3QgPSBmYWxzZTsK
IH0KIAotdm9pZCBXZWJQYWdlUHJveHk6OmlzUGxheWluZ0F1ZGlvRGlkQ2hhbmdlKGJvb2wgbmV3
SXNQbGF5aW5nQXVkaW8pCit2b2lkIFdlYlBhZ2VQcm94eTo6aXNQbGF5aW5nTWVkaWFEaWRDaGFu
Z2UoV2ViQ29yZTo6Q2hyb21lQ2xpZW50OjpNZWRpYVN0YXRlRmxhZ3Mgc3RhdGUpCiB7Ci0gICAg
aWYgKG1faXNQbGF5aW5nQXVkaW8gPT0gbmV3SXNQbGF5aW5nQXVkaW8pCisgICAgYm9vbCBpc1Bs
YXlpbmdBdWRpbyA9IHN0YXRlICYgV2ViQ29yZTo6Q2hyb21lQ2xpZW50OjpJc1BsYXlpbmdBdWRp
bzsKKyAgICBpZiAobV9pc1BsYXlpbmdBdWRpbyA9PSBpc1BsYXlpbmdBdWRpbykKICAgICAgICAg
cmV0dXJuOwogCi0gICAgbV9pc1BsYXlpbmdBdWRpbyA9IG5ld0lzUGxheWluZ0F1ZGlvOworICAg
IG1faXNQbGF5aW5nQXVkaW8gPSBpc1BsYXlpbmdBdWRpbzsKICAgICBtX3VpQ2xpZW50LT5pc1Bs
YXlpbmdBdWRpb0RpZENoYW5nZSgqdGhpcyk7CiB9CiAKSW5kZXg6IFNvdXJjZS9XZWJLaXQyL1VJ
UHJvY2Vzcy9XZWJQYWdlUHJveHkuaAo9PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09Ci0tLSBTb3VyY2UvV2ViS2l0Mi9VSVBy
b2Nlc3MvV2ViUGFnZVByb3h5LmgJKHJldmlzaW9uIDE4Mjc5NSkKKysrIFNvdXJjZS9XZWJLaXQy
L1VJUHJvY2Vzcy9XZWJQYWdlUHJveHkuaAkod29ya2luZyBjb3B5KQpAQCAtNjMsNiArNjMsNyBA
QAogI2luY2x1ZGUgIldlYlBhZ2VQcm94eU1lc3NhZ2VzLmgiCiAjaW5jbHVkZSAiV2ViUG9wdXBN
ZW51UHJveHkuaCIKICNpbmNsdWRlICJXZWJQcm9jZXNzTGlmZXRpbWVUcmFja2VyLmgiCisjaW5j
bHVkZSA8V2ViQ29yZS9DaHJvbWVDbGllbnQuaD4KICNpbmNsdWRlIDxXZWJDb3JlL0NvbG9yLmg+
CiAjaW5jbHVkZSA8V2ViQ29yZS9EcmFnQWN0aW9ucy5oPgogI2luY2x1ZGUgPFdlYkNvcmUvSGl0
VGVzdFJlc3VsdC5oPgpAQCAtOTgyLDcgKzk4Myw3IEBAIHB1YmxpYzoKIAogICAgIGJvb2wgaXNT
aG93aW5nTmF2aWdhdGlvbkdlc3R1cmVTbmFwc2hvdCgpIGNvbnN0IHsgcmV0dXJuIG1faXNTaG93
aW5nTmF2aWdhdGlvbkdlc3R1cmVTbmFwc2hvdDsgfQogCi0gICAgdm9pZCBpc1BsYXlpbmdBdWRp
b0RpZENoYW5nZShib29sKTsKKyAgICB2b2lkIGlzUGxheWluZ01lZGlhRGlkQ2hhbmdlKFdlYkNv
cmU6OkNocm9tZUNsaWVudDo6TWVkaWFTdGF0ZUZsYWdzKTsKICAgICBib29sIGlzUGxheWluZ0F1
ZGlvKCkgY29uc3QgeyByZXR1cm4gbV9pc1BsYXlpbmdBdWRpbzsgfQogCiAjaWYgUExBVEZPUk0o
TUFDKQpJbmRleDogU291cmNlL1dlYktpdDIvVUlQcm9jZXNzL1dlYlBhZ2VQcm94eS5tZXNzYWdl
cy5pbgo9PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09Ci0tLSBTb3VyY2UvV2ViS2l0Mi9VSVByb2Nlc3MvV2ViUGFnZVByb3h5
Lm1lc3NhZ2VzLmluCShyZXZpc2lvbiAxODI3OTUpCisrKyBTb3VyY2UvV2ViS2l0Mi9VSVByb2Nl
c3MvV2ViUGFnZVByb3h5Lm1lc3NhZ2VzLmluCSh3b3JraW5nIGNvcHkpCkBAIC00MjEsNyArNDIx
LDcgQEAgbWVzc2FnZXMgLT4gV2ViUGFnZVByb3h5IHsKICAgICBDb250ZW50RmlsdGVyRGlkQmxv
Y2tMb2FkRm9yRnJhbWUoV2ViQ29yZTo6Q29udGVudEZpbHRlclVuYmxvY2tIYW5kbGVyIHVuYmxv
Y2tIYW5kbGVyLCB1aW50NjRfdCBmcmFtZUlEKQogI2VuZGlmCiAKLSAgICBJc1BsYXlpbmdBdWRp
b0RpZENoYW5nZShib29sIG5ld0lzUGxheWluZ0F1ZGlvKQorICAgIElzUGxheWluZ01lZGlhRGlk
Q2hhbmdlKHVuc2lnbmVkIHN0YXRlKQogCiAjaWYgUExBVEZPUk0oTUFDKQogICAgIERpZFBlcmZv
cm1BY3Rpb25NZW51SGl0VGVzdChzdHJ1Y3QgV2ViS2l0OjpXZWJIaXRUZXN0UmVzdWx0OjpEYXRh
IHJlc3VsdCwgYm9vbCBmb3JJbW1lZGlhdGVBY3Rpb24sIGJvb2wgY29udGVudFByZXZlbnRzRGVm
YXVsdCwgV2ViS2l0OjpVc2VyRGF0YSB1c2VyRGF0YSkKSW5kZXg6IFNvdXJjZS9XZWJLaXQyL1dl
YlByb2Nlc3MvUGx1Z2lucy9QbHVnaW5WaWV3LmNwcAo9PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09Ci0tLSBTb3VyY2UvV2Vi
S2l0Mi9XZWJQcm9jZXNzL1BsdWdpbnMvUGx1Z2luVmlldy5jcHAJKHJldmlzaW9uIDE4Mjc5NSkK
KysrIFNvdXJjZS9XZWJLaXQyL1dlYlByb2Nlc3MvUGx1Z2lucy9QbHVnaW5WaWV3LmNwcAkod29y
a2luZyBjb3B5KQpAQCAtMTQ1Niw3ICsxNDU2LDcgQEAgdm9pZCBQbHVnaW5WaWV3OjpzZXRQbHVn
aW5Jc1BsYXlpbmdBdWRpbwogICAgICAgICByZXR1cm47CiAKICAgICBtX3BsdWdpbklzUGxheWlu
Z0F1ZGlvID0gcGx1Z2luSXNQbGF5aW5nQXVkaW87Ci0gICAgbV9wbHVnaW5FbGVtZW50LT5kb2N1
bWVudCgpLnVwZGF0ZUlzUGxheWluZ0F1ZGlvKCk7CisgICAgbV9wbHVnaW5FbGVtZW50LT5kb2N1
bWVudCgpLnVwZGF0ZUlzUGxheWluZ01lZGlhKCk7CiB9CiAKIGJvb2wgUGx1Z2luVmlldzo6aXNN
dXRlZCgpIGNvbnN0CkluZGV4OiBTb3VyY2UvV2ViS2l0Mi9XZWJQcm9jZXNzL1dlYkNvcmVTdXBw
b3J0L1dlYkNocm9tZUNsaWVudC5jcHAKPT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PQotLS0gU291cmNlL1dlYktpdDIvV2Vi
UHJvY2Vzcy9XZWJDb3JlU3VwcG9ydC9XZWJDaHJvbWVDbGllbnQuY3BwCShyZXZpc2lvbiAxODI3
OTUpCisrKyBTb3VyY2UvV2ViS2l0Mi9XZWJQcm9jZXNzL1dlYkNvcmVTdXBwb3J0L1dlYkNocm9t
ZUNsaWVudC5jcHAJKHdvcmtpbmcgY29weSkKQEAgLTEwNTAsOSArMTA1MCw5IEBAIGJvb2wgV2Vi
Q2hyb21lQ2xpZW50OjpzaG91bGRVc2VUaWxlZEJhY2sKICAgICByZXR1cm4gbV9wYWdlLT5kcmF3
aW5nQXJlYSgpLT5zaG91bGRVc2VUaWxlZEJhY2tpbmdGb3JGcmFtZVZpZXcoZnJhbWVWaWV3KTsK
IH0KIAotdm9pZCBXZWJDaHJvbWVDbGllbnQ6OmlzUGxheWluZ0F1ZGlvRGlkQ2hhbmdlKGJvb2wg
bmV3SXNQbGF5aW5nQXVkaW8pCit2b2lkIFdlYkNocm9tZUNsaWVudDo6aXNQbGF5aW5nTWVkaWFE
aWRDaGFuZ2UoTWVkaWFTdGF0ZUZsYWdzIHN0YXRlKQogewotICAgIG1fcGFnZS0+c2VuZChNZXNz
YWdlczo6V2ViUGFnZVByb3h5OjpJc1BsYXlpbmdBdWRpb0RpZENoYW5nZShuZXdJc1BsYXlpbmdB
dWRpbykpOworICAgIG1fcGFnZS0+c2VuZChNZXNzYWdlczo6V2ViUGFnZVByb3h5OjpJc1BsYXlp
bmdNZWRpYURpZENoYW5nZShzdGF0ZSkpOwogfQogCiB2b2lkIFdlYkNocm9tZUNsaWVudDo6c2V0
UGFnZUFjdGl2aXR5U3RhdGUoUGFnZUFjdGl2aXR5U3RhdGU6OkZsYWdzIGFjdGl2aXR5U3RhdGUp
CkluZGV4OiBTb3VyY2UvV2ViS2l0Mi9XZWJQcm9jZXNzL1dlYkNvcmVTdXBwb3J0L1dlYkNocm9t
ZUNsaWVudC5oCj09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT0KLS0tIFNvdXJjZS9XZWJLaXQyL1dlYlByb2Nlc3MvV2ViQ29y
ZVN1cHBvcnQvV2ViQ2hyb21lQ2xpZW50LmgJKHJldmlzaW9uIDE4Mjc5NSkKKysrIFNvdXJjZS9X
ZWJLaXQyL1dlYlByb2Nlc3MvV2ViQ29yZVN1cHBvcnQvV2ViQ2hyb21lQ2xpZW50LmgJKHdvcmtp
bmcgY29weSkKQEAgLTI5Miw3ICsyOTIsNyBAQCBwcml2YXRlOgogCiAgICAgdmlydHVhbCBib29s
IHNob3VsZFVzZVRpbGVkQmFja2luZ0ZvckZyYW1lVmlldyhjb25zdCBXZWJDb3JlOjpGcmFtZVZp
ZXcqKSBjb25zdCBvdmVycmlkZTsKIAotICAgIHZpcnR1YWwgdm9pZCBpc1BsYXlpbmdBdWRpb0Rp
ZENoYW5nZShib29sKSBvdmVycmlkZTsKKyAgICB2aXJ0dWFsIHZvaWQgaXNQbGF5aW5nTWVkaWFE
aWRDaGFuZ2UoTWVkaWFTdGF0ZUZsYWdzKSBvdmVycmlkZTsKICAgICB2aXJ0dWFsIHZvaWQgc2V0
UGFnZUFjdGl2aXR5U3RhdGUoV2ViQ29yZTo6UGFnZUFjdGl2aXR5U3RhdGU6OkZsYWdzKSBvdmVy
cmlkZTsKIAogI2lmIEVOQUJMRShTVUJUTEVfQ1JZUFRPKQo=
</data>

          </attachment>
          <attachment
              isobsolete="1"
              ispatch="1"
              isprivate="0"
          >
            <attachid>250726</attachid>
            <date>2015-04-14 12:50:01 -0700</date>
            <delta_ts>2015-04-15 05:46:35 -0700</delta_ts>
            <desc>Patch for the landing.</desc>
            <filename>media_play_state_patch_3.txt</filename>
            <type>text/plain</type>
            <size>31103</size>
            <attacher name="Eric Carlson">eric.carlson</attacher>
            
              <data encoding="base64">SW5kZXg6IFNvdXJjZS9XZWJDb3JlL0NoYW5nZUxvZwo9PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09Ci0tLSBTb3VyY2UvV2Vi
Q29yZS9DaGFuZ2VMb2cJKHJldmlzaW9uIDE4MjgwNikKKysrIFNvdXJjZS9XZWJDb3JlL0NoYW5n
ZUxvZwkod29ya2luZyBjb3B5KQpAQCAtMSwzICsxLDMzIEBACisyMDE1LTA0LTE0ICBFcmljIENh
cmxzb24gIDxlcmljLmNhcmxzb25AYXBwbGUuY29tPgorCisgICAgICAgIEdlbmVyYWxpemUgImlz
UGxheWluZ0F1ZGlvIiB0byBpbmNsdWRlIG90aGVyIG1lZGlhIGNoYXJhY3RlcmlzdGljcworICAg
ICAgICBodHRwczovL2J1Z3Mud2Via2l0Lm9yZy9zaG93X2J1Zy5jZ2k/aWQ9MTQzNzEzCisKKyAg
ICAgICAgUmV2aWV3ZWQgYnkgSmVyIE5vYmxlLgorCisgICAgICAgIE5vIG5ldyBmdW5jdGlvbmFs
aXR5LgorCisgICAgICAgICogTW9kdWxlcy93ZWJhdWRpby9BdWRpb0NvbnRleHQuY3BwOgorICAg
ICAgICAoV2ViQ29yZTo6QXVkaW9Db250ZXh0OjpzdG9wKTogdXBkYXRlSXNQbGF5aW5nQXVkaW8g
LT4gdXBkYXRlSXNQbGF5aW5nTWVkaWEuCisgICAgICAgIChXZWJDb3JlOjpBdWRpb0NvbnRleHQ6
OmlzUGxheWluZ0F1ZGlvRGlkQ2hhbmdlKTogRGl0dG8uCisKKyAgICAgICAgKiBkb20vRG9jdW1l
bnQuY3BwOgorICAgICAgICAoV2ViQ29yZTo6RG9jdW1lbnQ6OmFkZEF1ZGlvUHJvZHVjZXIpOiBE
aXR0by4KKyAgICAgICAgKFdlYkNvcmU6OkRvY3VtZW50OjpyZW1vdmVBdWRpb1Byb2R1Y2VyKTog
RGl0dG8uCisgICAgICAgIChXZWJDb3JlOjpEb2N1bWVudDo6dXBkYXRlSXNQbGF5aW5nTWVkaWEp
OiBSZW5hbWVkLgorICAgICAgICAoV2ViQ29yZTo6RG9jdW1lbnQ6OnVwZGF0ZUlzUGxheWluZ0F1
ZGlvKTogRGVsZXRlZC4KKyAgICAgICAgKiBkb20vRG9jdW1lbnQuaDoKKworICAgICAgICAqIGh0
bWwvSFRNTE1lZGlhRWxlbWVudC5jcHA6CisgICAgICAgIChXZWJDb3JlOjpIVE1MTWVkaWFFbGVt
ZW50OjpzZXRNdXRlZCk6IHVwZGF0ZUlzUGxheWluZ0F1ZGlvIC0+IHVwZGF0ZUlzUGxheWluZ01l
ZGlhLgorICAgICAgICAoV2ViQ29yZTo6SFRNTE1lZGlhRWxlbWVudDo6c2V0UGxheWluZyk6IERp
dHRvLgorCisgICAgICAgICogcGFnZS9DaHJvbWVDbGllbnQuaDoKKyAgICAgICAgKiBwYWdlL1Bh
Z2UuY3BwOgorICAgICAgICAoV2ViQ29yZTo6UGFnZTo6dXBkYXRlSXNQbGF5aW5nTWVkaWEpOiBS
ZW5hbWVkLgorICAgICAgICAoV2ViQ29yZTo6UGFnZTo6dXBkYXRlSXNQbGF5aW5nQXVkaW8pOiBE
ZWxldGVkLgorICAgICAgICAqIHBhZ2UvUGFnZS5oOgorCiAyMDE1LTA0LTE0ICBDaHJpcyBEdW1l
eiAgPGNkdW1lekBhcHBsZS5jb20+CiAKICAgICAgICAgRnJhbWVWaWV3OjptX2ZyYW1lIHNob3Vs
ZCBiZSBhIFJlZjxGcmFtZT4KSW5kZXg6IFNvdXJjZS9XZWJDb3JlL01vZHVsZXMvd2ViYXVkaW8v
QXVkaW9Db250ZXh0LmNwcAo9PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09Ci0tLSBTb3VyY2UvV2ViQ29yZS9Nb2R1bGVzL3dl
YmF1ZGlvL0F1ZGlvQ29udGV4dC5jcHAJKHJldmlzaW9uIDE4Mjc5NSkKKysrIFNvdXJjZS9XZWJD
b3JlL01vZHVsZXMvd2ViYXVkaW8vQXVkaW9Db250ZXh0LmNwcAkod29ya2luZyBjb3B5KQpAQCAt
MzQ0LDcgKzM0NCw3IEBAIHZvaWQgQXVkaW9Db250ZXh0OjpzdG9wKCkKICAgICAgICAgcmV0dXJu
OwogICAgIG1faXNTdG9wU2NoZWR1bGVkID0gdHJ1ZTsKIAotICAgIGRvY3VtZW50KCktPnVwZGF0
ZUlzUGxheWluZ0F1ZGlvKCk7CisgICAgZG9jdW1lbnQoKS0+dXBkYXRlSXNQbGF5aW5nTWVkaWEo
KTsKIAogICAgIG1fZXZlbnRRdWV1ZS0+Y2xvc2UoKTsKIApAQCAtMTAzOCw3ICsxMDM4LDcgQEAg
dm9pZCBBdWRpb0NvbnRleHQ6OnBhZ2VNdXRlZFN0YXRlRGlkQ2hhbgogCiB2b2lkIEF1ZGlvQ29u
dGV4dDo6aXNQbGF5aW5nQXVkaW9EaWRDaGFuZ2UoKQogewotICAgIGRvY3VtZW50KCktPnVwZGF0
ZUlzUGxheWluZ0F1ZGlvKCk7CisgICAgZG9jdW1lbnQoKS0+dXBkYXRlSXNQbGF5aW5nTWVkaWEo
KTsKIH0KIAogdm9pZCBBdWRpb0NvbnRleHQ6OmZpcmVDb21wbGV0aW9uRXZlbnQoKQpJbmRleDog
U291cmNlL1dlYkNvcmUvZG9tL0RvY3VtZW50LmNwcAo9PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09Ci0tLSBTb3VyY2UvV2Vi
Q29yZS9kb20vRG9jdW1lbnQuY3BwCShyZXZpc2lvbiAxODI3OTUpCisrKyBTb3VyY2UvV2ViQ29y
ZS9kb20vRG9jdW1lbnQuY3BwCSh3b3JraW5nIGNvcHkpCkBAIC0zNDE2LDE2ICszNDE2LDE2IEBA
IHZvaWQgRG9jdW1lbnQ6OnVwZGF0ZVZpZXdwb3J0VW5pdHNPblJlc2kKIHZvaWQgRG9jdW1lbnQ6
OmFkZEF1ZGlvUHJvZHVjZXIoQXVkaW9Qcm9kdWNlciogYXVkaW9Qcm9kdWNlcikKIHsKICAgICBt
X2F1ZGlvUHJvZHVjZXJzLmFkZChhdWRpb1Byb2R1Y2VyKTsKLSAgICB1cGRhdGVJc1BsYXlpbmdB
dWRpbygpOworICAgIHVwZGF0ZUlzUGxheWluZ01lZGlhKCk7CiB9CiAKIHZvaWQgRG9jdW1lbnQ6
OnJlbW92ZUF1ZGlvUHJvZHVjZXIoQXVkaW9Qcm9kdWNlciogYXVkaW9Qcm9kdWNlcikKIHsKICAg
ICBtX2F1ZGlvUHJvZHVjZXJzLnJlbW92ZShhdWRpb1Byb2R1Y2VyKTsKLSAgICB1cGRhdGVJc1Bs
YXlpbmdBdWRpbygpOworICAgIHVwZGF0ZUlzUGxheWluZ01lZGlhKCk7CiB9CiAKLXZvaWQgRG9j
dW1lbnQ6OnVwZGF0ZUlzUGxheWluZ0F1ZGlvKCkKK3ZvaWQgRG9jdW1lbnQ6OnVwZGF0ZUlzUGxh
eWluZ01lZGlhKCkKIHsKICAgICBib29sIGlzUGxheWluZ0F1ZGlvID0gZmFsc2U7CiAgICAgZm9y
IChhdXRvIGF1ZGlvUHJvZHVjZXIgOiBtX2F1ZGlvUHJvZHVjZXJzKSB7CkBAIC0zNDQxLDcgKzM0
NDEsNyBAQCB2b2lkIERvY3VtZW50Ojp1cGRhdGVJc1BsYXlpbmdBdWRpbygpCiAgICAgbV9pc1Bs
YXlpbmdBdWRpbyA9IGlzUGxheWluZ0F1ZGlvOwogCiAgICAgaWYgKHBhZ2UoKSkKLSAgICAgICAg
cGFnZSgpLT51cGRhdGVJc1BsYXlpbmdBdWRpbygpOworICAgICAgICBwYWdlKCktPnVwZGF0ZUlz
UGxheWluZ01lZGlhKCk7CiB9CiAKIHZvaWQgRG9jdW1lbnQ6OnBhZ2VNdXRlZFN0YXRlRGlkQ2hh
bmdlKCkKSW5kZXg6IFNvdXJjZS9XZWJDb3JlL2RvbS9Eb2N1bWVudC5oCj09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT0KLS0t
IFNvdXJjZS9XZWJDb3JlL2RvbS9Eb2N1bWVudC5oCShyZXZpc2lvbiAxODI3OTUpCisrKyBTb3Vy
Y2UvV2ViQ29yZS9kb20vRG9jdW1lbnQuaAkod29ya2luZyBjb3B5KQpAQCAtMTIyOSw3ICsxMjI5
LDcgQEAgcHVibGljOgogICAgIFdFQkNPUkVfRVhQT1JUIHZvaWQgYWRkQXVkaW9Qcm9kdWNlcihB
dWRpb1Byb2R1Y2VyKik7CiAgICAgV0VCQ09SRV9FWFBPUlQgdm9pZCByZW1vdmVBdWRpb1Byb2R1
Y2VyKEF1ZGlvUHJvZHVjZXIqKTsKICAgICBib29sIGlzUGxheWluZ0F1ZGlvKCkgY29uc3QgeyBy
ZXR1cm4gbV9pc1BsYXlpbmdBdWRpbzsgfQotICAgIFdFQkNPUkVfRVhQT1JUIHZvaWQgdXBkYXRl
SXNQbGF5aW5nQXVkaW8oKTsKKyAgICBXRUJDT1JFX0VYUE9SVCB2b2lkIHVwZGF0ZUlzUGxheWlu
Z01lZGlhKCk7CiAgICAgdm9pZCBwYWdlTXV0ZWRTdGF0ZURpZENoYW5nZSgpOwogICAgIFdlYWtQ
dHI8RG9jdW1lbnQ+IGNyZWF0ZVdlYWtQdHIoKSB7IHJldHVybiBtX3dlYWtGYWN0b3J5LmNyZWF0
ZVdlYWtQdHIoKTsgfQogCkluZGV4OiBTb3VyY2UvV2ViQ29yZS9odG1sL0hUTUxNZWRpYUVsZW1l
bnQuY3BwCj09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT0KLS0tIFNvdXJjZS9XZWJDb3JlL2h0bWwvSFRNTE1lZGlhRWxlbWVu
dC5jcHAJKHJldmlzaW9uIDE4Mjc5NSkKKysrIFNvdXJjZS9XZWJDb3JlL2h0bWwvSFRNTE1lZGlh
RWxlbWVudC5jcHAJKHdvcmtpbmcgY29weSkKQEAgLTI5OTUsNyArMjk5NSw3IEBAIHZvaWQgSFRN
TE1lZGlhRWxlbWVudDo6c2V0TXV0ZWQoYm9vbCBtdXQKICAgICAgICAgICAgIH0KICAgICAgICAg
fQogICAgICAgICBzY2hlZHVsZUV2ZW50KGV2ZW50TmFtZXMoKS52b2x1bWVjaGFuZ2VFdmVudCk7
Ci0gICAgICAgIGRvY3VtZW50KCkudXBkYXRlSXNQbGF5aW5nQXVkaW8oKTsKKyAgICAgICAgZG9j
dW1lbnQoKS51cGRhdGVJc1BsYXlpbmdNZWRpYSgpOwogICAgIH0KICNlbmRpZgogfQpAQCAtNDMy
Myw3ICs0MzIzLDcgQEAgdm9pZCBIVE1MTWVkaWFFbGVtZW50OjptZWRpYVBsYXllckNoYXJhYwog
ICAgIGlmIChyZW5kZXJlcigpKQogICAgICAgICByZW5kZXJlcigpLT51cGRhdGVGcm9tRWxlbWVu
dCgpOwogCi0gICAgZG9jdW1lbnQoKS51cGRhdGVJc1BsYXlpbmdBdWRpbygpOworICAgIGRvY3Vt
ZW50KCkudXBkYXRlSXNQbGF5aW5nTWVkaWEoKTsKIAogICAgIGVuZFByb2Nlc3NpbmdNZWRpYVBs
YXllckNhbGxiYWNrKCk7CiB9CkBAIC00NTc4LDcgKzQ1NzgsNyBAQCB2b2lkIEhUTUxNZWRpYUVs
ZW1lbnQ6OnNldFBsYXlpbmcoYm9vbCBwCiAgICAgICAgIHJldHVybjsKICAgICAKICAgICBtX3Bs
YXlpbmcgPSBwbGF5aW5nOwotICAgIGRvY3VtZW50KCkudXBkYXRlSXNQbGF5aW5nQXVkaW8oKTsK
KyAgICBkb2N1bWVudCgpLnVwZGF0ZUlzUGxheWluZ01lZGlhKCk7CiB9CiAKIHZvaWQgSFRNTE1l
ZGlhRWxlbWVudDo6c2V0UGF1c2VkSW50ZXJuYWwoYm9vbCBiKQpJbmRleDogU291cmNlL1dlYkNv
cmUvcGFnZS9DaHJvbWVDbGllbnQuaAo9PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09Ci0tLSBTb3VyY2UvV2ViQ29yZS9wYWdl
L0Nocm9tZUNsaWVudC5oCShyZXZpc2lvbiAxODI3OTUpCisrKyBTb3VyY2UvV2ViQ29yZS9wYWdl
L0Nocm9tZUNsaWVudC5oCSh3b3JraW5nIGNvcHkpCkBAIC00MjMsNyArNDIzLDE1IEBAIHB1Ymxp
YzoKIAogICAgIHZpcnR1YWwgYm9vbCBzaG91bGRVc2VUaWxlZEJhY2tpbmdGb3JGcmFtZVZpZXco
Y29uc3QgRnJhbWVWaWV3KikgY29uc3QgeyByZXR1cm4gZmFsc2U7IH0KIAotICAgIHZpcnR1YWwg
dm9pZCBpc1BsYXlpbmdBdWRpb0RpZENoYW5nZShib29sKSB7IH0KKyAgICBlbnVtIE1lZGlhU3Rh
dGUgeworICAgICAgICBJc05vdFBsYXlpbmcgPSAwLAorICAgICAgICBJc1BsYXlpbmdBdWRpbyA9
IDEgPDwgMCwKKyAgICAgICAgSXNQbGF5aW5nVmlkZW8gPSAxIDw8IDEsCisgICAgICAgIElzUGxh
eWluZ1RvRXh0ZXJuYWxEZXZpY2UgPSAxIDw8IDIsCisgICAgfTsKKyAgICB0eXBlZGVmIHVuc2ln
bmVkIE1lZGlhU3RhdGVGbGFnczsKKyAgICB2aXJ0dWFsIHZvaWQgaXNQbGF5aW5nTWVkaWFEaWRD
aGFuZ2UoTWVkaWFTdGF0ZUZsYWdzKSB7IH0KKwogICAgIHZpcnR1YWwgdm9pZCBzZXRQYWdlQWN0
aXZpdHlTdGF0ZShQYWdlQWN0aXZpdHlTdGF0ZTo6RmxhZ3MpIHsgfQogCiAjaWYgRU5BQkxFKFNV
QlRMRV9DUllQVE8pCkluZGV4OiBTb3VyY2UvV2ViQ29yZS9wYWdlL1BhZ2UuY3BwCj09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT0KLS0tIFNvdXJjZS9XZWJDb3JlL3BhZ2UvUGFnZS5jcHAJKHJldmlzaW9uIDE4Mjc5NSkKKysr
IFNvdXJjZS9XZWJDb3JlL3BhZ2UvUGFnZS5jcHAJKHdvcmtpbmcgY29weSkKQEAgLTEwOCw3ICsx
MDgsNiBAQAogI2lmIEVOQUJMRShXSVJFTEVTU19QTEFZQkFDS19UQVJHRVQpCiAjaW5jbHVkZSAi
SFRNTFZpZGVvRWxlbWVudC5oIgogI2luY2x1ZGUgIk1lZGlhUGxheWJhY2tUYXJnZXQuaCIKLSNp
bmNsdWRlICJNZWRpYVBsYXliYWNrVGFyZ2V0UGlja2VyQ2xpZW50LmgiCiAjZW5kaWYKIAogbmFt
ZXNwYWNlIFdlYkNvcmUgewpAQCAtMTE5OCw3ICsxMTk3LDcgQEAgdm9pZCBQYWdlOjplbmFibGVM
ZWdhY3lQcml2YXRlQnJvd3NpbmcoYgogICAgIHNldFNlc3Npb25JRChwcml2YXRlQnJvd3NpbmdF
bmFibGVkID8gU2Vzc2lvbklEOjpsZWdhY3lQcml2YXRlU2Vzc2lvbklEKCkgOiBTZXNzaW9uSUQ6
OmRlZmF1bHRTZXNzaW9uSUQoKSk7CiB9CiAKLXZvaWQgUGFnZTo6dXBkYXRlSXNQbGF5aW5nQXVk
aW8oKQordm9pZCBQYWdlOjp1cGRhdGVJc1BsYXlpbmdNZWRpYSgpCiB7CiAgICAgYm9vbCBpc1Bs
YXlpbmdBdWRpbyA9IGZhbHNlOwogICAgIGZvciAoRnJhbWUqIGZyYW1lID0gJm1haW5GcmFtZSgp
OyBmcmFtZTsgZnJhbWUgPSBmcmFtZS0+dHJlZSgpLnRyYXZlcnNlTmV4dCgpKSB7CkBAIC0xMjEz
LDcgKzEyMTIsNyBAQCB2b2lkIFBhZ2U6OnVwZGF0ZUlzUGxheWluZ0F1ZGlvKCkKIAogICAgIG1f
aXNQbGF5aW5nQXVkaW8gPSBpc1BsYXlpbmdBdWRpbzsKIAotICAgIGNocm9tZSgpLmNsaWVudCgp
LmlzUGxheWluZ0F1ZGlvRGlkQ2hhbmdlKG1faXNQbGF5aW5nQXVkaW8pOworICAgIGNocm9tZSgp
LmNsaWVudCgpLmlzUGxheWluZ01lZGlhRGlkQ2hhbmdlKG1faXNQbGF5aW5nQXVkaW8gPyBDaHJv
bWVDbGllbnQ6OklzUGxheWluZ0F1ZGlvIDogQ2hyb21lQ2xpZW50OjpJc05vdFBsYXlpbmcpOwog
fQogCiB2b2lkIFBhZ2U6OnNldE11dGVkKGJvb2wgbXV0ZWQpCkluZGV4OiBTb3VyY2UvV2ViQ29y
ZS9wYWdlL1BhZ2UuaAo9PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09Ci0tLSBTb3VyY2UvV2ViQ29yZS9wYWdlL1BhZ2UuaAko
cmV2aXNpb24gMTgyNzk1KQorKysgU291cmNlL1dlYkNvcmUvcGFnZS9QYWdlLmgJKHdvcmtpbmcg
Y29weSkKQEAgLTQyMyw3ICs0MjMsNyBAQCBwdWJsaWM6CiAgICAgYm9vbCB1c2VzRXBoZW1lcmFs
U2Vzc2lvbigpIGNvbnN0IHsgcmV0dXJuIG1fc2Vzc2lvbklELmlzRXBoZW1lcmFsKCk7IH0KIAog
ICAgIGJvb2wgaXNQbGF5aW5nQXVkaW8oKSBjb25zdCB7IHJldHVybiBtX2lzUGxheWluZ0F1ZGlv
OyB9Ci0gICAgdm9pZCB1cGRhdGVJc1BsYXlpbmdBdWRpbygpOworICAgIHZvaWQgdXBkYXRlSXNQ
bGF5aW5nTWVkaWEoKTsKICAgICBib29sIGlzTXV0ZWQoKSBjb25zdCB7IHJldHVybiBtX211dGVk
OyB9CiAgICAgV0VCQ09SRV9FWFBPUlQgdm9pZCBzZXRNdXRlZChib29sKTsKIApJbmRleDogU291
cmNlL1dlYktpdDIvQ2hhbmdlTG9nCj09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT0KLS0tIFNvdXJjZS9XZWJLaXQyL0NoYW5n
ZUxvZwkocmV2aXNpb24gMTgyODA2KQorKysgU291cmNlL1dlYktpdDIvQ2hhbmdlTG9nCSh3b3Jr
aW5nIGNvcHkpCkBAIC0xLDMgKzEsNTQgQEAKKzIwMTUtMDQtMTQgIEVyaWMgQ2FybHNvbiAgPGVy
aWMuY2FybHNvbkBhcHBsZS5jb20+CisKKyAgICAgICAgR2VuZXJhbGl6ZSAiaXNQbGF5aW5nQXVk
aW8iIHRvIGluY2x1ZGUgb3RoZXIgbWVkaWEgY2hhcmFjdGVyaXN0aWNzCisgICAgICAgIGh0dHBz
Oi8vYnVncy53ZWJraXQub3JnL3Nob3dfYnVnLmNnaT9pZD0xNDM3MTMKKworICAgICAgICBSZXZp
ZXdlZCBieSBKZXIgTm9ibGUuCisKKyAgICAgICAgKiBVSVByb2Nlc3MvQVBJL0MvV0tQYWdlLmNw
cDoKKyAgICAgICAgKHRvR2VuZXJpY0NhbGxiYWNrRnVuY3Rpb24pOiBTY29wZSBDYWxsYmFja0Jh
c2UuCisgICAgICAgIChXS1BhZ2VGb3JjZVJlcGFpbnQpOiBEaXR0by4KKyAgICAgICAgKFdLUGFn
ZVZhbGlkYXRlQ29tbWFuZCk6IERpdHRvLgorICAgICAgICAoV0tQYWdlQ29tcHV0ZVBhZ2VzRm9y
UHJpbnRpbmcpOiBEaXR0by4KKworICAgICAgICAqIFVJUHJvY2Vzcy9BUEkvQ29jb2EvX1dLVGh1
bWJuYWlsVmlldy5tbToKKyAgICAgICAgKC1bX1dLVGh1bWJuYWlsVmlldyBfcmVxdWVzdFNuYXBz
aG90SWZOZWVkZWRdKTogRGl0dG8uCisKKyAgICAgICAgKiBVSVByb2Nlc3MvQVBJL21hYy9XS1Zp
ZXcubW06CisgICAgICAgICgtW1dLVmlldyBiZWNvbWVGaXJzdFJlc3BvbmRlcl0pOiBEaXR0by4K
KyAgICAgICAgKC1bV0tWaWV3IHVwZGF0ZUZvbnRQYW5lbElmTmVlZGVkXSk6IERpdHRvLgorICAg
ICAgICAoLVtXS1ZpZXcgdmFsaWRhdGVVc2VySW50ZXJmYWNlSXRlbTpdKTogRGl0dG8uCisgICAg
ICAgICgtW1dLVmlldyBzdGFydFNwZWFraW5nOl0pOiBEaXR0by4KKyAgICAgICAgKC1bV0tWaWV3
IHNlbGVjdGVkUmFuZ2VXaXRoQ29tcGxldGlvbkhhbmRsZXI6XSk6IERpdHRvLgorICAgICAgICAo
LVtXS1ZpZXcgbWFya2VkUmFuZ2VXaXRoQ29tcGxldGlvbkhhbmRsZXI6XSk6IERpdHRvLgorICAg
ICAgICAoLVtXS1ZpZXcgaGFzTWFya2VkVGV4dFdpdGhDb21wbGV0aW9uSGFuZGxlcjpdKTogRGl0
dG8uCisgICAgICAgICgtW1dLVmlldyBhdHRyaWJ1dGVkU3Vic3RyaW5nRm9yUHJvcG9zZWRSYW5n
ZTpjb21wbGV0aW9uSGFuZGxlcjpdKTogRGl0dG8uCisgICAgICAgICgtW1dLVmlldyBmaXJzdFJl
Y3RGb3JDaGFyYWN0ZXJSYW5nZTpjb21wbGV0aW9uSGFuZGxlcjpdKTogRGl0dG8uCisgICAgICAg
ICgtW1dLVmlldyBjaGFyYWN0ZXJJbmRleEZvclBvaW50OmNvbXBsZXRpb25IYW5kbGVyOl0pOiBE
aXR0by4KKworICAgICAgICAqIFVJUHJvY2Vzcy9XZWJQYWdlUHJveHkuY3BwOgorICAgICAgICAo
V2ViS2l0OjpXZWJQYWdlUHJveHk6OmlzUGxheWluZ01lZGlhRGlkQ2hhbmdlKTogUmVuYW1lIGZy
b20gaXNQbGF5aW5nQXVkaW9EaWRDaGFuZ2UuCisgICAgICAgIChXZWJLaXQ6OldlYlBhZ2VQcm94
eTo6aXNQbGF5aW5nQXVkaW9EaWRDaGFuZ2UpOiBEZWxldGVkLgorICAgICAgICAqIFVJUHJvY2Vz
cy9XZWJQYWdlUHJveHkuaDoKKworICAgICAgICAqIFVJUHJvY2Vzcy9XZWJQYWdlUHJveHkubWVz
c2FnZXMuaW46CisKKyAgICAgICAgKiBVSVByb2Nlc3MvbWFjL1dLRnVsbFNjcmVlbldpbmRvd0Nv
bnRyb2xsZXIubW06CisgICAgICAgICgtW1dLRnVsbFNjcmVlbldpbmRvd0NvbnRyb2xsZXIgZGVh
bGxvY10pOiBTY29wZSBDYWxsYmFja0Jhc2UuCisgICAgICAgICgtW1dLRnVsbFNjcmVlbldpbmRv
d0NvbnRyb2xsZXIgZmluaXNoZWRFeGl0RnVsbFNjcmVlbkFuaW1hdGlvbjpdKTogRGl0dG8uCisK
KyAgICAgICAgKiBVSVByb2Nlc3MvbWFjL1dLUHJpbnRpbmdWaWV3Lm1tOgorICAgICAgICAoLVtX
S1ByaW50aW5nVmlldyBfcHJlcGFyZVBERkRhdGFGb3JQcmludGluZ09uU2Vjb25kYXJ5VGhyZWFk
XSk6IERpdHRvLgorICAgICAgICAoLVtXS1ByaW50aW5nVmlldyBfYXNrUGFnZVRvQ29tcHV0ZVBh
Z2VSZWN0c10pOiBEaXR0by4KKyAgICAgICAgKC1bV0tQcmludGluZ1ZpZXcgX2RyYXdQcmV2aWV3
Ol0pOiBEaXR0by4KKworICAgICAgICAqIFdlYlByb2Nlc3MvUGx1Z2lucy9QbHVnaW5WaWV3LmNw
cDoKKyAgICAgICAgKFdlYktpdDo6UGx1Z2luVmlldzo6c2V0UGx1Z2luSXNQbGF5aW5nQXVkaW8p
OgorICAgICAgICAqIFdlYlByb2Nlc3MvV2ViQ29yZVN1cHBvcnQvV2ViQ2hyb21lQ2xpZW50LmNw
cDoKKyAgICAgICAgKFdlYktpdDo6V2ViQ2hyb21lQ2xpZW50Ojppc1BsYXlpbmdNZWRpYURpZENo
YW5nZSk6CisgICAgICAgIChXZWJLaXQ6OldlYkNocm9tZUNsaWVudDo6aXNQbGF5aW5nQXVkaW9E
aWRDaGFuZ2UpOiBEZWxldGVkLgorICAgICAgICAqIFdlYlByb2Nlc3MvV2ViQ29yZVN1cHBvcnQv
V2ViQ2hyb21lQ2xpZW50Lmg6CisKIDIwMTUtMDQtMTQgIEFuZGVycyBDYXJsc3NvbiAgPGFuZGVy
c2NhQGFwcGxlLmNvbT4KIAogICAgICAgICBNb3JlIHdvcmsgb24gbWFraW5nIHRoZSBTaGFyZWRN
ZW1vcnkgaW50ZXJmYWNlIG1vcmUgc2FuZQpJbmRleDogU291cmNlL1dlYktpdDIvVUlQcm9jZXNz
L1dlYlBhZ2VQcm94eS5jcHAKPT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PQotLS0gU291cmNlL1dlYktpdDIvVUlQcm9jZXNz
L1dlYlBhZ2VQcm94eS5jcHAJKHJldmlzaW9uIDE4Mjc5NSkKKysrIFNvdXJjZS9XZWJLaXQyL1VJ
UHJvY2Vzcy9XZWJQYWdlUHJveHkuY3BwCSh3b3JraW5nIGNvcHkpCkBAIC01NjQwLDEyICs1NjQw
LDEzIEBAIHZvaWQgV2ViUGFnZVByb3h5OjpuYXZpZ2F0aW9uR2VzdHVyZVNuYXAKICAgICBtX2lz
U2hvd2luZ05hdmlnYXRpb25HZXN0dXJlU25hcHNob3QgPSBmYWxzZTsKIH0KIAotdm9pZCBXZWJQ
YWdlUHJveHk6OmlzUGxheWluZ0F1ZGlvRGlkQ2hhbmdlKGJvb2wgbmV3SXNQbGF5aW5nQXVkaW8p
Cit2b2lkIFdlYlBhZ2VQcm94eTo6aXNQbGF5aW5nTWVkaWFEaWRDaGFuZ2UoV2ViQ29yZTo6Q2hy
b21lQ2xpZW50OjpNZWRpYVN0YXRlRmxhZ3Mgc3RhdGUpCiB7Ci0gICAgaWYgKG1faXNQbGF5aW5n
QXVkaW8gPT0gbmV3SXNQbGF5aW5nQXVkaW8pCisgICAgYm9vbCBpc1BsYXlpbmdBdWRpbyA9IHN0
YXRlICYgV2ViQ29yZTo6Q2hyb21lQ2xpZW50OjpJc1BsYXlpbmdBdWRpbzsKKyAgICBpZiAobV9p
c1BsYXlpbmdBdWRpbyA9PSBpc1BsYXlpbmdBdWRpbykKICAgICAgICAgcmV0dXJuOwogCi0gICAg
bV9pc1BsYXlpbmdBdWRpbyA9IG5ld0lzUGxheWluZ0F1ZGlvOworICAgIG1faXNQbGF5aW5nQXVk
aW8gPSBpc1BsYXlpbmdBdWRpbzsKICAgICBtX3VpQ2xpZW50LT5pc1BsYXlpbmdBdWRpb0RpZENo
YW5nZSgqdGhpcyk7CiB9CiAKSW5kZXg6IFNvdXJjZS9XZWJLaXQyL1VJUHJvY2Vzcy9XZWJQYWdl
UHJveHkuaAo9PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09Ci0tLSBTb3VyY2UvV2ViS2l0Mi9VSVByb2Nlc3MvV2ViUGFnZVBy
b3h5LmgJKHJldmlzaW9uIDE4Mjc5NSkKKysrIFNvdXJjZS9XZWJLaXQyL1VJUHJvY2Vzcy9XZWJQ
YWdlUHJveHkuaAkod29ya2luZyBjb3B5KQpAQCAtNjMsNiArNjMsNyBAQAogI2luY2x1ZGUgIldl
YlBhZ2VQcm94eU1lc3NhZ2VzLmgiCiAjaW5jbHVkZSAiV2ViUG9wdXBNZW51UHJveHkuaCIKICNp
bmNsdWRlICJXZWJQcm9jZXNzTGlmZXRpbWVUcmFja2VyLmgiCisjaW5jbHVkZSA8V2ViQ29yZS9D
aHJvbWVDbGllbnQuaD4KICNpbmNsdWRlIDxXZWJDb3JlL0NvbG9yLmg+CiAjaW5jbHVkZSA8V2Vi
Q29yZS9EcmFnQWN0aW9ucy5oPgogI2luY2x1ZGUgPFdlYkNvcmUvSGl0VGVzdFJlc3VsdC5oPgpA
QCAtOTgyLDcgKzk4Myw3IEBAIHB1YmxpYzoKIAogICAgIGJvb2wgaXNTaG93aW5nTmF2aWdhdGlv
bkdlc3R1cmVTbmFwc2hvdCgpIGNvbnN0IHsgcmV0dXJuIG1faXNTaG93aW5nTmF2aWdhdGlvbkdl
c3R1cmVTbmFwc2hvdDsgfQogCi0gICAgdm9pZCBpc1BsYXlpbmdBdWRpb0RpZENoYW5nZShib29s
KTsKKyAgICB2b2lkIGlzUGxheWluZ01lZGlhRGlkQ2hhbmdlKFdlYkNvcmU6OkNocm9tZUNsaWVu
dDo6TWVkaWFTdGF0ZUZsYWdzKTsKICAgICBib29sIGlzUGxheWluZ0F1ZGlvKCkgY29uc3QgeyBy
ZXR1cm4gbV9pc1BsYXlpbmdBdWRpbzsgfQogCiAjaWYgUExBVEZPUk0oTUFDKQpJbmRleDogU291
cmNlL1dlYktpdDIvVUlQcm9jZXNzL1dlYlBhZ2VQcm94eS5tZXNzYWdlcy5pbgo9PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
Ci0tLSBTb3VyY2UvV2ViS2l0Mi9VSVByb2Nlc3MvV2ViUGFnZVByb3h5Lm1lc3NhZ2VzLmluCShy
ZXZpc2lvbiAxODI3OTUpCisrKyBTb3VyY2UvV2ViS2l0Mi9VSVByb2Nlc3MvV2ViUGFnZVByb3h5
Lm1lc3NhZ2VzLmluCSh3b3JraW5nIGNvcHkpCkBAIC00MjEsNyArNDIxLDcgQEAgbWVzc2FnZXMg
LT4gV2ViUGFnZVByb3h5IHsKICAgICBDb250ZW50RmlsdGVyRGlkQmxvY2tMb2FkRm9yRnJhbWUo
V2ViQ29yZTo6Q29udGVudEZpbHRlclVuYmxvY2tIYW5kbGVyIHVuYmxvY2tIYW5kbGVyLCB1aW50
NjRfdCBmcmFtZUlEKQogI2VuZGlmCiAKLSAgICBJc1BsYXlpbmdBdWRpb0RpZENoYW5nZShib29s
IG5ld0lzUGxheWluZ0F1ZGlvKQorICAgIElzUGxheWluZ01lZGlhRGlkQ2hhbmdlKHVuc2lnbmVk
IHN0YXRlKQogCiAjaWYgUExBVEZPUk0oTUFDKQogICAgIERpZFBlcmZvcm1BY3Rpb25NZW51SGl0
VGVzdChzdHJ1Y3QgV2ViS2l0OjpXZWJIaXRUZXN0UmVzdWx0OjpEYXRhIHJlc3VsdCwgYm9vbCBm
b3JJbW1lZGlhdGVBY3Rpb24sIGJvb2wgY29udGVudFByZXZlbnRzRGVmYXVsdCwgV2ViS2l0OjpV
c2VyRGF0YSB1c2VyRGF0YSkKSW5kZXg6IFNvdXJjZS9XZWJLaXQyL1VJUHJvY2Vzcy9BUEkvQy9X
S1BhZ2UuY3BwCj09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT0KLS0tIFNvdXJjZS9XZWJLaXQyL1VJUHJvY2Vzcy9BUEkvQy9X
S1BhZ2UuY3BwCShyZXZpc2lvbiAxODI3OTUpCisrKyBTb3VyY2UvV2ViS2l0Mi9VSVByb2Nlc3Mv
QVBJL0MvV0tQYWdlLmNwcAkod29ya2luZyBjb3B5KQpAQCAtMTkzMywxMCArMTkzMywxMCBAQCB2
b2lkIFdLUGFnZVJ1bkphdmFTY3JpcHRJbk1haW5GcmFtZV9iKFdLCiB9CiAjZW5kaWYKIAotc3Rh
dGljIHN0ZDo6ZnVuY3Rpb248dm9pZCAoY29uc3QgU3RyaW5nJiwgQ2FsbGJhY2tCYXNlOjpFcnJv
cik+IHRvR2VuZXJpY0NhbGxiYWNrRnVuY3Rpb24odm9pZCogY29udGV4dCwgdm9pZCAoKmNhbGxi
YWNrKShXS1N0cmluZ1JlZiwgV0tFcnJvclJlZiwgdm9pZCopKQorc3RhdGljIHN0ZDo6ZnVuY3Rp
b248dm9pZCAoY29uc3QgU3RyaW5nJiwgV2ViS2l0OjpDYWxsYmFja0Jhc2U6OkVycm9yKT4gdG9H
ZW5lcmljQ2FsbGJhY2tGdW5jdGlvbih2b2lkKiBjb250ZXh0LCB2b2lkICgqY2FsbGJhY2spKFdL
U3RyaW5nUmVmLCBXS0Vycm9yUmVmLCB2b2lkKikpCiB7Ci0gICAgcmV0dXJuIFtjb250ZXh0LCBj
YWxsYmFja10oY29uc3QgU3RyaW5nJiByZXR1cm5WYWx1ZSwgQ2FsbGJhY2tCYXNlOjpFcnJvciBl
cnJvcikgewotICAgICAgICBjYWxsYmFjayh0b0FQSShBUEk6OlN0cmluZzo6Y3JlYXRlKHJldHVy
blZhbHVlKS5nZXQoKSksIGVycm9yICE9IENhbGxiYWNrQmFzZTo6RXJyb3I6Ok5vbmUgPyB0b0FQ
SShBUEk6OkVycm9yOjpjcmVhdGUoKS5nZXQoKSkgOiAwLCBjb250ZXh0KTsKKyAgICByZXR1cm4g
W2NvbnRleHQsIGNhbGxiYWNrXShjb25zdCBTdHJpbmcmIHJldHVyblZhbHVlLCBXZWJLaXQ6OkNh
bGxiYWNrQmFzZTo6RXJyb3IgZXJyb3IpIHsKKyAgICAgICAgY2FsbGJhY2sodG9BUEkoQVBJOjpT
dHJpbmc6OmNyZWF0ZShyZXR1cm5WYWx1ZSkuZ2V0KCkpLCBlcnJvciAhPSBXZWJLaXQ6OkNhbGxi
YWNrQmFzZTo6RXJyb3I6Ok5vbmUgPyB0b0FQSShBUEk6OkVycm9yOjpjcmVhdGUoKS5nZXQoKSkg
OiAwLCBjb250ZXh0KTsKICAgICB9OwogfQogCkBAIC0xOTc5LDggKzE5NzksOCBAQCB2b2lkIFdL
UGFnZUdldENvbnRlbnRzQXNNSFRNTERhdGEoV0tQYWdlCiAKIHZvaWQgV0tQYWdlRm9yY2VSZXBh
aW50KFdLUGFnZVJlZiBwYWdlUmVmLCB2b2lkKiBjb250ZXh0LCBXS1BhZ2VGb3JjZVJlcGFpbnRG
dW5jdGlvbiBjYWxsYmFjaykKIHsKLSAgICB0b0ltcGwocGFnZVJlZiktPmZvcmNlUmVwYWludChW
b2lkQ2FsbGJhY2s6OmNyZWF0ZShbY29udGV4dCwgY2FsbGJhY2tdKENhbGxiYWNrQmFzZTo6RXJy
b3IgZXJyb3IpIHsKLSAgICAgICAgY2FsbGJhY2soZXJyb3IgPT0gQ2FsbGJhY2tCYXNlOjpFcnJv
cjo6Tm9uZSA/IG51bGxwdHIgOiB0b0FQSShBUEk6OkVycm9yOjpjcmVhdGUoKS5nZXQoKSksIGNv
bnRleHQpOworICAgIHRvSW1wbChwYWdlUmVmKS0+Zm9yY2VSZXBhaW50KFZvaWRDYWxsYmFjazo6
Y3JlYXRlKFtjb250ZXh0LCBjYWxsYmFja10oV2ViS2l0OjpDYWxsYmFja0Jhc2U6OkVycm9yIGVy
cm9yKSB7CisgICAgICAgIGNhbGxiYWNrKGVycm9yID09IFdlYktpdDo6Q2FsbGJhY2tCYXNlOjpF
cnJvcjo6Tm9uZSA/IG51bGxwdHIgOiB0b0FQSShBUEk6OkVycm9yOjpjcmVhdGUoKS5nZXQoKSks
IGNvbnRleHQpOwogICAgIH0pKTsKIH0KIApAQCAtMjAxNiw4ICsyMDE2LDggQEAgV0tTdHJpbmdS
ZWYgV0tQYWdlQ29weVN0YW5kYXJkVXNlckFnZW50VwogCiB2b2lkIFdLUGFnZVZhbGlkYXRlQ29t
bWFuZChXS1BhZ2VSZWYgcGFnZVJlZiwgV0tTdHJpbmdSZWYgY29tbWFuZCwgdm9pZCogY29udGV4
dCwgV0tQYWdlVmFsaWRhdGVDb21tYW5kQ2FsbGJhY2sgY2FsbGJhY2spCiB7Ci0gICAgdG9JbXBs
KHBhZ2VSZWYpLT52YWxpZGF0ZUNvbW1hbmQodG9JbXBsKGNvbW1hbmQpLT5zdHJpbmcoKSwgW2Nv
bnRleHQsIGNhbGxiYWNrXShjb25zdCBTdHJpbmcmIGNvbW1hbmROYW1lLCBib29sIGlzRW5hYmxl
ZCwgaW50MzJfdCBzdGF0ZSwgQ2FsbGJhY2tCYXNlOjpFcnJvciBlcnJvcikgewotICAgICAgICBj
YWxsYmFjayh0b0FQSShBUEk6OlN0cmluZzo6Y3JlYXRlKGNvbW1hbmROYW1lKS5nZXQoKSksIGlz
RW5hYmxlZCwgc3RhdGUsIGVycm9yICE9IENhbGxiYWNrQmFzZTo6RXJyb3I6Ok5vbmUgPyB0b0FQ
SShBUEk6OkVycm9yOjpjcmVhdGUoKS5nZXQoKSkgOiAwLCBjb250ZXh0KTsKKyAgICB0b0ltcGwo
cGFnZVJlZiktPnZhbGlkYXRlQ29tbWFuZCh0b0ltcGwoY29tbWFuZCktPnN0cmluZygpLCBbY29u
dGV4dCwgY2FsbGJhY2tdKGNvbnN0IFN0cmluZyYgY29tbWFuZE5hbWUsIGJvb2wgaXNFbmFibGVk
LCBpbnQzMl90IHN0YXRlLCBXZWJLaXQ6OkNhbGxiYWNrQmFzZTo6RXJyb3IgZXJyb3IpIHsKKyAg
ICAgICAgY2FsbGJhY2sodG9BUEkoQVBJOjpTdHJpbmc6OmNyZWF0ZShjb21tYW5kTmFtZSkuZ2V0
KCkpLCBpc0VuYWJsZWQsIHN0YXRlLCBlcnJvciAhPSBXZWJLaXQ6OkNhbGxiYWNrQmFzZTo6RXJy
b3I6Ok5vbmUgPyB0b0FQSShBUEk6OkVycm9yOjpjcmVhdGUoKS5nZXQoKSkgOiAwLCBjb250ZXh0
KTsKICAgICB9KTsKIH0KIApAQCAtMjAzOCwxMSArMjAzOCwxMSBAQCBzdGF0aWMgUHJpbnRJbmZv
IHByaW50SW5mb0Zyb21XS1ByaW50SW5mCiAKIHZvaWQgV0tQYWdlQ29tcHV0ZVBhZ2VzRm9yUHJp
bnRpbmcoV0tQYWdlUmVmIHBhZ2UsIFdLRnJhbWVSZWYgZnJhbWUsIFdLUHJpbnRJbmZvIHByaW50
SW5mbywgV0tQYWdlQ29tcHV0ZVBhZ2VzRm9yUHJpbnRpbmdGdW5jdGlvbiBjYWxsYmFjaywgdm9p
ZCogY29udGV4dCkKIHsKLSAgICB0b0ltcGwocGFnZSktPmNvbXB1dGVQYWdlc0ZvclByaW50aW5n
KHRvSW1wbChmcmFtZSksIHByaW50SW5mb0Zyb21XS1ByaW50SW5mbyhwcmludEluZm8pLCBDb21w
dXRlZFBhZ2VzQ2FsbGJhY2s6OmNyZWF0ZShbY29udGV4dCwgY2FsbGJhY2tdKGNvbnN0IFZlY3Rv
cjxXZWJDb3JlOjpJbnRSZWN0PiYgcmVjdHMsIGRvdWJsZSBzY2FsZUZhY3RvciwgQ2FsbGJhY2tC
YXNlOjpFcnJvciBlcnJvcikgeworICAgIHRvSW1wbChwYWdlKS0+Y29tcHV0ZVBhZ2VzRm9yUHJp
bnRpbmcodG9JbXBsKGZyYW1lKSwgcHJpbnRJbmZvRnJvbVdLUHJpbnRJbmZvKHByaW50SW5mbyks
IENvbXB1dGVkUGFnZXNDYWxsYmFjazo6Y3JlYXRlKFtjb250ZXh0LCBjYWxsYmFja10oY29uc3Qg
VmVjdG9yPFdlYkNvcmU6OkludFJlY3Q+JiByZWN0cywgZG91YmxlIHNjYWxlRmFjdG9yLCBXZWJL
aXQ6OkNhbGxiYWNrQmFzZTo6RXJyb3IgZXJyb3IpIHsKICAgICAgICAgVmVjdG9yPFdLUmVjdD4g
d2tSZWN0cyhyZWN0cy5zaXplKCkpOwogICAgICAgICBmb3IgKHNpemVfdCBpID0gMDsgaSA8IHJl
Y3RzLnNpemUoKTsgKytpKQogICAgICAgICAgICAgd2tSZWN0c1tpXSA9IHRvQVBJKHJlY3RzW2ld
KTsKLSAgICAgICAgY2FsbGJhY2sod2tSZWN0cy5kYXRhKCksIHdrUmVjdHMuc2l6ZSgpLCBzY2Fs
ZUZhY3RvciwgZXJyb3IgIT0gQ2FsbGJhY2tCYXNlOjpFcnJvcjo6Tm9uZSA/IHRvQVBJKEFQSTo6
RXJyb3I6OmNyZWF0ZSgpLmdldCgpKSA6IDAsIGNvbnRleHQpOworICAgICAgICBjYWxsYmFjayh3
a1JlY3RzLmRhdGEoKSwgd2tSZWN0cy5zaXplKCksIHNjYWxlRmFjdG9yLCBlcnJvciAhPSBXZWJL
aXQ6OkNhbGxiYWNrQmFzZTo6RXJyb3I6Ok5vbmUgPyB0b0FQSShBUEk6OkVycm9yOjpjcmVhdGUo
KS5nZXQoKSkgOiAwLCBjb250ZXh0KTsKICAgICB9KSk7CiB9CiAKSW5kZXg6IFNvdXJjZS9XZWJL
aXQyL1VJUHJvY2Vzcy9BUEkvQ29jb2EvX1dLVGh1bWJuYWlsVmlldy5tbQo9PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09Ci0t
LSBTb3VyY2UvV2ViS2l0Mi9VSVByb2Nlc3MvQVBJL0NvY29hL19XS1RodW1ibmFpbFZpZXcubW0J
KHJldmlzaW9uIDE4Mjc5NSkKKysrIFNvdXJjZS9XZWJLaXQyL1VJUHJvY2Vzcy9BUEkvQ29jb2Ev
X1dLVGh1bWJuYWlsVmlldy5tbQkod29ya2luZyBjb3B5KQpAQCAtMTE5LDcgKzExOSw3IEBAIC0g
KHZvaWQpX3JlcXVlc3RTbmFwc2hvdElmTmVlZGVkCiAgICAgSW50U2l6ZSBiaXRtYXBTaXplID0g
c25hcHNob3RSZWN0LnNpemUoKTsKICAgICBiaXRtYXBTaXplLnNjYWxlKF9zY2FsZSAqIF93ZWJQ
YWdlUHJveHktPmRldmljZVNjYWxlRmFjdG9yKCkpOwogICAgIF9sYXN0U25hcHNob3RTY2FsZSA9
IF9zY2FsZTsKLSAgICBfd2ViUGFnZVByb3h5LT50YWtlU25hcHNob3Qoc25hcHNob3RSZWN0LCBi
aXRtYXBTaXplLCBvcHRpb25zLCBbdGh1bWJuYWlsVmlld10oY29uc3QgU2hhcmVhYmxlQml0bWFw
OjpIYW5kbGUmIGltYWdlSGFuZGxlLCBDYWxsYmFja0Jhc2U6OkVycm9yKSB7CisgICAgX3dlYlBh
Z2VQcm94eS0+dGFrZVNuYXBzaG90KHNuYXBzaG90UmVjdCwgYml0bWFwU2l6ZSwgb3B0aW9ucywg
W3RodW1ibmFpbFZpZXddKGNvbnN0IFNoYXJlYWJsZUJpdG1hcDo6SGFuZGxlJiBpbWFnZUhhbmRs
ZSwgV2ViS2l0OjpDYWxsYmFja0Jhc2U6OkVycm9yKSB7CiAgICAgICAgIFJlZlB0cjxTaGFyZWFi
bGVCaXRtYXA+IGJpdG1hcCA9IFNoYXJlYWJsZUJpdG1hcDo6Y3JlYXRlKGltYWdlSGFuZGxlLCBT
aGFyZWRNZW1vcnk6OlByb3RlY3Rpb246OlJlYWRPbmx5KTsKICAgICAgICAgUmV0YWluUHRyPENH
SW1hZ2VSZWY+IGNnSW1hZ2UgPSBiaXRtYXAgPyBiaXRtYXAtPm1ha2VDR0ltYWdlKCkgOiBudWxs
cHRyOwogICAgICAgICBbdGh1bWJuYWlsVmlldyBfZGlkVGFrZVNuYXBzaG90OmNnSW1hZ2UuZ2V0
KCldOwpJbmRleDogU291cmNlL1dlYktpdDIvVUlQcm9jZXNzL0FQSS9tYWMvV0tWaWV3Lm1tCj09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT0KLS0tIFNvdXJjZS9XZWJLaXQyL1VJUHJvY2Vzcy9BUEkvbWFjL1dLVmlldy5tbQko
cmV2aXNpb24gMTgyNzk1KQorKysgU291cmNlL1dlYktpdDIvVUlQcm9jZXNzL0FQSS9tYWMvV0tW
aWV3Lm1tCSh3b3JraW5nIGNvcHkpCkBAIC00NzAsNyArNDcwLDcgQEAgLSAoQk9PTCliZWNvbWVG
aXJzdFJlc3BvbmRlcgogICAgICAgICBOU0V2ZW50ICprZXlib2FyZEV2ZW50ID0gbmlsOwogICAg
ICAgICBpZiAoW2V2ZW50IHR5cGVdID09IE5TS2V5RG93biB8fCBbZXZlbnQgdHlwZV0gPT0gTlNL
ZXlVcCkKICAgICAgICAgICAgIGtleWJvYXJkRXZlbnQgPSBldmVudDsKLSAgICAgICAgX2RhdGEt
Pl9wYWdlLT5zZXRJbml0aWFsRm9jdXMoZGlyZWN0aW9uID09IE5TU2VsZWN0aW5nTmV4dCwga2V5
Ym9hcmRFdmVudCAhPSBuaWwsIE5hdGl2ZVdlYktleWJvYXJkRXZlbnQoa2V5Ym9hcmRFdmVudCwg
ZmFsc2UsIFZlY3RvcjxLZXlwcmVzc0NvbW1hbmQ+KCkpLCBbXShDYWxsYmFja0Jhc2U6OkVycm9y
KSB7IH0pOworICAgICAgICBfZGF0YS0+X3BhZ2UtPnNldEluaXRpYWxGb2N1cyhkaXJlY3Rpb24g
PT0gTlNTZWxlY3RpbmdOZXh0LCBrZXlib2FyZEV2ZW50ICE9IG5pbCwgTmF0aXZlV2ViS2V5Ym9h
cmRFdmVudChrZXlib2FyZEV2ZW50LCBmYWxzZSwgVmVjdG9yPEtleXByZXNzQ29tbWFuZD4oKSks
IFtdKFdlYktpdDo6Q2FsbGJhY2tCYXNlOjpFcnJvcikgeyB9KTsKICAgICB9CiAgICAgcmV0dXJu
IFlFUzsKIH0KQEAgLTgzNSw3ICs4MzUsNyBAQCAtICh2b2lkKXVwZGF0ZUZvbnRQYW5lbElmTmVl
ZGVkCiAgICAgaWYgKGVkaXRvclN0YXRlLnNlbGVjdGlvbklzTm9uZSB8fCAhZWRpdG9yU3RhdGUu
aXNDb250ZW50RWRpdGFibGUpCiAgICAgICAgIHJldHVybjsKICAgICBpZiAoW05TRm9udFBhbmVs
IHNoYXJlZEZvbnRQYW5lbEV4aXN0c10gJiYgW1tOU0ZvbnRQYW5lbCBzaGFyZWRGb250UGFuZWxd
IGlzVmlzaWJsZV0pIHsKLSAgICAgICAgX2RhdGEtPl9wYWdlLT5mb250QXRTZWxlY3Rpb24oW10o
Y29uc3QgU3RyaW5nJiBmb250TmFtZSwgZG91YmxlIGZvbnRTaXplLCBib29sIHNlbGVjdGlvbkhh
c011bHRpcGxlRm9udHMsIENhbGxiYWNrQmFzZTo6RXJyb3IgZXJyb3IpIHsKKyAgICAgICAgX2Rh
dGEtPl9wYWdlLT5mb250QXRTZWxlY3Rpb24oW10oY29uc3QgU3RyaW5nJiBmb250TmFtZSwgZG91
YmxlIGZvbnRTaXplLCBib29sIHNlbGVjdGlvbkhhc011bHRpcGxlRm9udHMsIFdlYktpdDo6Q2Fs
bGJhY2tCYXNlOjpFcnJvciBlcnJvcikgewogICAgICAgICAgICAgTlNGb250ICpmb250ID0gW05T
Rm9udCBmb250V2l0aE5hbWU6Zm9udE5hbWUgc2l6ZTpmb250U2l6ZV07CiAgICAgICAgICAgICBp
ZiAoZm9udCkKICAgICAgICAgICAgICAgICBbW05TRm9udE1hbmFnZXIgc2hhcmVkRm9udE1hbmFn
ZXJdIHNldFNlbGVjdGVkRm9udDpmb250IGlzTXVsdGlwbGU6c2VsZWN0aW9uSGFzTXVsdGlwbGVG
b250c107CkBAIC05OTUsOSArOTk1LDkgQEAgLSAoQk9PTCl2YWxpZGF0ZVVzZXJJbnRlcmZhY2VJ
dGVtOihpZCA8TgogICAgICAgICAvLyBJZiB3ZSBhcmUgbm90IGFscmVhZHkgYXdhaXRpbmcgdmFs
aWRhdGlvbiBmb3IgdGhpcyBjb21tYW5kLCBzdGFydCB0aGUgYXN5bmNocm9ub3VzIHZhbGlkYXRp
b24gcHJvY2Vzcy4KICAgICAgICAgLy8gRklYTUU6IFRoZW9yZXRpY2FsbHksIHRoZXJlIGlzIGEg
cmFjZSBoZXJlOyB3aGVuIHdlIGdldCB0aGUgYW5zd2VyIGl0IG1pZ2h0IGJlIG9sZCwgZnJvbSBh
IHByZXZpb3VzIHRpbWUKICAgICAgICAgLy8gd2UgYXNrZWQgZm9yIHRoZSBzYW1lIGNvbW1hbmQ7
IHRoZXJlIGlzIG5vIGd1YXJhbnRlZSB0aGUgYW5zd2VyIGlzIHN0aWxsIHZhbGlkLgotICAgICAg
ICBfZGF0YS0+X3BhZ2UtPnZhbGlkYXRlQ29tbWFuZChjb21tYW5kTmFtZSwgW3NlbGZdKGNvbnN0
IFN0cmluZyYgY29tbWFuZE5hbWUsIGJvb2wgaXNFbmFibGVkLCBpbnQzMl90IHN0YXRlLCBDYWxs
YmFja0Jhc2U6OkVycm9yIGVycm9yKSB7CisgICAgICAgIF9kYXRhLT5fcGFnZS0+dmFsaWRhdGVD
b21tYW5kKGNvbW1hbmROYW1lLCBbc2VsZl0oY29uc3QgU3RyaW5nJiBjb21tYW5kTmFtZSwgYm9v
bCBpc0VuYWJsZWQsIGludDMyX3Qgc3RhdGUsIFdlYktpdDo6Q2FsbGJhY2tCYXNlOjpFcnJvciBl
cnJvcikgewogICAgICAgICAgICAgLy8gSWYgdGhlIHByb2Nlc3MgZXhpdHMgYmVmb3JlIHRoZSBj
b21tYW5kIGNhbiBiZSB2YWxpZGF0ZWQsIHdlJ2xsIGJlIGNhbGxlZCBiYWNrIHdpdGggYW4gZXJy
b3IuCi0gICAgICAgICAgICBpZiAoZXJyb3IgIT0gQ2FsbGJhY2tCYXNlOjpFcnJvcjo6Tm9uZSkK
KyAgICAgICAgICAgIGlmIChlcnJvciAhPSBXZWJLaXQ6OkNhbGxiYWNrQmFzZTo6RXJyb3I6Ok5v
bmUpCiAgICAgICAgICAgICAgICAgcmV0dXJuOwogICAgICAgICAgICAgCiAgICAgICAgICAgICBb
c2VsZiBfc2V0VXNlckludGVyZmFjZUl0ZW1TdGF0ZTpjb21tYW5kTmFtZSBlbmFibGVkOmlzRW5h
YmxlZCBzdGF0ZTpzdGF0ZV07CkBAIC0xMDEyLDggKzEwMTIsOCBAQCAtIChCT09MKXZhbGlkYXRl
VXNlckludGVyZmFjZUl0ZW06KGlkIDxOCiAKIC0gKElCQWN0aW9uKXN0YXJ0U3BlYWtpbmc6KGlk
KXNlbmRlcgogewotICAgIF9kYXRhLT5fcGFnZS0+Z2V0U2VsZWN0aW9uT3JDb250ZW50c0FzU3Ry
aW5nKFtzZWxmXShjb25zdCBTdHJpbmcmIHN0cmluZywgQ2FsbGJhY2tCYXNlOjpFcnJvciBlcnJv
cikgewotICAgICAgICBpZiAoZXJyb3IgIT0gQ2FsbGJhY2tCYXNlOjpFcnJvcjo6Tm9uZSkKKyAg
ICBfZGF0YS0+X3BhZ2UtPmdldFNlbGVjdGlvbk9yQ29udGVudHNBc1N0cmluZyhbc2VsZl0oY29u
c3QgU3RyaW5nJiBzdHJpbmcsIFdlYktpdDo6Q2FsbGJhY2tCYXNlOjpFcnJvciBlcnJvcikgewor
ICAgICAgICBpZiAoZXJyb3IgIT0gV2ViS2l0OjpDYWxsYmFja0Jhc2U6OkVycm9yOjpOb25lKQog
ICAgICAgICAgICAgcmV0dXJuOwogICAgICAgICBpZiAoIXN0cmluZykKICAgICAgICAgICAgIHJl
dHVybjsKQEAgLTE2NzYsOSArMTY3Niw5IEBAIC0gKHZvaWQpc2VsZWN0ZWRSYW5nZVdpdGhDb21w
bGV0aW9uSGFuZGwKICAgICBSZXRhaW5QdHI8aWQ+IGNvbXBsZXRpb25IYW5kbGVyID0gYWRvcHRO
UyhbY29tcGxldGlvbkhhbmRsZXJQdHIgY29weV0pOwogCiAgICAgTE9HKFRleHRJbnB1dCwgInNl
bGVjdGVkUmFuZ2UiKTsKLSAgICBfZGF0YS0+X3BhZ2UtPmdldFNlbGVjdGVkUmFuZ2VBc3luYyhb
Y29tcGxldGlvbkhhbmRsZXJdKGNvbnN0IEVkaXRpbmdSYW5nZSYgZWRpdGluZ1JhbmdlUmVzdWx0
LCBDYWxsYmFja0Jhc2U6OkVycm9yIGVycm9yKSB7CisgICAgX2RhdGEtPl9wYWdlLT5nZXRTZWxl
Y3RlZFJhbmdlQXN5bmMoW2NvbXBsZXRpb25IYW5kbGVyXShjb25zdCBFZGl0aW5nUmFuZ2UmIGVk
aXRpbmdSYW5nZVJlc3VsdCwgV2ViS2l0OjpDYWxsYmFja0Jhc2U6OkVycm9yIGVycm9yKSB7CiAg
ICAgICAgIHZvaWQgKF5jb21wbGV0aW9uSGFuZGxlckJsb2NrKShOU1JhbmdlKSA9ICh2b2lkIChe
KShOU1JhbmdlKSljb21wbGV0aW9uSGFuZGxlci5nZXQoKTsKLSAgICAgICAgaWYgKGVycm9yICE9
IENhbGxiYWNrQmFzZTo6RXJyb3I6Ok5vbmUpIHsKKyAgICAgICAgaWYgKGVycm9yICE9IFdlYktp
dDo6Q2FsbGJhY2tCYXNlOjpFcnJvcjo6Tm9uZSkgewogICAgICAgICAgICAgTE9HKFRleHRJbnB1
dCwgIiAgICAuLi5zZWxlY3RlZFJhbmdlIGZhaWxlZC4iKTsKICAgICAgICAgICAgIGNvbXBsZXRp
b25IYW5kbGVyQmxvY2soTlNNYWtlUmFuZ2UoTlNOb3RGb3VuZCwgMCkpOwogICAgICAgICAgICAg
cmV0dXJuOwpAQCAtMTY5Nyw5ICsxNjk3LDkgQEAgLSAodm9pZCltYXJrZWRSYW5nZVdpdGhDb21w
bGV0aW9uSGFuZGxlcgogICAgIFJldGFpblB0cjxpZD4gY29tcGxldGlvbkhhbmRsZXIgPSBhZG9w
dE5TKFtjb21wbGV0aW9uSGFuZGxlclB0ciBjb3B5XSk7CiAKICAgICBMT0coVGV4dElucHV0LCAi
bWFya2VkUmFuZ2UiKTsKLSAgICBfZGF0YS0+X3BhZ2UtPmdldE1hcmtlZFJhbmdlQXN5bmMoW2Nv
bXBsZXRpb25IYW5kbGVyXShjb25zdCBFZGl0aW5nUmFuZ2UmIGVkaXRpbmdSYW5nZVJlc3VsdCwg
Q2FsbGJhY2tCYXNlOjpFcnJvciBlcnJvcikgeworICAgIF9kYXRhLT5fcGFnZS0+Z2V0TWFya2Vk
UmFuZ2VBc3luYyhbY29tcGxldGlvbkhhbmRsZXJdKGNvbnN0IEVkaXRpbmdSYW5nZSYgZWRpdGlu
Z1JhbmdlUmVzdWx0LCBXZWJLaXQ6OkNhbGxiYWNrQmFzZTo6RXJyb3IgZXJyb3IpIHsKICAgICAg
ICAgdm9pZCAoXmNvbXBsZXRpb25IYW5kbGVyQmxvY2spKE5TUmFuZ2UpID0gKHZvaWQgKF4pKE5T
UmFuZ2UpKWNvbXBsZXRpb25IYW5kbGVyLmdldCgpOwotICAgICAgICBpZiAoZXJyb3IgIT0gQ2Fs
bGJhY2tCYXNlOjpFcnJvcjo6Tm9uZSkgeworICAgICAgICBpZiAoZXJyb3IgIT0gV2ViS2l0OjpD
YWxsYmFja0Jhc2U6OkVycm9yOjpOb25lKSB7CiAgICAgICAgICAgICBMT0coVGV4dElucHV0LCAi
ICAgIC4uLm1hcmtlZFJhbmdlIGZhaWxlZC4iKTsKICAgICAgICAgICAgIGNvbXBsZXRpb25IYW5k
bGVyQmxvY2soTlNNYWtlUmFuZ2UoTlNOb3RGb3VuZCwgMCkpOwogICAgICAgICAgICAgcmV0dXJu
OwpAQCAtMTcxOCw5ICsxNzE4LDkgQEAgLSAodm9pZCloYXNNYXJrZWRUZXh0V2l0aENvbXBsZXRp
b25IYW5kbAogICAgIFJldGFpblB0cjxpZD4gY29tcGxldGlvbkhhbmRsZXIgPSBhZG9wdE5TKFtj
b21wbGV0aW9uSGFuZGxlclB0ciBjb3B5XSk7CiAKICAgICBMT0coVGV4dElucHV0LCAiaGFzTWFy
a2VkVGV4dCIpOwotICAgIF9kYXRhLT5fcGFnZS0+Z2V0TWFya2VkUmFuZ2VBc3luYyhbY29tcGxl
dGlvbkhhbmRsZXJdKGNvbnN0IEVkaXRpbmdSYW5nZSYgZWRpdGluZ1JhbmdlUmVzdWx0LCBDYWxs
YmFja0Jhc2U6OkVycm9yIGVycm9yKSB7CisgICAgX2RhdGEtPl9wYWdlLT5nZXRNYXJrZWRSYW5n
ZUFzeW5jKFtjb21wbGV0aW9uSGFuZGxlcl0oY29uc3QgRWRpdGluZ1JhbmdlJiBlZGl0aW5nUmFu
Z2VSZXN1bHQsIFdlYktpdDo6Q2FsbGJhY2tCYXNlOjpFcnJvciBlcnJvcikgewogICAgICAgICB2
b2lkICheY29tcGxldGlvbkhhbmRsZXJCbG9jaykoQk9PTCkgPSAodm9pZCAoXikoQk9PTCkpY29t
cGxldGlvbkhhbmRsZXIuZ2V0KCk7Ci0gICAgICAgIGlmIChlcnJvciAhPSBDYWxsYmFja0Jhc2U6
OkVycm9yOjpOb25lKSB7CisgICAgICAgIGlmIChlcnJvciAhPSBXZWJLaXQ6OkNhbGxiYWNrQmFz
ZTo6RXJyb3I6Ok5vbmUpIHsKICAgICAgICAgICAgIExPRyhUZXh0SW5wdXQsICIgICAgLi4uaGFz
TWFya2VkVGV4dCBmYWlsZWQuIik7CiAgICAgICAgICAgICBjb21wbGV0aW9uSGFuZGxlckJsb2Nr
KE5PKTsKICAgICAgICAgICAgIHJldHVybjsKQEAgLTE3MzYsOSArMTczNiw5IEBAIC0gKHZvaWQp
YXR0cmlidXRlZFN1YnN0cmluZ0ZvclByb3Bvc2VkUmEKICAgICBSZXRhaW5QdHI8aWQ+IGNvbXBs
ZXRpb25IYW5kbGVyID0gYWRvcHROUyhbY29tcGxldGlvbkhhbmRsZXJQdHIgY29weV0pOwogCiAg
ICAgTE9HKFRleHRJbnB1dCwgImF0dHJpYnV0ZWRTdWJzdHJpbmdGcm9tUmFuZ2U6KCV1LCAldSki
LCBuc1JhbmdlLmxvY2F0aW9uLCBuc1JhbmdlLmxlbmd0aCk7Ci0gICAgX2RhdGEtPl9wYWdlLT5h
dHRyaWJ1dGVkU3Vic3RyaW5nRm9yQ2hhcmFjdGVyUmFuZ2VBc3luYyhuc1JhbmdlLCBbY29tcGxl
dGlvbkhhbmRsZXJdKGNvbnN0IEF0dHJpYnV0ZWRTdHJpbmcmIHN0cmluZywgY29uc3QgRWRpdGlu
Z1JhbmdlJiBhY3R1YWxSYW5nZSwgQ2FsbGJhY2tCYXNlOjpFcnJvciBlcnJvcikgeworICAgIF9k
YXRhLT5fcGFnZS0+YXR0cmlidXRlZFN1YnN0cmluZ0ZvckNoYXJhY3RlclJhbmdlQXN5bmMobnNS
YW5nZSwgW2NvbXBsZXRpb25IYW5kbGVyXShjb25zdCBBdHRyaWJ1dGVkU3RyaW5nJiBzdHJpbmcs
IGNvbnN0IEVkaXRpbmdSYW5nZSYgYWN0dWFsUmFuZ2UsIFdlYktpdDo6Q2FsbGJhY2tCYXNlOjpF
cnJvciBlcnJvcikgewogICAgICAgICB2b2lkICheY29tcGxldGlvbkhhbmRsZXJCbG9jaykoTlNB
dHRyaWJ1dGVkU3RyaW5nICosIE5TUmFuZ2UpID0gKHZvaWQgKF4pKE5TQXR0cmlidXRlZFN0cmlu
ZyAqLCBOU1JhbmdlKSljb21wbGV0aW9uSGFuZGxlci5nZXQoKTsKLSAgICAgICAgaWYgKGVycm9y
ICE9IENhbGxiYWNrQmFzZTo6RXJyb3I6Ok5vbmUpIHsKKyAgICAgICAgaWYgKGVycm9yICE9IFdl
YktpdDo6Q2FsbGJhY2tCYXNlOjpFcnJvcjo6Tm9uZSkgewogICAgICAgICAgICAgTE9HKFRleHRJ
bnB1dCwgIiAgICAuLi5hdHRyaWJ1dGVkU3Vic3RyaW5nRnJvbVJhbmdlIGZhaWxlZC4iKTsKICAg
ICAgICAgICAgIGNvbXBsZXRpb25IYW5kbGVyQmxvY2soMCwgTlNNYWtlUmFuZ2UoTlNOb3RGb3Vu
ZCwgMCkpOwogICAgICAgICAgICAgcmV0dXJuOwpAQCAtMTc2Niw5ICsxNzY2LDkgQEAgLSAodm9p
ZClmaXJzdFJlY3RGb3JDaGFyYWN0ZXJSYW5nZTooTlNSYQogICAgICAgICByZXR1cm47CiAgICAg
fQogCi0gICAgX2RhdGEtPl9wYWdlLT5maXJzdFJlY3RGb3JDaGFyYWN0ZXJSYW5nZUFzeW5jKHRo
ZVJhbmdlLCBbc2VsZiwgY29tcGxldGlvbkhhbmRsZXJdKGNvbnN0IEludFJlY3QmIHJlY3QsIGNv
bnN0IEVkaXRpbmdSYW5nZSYgYWN0dWFsUmFuZ2UsIENhbGxiYWNrQmFzZTo6RXJyb3IgZXJyb3Ip
IHsKKyAgICBfZGF0YS0+X3BhZ2UtPmZpcnN0UmVjdEZvckNoYXJhY3RlclJhbmdlQXN5bmModGhl
UmFuZ2UsIFtzZWxmLCBjb21wbGV0aW9uSGFuZGxlcl0oY29uc3QgSW50UmVjdCYgcmVjdCwgY29u
c3QgRWRpdGluZ1JhbmdlJiBhY3R1YWxSYW5nZSwgV2ViS2l0OjpDYWxsYmFja0Jhc2U6OkVycm9y
IGVycm9yKSB7CiAgICAgICAgIHZvaWQgKF5jb21wbGV0aW9uSGFuZGxlckJsb2NrKShOU1JlY3Qs
IE5TUmFuZ2UpID0gKHZvaWQgKF4pKE5TUmVjdCwgTlNSYW5nZSkpY29tcGxldGlvbkhhbmRsZXIu
Z2V0KCk7Ci0gICAgICAgIGlmIChlcnJvciAhPSBDYWxsYmFja0Jhc2U6OkVycm9yOjpOb25lKSB7
CisgICAgICAgIGlmIChlcnJvciAhPSBXZWJLaXQ6OkNhbGxiYWNrQmFzZTo6RXJyb3I6Ok5vbmUp
IHsKICAgICAgICAgICAgIExPRyhUZXh0SW5wdXQsICIgICAgLi4uZmlyc3RSZWN0Rm9yQ2hhcmFj
dGVyUmFuZ2UgZmFpbGVkLiIpOwogICAgICAgICAgICAgY29tcGxldGlvbkhhbmRsZXJCbG9jayhO
U1plcm9SZWN0LCBOU01ha2VSYW5nZShOU05vdEZvdW5kLCAwKSk7CiAgICAgICAgICAgICByZXR1
cm47CkBAIC0xNzk3LDkgKzE3OTcsOSBAQCAtICh2b2lkKWNoYXJhY3RlckluZGV4Rm9yUG9pbnQ6
KE5TUG9pbnQpCiAjcHJhZ21hIGNsYW5nIGRpYWdub3N0aWMgcG9wCiAgICAgdGhlUG9pbnQgPSBb
c2VsZiBjb252ZXJ0UG9pbnQ6dGhlUG9pbnQgZnJvbVZpZXc6bmlsXTsgIC8vIHRoZSBwb2ludCBp
cyByZWxhdGl2ZSB0byB0aGUgbWFpbiBmcmFtZQogCi0gICAgX2RhdGEtPl9wYWdlLT5jaGFyYWN0
ZXJJbmRleEZvclBvaW50QXN5bmMoSW50UG9pbnQodGhlUG9pbnQpLCBbY29tcGxldGlvbkhhbmRs
ZXJdKHVpbnQ2NF90IHJlc3VsdCwgQ2FsbGJhY2tCYXNlOjpFcnJvciBlcnJvcikgeworICAgIF9k
YXRhLT5fcGFnZS0+Y2hhcmFjdGVySW5kZXhGb3JQb2ludEFzeW5jKEludFBvaW50KHRoZVBvaW50
KSwgW2NvbXBsZXRpb25IYW5kbGVyXSh1aW50NjRfdCByZXN1bHQsIFdlYktpdDo6Q2FsbGJhY2tC
YXNlOjpFcnJvciBlcnJvcikgewogICAgICAgICB2b2lkICheY29tcGxldGlvbkhhbmRsZXJCbG9j
aykoTlNVSW50ZWdlcikgPSAodm9pZCAoXikoTlNVSW50ZWdlcikpY29tcGxldGlvbkhhbmRsZXIu
Z2V0KCk7Ci0gICAgICAgIGlmIChlcnJvciAhPSBDYWxsYmFja0Jhc2U6OkVycm9yOjpOb25lKSB7
CisgICAgICAgIGlmIChlcnJvciAhPSBXZWJLaXQ6OkNhbGxiYWNrQmFzZTo6RXJyb3I6Ok5vbmUp
IHsKICAgICAgICAgICAgIExPRyhUZXh0SW5wdXQsICIgICAgLi4uY2hhcmFjdGVySW5kZXhGb3JQ
b2ludCBmYWlsZWQuIik7CiAgICAgICAgICAgICBjb21wbGV0aW9uSGFuZGxlckJsb2NrKDApOwog
ICAgICAgICAgICAgcmV0dXJuOwpJbmRleDogU291cmNlL1dlYktpdDIvVUlQcm9jZXNzL21hYy9X
S0Z1bGxTY3JlZW5XaW5kb3dDb250cm9sbGVyLm1tCj09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT0KLS0tIFNvdXJjZS9XZWJL
aXQyL1VJUHJvY2Vzcy9tYWMvV0tGdWxsU2NyZWVuV2luZG93Q29udHJvbGxlci5tbQkocmV2aXNp
b24gMTgyNzk1KQorKysgU291cmNlL1dlYktpdDIvVUlQcm9jZXNzL21hYy9XS0Z1bGxTY3JlZW5X
aW5kb3dDb250cm9sbGVyLm1tCSh3b3JraW5nIGNvcHkpCkBAIC0xMjUsNyArMTI1LDcgQEAgLSAo
dm9pZClkZWFsbG9jCiAgICAgW1tOU05vdGlmaWNhdGlvbkNlbnRlciBkZWZhdWx0Q2VudGVyXSBy
ZW1vdmVPYnNlcnZlcjpzZWxmXTsKIAogICAgIGlmIChfcmVwYWludENhbGxiYWNrKSB7Ci0gICAg
ICAgIF9yZXBhaW50Q2FsbGJhY2stPmludmFsaWRhdGUoQ2FsbGJhY2tCYXNlOjpFcnJvcjo6T3du
ZXJXYXNJbnZhbGlkYXRlZCk7CisgICAgICAgIF9yZXBhaW50Q2FsbGJhY2stPmludmFsaWRhdGUo
V2ViS2l0OjpDYWxsYmFja0Jhc2U6OkVycm9yOjpPd25lcldhc0ludmFsaWRhdGVkKTsKICAgICAg
ICAgLy8gaW52YWxpZGF0ZSgpIGNhbGxzIGNvbXBsZXRlRmluaXNoRXhpdEZ1bGxTY3JlZW5Bbmlt
YXRpb25BZnRlclJlcGFpbnQsIHdoaWNoCiAgICAgICAgIC8vIGNsZWFycyBfcmVwYWludENhbGxi
YWNrLgogICAgICAgICBBU1NFUlQoIV9yZXBhaW50Q2FsbGJhY2spOwpAQCAtMzkzLDEyICszOTMs
MTIgQEAgLSAodm9pZClmaW5pc2hlZEV4aXRGdWxsU2NyZWVuQW5pbWF0aW9uOgogICAgIFtzZWxm
IF9tYW5hZ2VyXS0+cmVzdG9yZVNjcm9sbFBvc2l0aW9uKCk7CiAKICAgICBpZiAoX3JlcGFpbnRD
YWxsYmFjaykgewotICAgICAgICBfcmVwYWludENhbGxiYWNrLT5pbnZhbGlkYXRlKENhbGxiYWNr
QmFzZTo6RXJyb3I6Ok93bmVyV2FzSW52YWxpZGF0ZWQpOworICAgICAgICBfcmVwYWludENhbGxi
YWNrLT5pbnZhbGlkYXRlKFdlYktpdDo6Q2FsbGJhY2tCYXNlOjpFcnJvcjo6T3duZXJXYXNJbnZh
bGlkYXRlZCk7CiAgICAgICAgIC8vIGludmFsaWRhdGUoKSBjYWxscyBjb21wbGV0ZUZpbmlzaEV4
aXRGdWxsU2NyZWVuQW5pbWF0aW9uQWZ0ZXJSZXBhaW50LCB3aGljaAogICAgICAgICAvLyBjbGVh
cnMgX3JlcGFpbnRDYWxsYmFjay4KICAgICAgICAgQVNTRVJUKCFfcmVwYWludENhbGxiYWNrKTsK
ICAgICB9Ci0gICAgX3JlcGFpbnRDYWxsYmFjayA9IFZvaWRDYWxsYmFjazo6Y3JlYXRlKFtzZWxm
XShDYWxsYmFja0Jhc2U6OkVycm9yKSB7CisgICAgX3JlcGFpbnRDYWxsYmFjayA9IFZvaWRDYWxs
YmFjazo6Y3JlYXRlKFtzZWxmXShXZWJLaXQ6OkNhbGxiYWNrQmFzZTo6RXJyb3IpIHsKICAgICAg
ICAgW3NlbGYgY29tcGxldGVGaW5pc2hFeGl0RnVsbFNjcmVlbkFuaW1hdGlvbkFmdGVyUmVwYWlu
dF07CiAgICAgfSk7CiAgICAgW3NlbGYgX3BhZ2VdLT5mb3JjZVJlcGFpbnQoX3JlcGFpbnRDYWxs
YmFjayk7CkluZGV4OiBTb3VyY2UvV2ViS2l0Mi9VSVByb2Nlc3MvbWFjL1dLUHJpbnRpbmdWaWV3
Lm1tCj09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT0KLS0tIFNvdXJjZS9XZWJLaXQyL1VJUHJvY2Vzcy9tYWMvV0tQcmludGlu
Z1ZpZXcubW0JKHJldmlzaW9uIDE4Mjc5NSkKKysrIFNvdXJjZS9XZWJLaXQyL1VJUHJvY2Vzcy9t
YWMvV0tQcmludGluZ1ZpZXcubW0JKHdvcmtpbmcgY29weSkKQEAgLTI2NSw3ICsyNjUsNyBAQCAt
ICh2b2lkKV9wcmVwYXJlUERGRGF0YUZvclByaW50aW5nT25TZWNvCiAgICAgX3dlYkZyYW1lLT5w
YWdlKCktPmJlZ2luUHJpbnRpbmcoX3dlYkZyYW1lLmdldCgpLCBwcmludEluZm8pOwogCiAgICAg
SVBDQ2FsbGJhY2tDb250ZXh0KiBjb250ZXh0ID0gbmV3IElQQ0NhbGxiYWNrQ29udGV4dDsKLSAg
ICBSZWZQdHI8RGF0YUNhbGxiYWNrPiBjYWxsYmFjayA9IERhdGFDYWxsYmFjazo6Y3JlYXRlKFtj
b250ZXh0XShBUEk6OkRhdGEqIGRhdGEsIENhbGxiYWNrQmFzZTo6RXJyb3IpIHsKKyAgICBSZWZQ
dHI8RGF0YUNhbGxiYWNrPiBjYWxsYmFjayA9IERhdGFDYWxsYmFjazo6Y3JlYXRlKFtjb250ZXh0
XShBUEk6OkRhdGEqIGRhdGEsIFdlYktpdDo6Q2FsbGJhY2tCYXNlOjpFcnJvcikgewogICAgICAg
ICBBU1NFUlQoUnVuTG9vcDo6aXNNYWluKCkpOwogCiAgICAgICAgIHN0ZDo6dW5pcXVlX3B0cjxJ
UENDYWxsYmFja0NvbnRleHQ+IGNvbnRleHREZWxldGVyKGNvbnRleHQpOwpAQCAtMzQwLDcgKzM0
MCw3IEBAIC0gKEJPT0wpX2Fza1BhZ2VUb0NvbXB1dGVQYWdlUmVjdHMKICAgICBBU1NFUlQoIV9l
eHBlY3RlZENvbXB1dGVkUGFnZXNDYWxsYmFjayk7CiAKICAgICBJUENDYWxsYmFja0NvbnRleHQq
IGNvbnRleHQgPSBuZXcgSVBDQ2FsbGJhY2tDb250ZXh0OwotICAgIFJlZlB0cjxDb21wdXRlZFBh
Z2VzQ2FsbGJhY2s+IGNhbGxiYWNrID0gQ29tcHV0ZWRQYWdlc0NhbGxiYWNrOjpjcmVhdGUoW2Nv
bnRleHRdKGNvbnN0IFZlY3RvcjxXZWJDb3JlOjpJbnRSZWN0PiYgcGFnZVJlY3RzLCBkb3VibGUg
dG90YWxTY2FsZUZhY3RvckZvclByaW50aW5nLCBDYWxsYmFja0Jhc2U6OkVycm9yKSB7CisgICAg
UmVmUHRyPENvbXB1dGVkUGFnZXNDYWxsYmFjaz4gY2FsbGJhY2sgPSBDb21wdXRlZFBhZ2VzQ2Fs
bGJhY2s6OmNyZWF0ZShbY29udGV4dF0oY29uc3QgVmVjdG9yPFdlYkNvcmU6OkludFJlY3Q+JiBw
YWdlUmVjdHMsIGRvdWJsZSB0b3RhbFNjYWxlRmFjdG9yRm9yUHJpbnRpbmcsIFdlYktpdDo6Q2Fs
bGJhY2tCYXNlOjpFcnJvcikgewogICAgICAgICBzdGQ6OnVuaXF1ZV9wdHI8SVBDQ2FsbGJhY2tD
b250ZXh0PiBjb250ZXh0RGVsZXRlcihjb250ZXh0KTsKICAgICAgICAgcGFnZURpZENvbXB1dGVQ
YWdlUmVjdHMocGFnZVJlY3RzLCB0b3RhbFNjYWxlRmFjdG9yRm9yUHJpbnRpbmcsIGNvbnRleHQp
OwogICAgIH0pOwpAQCAtNDkyLDcgKzQ5Miw3IEBAIC0gKHZvaWQpX2RyYXdQcmV2aWV3OihOU1Jl
Y3QpbnNSZWN0CiAgICAgICAgICAgICAgICAgX3dlYkZyYW1lLT5wYWdlKCktPmJlZ2luUHJpbnRp
bmcoX3dlYkZyYW1lLmdldCgpLCBQcmludEluZm8oW19wcmludE9wZXJhdGlvbiBwcmludEluZm9d
KSk7CiAKICAgICAgICAgICAgICAgICBJUENDYWxsYmFja0NvbnRleHQqIGNvbnRleHQgPSBuZXcg
SVBDQ2FsbGJhY2tDb250ZXh0OwotICAgICAgICAgICAgICAgIFJlZlB0cjxJbWFnZUNhbGxiYWNr
PiBjYWxsYmFjayA9IEltYWdlQ2FsbGJhY2s6OmNyZWF0ZShbY29udGV4dF0oY29uc3QgU2hhcmVh
YmxlQml0bWFwOjpIYW5kbGUmIGltYWdlSGFuZGxlLCBDYWxsYmFja0Jhc2U6OkVycm9yKSB7Cisg
ICAgICAgICAgICAgICAgUmVmUHRyPEltYWdlQ2FsbGJhY2s+IGNhbGxiYWNrID0gSW1hZ2VDYWxs
YmFjazo6Y3JlYXRlKFtjb250ZXh0XShjb25zdCBTaGFyZWFibGVCaXRtYXA6OkhhbmRsZSYgaW1h
Z2VIYW5kbGUsIFdlYktpdDo6Q2FsbGJhY2tCYXNlOjpFcnJvcikgewogICAgICAgICAgICAgICAg
ICAgICBzdGQ6OnVuaXF1ZV9wdHI8SVBDQ2FsbGJhY2tDb250ZXh0PiBjb250ZXh0RGVsZXRlcihj
b250ZXh0KTsKICAgICAgICAgICAgICAgICAgICAgcGFnZURpZERyYXdUb0ltYWdlKGltYWdlSGFu
ZGxlLCBjb250ZXh0KTsKICAgICAgICAgICAgICAgICB9KTsKSW5kZXg6IFNvdXJjZS9XZWJLaXQy
L1dlYlByb2Nlc3MvUGx1Z2lucy9QbHVnaW5WaWV3LmNwcAo9PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09Ci0tLSBTb3VyY2Uv
V2ViS2l0Mi9XZWJQcm9jZXNzL1BsdWdpbnMvUGx1Z2luVmlldy5jcHAJKHJldmlzaW9uIDE4Mjc5
NSkKKysrIFNvdXJjZS9XZWJLaXQyL1dlYlByb2Nlc3MvUGx1Z2lucy9QbHVnaW5WaWV3LmNwcAko
d29ya2luZyBjb3B5KQpAQCAtMTQ1Niw3ICsxNDU2LDcgQEAgdm9pZCBQbHVnaW5WaWV3OjpzZXRQ
bHVnaW5Jc1BsYXlpbmdBdWRpbwogICAgICAgICByZXR1cm47CiAKICAgICBtX3BsdWdpbklzUGxh
eWluZ0F1ZGlvID0gcGx1Z2luSXNQbGF5aW5nQXVkaW87Ci0gICAgbV9wbHVnaW5FbGVtZW50LT5k
b2N1bWVudCgpLnVwZGF0ZUlzUGxheWluZ0F1ZGlvKCk7CisgICAgbV9wbHVnaW5FbGVtZW50LT5k
b2N1bWVudCgpLnVwZGF0ZUlzUGxheWluZ01lZGlhKCk7CiB9CiAKIGJvb2wgUGx1Z2luVmlldzo6
aXNNdXRlZCgpIGNvbnN0CkluZGV4OiBTb3VyY2UvV2ViS2l0Mi9XZWJQcm9jZXNzL1dlYkNvcmVT
dXBwb3J0L1dlYkNocm9tZUNsaWVudC5jcHAKPT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PQotLS0gU291cmNlL1dlYktpdDIv
V2ViUHJvY2Vzcy9XZWJDb3JlU3VwcG9ydC9XZWJDaHJvbWVDbGllbnQuY3BwCShyZXZpc2lvbiAx
ODI3OTUpCisrKyBTb3VyY2UvV2ViS2l0Mi9XZWJQcm9jZXNzL1dlYkNvcmVTdXBwb3J0L1dlYkNo
cm9tZUNsaWVudC5jcHAJKHdvcmtpbmcgY29weSkKQEAgLTEwNTAsOSArMTA1MCw5IEBAIGJvb2wg
V2ViQ2hyb21lQ2xpZW50OjpzaG91bGRVc2VUaWxlZEJhY2sKICAgICByZXR1cm4gbV9wYWdlLT5k
cmF3aW5nQXJlYSgpLT5zaG91bGRVc2VUaWxlZEJhY2tpbmdGb3JGcmFtZVZpZXcoZnJhbWVWaWV3
KTsKIH0KIAotdm9pZCBXZWJDaHJvbWVDbGllbnQ6OmlzUGxheWluZ0F1ZGlvRGlkQ2hhbmdlKGJv
b2wgbmV3SXNQbGF5aW5nQXVkaW8pCit2b2lkIFdlYkNocm9tZUNsaWVudDo6aXNQbGF5aW5nTWVk
aWFEaWRDaGFuZ2UoTWVkaWFTdGF0ZUZsYWdzIHN0YXRlKQogewotICAgIG1fcGFnZS0+c2VuZChN
ZXNzYWdlczo6V2ViUGFnZVByb3h5OjpJc1BsYXlpbmdBdWRpb0RpZENoYW5nZShuZXdJc1BsYXlp
bmdBdWRpbykpOworICAgIG1fcGFnZS0+c2VuZChNZXNzYWdlczo6V2ViUGFnZVByb3h5OjpJc1Bs
YXlpbmdNZWRpYURpZENoYW5nZShzdGF0ZSkpOwogfQogCiB2b2lkIFdlYkNocm9tZUNsaWVudDo6
c2V0UGFnZUFjdGl2aXR5U3RhdGUoUGFnZUFjdGl2aXR5U3RhdGU6OkZsYWdzIGFjdGl2aXR5U3Rh
dGUpCkluZGV4OiBTb3VyY2UvV2ViS2l0Mi9XZWJQcm9jZXNzL1dlYkNvcmVTdXBwb3J0L1dlYkNo
cm9tZUNsaWVudC5oCj09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT0KLS0tIFNvdXJjZS9XZWJLaXQyL1dlYlByb2Nlc3MvV2Vi
Q29yZVN1cHBvcnQvV2ViQ2hyb21lQ2xpZW50LmgJKHJldmlzaW9uIDE4Mjc5NSkKKysrIFNvdXJj
ZS9XZWJLaXQyL1dlYlByb2Nlc3MvV2ViQ29yZVN1cHBvcnQvV2ViQ2hyb21lQ2xpZW50LmgJKHdv
cmtpbmcgY29weSkKQEAgLTI5Miw3ICsyOTIsNyBAQCBwcml2YXRlOgogCiAgICAgdmlydHVhbCBi
b29sIHNob3VsZFVzZVRpbGVkQmFja2luZ0ZvckZyYW1lVmlldyhjb25zdCBXZWJDb3JlOjpGcmFt
ZVZpZXcqKSBjb25zdCBvdmVycmlkZTsKIAotICAgIHZpcnR1YWwgdm9pZCBpc1BsYXlpbmdBdWRp
b0RpZENoYW5nZShib29sKSBvdmVycmlkZTsKKyAgICB2aXJ0dWFsIHZvaWQgaXNQbGF5aW5nTWVk
aWFEaWRDaGFuZ2UoTWVkaWFTdGF0ZUZsYWdzKSBvdmVycmlkZTsKICAgICB2aXJ0dWFsIHZvaWQg
c2V0UGFnZUFjdGl2aXR5U3RhdGUoV2ViQ29yZTo6UGFnZUFjdGl2aXR5U3RhdGU6OkZsYWdzKSBv
dmVycmlkZTsKIAogI2lmIEVOQUJMRShTVUJUTEVfQ1JZUFRPKQo=
</data>

          </attachment>
          <attachment
              isobsolete="1"
              ispatch="1"
              isprivate="0"
          >
            <attachid>250786</attachid>
            <date>2015-04-15 05:46:35 -0700</date>
            <delta_ts>2015-04-15 08:50:51 -0700</delta_ts>
            <desc>Patch for the bots.</desc>
            <filename>media_play_state_patch_4.txt</filename>
            <type>text/plain</type>
            <size>43999</size>
            <attacher name="Eric Carlson">eric.carlson</attacher>
            
              <data encoding="base64">SW5kZXg6IFNvdXJjZS9XZWJDb3JlL0NoYW5nZUxvZwo9PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09Ci0tLSBTb3VyY2UvV2Vi
Q29yZS9DaGFuZ2VMb2cJKHJldmlzaW9uIDE4MjgwNikKKysrIFNvdXJjZS9XZWJDb3JlL0NoYW5n
ZUxvZwkod29ya2luZyBjb3B5KQpAQCAtMSwzICsxLDMzIEBACisyMDE1LTA0LTE0ICBFcmljIENh
cmxzb24gIDxlcmljLmNhcmxzb25AYXBwbGUuY29tPgorCisgICAgICAgIEdlbmVyYWxpemUgImlz
UGxheWluZ0F1ZGlvIiB0byBpbmNsdWRlIG90aGVyIG1lZGlhIGNoYXJhY3RlcmlzdGljcworICAg
ICAgICBodHRwczovL2J1Z3Mud2Via2l0Lm9yZy9zaG93X2J1Zy5jZ2k/aWQ9MTQzNzEzCisKKyAg
ICAgICAgUmV2aWV3ZWQgYnkgSmVyIE5vYmxlLgorCisgICAgICAgIE5vIG5ldyBmdW5jdGlvbmFs
aXR5LgorCisgICAgICAgICogTW9kdWxlcy93ZWJhdWRpby9BdWRpb0NvbnRleHQuY3BwOgorICAg
ICAgICAoV2ViQ29yZTo6QXVkaW9Db250ZXh0OjpzdG9wKTogdXBkYXRlSXNQbGF5aW5nQXVkaW8g
LT4gdXBkYXRlSXNQbGF5aW5nTWVkaWEuCisgICAgICAgIChXZWJDb3JlOjpBdWRpb0NvbnRleHQ6
OmlzUGxheWluZ0F1ZGlvRGlkQ2hhbmdlKTogRGl0dG8uCisKKyAgICAgICAgKiBkb20vRG9jdW1l
bnQuY3BwOgorICAgICAgICAoV2ViQ29yZTo6RG9jdW1lbnQ6OmFkZEF1ZGlvUHJvZHVjZXIpOiBE
aXR0by4KKyAgICAgICAgKFdlYkNvcmU6OkRvY3VtZW50OjpyZW1vdmVBdWRpb1Byb2R1Y2VyKTog
RGl0dG8uCisgICAgICAgIChXZWJDb3JlOjpEb2N1bWVudDo6dXBkYXRlSXNQbGF5aW5nTWVkaWEp
OiBSZW5hbWVkLgorICAgICAgICAoV2ViQ29yZTo6RG9jdW1lbnQ6OnVwZGF0ZUlzUGxheWluZ0F1
ZGlvKTogRGVsZXRlZC4KKyAgICAgICAgKiBkb20vRG9jdW1lbnQuaDoKKworICAgICAgICAqIGh0
bWwvSFRNTE1lZGlhRWxlbWVudC5jcHA6CisgICAgICAgIChXZWJDb3JlOjpIVE1MTWVkaWFFbGVt
ZW50OjpzZXRNdXRlZCk6IHVwZGF0ZUlzUGxheWluZ0F1ZGlvIC0+IHVwZGF0ZUlzUGxheWluZ01l
ZGlhLgorICAgICAgICAoV2ViQ29yZTo6SFRNTE1lZGlhRWxlbWVudDo6c2V0UGxheWluZyk6IERp
dHRvLgorCisgICAgICAgICogcGFnZS9DaHJvbWVDbGllbnQuaDoKKyAgICAgICAgKiBwYWdlL1Bh
Z2UuY3BwOgorICAgICAgICAoV2ViQ29yZTo6UGFnZTo6dXBkYXRlSXNQbGF5aW5nTWVkaWEpOiBS
ZW5hbWVkLgorICAgICAgICAoV2ViQ29yZTo6UGFnZTo6dXBkYXRlSXNQbGF5aW5nQXVkaW8pOiBE
ZWxldGVkLgorICAgICAgICAqIHBhZ2UvUGFnZS5oOgorCiAyMDE1LTA0LTE0ICBDaHJpcyBEdW1l
eiAgPGNkdW1lekBhcHBsZS5jb20+CiAKICAgICAgICAgRnJhbWVWaWV3OjptX2ZyYW1lIHNob3Vs
ZCBiZSBhIFJlZjxGcmFtZT4KSW5kZXg6IFNvdXJjZS9XZWJDb3JlL01vZHVsZXMvd2ViYXVkaW8v
QXVkaW9Db250ZXh0LmNwcAo9PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09Ci0tLSBTb3VyY2UvV2ViQ29yZS9Nb2R1bGVzL3dl
YmF1ZGlvL0F1ZGlvQ29udGV4dC5jcHAJKHJldmlzaW9uIDE4Mjc5NSkKKysrIFNvdXJjZS9XZWJD
b3JlL01vZHVsZXMvd2ViYXVkaW8vQXVkaW9Db250ZXh0LmNwcAkod29ya2luZyBjb3B5KQpAQCAt
MzQ0LDcgKzM0NCw3IEBAIHZvaWQgQXVkaW9Db250ZXh0OjpzdG9wKCkKICAgICAgICAgcmV0dXJu
OwogICAgIG1faXNTdG9wU2NoZWR1bGVkID0gdHJ1ZTsKIAotICAgIGRvY3VtZW50KCktPnVwZGF0
ZUlzUGxheWluZ0F1ZGlvKCk7CisgICAgZG9jdW1lbnQoKS0+dXBkYXRlSXNQbGF5aW5nTWVkaWEo
KTsKIAogICAgIG1fZXZlbnRRdWV1ZS0+Y2xvc2UoKTsKIApAQCAtMTAzOCw3ICsxMDM4LDcgQEAg
dm9pZCBBdWRpb0NvbnRleHQ6OnBhZ2VNdXRlZFN0YXRlRGlkQ2hhbgogCiB2b2lkIEF1ZGlvQ29u
dGV4dDo6aXNQbGF5aW5nQXVkaW9EaWRDaGFuZ2UoKQogewotICAgIGRvY3VtZW50KCktPnVwZGF0
ZUlzUGxheWluZ0F1ZGlvKCk7CisgICAgZG9jdW1lbnQoKS0+dXBkYXRlSXNQbGF5aW5nTWVkaWEo
KTsKIH0KIAogdm9pZCBBdWRpb0NvbnRleHQ6OmZpcmVDb21wbGV0aW9uRXZlbnQoKQpJbmRleDog
U291cmNlL1dlYkNvcmUvZG9tL0RvY3VtZW50LmNwcAo9PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09Ci0tLSBTb3VyY2UvV2Vi
Q29yZS9kb20vRG9jdW1lbnQuY3BwCShyZXZpc2lvbiAxODI3OTUpCisrKyBTb3VyY2UvV2ViQ29y
ZS9kb20vRG9jdW1lbnQuY3BwCSh3b3JraW5nIGNvcHkpCkBAIC0zNDE2LDE2ICszNDE2LDE2IEBA
IHZvaWQgRG9jdW1lbnQ6OnVwZGF0ZVZpZXdwb3J0VW5pdHNPblJlc2kKIHZvaWQgRG9jdW1lbnQ6
OmFkZEF1ZGlvUHJvZHVjZXIoQXVkaW9Qcm9kdWNlciogYXVkaW9Qcm9kdWNlcikKIHsKICAgICBt
X2F1ZGlvUHJvZHVjZXJzLmFkZChhdWRpb1Byb2R1Y2VyKTsKLSAgICB1cGRhdGVJc1BsYXlpbmdB
dWRpbygpOworICAgIHVwZGF0ZUlzUGxheWluZ01lZGlhKCk7CiB9CiAKIHZvaWQgRG9jdW1lbnQ6
OnJlbW92ZUF1ZGlvUHJvZHVjZXIoQXVkaW9Qcm9kdWNlciogYXVkaW9Qcm9kdWNlcikKIHsKICAg
ICBtX2F1ZGlvUHJvZHVjZXJzLnJlbW92ZShhdWRpb1Byb2R1Y2VyKTsKLSAgICB1cGRhdGVJc1Bs
YXlpbmdBdWRpbygpOworICAgIHVwZGF0ZUlzUGxheWluZ01lZGlhKCk7CiB9CiAKLXZvaWQgRG9j
dW1lbnQ6OnVwZGF0ZUlzUGxheWluZ0F1ZGlvKCkKK3ZvaWQgRG9jdW1lbnQ6OnVwZGF0ZUlzUGxh
eWluZ01lZGlhKCkKIHsKICAgICBib29sIGlzUGxheWluZ0F1ZGlvID0gZmFsc2U7CiAgICAgZm9y
IChhdXRvIGF1ZGlvUHJvZHVjZXIgOiBtX2F1ZGlvUHJvZHVjZXJzKSB7CkBAIC0zNDQxLDcgKzM0
NDEsNyBAQCB2b2lkIERvY3VtZW50Ojp1cGRhdGVJc1BsYXlpbmdBdWRpbygpCiAgICAgbV9pc1Bs
YXlpbmdBdWRpbyA9IGlzUGxheWluZ0F1ZGlvOwogCiAgICAgaWYgKHBhZ2UoKSkKLSAgICAgICAg
cGFnZSgpLT51cGRhdGVJc1BsYXlpbmdBdWRpbygpOworICAgICAgICBwYWdlKCktPnVwZGF0ZUlz
UGxheWluZ01lZGlhKCk7CiB9CiAKIHZvaWQgRG9jdW1lbnQ6OnBhZ2VNdXRlZFN0YXRlRGlkQ2hh
bmdlKCkKSW5kZXg6IFNvdXJjZS9XZWJDb3JlL2RvbS9Eb2N1bWVudC5oCj09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT0KLS0t
IFNvdXJjZS9XZWJDb3JlL2RvbS9Eb2N1bWVudC5oCShyZXZpc2lvbiAxODI3OTUpCisrKyBTb3Vy
Y2UvV2ViQ29yZS9kb20vRG9jdW1lbnQuaAkod29ya2luZyBjb3B5KQpAQCAtMTIyOSw3ICsxMjI5
LDcgQEAgcHVibGljOgogICAgIFdFQkNPUkVfRVhQT1JUIHZvaWQgYWRkQXVkaW9Qcm9kdWNlcihB
dWRpb1Byb2R1Y2VyKik7CiAgICAgV0VCQ09SRV9FWFBPUlQgdm9pZCByZW1vdmVBdWRpb1Byb2R1
Y2VyKEF1ZGlvUHJvZHVjZXIqKTsKICAgICBib29sIGlzUGxheWluZ0F1ZGlvKCkgY29uc3QgeyBy
ZXR1cm4gbV9pc1BsYXlpbmdBdWRpbzsgfQotICAgIFdFQkNPUkVfRVhQT1JUIHZvaWQgdXBkYXRl
SXNQbGF5aW5nQXVkaW8oKTsKKyAgICBXRUJDT1JFX0VYUE9SVCB2b2lkIHVwZGF0ZUlzUGxheWlu
Z01lZGlhKCk7CiAgICAgdm9pZCBwYWdlTXV0ZWRTdGF0ZURpZENoYW5nZSgpOwogICAgIFdlYWtQ
dHI8RG9jdW1lbnQ+IGNyZWF0ZVdlYWtQdHIoKSB7IHJldHVybiBtX3dlYWtGYWN0b3J5LmNyZWF0
ZVdlYWtQdHIoKTsgfQogCkluZGV4OiBTb3VyY2UvV2ViQ29yZS9odG1sL0hUTUxNZWRpYUVsZW1l
bnQuY3BwCj09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT0KLS0tIFNvdXJjZS9XZWJDb3JlL2h0bWwvSFRNTE1lZGlhRWxlbWVu
dC5jcHAJKHJldmlzaW9uIDE4Mjc5NSkKKysrIFNvdXJjZS9XZWJDb3JlL2h0bWwvSFRNTE1lZGlh
RWxlbWVudC5jcHAJKHdvcmtpbmcgY29weSkKQEAgLTI5OTUsNyArMjk5NSw3IEBAIHZvaWQgSFRN
TE1lZGlhRWxlbWVudDo6c2V0TXV0ZWQoYm9vbCBtdXQKICAgICAgICAgICAgIH0KICAgICAgICAg
fQogICAgICAgICBzY2hlZHVsZUV2ZW50KGV2ZW50TmFtZXMoKS52b2x1bWVjaGFuZ2VFdmVudCk7
Ci0gICAgICAgIGRvY3VtZW50KCkudXBkYXRlSXNQbGF5aW5nQXVkaW8oKTsKKyAgICAgICAgZG9j
dW1lbnQoKS51cGRhdGVJc1BsYXlpbmdNZWRpYSgpOwogICAgIH0KICNlbmRpZgogfQpAQCAtNDMy
Myw3ICs0MzIzLDcgQEAgdm9pZCBIVE1MTWVkaWFFbGVtZW50OjptZWRpYVBsYXllckNoYXJhYwog
ICAgIGlmIChyZW5kZXJlcigpKQogICAgICAgICByZW5kZXJlcigpLT51cGRhdGVGcm9tRWxlbWVu
dCgpOwogCi0gICAgZG9jdW1lbnQoKS51cGRhdGVJc1BsYXlpbmdBdWRpbygpOworICAgIGRvY3Vt
ZW50KCkudXBkYXRlSXNQbGF5aW5nTWVkaWEoKTsKIAogICAgIGVuZFByb2Nlc3NpbmdNZWRpYVBs
YXllckNhbGxiYWNrKCk7CiB9CkBAIC00NTc4LDcgKzQ1NzgsNyBAQCB2b2lkIEhUTUxNZWRpYUVs
ZW1lbnQ6OnNldFBsYXlpbmcoYm9vbCBwCiAgICAgICAgIHJldHVybjsKICAgICAKICAgICBtX3Bs
YXlpbmcgPSBwbGF5aW5nOwotICAgIGRvY3VtZW50KCkudXBkYXRlSXNQbGF5aW5nQXVkaW8oKTsK
KyAgICBkb2N1bWVudCgpLnVwZGF0ZUlzUGxheWluZ01lZGlhKCk7CiB9CiAKIHZvaWQgSFRNTE1l
ZGlhRWxlbWVudDo6c2V0UGF1c2VkSW50ZXJuYWwoYm9vbCBiKQpJbmRleDogU291cmNlL1dlYkNv
cmUvcGFnZS9DaHJvbWVDbGllbnQuaAo9PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09Ci0tLSBTb3VyY2UvV2ViQ29yZS9wYWdl
L0Nocm9tZUNsaWVudC5oCShyZXZpc2lvbiAxODI3OTUpCisrKyBTb3VyY2UvV2ViQ29yZS9wYWdl
L0Nocm9tZUNsaWVudC5oCSh3b3JraW5nIGNvcHkpCkBAIC00MjMsNyArNDIzLDE1IEBAIHB1Ymxp
YzoKIAogICAgIHZpcnR1YWwgYm9vbCBzaG91bGRVc2VUaWxlZEJhY2tpbmdGb3JGcmFtZVZpZXco
Y29uc3QgRnJhbWVWaWV3KikgY29uc3QgeyByZXR1cm4gZmFsc2U7IH0KIAotICAgIHZpcnR1YWwg
dm9pZCBpc1BsYXlpbmdBdWRpb0RpZENoYW5nZShib29sKSB7IH0KKyAgICBlbnVtIE1lZGlhU3Rh
dGUgeworICAgICAgICBJc05vdFBsYXlpbmcgPSAwLAorICAgICAgICBJc1BsYXlpbmdBdWRpbyA9
IDEgPDwgMCwKKyAgICAgICAgSXNQbGF5aW5nVmlkZW8gPSAxIDw8IDEsCisgICAgICAgIElzUGxh
eWluZ1RvRXh0ZXJuYWxEZXZpY2UgPSAxIDw8IDIsCisgICAgfTsKKyAgICB0eXBlZGVmIHVuc2ln
bmVkIE1lZGlhU3RhdGVGbGFnczsKKyAgICB2aXJ0dWFsIHZvaWQgaXNQbGF5aW5nTWVkaWFEaWRD
aGFuZ2UoTWVkaWFTdGF0ZUZsYWdzKSB7IH0KKwogICAgIHZpcnR1YWwgdm9pZCBzZXRQYWdlQWN0
aXZpdHlTdGF0ZShQYWdlQWN0aXZpdHlTdGF0ZTo6RmxhZ3MpIHsgfQogCiAjaWYgRU5BQkxFKFNV
QlRMRV9DUllQVE8pCkluZGV4OiBTb3VyY2UvV2ViQ29yZS9wYWdlL1BhZ2UuY3BwCj09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT0KLS0tIFNvdXJjZS9XZWJDb3JlL3BhZ2UvUGFnZS5jcHAJKHJldmlzaW9uIDE4Mjc5NSkKKysr
IFNvdXJjZS9XZWJDb3JlL3BhZ2UvUGFnZS5jcHAJKHdvcmtpbmcgY29weSkKQEAgLTEwOCw3ICsx
MDgsNiBAQAogI2lmIEVOQUJMRShXSVJFTEVTU19QTEFZQkFDS19UQVJHRVQpCiAjaW5jbHVkZSAi
SFRNTFZpZGVvRWxlbWVudC5oIgogI2luY2x1ZGUgIk1lZGlhUGxheWJhY2tUYXJnZXQuaCIKLSNp
bmNsdWRlICJNZWRpYVBsYXliYWNrVGFyZ2V0UGlja2VyQ2xpZW50LmgiCiAjZW5kaWYKIAogbmFt
ZXNwYWNlIFdlYkNvcmUgewpAQCAtMTE5OCw3ICsxMTk3LDcgQEAgdm9pZCBQYWdlOjplbmFibGVM
ZWdhY3lQcml2YXRlQnJvd3NpbmcoYgogICAgIHNldFNlc3Npb25JRChwcml2YXRlQnJvd3NpbmdF
bmFibGVkID8gU2Vzc2lvbklEOjpsZWdhY3lQcml2YXRlU2Vzc2lvbklEKCkgOiBTZXNzaW9uSUQ6
OmRlZmF1bHRTZXNzaW9uSUQoKSk7CiB9CiAKLXZvaWQgUGFnZTo6dXBkYXRlSXNQbGF5aW5nQXVk
aW8oKQordm9pZCBQYWdlOjp1cGRhdGVJc1BsYXlpbmdNZWRpYSgpCiB7CiAgICAgYm9vbCBpc1Bs
YXlpbmdBdWRpbyA9IGZhbHNlOwogICAgIGZvciAoRnJhbWUqIGZyYW1lID0gJm1haW5GcmFtZSgp
OyBmcmFtZTsgZnJhbWUgPSBmcmFtZS0+dHJlZSgpLnRyYXZlcnNlTmV4dCgpKSB7CkBAIC0xMjEz
LDcgKzEyMTIsNyBAQCB2b2lkIFBhZ2U6OnVwZGF0ZUlzUGxheWluZ0F1ZGlvKCkKIAogICAgIG1f
aXNQbGF5aW5nQXVkaW8gPSBpc1BsYXlpbmdBdWRpbzsKIAotICAgIGNocm9tZSgpLmNsaWVudCgp
LmlzUGxheWluZ0F1ZGlvRGlkQ2hhbmdlKG1faXNQbGF5aW5nQXVkaW8pOworICAgIGNocm9tZSgp
LmNsaWVudCgpLmlzUGxheWluZ01lZGlhRGlkQ2hhbmdlKG1faXNQbGF5aW5nQXVkaW8gPyBDaHJv
bWVDbGllbnQ6OklzUGxheWluZ0F1ZGlvIDogQ2hyb21lQ2xpZW50OjpJc05vdFBsYXlpbmcpOwog
fQogCiB2b2lkIFBhZ2U6OnNldE11dGVkKGJvb2wgbXV0ZWQpCkluZGV4OiBTb3VyY2UvV2ViQ29y
ZS9wYWdlL1BhZ2UuaAo9PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09Ci0tLSBTb3VyY2UvV2ViQ29yZS9wYWdlL1BhZ2UuaAko
cmV2aXNpb24gMTgyNzk1KQorKysgU291cmNlL1dlYkNvcmUvcGFnZS9QYWdlLmgJKHdvcmtpbmcg
Y29weSkKQEAgLTQyMyw3ICs0MjMsNyBAQCBwdWJsaWM6CiAgICAgYm9vbCB1c2VzRXBoZW1lcmFs
U2Vzc2lvbigpIGNvbnN0IHsgcmV0dXJuIG1fc2Vzc2lvbklELmlzRXBoZW1lcmFsKCk7IH0KIAog
ICAgIGJvb2wgaXNQbGF5aW5nQXVkaW8oKSBjb25zdCB7IHJldHVybiBtX2lzUGxheWluZ0F1ZGlv
OyB9Ci0gICAgdm9pZCB1cGRhdGVJc1BsYXlpbmdBdWRpbygpOworICAgIHZvaWQgdXBkYXRlSXNQ
bGF5aW5nTWVkaWEoKTsKICAgICBib29sIGlzTXV0ZWQoKSBjb25zdCB7IHJldHVybiBtX211dGVk
OyB9CiAgICAgV0VCQ09SRV9FWFBPUlQgdm9pZCBzZXRNdXRlZChib29sKTsKIApJbmRleDogU291
cmNlL1dlYktpdDIvQ2hhbmdlTG9nCj09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT0KLS0tIFNvdXJjZS9XZWJLaXQyL0NoYW5n
ZUxvZwkocmV2aXNpb24gMTgyODA2KQorKysgU291cmNlL1dlYktpdDIvQ2hhbmdlTG9nCSh3b3Jr
aW5nIGNvcHkpCkBAIC0xLDMgKzEsNTQgQEAKKzIwMTUtMDQtMTQgIEVyaWMgQ2FybHNvbiAgPGVy
aWMuY2FybHNvbkBhcHBsZS5jb20+CisKKyAgICAgICAgR2VuZXJhbGl6ZSAiaXNQbGF5aW5nQXVk
aW8iIHRvIGluY2x1ZGUgb3RoZXIgbWVkaWEgY2hhcmFjdGVyaXN0aWNzCisgICAgICAgIGh0dHBz
Oi8vYnVncy53ZWJraXQub3JnL3Nob3dfYnVnLmNnaT9pZD0xNDM3MTMKKworICAgICAgICBSZXZp
ZXdlZCBieSBKZXIgTm9ibGUuCisKKyAgICAgICAgKiBVSVByb2Nlc3MvQVBJL0MvV0tQYWdlLmNw
cDoKKyAgICAgICAgKHRvR2VuZXJpY0NhbGxiYWNrRnVuY3Rpb24pOiBTY29wZSBDYWxsYmFja0Jh
c2UuCisgICAgICAgIChXS1BhZ2VGb3JjZVJlcGFpbnQpOiBEaXR0by4KKyAgICAgICAgKFdLUGFn
ZVZhbGlkYXRlQ29tbWFuZCk6IERpdHRvLgorICAgICAgICAoV0tQYWdlQ29tcHV0ZVBhZ2VzRm9y
UHJpbnRpbmcpOiBEaXR0by4KKworICAgICAgICAqIFVJUHJvY2Vzcy9BUEkvQ29jb2EvX1dLVGh1
bWJuYWlsVmlldy5tbToKKyAgICAgICAgKC1bX1dLVGh1bWJuYWlsVmlldyBfcmVxdWVzdFNuYXBz
aG90SWZOZWVkZWRdKTogRGl0dG8uCisKKyAgICAgICAgKiBVSVByb2Nlc3MvQVBJL21hYy9XS1Zp
ZXcubW06CisgICAgICAgICgtW1dLVmlldyBiZWNvbWVGaXJzdFJlc3BvbmRlcl0pOiBEaXR0by4K
KyAgICAgICAgKC1bV0tWaWV3IHVwZGF0ZUZvbnRQYW5lbElmTmVlZGVkXSk6IERpdHRvLgorICAg
ICAgICAoLVtXS1ZpZXcgdmFsaWRhdGVVc2VySW50ZXJmYWNlSXRlbTpdKTogRGl0dG8uCisgICAg
ICAgICgtW1dLVmlldyBzdGFydFNwZWFraW5nOl0pOiBEaXR0by4KKyAgICAgICAgKC1bV0tWaWV3
IHNlbGVjdGVkUmFuZ2VXaXRoQ29tcGxldGlvbkhhbmRsZXI6XSk6IERpdHRvLgorICAgICAgICAo
LVtXS1ZpZXcgbWFya2VkUmFuZ2VXaXRoQ29tcGxldGlvbkhhbmRsZXI6XSk6IERpdHRvLgorICAg
ICAgICAoLVtXS1ZpZXcgaGFzTWFya2VkVGV4dFdpdGhDb21wbGV0aW9uSGFuZGxlcjpdKTogRGl0
dG8uCisgICAgICAgICgtW1dLVmlldyBhdHRyaWJ1dGVkU3Vic3RyaW5nRm9yUHJvcG9zZWRSYW5n
ZTpjb21wbGV0aW9uSGFuZGxlcjpdKTogRGl0dG8uCisgICAgICAgICgtW1dLVmlldyBmaXJzdFJl
Y3RGb3JDaGFyYWN0ZXJSYW5nZTpjb21wbGV0aW9uSGFuZGxlcjpdKTogRGl0dG8uCisgICAgICAg
ICgtW1dLVmlldyBjaGFyYWN0ZXJJbmRleEZvclBvaW50OmNvbXBsZXRpb25IYW5kbGVyOl0pOiBE
aXR0by4KKworICAgICAgICAqIFVJUHJvY2Vzcy9XZWJQYWdlUHJveHkuY3BwOgorICAgICAgICAo
V2ViS2l0OjpXZWJQYWdlUHJveHk6OmlzUGxheWluZ01lZGlhRGlkQ2hhbmdlKTogUmVuYW1lIGZy
b20gaXNQbGF5aW5nQXVkaW9EaWRDaGFuZ2UuCisgICAgICAgIChXZWJLaXQ6OldlYlBhZ2VQcm94
eTo6aXNQbGF5aW5nQXVkaW9EaWRDaGFuZ2UpOiBEZWxldGVkLgorICAgICAgICAqIFVJUHJvY2Vz
cy9XZWJQYWdlUHJveHkuaDoKKworICAgICAgICAqIFVJUHJvY2Vzcy9XZWJQYWdlUHJveHkubWVz
c2FnZXMuaW46CisKKyAgICAgICAgKiBVSVByb2Nlc3MvbWFjL1dLRnVsbFNjcmVlbldpbmRvd0Nv
bnRyb2xsZXIubW06CisgICAgICAgICgtW1dLRnVsbFNjcmVlbldpbmRvd0NvbnRyb2xsZXIgZGVh
bGxvY10pOiBTY29wZSBDYWxsYmFja0Jhc2UuCisgICAgICAgICgtW1dLRnVsbFNjcmVlbldpbmRv
d0NvbnRyb2xsZXIgZmluaXNoZWRFeGl0RnVsbFNjcmVlbkFuaW1hdGlvbjpdKTogRGl0dG8uCisK
KyAgICAgICAgKiBVSVByb2Nlc3MvbWFjL1dLUHJpbnRpbmdWaWV3Lm1tOgorICAgICAgICAoLVtX
S1ByaW50aW5nVmlldyBfcHJlcGFyZVBERkRhdGFGb3JQcmludGluZ09uU2Vjb25kYXJ5VGhyZWFk
XSk6IERpdHRvLgorICAgICAgICAoLVtXS1ByaW50aW5nVmlldyBfYXNrUGFnZVRvQ29tcHV0ZVBh
Z2VSZWN0c10pOiBEaXR0by4KKyAgICAgICAgKC1bV0tQcmludGluZ1ZpZXcgX2RyYXdQcmV2aWV3
Ol0pOiBEaXR0by4KKworICAgICAgICAqIFdlYlByb2Nlc3MvUGx1Z2lucy9QbHVnaW5WaWV3LmNw
cDoKKyAgICAgICAgKFdlYktpdDo6UGx1Z2luVmlldzo6c2V0UGx1Z2luSXNQbGF5aW5nQXVkaW8p
OgorICAgICAgICAqIFdlYlByb2Nlc3MvV2ViQ29yZVN1cHBvcnQvV2ViQ2hyb21lQ2xpZW50LmNw
cDoKKyAgICAgICAgKFdlYktpdDo6V2ViQ2hyb21lQ2xpZW50Ojppc1BsYXlpbmdNZWRpYURpZENo
YW5nZSk6CisgICAgICAgIChXZWJLaXQ6OldlYkNocm9tZUNsaWVudDo6aXNQbGF5aW5nQXVkaW9E
aWRDaGFuZ2UpOiBEZWxldGVkLgorICAgICAgICAqIFdlYlByb2Nlc3MvV2ViQ29yZVN1cHBvcnQv
V2ViQ2hyb21lQ2xpZW50Lmg6CisKIDIwMTUtMDQtMTQgIEFuZGVycyBDYXJsc3NvbiAgPGFuZGVy
c2NhQGFwcGxlLmNvbT4KIAogICAgICAgICBNb3JlIHdvcmsgb24gbWFraW5nIHRoZSBTaGFyZWRN
ZW1vcnkgaW50ZXJmYWNlIG1vcmUgc2FuZQpJbmRleDogU291cmNlL1dlYktpdDIvVUlQcm9jZXNz
L1dlYlBhZ2VQcm94eS5jcHAKPT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PQotLS0gU291cmNlL1dlYktpdDIvVUlQcm9jZXNz
L1dlYlBhZ2VQcm94eS5jcHAJKHJldmlzaW9uIDE4Mjc5NSkKKysrIFNvdXJjZS9XZWJLaXQyL1VJ
UHJvY2Vzcy9XZWJQYWdlUHJveHkuY3BwCSh3b3JraW5nIGNvcHkpCkBAIC01NjQwLDEyICs1NjQw
LDEzIEBAIHZvaWQgV2ViUGFnZVByb3h5OjpuYXZpZ2F0aW9uR2VzdHVyZVNuYXAKICAgICBtX2lz
U2hvd2luZ05hdmlnYXRpb25HZXN0dXJlU25hcHNob3QgPSBmYWxzZTsKIH0KIAotdm9pZCBXZWJQ
YWdlUHJveHk6OmlzUGxheWluZ0F1ZGlvRGlkQ2hhbmdlKGJvb2wgbmV3SXNQbGF5aW5nQXVkaW8p
Cit2b2lkIFdlYlBhZ2VQcm94eTo6aXNQbGF5aW5nTWVkaWFEaWRDaGFuZ2UoV2ViQ29yZTo6Q2hy
b21lQ2xpZW50OjpNZWRpYVN0YXRlRmxhZ3Mgc3RhdGUpCiB7Ci0gICAgaWYgKG1faXNQbGF5aW5n
QXVkaW8gPT0gbmV3SXNQbGF5aW5nQXVkaW8pCisgICAgYm9vbCBpc1BsYXlpbmdBdWRpbyA9IHN0
YXRlICYgV2ViQ29yZTo6Q2hyb21lQ2xpZW50OjpJc1BsYXlpbmdBdWRpbzsKKyAgICBpZiAobV9p
c1BsYXlpbmdBdWRpbyA9PSBpc1BsYXlpbmdBdWRpbykKICAgICAgICAgcmV0dXJuOwogCi0gICAg
bV9pc1BsYXlpbmdBdWRpbyA9IG5ld0lzUGxheWluZ0F1ZGlvOworICAgIG1faXNQbGF5aW5nQXVk
aW8gPSBpc1BsYXlpbmdBdWRpbzsKICAgICBtX3VpQ2xpZW50LT5pc1BsYXlpbmdBdWRpb0RpZENo
YW5nZSgqdGhpcyk7CiB9CiAKSW5kZXg6IFNvdXJjZS9XZWJLaXQyL1VJUHJvY2Vzcy9XZWJQYWdl
UHJveHkuaAo9PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09Ci0tLSBTb3VyY2UvV2ViS2l0Mi9VSVByb2Nlc3MvV2ViUGFnZVBy
b3h5LmgJKHJldmlzaW9uIDE4Mjc5NSkKKysrIFNvdXJjZS9XZWJLaXQyL1VJUHJvY2Vzcy9XZWJQ
YWdlUHJveHkuaAkod29ya2luZyBjb3B5KQpAQCAtNjMsNiArNjMsNyBAQAogI2luY2x1ZGUgIldl
YlBhZ2VQcm94eU1lc3NhZ2VzLmgiCiAjaW5jbHVkZSAiV2ViUG9wdXBNZW51UHJveHkuaCIKICNp
bmNsdWRlICJXZWJQcm9jZXNzTGlmZXRpbWVUcmFja2VyLmgiCisjaW5jbHVkZSA8V2ViQ29yZS9D
aHJvbWVDbGllbnQuaD4KICNpbmNsdWRlIDxXZWJDb3JlL0NvbG9yLmg+CiAjaW5jbHVkZSA8V2Vi
Q29yZS9EcmFnQWN0aW9ucy5oPgogI2luY2x1ZGUgPFdlYkNvcmUvSGl0VGVzdFJlc3VsdC5oPgpA
QCAtOTgyLDcgKzk4Myw3IEBAIHB1YmxpYzoKIAogICAgIGJvb2wgaXNTaG93aW5nTmF2aWdhdGlv
bkdlc3R1cmVTbmFwc2hvdCgpIGNvbnN0IHsgcmV0dXJuIG1faXNTaG93aW5nTmF2aWdhdGlvbkdl
c3R1cmVTbmFwc2hvdDsgfQogCi0gICAgdm9pZCBpc1BsYXlpbmdBdWRpb0RpZENoYW5nZShib29s
KTsKKyAgICB2b2lkIGlzUGxheWluZ01lZGlhRGlkQ2hhbmdlKFdlYkNvcmU6OkNocm9tZUNsaWVu
dDo6TWVkaWFTdGF0ZUZsYWdzKTsKICAgICBib29sIGlzUGxheWluZ0F1ZGlvKCkgY29uc3QgeyBy
ZXR1cm4gbV9pc1BsYXlpbmdBdWRpbzsgfQogCiAjaWYgUExBVEZPUk0oTUFDKQpJbmRleDogU291
cmNlL1dlYktpdDIvVUlQcm9jZXNzL1dlYlBhZ2VQcm94eS5tZXNzYWdlcy5pbgo9PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
Ci0tLSBTb3VyY2UvV2ViS2l0Mi9VSVByb2Nlc3MvV2ViUGFnZVByb3h5Lm1lc3NhZ2VzLmluCShy
ZXZpc2lvbiAxODI3OTUpCisrKyBTb3VyY2UvV2ViS2l0Mi9VSVByb2Nlc3MvV2ViUGFnZVByb3h5
Lm1lc3NhZ2VzLmluCSh3b3JraW5nIGNvcHkpCkBAIC00MjEsNyArNDIxLDcgQEAgbWVzc2FnZXMg
LT4gV2ViUGFnZVByb3h5IHsKICAgICBDb250ZW50RmlsdGVyRGlkQmxvY2tMb2FkRm9yRnJhbWUo
V2ViQ29yZTo6Q29udGVudEZpbHRlclVuYmxvY2tIYW5kbGVyIHVuYmxvY2tIYW5kbGVyLCB1aW50
NjRfdCBmcmFtZUlEKQogI2VuZGlmCiAKLSAgICBJc1BsYXlpbmdBdWRpb0RpZENoYW5nZShib29s
IG5ld0lzUGxheWluZ0F1ZGlvKQorICAgIElzUGxheWluZ01lZGlhRGlkQ2hhbmdlKHVuc2lnbmVk
IHN0YXRlKQogCiAjaWYgUExBVEZPUk0oTUFDKQogICAgIERpZFBlcmZvcm1BY3Rpb25NZW51SGl0
VGVzdChzdHJ1Y3QgV2ViS2l0OjpXZWJIaXRUZXN0UmVzdWx0OjpEYXRhIHJlc3VsdCwgYm9vbCBm
b3JJbW1lZGlhdGVBY3Rpb24sIGJvb2wgY29udGVudFByZXZlbnRzRGVmYXVsdCwgV2ViS2l0OjpV
c2VyRGF0YSB1c2VyRGF0YSkKSW5kZXg6IFNvdXJjZS9XZWJLaXQyL1VJUHJvY2Vzcy9BUEkvQy9X
S1BhZ2UuY3BwCj09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT0KLS0tIFNvdXJjZS9XZWJLaXQyL1VJUHJvY2Vzcy9BUEkvQy9X
S1BhZ2UuY3BwCShyZXZpc2lvbiAxODI3OTUpCisrKyBTb3VyY2UvV2ViS2l0Mi9VSVByb2Nlc3Mv
QVBJL0MvV0tQYWdlLmNwcAkod29ya2luZyBjb3B5KQpAQCAtMTkzMywxMCArMTkzMywxMCBAQCB2
b2lkIFdLUGFnZVJ1bkphdmFTY3JpcHRJbk1haW5GcmFtZV9iKFdLCiB9CiAjZW5kaWYKIAotc3Rh
dGljIHN0ZDo6ZnVuY3Rpb248dm9pZCAoY29uc3QgU3RyaW5nJiwgQ2FsbGJhY2tCYXNlOjpFcnJv
cik+IHRvR2VuZXJpY0NhbGxiYWNrRnVuY3Rpb24odm9pZCogY29udGV4dCwgdm9pZCAoKmNhbGxi
YWNrKShXS1N0cmluZ1JlZiwgV0tFcnJvclJlZiwgdm9pZCopKQorc3RhdGljIHN0ZDo6ZnVuY3Rp
b248dm9pZCAoY29uc3QgU3RyaW5nJiwgV2ViS2l0OjpDYWxsYmFja0Jhc2U6OkVycm9yKT4gdG9H
ZW5lcmljQ2FsbGJhY2tGdW5jdGlvbih2b2lkKiBjb250ZXh0LCB2b2lkICgqY2FsbGJhY2spKFdL
U3RyaW5nUmVmLCBXS0Vycm9yUmVmLCB2b2lkKikpCiB7Ci0gICAgcmV0dXJuIFtjb250ZXh0LCBj
YWxsYmFja10oY29uc3QgU3RyaW5nJiByZXR1cm5WYWx1ZSwgQ2FsbGJhY2tCYXNlOjpFcnJvciBl
cnJvcikgewotICAgICAgICBjYWxsYmFjayh0b0FQSShBUEk6OlN0cmluZzo6Y3JlYXRlKHJldHVy
blZhbHVlKS5nZXQoKSksIGVycm9yICE9IENhbGxiYWNrQmFzZTo6RXJyb3I6Ok5vbmUgPyB0b0FQ
SShBUEk6OkVycm9yOjpjcmVhdGUoKS5nZXQoKSkgOiAwLCBjb250ZXh0KTsKKyAgICByZXR1cm4g
W2NvbnRleHQsIGNhbGxiYWNrXShjb25zdCBTdHJpbmcmIHJldHVyblZhbHVlLCBXZWJLaXQ6OkNh
bGxiYWNrQmFzZTo6RXJyb3IgZXJyb3IpIHsKKyAgICAgICAgY2FsbGJhY2sodG9BUEkoQVBJOjpT
dHJpbmc6OmNyZWF0ZShyZXR1cm5WYWx1ZSkuZ2V0KCkpLCBlcnJvciAhPSBXZWJLaXQ6OkNhbGxi
YWNrQmFzZTo6RXJyb3I6Ok5vbmUgPyB0b0FQSShBUEk6OkVycm9yOjpjcmVhdGUoKS5nZXQoKSkg
OiAwLCBjb250ZXh0KTsKICAgICB9OwogfQogCkBAIC0xOTc5LDggKzE5NzksOCBAQCB2b2lkIFdL
UGFnZUdldENvbnRlbnRzQXNNSFRNTERhdGEoV0tQYWdlCiAKIHZvaWQgV0tQYWdlRm9yY2VSZXBh
aW50KFdLUGFnZVJlZiBwYWdlUmVmLCB2b2lkKiBjb250ZXh0LCBXS1BhZ2VGb3JjZVJlcGFpbnRG
dW5jdGlvbiBjYWxsYmFjaykKIHsKLSAgICB0b0ltcGwocGFnZVJlZiktPmZvcmNlUmVwYWludChW
b2lkQ2FsbGJhY2s6OmNyZWF0ZShbY29udGV4dCwgY2FsbGJhY2tdKENhbGxiYWNrQmFzZTo6RXJy
b3IgZXJyb3IpIHsKLSAgICAgICAgY2FsbGJhY2soZXJyb3IgPT0gQ2FsbGJhY2tCYXNlOjpFcnJv
cjo6Tm9uZSA/IG51bGxwdHIgOiB0b0FQSShBUEk6OkVycm9yOjpjcmVhdGUoKS5nZXQoKSksIGNv
bnRleHQpOworICAgIHRvSW1wbChwYWdlUmVmKS0+Zm9yY2VSZXBhaW50KFZvaWRDYWxsYmFjazo6
Y3JlYXRlKFtjb250ZXh0LCBjYWxsYmFja10oV2ViS2l0OjpDYWxsYmFja0Jhc2U6OkVycm9yIGVy
cm9yKSB7CisgICAgICAgIGNhbGxiYWNrKGVycm9yID09IFdlYktpdDo6Q2FsbGJhY2tCYXNlOjpF
cnJvcjo6Tm9uZSA/IG51bGxwdHIgOiB0b0FQSShBUEk6OkVycm9yOjpjcmVhdGUoKS5nZXQoKSks
IGNvbnRleHQpOwogICAgIH0pKTsKIH0KIApAQCAtMjAxNiw4ICsyMDE2LDggQEAgV0tTdHJpbmdS
ZWYgV0tQYWdlQ29weVN0YW5kYXJkVXNlckFnZW50VwogCiB2b2lkIFdLUGFnZVZhbGlkYXRlQ29t
bWFuZChXS1BhZ2VSZWYgcGFnZVJlZiwgV0tTdHJpbmdSZWYgY29tbWFuZCwgdm9pZCogY29udGV4
dCwgV0tQYWdlVmFsaWRhdGVDb21tYW5kQ2FsbGJhY2sgY2FsbGJhY2spCiB7Ci0gICAgdG9JbXBs
KHBhZ2VSZWYpLT52YWxpZGF0ZUNvbW1hbmQodG9JbXBsKGNvbW1hbmQpLT5zdHJpbmcoKSwgW2Nv
bnRleHQsIGNhbGxiYWNrXShjb25zdCBTdHJpbmcmIGNvbW1hbmROYW1lLCBib29sIGlzRW5hYmxl
ZCwgaW50MzJfdCBzdGF0ZSwgQ2FsbGJhY2tCYXNlOjpFcnJvciBlcnJvcikgewotICAgICAgICBj
YWxsYmFjayh0b0FQSShBUEk6OlN0cmluZzo6Y3JlYXRlKGNvbW1hbmROYW1lKS5nZXQoKSksIGlz
RW5hYmxlZCwgc3RhdGUsIGVycm9yICE9IENhbGxiYWNrQmFzZTo6RXJyb3I6Ok5vbmUgPyB0b0FQ
SShBUEk6OkVycm9yOjpjcmVhdGUoKS5nZXQoKSkgOiAwLCBjb250ZXh0KTsKKyAgICB0b0ltcGwo
cGFnZVJlZiktPnZhbGlkYXRlQ29tbWFuZCh0b0ltcGwoY29tbWFuZCktPnN0cmluZygpLCBbY29u
dGV4dCwgY2FsbGJhY2tdKGNvbnN0IFN0cmluZyYgY29tbWFuZE5hbWUsIGJvb2wgaXNFbmFibGVk
LCBpbnQzMl90IHN0YXRlLCBXZWJLaXQ6OkNhbGxiYWNrQmFzZTo6RXJyb3IgZXJyb3IpIHsKKyAg
ICAgICAgY2FsbGJhY2sodG9BUEkoQVBJOjpTdHJpbmc6OmNyZWF0ZShjb21tYW5kTmFtZSkuZ2V0
KCkpLCBpc0VuYWJsZWQsIHN0YXRlLCBlcnJvciAhPSBXZWJLaXQ6OkNhbGxiYWNrQmFzZTo6RXJy
b3I6Ok5vbmUgPyB0b0FQSShBUEk6OkVycm9yOjpjcmVhdGUoKS5nZXQoKSkgOiAwLCBjb250ZXh0
KTsKICAgICB9KTsKIH0KIApAQCAtMjAzOCwxMSArMjAzOCwxMSBAQCBzdGF0aWMgUHJpbnRJbmZv
IHByaW50SW5mb0Zyb21XS1ByaW50SW5mCiAKIHZvaWQgV0tQYWdlQ29tcHV0ZVBhZ2VzRm9yUHJp
bnRpbmcoV0tQYWdlUmVmIHBhZ2UsIFdLRnJhbWVSZWYgZnJhbWUsIFdLUHJpbnRJbmZvIHByaW50
SW5mbywgV0tQYWdlQ29tcHV0ZVBhZ2VzRm9yUHJpbnRpbmdGdW5jdGlvbiBjYWxsYmFjaywgdm9p
ZCogY29udGV4dCkKIHsKLSAgICB0b0ltcGwocGFnZSktPmNvbXB1dGVQYWdlc0ZvclByaW50aW5n
KHRvSW1wbChmcmFtZSksIHByaW50SW5mb0Zyb21XS1ByaW50SW5mbyhwcmludEluZm8pLCBDb21w
dXRlZFBhZ2VzQ2FsbGJhY2s6OmNyZWF0ZShbY29udGV4dCwgY2FsbGJhY2tdKGNvbnN0IFZlY3Rv
cjxXZWJDb3JlOjpJbnRSZWN0PiYgcmVjdHMsIGRvdWJsZSBzY2FsZUZhY3RvciwgQ2FsbGJhY2tC
YXNlOjpFcnJvciBlcnJvcikgeworICAgIHRvSW1wbChwYWdlKS0+Y29tcHV0ZVBhZ2VzRm9yUHJp
bnRpbmcodG9JbXBsKGZyYW1lKSwgcHJpbnRJbmZvRnJvbVdLUHJpbnRJbmZvKHByaW50SW5mbyks
IENvbXB1dGVkUGFnZXNDYWxsYmFjazo6Y3JlYXRlKFtjb250ZXh0LCBjYWxsYmFja10oY29uc3Qg
VmVjdG9yPFdlYkNvcmU6OkludFJlY3Q+JiByZWN0cywgZG91YmxlIHNjYWxlRmFjdG9yLCBXZWJL
aXQ6OkNhbGxiYWNrQmFzZTo6RXJyb3IgZXJyb3IpIHsKICAgICAgICAgVmVjdG9yPFdLUmVjdD4g
d2tSZWN0cyhyZWN0cy5zaXplKCkpOwogICAgICAgICBmb3IgKHNpemVfdCBpID0gMDsgaSA8IHJl
Y3RzLnNpemUoKTsgKytpKQogICAgICAgICAgICAgd2tSZWN0c1tpXSA9IHRvQVBJKHJlY3RzW2ld
KTsKLSAgICAgICAgY2FsbGJhY2sod2tSZWN0cy5kYXRhKCksIHdrUmVjdHMuc2l6ZSgpLCBzY2Fs
ZUZhY3RvciwgZXJyb3IgIT0gQ2FsbGJhY2tCYXNlOjpFcnJvcjo6Tm9uZSA/IHRvQVBJKEFQSTo6
RXJyb3I6OmNyZWF0ZSgpLmdldCgpKSA6IDAsIGNvbnRleHQpOworICAgICAgICBjYWxsYmFjayh3
a1JlY3RzLmRhdGEoKSwgd2tSZWN0cy5zaXplKCksIHNjYWxlRmFjdG9yLCBlcnJvciAhPSBXZWJL
aXQ6OkNhbGxiYWNrQmFzZTo6RXJyb3I6Ok5vbmUgPyB0b0FQSShBUEk6OkVycm9yOjpjcmVhdGUo
KS5nZXQoKSkgOiAwLCBjb250ZXh0KTsKICAgICB9KSk7CiB9CiAKSW5kZXg6IFNvdXJjZS9XZWJL
aXQyL1VJUHJvY2Vzcy9BUEkvQ29jb2EvX1dLVGh1bWJuYWlsVmlldy5tbQo9PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09Ci0t
LSBTb3VyY2UvV2ViS2l0Mi9VSVByb2Nlc3MvQVBJL0NvY29hL19XS1RodW1ibmFpbFZpZXcubW0J
KHJldmlzaW9uIDE4Mjc5NSkKKysrIFNvdXJjZS9XZWJLaXQyL1VJUHJvY2Vzcy9BUEkvQ29jb2Ev
X1dLVGh1bWJuYWlsVmlldy5tbQkod29ya2luZyBjb3B5KQpAQCAtMTE5LDcgKzExOSw3IEBAIC0g
KHZvaWQpX3JlcXVlc3RTbmFwc2hvdElmTmVlZGVkCiAgICAgSW50U2l6ZSBiaXRtYXBTaXplID0g
c25hcHNob3RSZWN0LnNpemUoKTsKICAgICBiaXRtYXBTaXplLnNjYWxlKF9zY2FsZSAqIF93ZWJQ
YWdlUHJveHktPmRldmljZVNjYWxlRmFjdG9yKCkpOwogICAgIF9sYXN0U25hcHNob3RTY2FsZSA9
IF9zY2FsZTsKLSAgICBfd2ViUGFnZVByb3h5LT50YWtlU25hcHNob3Qoc25hcHNob3RSZWN0LCBi
aXRtYXBTaXplLCBvcHRpb25zLCBbdGh1bWJuYWlsVmlld10oY29uc3QgU2hhcmVhYmxlQml0bWFw
OjpIYW5kbGUmIGltYWdlSGFuZGxlLCBDYWxsYmFja0Jhc2U6OkVycm9yKSB7CisgICAgX3dlYlBh
Z2VQcm94eS0+dGFrZVNuYXBzaG90KHNuYXBzaG90UmVjdCwgYml0bWFwU2l6ZSwgb3B0aW9ucywg
W3RodW1ibmFpbFZpZXddKGNvbnN0IFNoYXJlYWJsZUJpdG1hcDo6SGFuZGxlJiBpbWFnZUhhbmRs
ZSwgV2ViS2l0OjpDYWxsYmFja0Jhc2U6OkVycm9yKSB7CiAgICAgICAgIFJlZlB0cjxTaGFyZWFi
bGVCaXRtYXA+IGJpdG1hcCA9IFNoYXJlYWJsZUJpdG1hcDo6Y3JlYXRlKGltYWdlSGFuZGxlLCBT
aGFyZWRNZW1vcnk6OlByb3RlY3Rpb246OlJlYWRPbmx5KTsKICAgICAgICAgUmV0YWluUHRyPENH
SW1hZ2VSZWY+IGNnSW1hZ2UgPSBiaXRtYXAgPyBiaXRtYXAtPm1ha2VDR0ltYWdlKCkgOiBudWxs
cHRyOwogICAgICAgICBbdGh1bWJuYWlsVmlldyBfZGlkVGFrZVNuYXBzaG90OmNnSW1hZ2UuZ2V0
KCldOwpJbmRleDogU291cmNlL1dlYktpdDIvVUlQcm9jZXNzL0FQSS9tYWMvV0tWaWV3Lm1tCj09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT0KLS0tIFNvdXJjZS9XZWJLaXQyL1VJUHJvY2Vzcy9BUEkvbWFjL1dLVmlldy5tbQko
cmV2aXNpb24gMTgyNzk1KQorKysgU291cmNlL1dlYktpdDIvVUlQcm9jZXNzL0FQSS9tYWMvV0tW
aWV3Lm1tCSh3b3JraW5nIGNvcHkpCkBAIC00NzAsNyArNDcwLDcgQEAgLSAoQk9PTCliZWNvbWVG
aXJzdFJlc3BvbmRlcgogICAgICAgICBOU0V2ZW50ICprZXlib2FyZEV2ZW50ID0gbmlsOwogICAg
ICAgICBpZiAoW2V2ZW50IHR5cGVdID09IE5TS2V5RG93biB8fCBbZXZlbnQgdHlwZV0gPT0gTlNL
ZXlVcCkKICAgICAgICAgICAgIGtleWJvYXJkRXZlbnQgPSBldmVudDsKLSAgICAgICAgX2RhdGEt
Pl9wYWdlLT5zZXRJbml0aWFsRm9jdXMoZGlyZWN0aW9uID09IE5TU2VsZWN0aW5nTmV4dCwga2V5
Ym9hcmRFdmVudCAhPSBuaWwsIE5hdGl2ZVdlYktleWJvYXJkRXZlbnQoa2V5Ym9hcmRFdmVudCwg
ZmFsc2UsIFZlY3RvcjxLZXlwcmVzc0NvbW1hbmQ+KCkpLCBbXShDYWxsYmFja0Jhc2U6OkVycm9y
KSB7IH0pOworICAgICAgICBfZGF0YS0+X3BhZ2UtPnNldEluaXRpYWxGb2N1cyhkaXJlY3Rpb24g
PT0gTlNTZWxlY3RpbmdOZXh0LCBrZXlib2FyZEV2ZW50ICE9IG5pbCwgTmF0aXZlV2ViS2V5Ym9h
cmRFdmVudChrZXlib2FyZEV2ZW50LCBmYWxzZSwgVmVjdG9yPEtleXByZXNzQ29tbWFuZD4oKSks
IFtdKFdlYktpdDo6Q2FsbGJhY2tCYXNlOjpFcnJvcikgeyB9KTsKICAgICB9CiAgICAgcmV0dXJu
IFlFUzsKIH0KQEAgLTgzNSw3ICs4MzUsNyBAQCAtICh2b2lkKXVwZGF0ZUZvbnRQYW5lbElmTmVl
ZGVkCiAgICAgaWYgKGVkaXRvclN0YXRlLnNlbGVjdGlvbklzTm9uZSB8fCAhZWRpdG9yU3RhdGUu
aXNDb250ZW50RWRpdGFibGUpCiAgICAgICAgIHJldHVybjsKICAgICBpZiAoW05TRm9udFBhbmVs
IHNoYXJlZEZvbnRQYW5lbEV4aXN0c10gJiYgW1tOU0ZvbnRQYW5lbCBzaGFyZWRGb250UGFuZWxd
IGlzVmlzaWJsZV0pIHsKLSAgICAgICAgX2RhdGEtPl9wYWdlLT5mb250QXRTZWxlY3Rpb24oW10o
Y29uc3QgU3RyaW5nJiBmb250TmFtZSwgZG91YmxlIGZvbnRTaXplLCBib29sIHNlbGVjdGlvbkhh
c011bHRpcGxlRm9udHMsIENhbGxiYWNrQmFzZTo6RXJyb3IgZXJyb3IpIHsKKyAgICAgICAgX2Rh
dGEtPl9wYWdlLT5mb250QXRTZWxlY3Rpb24oW10oY29uc3QgU3RyaW5nJiBmb250TmFtZSwgZG91
YmxlIGZvbnRTaXplLCBib29sIHNlbGVjdGlvbkhhc011bHRpcGxlRm9udHMsIFdlYktpdDo6Q2Fs
bGJhY2tCYXNlOjpFcnJvciBlcnJvcikgewogICAgICAgICAgICAgTlNGb250ICpmb250ID0gW05T
Rm9udCBmb250V2l0aE5hbWU6Zm9udE5hbWUgc2l6ZTpmb250U2l6ZV07CiAgICAgICAgICAgICBp
ZiAoZm9udCkKICAgICAgICAgICAgICAgICBbW05TRm9udE1hbmFnZXIgc2hhcmVkRm9udE1hbmFn
ZXJdIHNldFNlbGVjdGVkRm9udDpmb250IGlzTXVsdGlwbGU6c2VsZWN0aW9uSGFzTXVsdGlwbGVG
b250c107CkBAIC05OTUsOSArOTk1LDkgQEAgLSAoQk9PTCl2YWxpZGF0ZVVzZXJJbnRlcmZhY2VJ
dGVtOihpZCA8TgogICAgICAgICAvLyBJZiB3ZSBhcmUgbm90IGFscmVhZHkgYXdhaXRpbmcgdmFs
aWRhdGlvbiBmb3IgdGhpcyBjb21tYW5kLCBzdGFydCB0aGUgYXN5bmNocm9ub3VzIHZhbGlkYXRp
b24gcHJvY2Vzcy4KICAgICAgICAgLy8gRklYTUU6IFRoZW9yZXRpY2FsbHksIHRoZXJlIGlzIGEg
cmFjZSBoZXJlOyB3aGVuIHdlIGdldCB0aGUgYW5zd2VyIGl0IG1pZ2h0IGJlIG9sZCwgZnJvbSBh
IHByZXZpb3VzIHRpbWUKICAgICAgICAgLy8gd2UgYXNrZWQgZm9yIHRoZSBzYW1lIGNvbW1hbmQ7
IHRoZXJlIGlzIG5vIGd1YXJhbnRlZSB0aGUgYW5zd2VyIGlzIHN0aWxsIHZhbGlkLgotICAgICAg
ICBfZGF0YS0+X3BhZ2UtPnZhbGlkYXRlQ29tbWFuZChjb21tYW5kTmFtZSwgW3NlbGZdKGNvbnN0
IFN0cmluZyYgY29tbWFuZE5hbWUsIGJvb2wgaXNFbmFibGVkLCBpbnQzMl90IHN0YXRlLCBDYWxs
YmFja0Jhc2U6OkVycm9yIGVycm9yKSB7CisgICAgICAgIF9kYXRhLT5fcGFnZS0+dmFsaWRhdGVD
b21tYW5kKGNvbW1hbmROYW1lLCBbc2VsZl0oY29uc3QgU3RyaW5nJiBjb21tYW5kTmFtZSwgYm9v
bCBpc0VuYWJsZWQsIGludDMyX3Qgc3RhdGUsIFdlYktpdDo6Q2FsbGJhY2tCYXNlOjpFcnJvciBl
cnJvcikgewogICAgICAgICAgICAgLy8gSWYgdGhlIHByb2Nlc3MgZXhpdHMgYmVmb3JlIHRoZSBj
b21tYW5kIGNhbiBiZSB2YWxpZGF0ZWQsIHdlJ2xsIGJlIGNhbGxlZCBiYWNrIHdpdGggYW4gZXJy
b3IuCi0gICAgICAgICAgICBpZiAoZXJyb3IgIT0gQ2FsbGJhY2tCYXNlOjpFcnJvcjo6Tm9uZSkK
KyAgICAgICAgICAgIGlmIChlcnJvciAhPSBXZWJLaXQ6OkNhbGxiYWNrQmFzZTo6RXJyb3I6Ok5v
bmUpCiAgICAgICAgICAgICAgICAgcmV0dXJuOwogICAgICAgICAgICAgCiAgICAgICAgICAgICBb
c2VsZiBfc2V0VXNlckludGVyZmFjZUl0ZW1TdGF0ZTpjb21tYW5kTmFtZSBlbmFibGVkOmlzRW5h
YmxlZCBzdGF0ZTpzdGF0ZV07CkBAIC0xMDEyLDggKzEwMTIsOCBAQCAtIChCT09MKXZhbGlkYXRl
VXNlckludGVyZmFjZUl0ZW06KGlkIDxOCiAKIC0gKElCQWN0aW9uKXN0YXJ0U3BlYWtpbmc6KGlk
KXNlbmRlcgogewotICAgIF9kYXRhLT5fcGFnZS0+Z2V0U2VsZWN0aW9uT3JDb250ZW50c0FzU3Ry
aW5nKFtzZWxmXShjb25zdCBTdHJpbmcmIHN0cmluZywgQ2FsbGJhY2tCYXNlOjpFcnJvciBlcnJv
cikgewotICAgICAgICBpZiAoZXJyb3IgIT0gQ2FsbGJhY2tCYXNlOjpFcnJvcjo6Tm9uZSkKKyAg
ICBfZGF0YS0+X3BhZ2UtPmdldFNlbGVjdGlvbk9yQ29udGVudHNBc1N0cmluZyhbc2VsZl0oY29u
c3QgU3RyaW5nJiBzdHJpbmcsIFdlYktpdDo6Q2FsbGJhY2tCYXNlOjpFcnJvciBlcnJvcikgewor
ICAgICAgICBpZiAoZXJyb3IgIT0gV2ViS2l0OjpDYWxsYmFja0Jhc2U6OkVycm9yOjpOb25lKQog
ICAgICAgICAgICAgcmV0dXJuOwogICAgICAgICBpZiAoIXN0cmluZykKICAgICAgICAgICAgIHJl
dHVybjsKQEAgLTE2NzYsOSArMTY3Niw5IEBAIC0gKHZvaWQpc2VsZWN0ZWRSYW5nZVdpdGhDb21w
bGV0aW9uSGFuZGwKICAgICBSZXRhaW5QdHI8aWQ+IGNvbXBsZXRpb25IYW5kbGVyID0gYWRvcHRO
UyhbY29tcGxldGlvbkhhbmRsZXJQdHIgY29weV0pOwogCiAgICAgTE9HKFRleHRJbnB1dCwgInNl
bGVjdGVkUmFuZ2UiKTsKLSAgICBfZGF0YS0+X3BhZ2UtPmdldFNlbGVjdGVkUmFuZ2VBc3luYyhb
Y29tcGxldGlvbkhhbmRsZXJdKGNvbnN0IEVkaXRpbmdSYW5nZSYgZWRpdGluZ1JhbmdlUmVzdWx0
LCBDYWxsYmFja0Jhc2U6OkVycm9yIGVycm9yKSB7CisgICAgX2RhdGEtPl9wYWdlLT5nZXRTZWxl
Y3RlZFJhbmdlQXN5bmMoW2NvbXBsZXRpb25IYW5kbGVyXShjb25zdCBFZGl0aW5nUmFuZ2UmIGVk
aXRpbmdSYW5nZVJlc3VsdCwgV2ViS2l0OjpDYWxsYmFja0Jhc2U6OkVycm9yIGVycm9yKSB7CiAg
ICAgICAgIHZvaWQgKF5jb21wbGV0aW9uSGFuZGxlckJsb2NrKShOU1JhbmdlKSA9ICh2b2lkIChe
KShOU1JhbmdlKSljb21wbGV0aW9uSGFuZGxlci5nZXQoKTsKLSAgICAgICAgaWYgKGVycm9yICE9
IENhbGxiYWNrQmFzZTo6RXJyb3I6Ok5vbmUpIHsKKyAgICAgICAgaWYgKGVycm9yICE9IFdlYktp
dDo6Q2FsbGJhY2tCYXNlOjpFcnJvcjo6Tm9uZSkgewogICAgICAgICAgICAgTE9HKFRleHRJbnB1
dCwgIiAgICAuLi5zZWxlY3RlZFJhbmdlIGZhaWxlZC4iKTsKICAgICAgICAgICAgIGNvbXBsZXRp
b25IYW5kbGVyQmxvY2soTlNNYWtlUmFuZ2UoTlNOb3RGb3VuZCwgMCkpOwogICAgICAgICAgICAg
cmV0dXJuOwpAQCAtMTY5Nyw5ICsxNjk3LDkgQEAgLSAodm9pZCltYXJrZWRSYW5nZVdpdGhDb21w
bGV0aW9uSGFuZGxlcgogICAgIFJldGFpblB0cjxpZD4gY29tcGxldGlvbkhhbmRsZXIgPSBhZG9w
dE5TKFtjb21wbGV0aW9uSGFuZGxlclB0ciBjb3B5XSk7CiAKICAgICBMT0coVGV4dElucHV0LCAi
bWFya2VkUmFuZ2UiKTsKLSAgICBfZGF0YS0+X3BhZ2UtPmdldE1hcmtlZFJhbmdlQXN5bmMoW2Nv
bXBsZXRpb25IYW5kbGVyXShjb25zdCBFZGl0aW5nUmFuZ2UmIGVkaXRpbmdSYW5nZVJlc3VsdCwg
Q2FsbGJhY2tCYXNlOjpFcnJvciBlcnJvcikgeworICAgIF9kYXRhLT5fcGFnZS0+Z2V0TWFya2Vk
UmFuZ2VBc3luYyhbY29tcGxldGlvbkhhbmRsZXJdKGNvbnN0IEVkaXRpbmdSYW5nZSYgZWRpdGlu
Z1JhbmdlUmVzdWx0LCBXZWJLaXQ6OkNhbGxiYWNrQmFzZTo6RXJyb3IgZXJyb3IpIHsKICAgICAg
ICAgdm9pZCAoXmNvbXBsZXRpb25IYW5kbGVyQmxvY2spKE5TUmFuZ2UpID0gKHZvaWQgKF4pKE5T
UmFuZ2UpKWNvbXBsZXRpb25IYW5kbGVyLmdldCgpOwotICAgICAgICBpZiAoZXJyb3IgIT0gQ2Fs
bGJhY2tCYXNlOjpFcnJvcjo6Tm9uZSkgeworICAgICAgICBpZiAoZXJyb3IgIT0gV2ViS2l0OjpD
YWxsYmFja0Jhc2U6OkVycm9yOjpOb25lKSB7CiAgICAgICAgICAgICBMT0coVGV4dElucHV0LCAi
ICAgIC4uLm1hcmtlZFJhbmdlIGZhaWxlZC4iKTsKICAgICAgICAgICAgIGNvbXBsZXRpb25IYW5k
bGVyQmxvY2soTlNNYWtlUmFuZ2UoTlNOb3RGb3VuZCwgMCkpOwogICAgICAgICAgICAgcmV0dXJu
OwpAQCAtMTcxOCw5ICsxNzE4LDkgQEAgLSAodm9pZCloYXNNYXJrZWRUZXh0V2l0aENvbXBsZXRp
b25IYW5kbAogICAgIFJldGFpblB0cjxpZD4gY29tcGxldGlvbkhhbmRsZXIgPSBhZG9wdE5TKFtj
b21wbGV0aW9uSGFuZGxlclB0ciBjb3B5XSk7CiAKICAgICBMT0coVGV4dElucHV0LCAiaGFzTWFy
a2VkVGV4dCIpOwotICAgIF9kYXRhLT5fcGFnZS0+Z2V0TWFya2VkUmFuZ2VBc3luYyhbY29tcGxl
dGlvbkhhbmRsZXJdKGNvbnN0IEVkaXRpbmdSYW5nZSYgZWRpdGluZ1JhbmdlUmVzdWx0LCBDYWxs
YmFja0Jhc2U6OkVycm9yIGVycm9yKSB7CisgICAgX2RhdGEtPl9wYWdlLT5nZXRNYXJrZWRSYW5n
ZUFzeW5jKFtjb21wbGV0aW9uSGFuZGxlcl0oY29uc3QgRWRpdGluZ1JhbmdlJiBlZGl0aW5nUmFu
Z2VSZXN1bHQsIFdlYktpdDo6Q2FsbGJhY2tCYXNlOjpFcnJvciBlcnJvcikgewogICAgICAgICB2
b2lkICheY29tcGxldGlvbkhhbmRsZXJCbG9jaykoQk9PTCkgPSAodm9pZCAoXikoQk9PTCkpY29t
cGxldGlvbkhhbmRsZXIuZ2V0KCk7Ci0gICAgICAgIGlmIChlcnJvciAhPSBDYWxsYmFja0Jhc2U6
OkVycm9yOjpOb25lKSB7CisgICAgICAgIGlmIChlcnJvciAhPSBXZWJLaXQ6OkNhbGxiYWNrQmFz
ZTo6RXJyb3I6Ok5vbmUpIHsKICAgICAgICAgICAgIExPRyhUZXh0SW5wdXQsICIgICAgLi4uaGFz
TWFya2VkVGV4dCBmYWlsZWQuIik7CiAgICAgICAgICAgICBjb21wbGV0aW9uSGFuZGxlckJsb2Nr
KE5PKTsKICAgICAgICAgICAgIHJldHVybjsKQEAgLTE3MzYsOSArMTczNiw5IEBAIC0gKHZvaWQp
YXR0cmlidXRlZFN1YnN0cmluZ0ZvclByb3Bvc2VkUmEKICAgICBSZXRhaW5QdHI8aWQ+IGNvbXBs
ZXRpb25IYW5kbGVyID0gYWRvcHROUyhbY29tcGxldGlvbkhhbmRsZXJQdHIgY29weV0pOwogCiAg
ICAgTE9HKFRleHRJbnB1dCwgImF0dHJpYnV0ZWRTdWJzdHJpbmdGcm9tUmFuZ2U6KCV1LCAldSki
LCBuc1JhbmdlLmxvY2F0aW9uLCBuc1JhbmdlLmxlbmd0aCk7Ci0gICAgX2RhdGEtPl9wYWdlLT5h
dHRyaWJ1dGVkU3Vic3RyaW5nRm9yQ2hhcmFjdGVyUmFuZ2VBc3luYyhuc1JhbmdlLCBbY29tcGxl
dGlvbkhhbmRsZXJdKGNvbnN0IEF0dHJpYnV0ZWRTdHJpbmcmIHN0cmluZywgY29uc3QgRWRpdGlu
Z1JhbmdlJiBhY3R1YWxSYW5nZSwgQ2FsbGJhY2tCYXNlOjpFcnJvciBlcnJvcikgeworICAgIF9k
YXRhLT5fcGFnZS0+YXR0cmlidXRlZFN1YnN0cmluZ0ZvckNoYXJhY3RlclJhbmdlQXN5bmMobnNS
YW5nZSwgW2NvbXBsZXRpb25IYW5kbGVyXShjb25zdCBBdHRyaWJ1dGVkU3RyaW5nJiBzdHJpbmcs
IGNvbnN0IEVkaXRpbmdSYW5nZSYgYWN0dWFsUmFuZ2UsIFdlYktpdDo6Q2FsbGJhY2tCYXNlOjpF
cnJvciBlcnJvcikgewogICAgICAgICB2b2lkICheY29tcGxldGlvbkhhbmRsZXJCbG9jaykoTlNB
dHRyaWJ1dGVkU3RyaW5nICosIE5TUmFuZ2UpID0gKHZvaWQgKF4pKE5TQXR0cmlidXRlZFN0cmlu
ZyAqLCBOU1JhbmdlKSljb21wbGV0aW9uSGFuZGxlci5nZXQoKTsKLSAgICAgICAgaWYgKGVycm9y
ICE9IENhbGxiYWNrQmFzZTo6RXJyb3I6Ok5vbmUpIHsKKyAgICAgICAgaWYgKGVycm9yICE9IFdl
YktpdDo6Q2FsbGJhY2tCYXNlOjpFcnJvcjo6Tm9uZSkgewogICAgICAgICAgICAgTE9HKFRleHRJ
bnB1dCwgIiAgICAuLi5hdHRyaWJ1dGVkU3Vic3RyaW5nRnJvbVJhbmdlIGZhaWxlZC4iKTsKICAg
ICAgICAgICAgIGNvbXBsZXRpb25IYW5kbGVyQmxvY2soMCwgTlNNYWtlUmFuZ2UoTlNOb3RGb3Vu
ZCwgMCkpOwogICAgICAgICAgICAgcmV0dXJuOwpAQCAtMTc2Niw5ICsxNzY2LDkgQEAgLSAodm9p
ZClmaXJzdFJlY3RGb3JDaGFyYWN0ZXJSYW5nZTooTlNSYQogICAgICAgICByZXR1cm47CiAgICAg
fQogCi0gICAgX2RhdGEtPl9wYWdlLT5maXJzdFJlY3RGb3JDaGFyYWN0ZXJSYW5nZUFzeW5jKHRo
ZVJhbmdlLCBbc2VsZiwgY29tcGxldGlvbkhhbmRsZXJdKGNvbnN0IEludFJlY3QmIHJlY3QsIGNv
bnN0IEVkaXRpbmdSYW5nZSYgYWN0dWFsUmFuZ2UsIENhbGxiYWNrQmFzZTo6RXJyb3IgZXJyb3Ip
IHsKKyAgICBfZGF0YS0+X3BhZ2UtPmZpcnN0UmVjdEZvckNoYXJhY3RlclJhbmdlQXN5bmModGhl
UmFuZ2UsIFtzZWxmLCBjb21wbGV0aW9uSGFuZGxlcl0oY29uc3QgSW50UmVjdCYgcmVjdCwgY29u
c3QgRWRpdGluZ1JhbmdlJiBhY3R1YWxSYW5nZSwgV2ViS2l0OjpDYWxsYmFja0Jhc2U6OkVycm9y
IGVycm9yKSB7CiAgICAgICAgIHZvaWQgKF5jb21wbGV0aW9uSGFuZGxlckJsb2NrKShOU1JlY3Qs
IE5TUmFuZ2UpID0gKHZvaWQgKF4pKE5TUmVjdCwgTlNSYW5nZSkpY29tcGxldGlvbkhhbmRsZXIu
Z2V0KCk7Ci0gICAgICAgIGlmIChlcnJvciAhPSBDYWxsYmFja0Jhc2U6OkVycm9yOjpOb25lKSB7
CisgICAgICAgIGlmIChlcnJvciAhPSBXZWJLaXQ6OkNhbGxiYWNrQmFzZTo6RXJyb3I6Ok5vbmUp
IHsKICAgICAgICAgICAgIExPRyhUZXh0SW5wdXQsICIgICAgLi4uZmlyc3RSZWN0Rm9yQ2hhcmFj
dGVyUmFuZ2UgZmFpbGVkLiIpOwogICAgICAgICAgICAgY29tcGxldGlvbkhhbmRsZXJCbG9jayhO
U1plcm9SZWN0LCBOU01ha2VSYW5nZShOU05vdEZvdW5kLCAwKSk7CiAgICAgICAgICAgICByZXR1
cm47CkBAIC0xNzk3LDkgKzE3OTcsOSBAQCAtICh2b2lkKWNoYXJhY3RlckluZGV4Rm9yUG9pbnQ6
KE5TUG9pbnQpCiAjcHJhZ21hIGNsYW5nIGRpYWdub3N0aWMgcG9wCiAgICAgdGhlUG9pbnQgPSBb
c2VsZiBjb252ZXJ0UG9pbnQ6dGhlUG9pbnQgZnJvbVZpZXc6bmlsXTsgIC8vIHRoZSBwb2ludCBp
cyByZWxhdGl2ZSB0byB0aGUgbWFpbiBmcmFtZQogCi0gICAgX2RhdGEtPl9wYWdlLT5jaGFyYWN0
ZXJJbmRleEZvclBvaW50QXN5bmMoSW50UG9pbnQodGhlUG9pbnQpLCBbY29tcGxldGlvbkhhbmRs
ZXJdKHVpbnQ2NF90IHJlc3VsdCwgQ2FsbGJhY2tCYXNlOjpFcnJvciBlcnJvcikgeworICAgIF9k
YXRhLT5fcGFnZS0+Y2hhcmFjdGVySW5kZXhGb3JQb2ludEFzeW5jKEludFBvaW50KHRoZVBvaW50
KSwgW2NvbXBsZXRpb25IYW5kbGVyXSh1aW50NjRfdCByZXN1bHQsIFdlYktpdDo6Q2FsbGJhY2tC
YXNlOjpFcnJvciBlcnJvcikgewogICAgICAgICB2b2lkICheY29tcGxldGlvbkhhbmRsZXJCbG9j
aykoTlNVSW50ZWdlcikgPSAodm9pZCAoXikoTlNVSW50ZWdlcikpY29tcGxldGlvbkhhbmRsZXIu
Z2V0KCk7Ci0gICAgICAgIGlmIChlcnJvciAhPSBDYWxsYmFja0Jhc2U6OkVycm9yOjpOb25lKSB7
CisgICAgICAgIGlmIChlcnJvciAhPSBXZWJLaXQ6OkNhbGxiYWNrQmFzZTo6RXJyb3I6Ok5vbmUp
IHsKICAgICAgICAgICAgIExPRyhUZXh0SW5wdXQsICIgICAgLi4uY2hhcmFjdGVySW5kZXhGb3JQ
b2ludCBmYWlsZWQuIik7CiAgICAgICAgICAgICBjb21wbGV0aW9uSGFuZGxlckJsb2NrKDApOwog
ICAgICAgICAgICAgcmV0dXJuOwpJbmRleDogU291cmNlL1dlYktpdDIvVUlQcm9jZXNzL2lvcy9X
S0NvbnRlbnRWaWV3SW50ZXJhY3Rpb24ubW0KPT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PQotLS0gU291cmNlL1dlYktpdDIv
VUlQcm9jZXNzL2lvcy9XS0NvbnRlbnRWaWV3SW50ZXJhY3Rpb24ubW0JKHJldmlzaW9uIDE4Mjc5
NSkKKysrIFNvdXJjZS9XZWJLaXQyL1VJUHJvY2Vzcy9pb3MvV0tDb250ZW50Vmlld0ludGVyYWN0
aW9uLm1tCSh3b3JraW5nIGNvcHkpCkBAIC0xNTQ2LDggKzE1NDYsOCBAQCAtICh2b2lkKV9kZWZp
bmU6KGlkKXNlbmRlcgogICAgIGlmIChbW2dldE1DUHJvZmlsZUNvbm5lY3Rpb25DbGFzcygpIHNo
YXJlZENvbm5lY3Rpb25dIGVmZmVjdGl2ZUJvb2xWYWx1ZUZvclNldHRpbmc6TUNGZWF0dXJlRGVm
aW5pdGlvbkxvb2t1cEFsbG93ZWRdID09IE1DUmVzdHJpY3RlZEJvb2xFeHBsaWNpdE5vKQogICAg
ICAgICByZXR1cm47CiAKLSAgICBfcGFnZS0+Z2V0U2VsZWN0aW9uT3JDb250ZW50c0FzU3RyaW5n
KFtzZWxmXShjb25zdCBTdHJpbmcmIHN0cmluZywgQ2FsbGJhY2tCYXNlOjpFcnJvciBlcnJvcikg
ewotICAgICAgICBpZiAoZXJyb3IgIT0gQ2FsbGJhY2tCYXNlOjpFcnJvcjo6Tm9uZSkKKyAgICBf
cGFnZS0+Z2V0U2VsZWN0aW9uT3JDb250ZW50c0FzU3RyaW5nKFtzZWxmXShjb25zdCBTdHJpbmcm
IHN0cmluZywgV2ViS2l0OjpDYWxsYmFja0Jhc2U6OkVycm9yIGVycm9yKSB7CisgICAgICAgIGlm
IChlcnJvciAhPSBXZWJLaXQ6OkNhbGxiYWNrQmFzZTo6RXJyb3I6Ok5vbmUpCiAgICAgICAgICAg
ICByZXR1cm47CiAgICAgICAgIGlmICghc3RyaW5nKQogICAgICAgICAgICAgcmV0dXJuOwpAQCAt
MTU1OCw4ICsxNTU4LDggQEAgLSAodm9pZClfZGVmaW5lOihpZClzZW5kZXIKIAogLSAodm9pZClh
Y2Nlc3NpYmlsaXR5UmV0cmlldmVTcGVha1NlbGVjdGlvbkNvbnRlbnQKIHsKLSAgICBfcGFnZS0+
Z2V0U2VsZWN0aW9uT3JDb250ZW50c0FzU3RyaW5nKFtzZWxmXShjb25zdCBTdHJpbmcmIHN0cmlu
ZywgQ2FsbGJhY2tCYXNlOjpFcnJvciBlcnJvcikgewotICAgICAgICBpZiAoZXJyb3IgIT0gQ2Fs
bGJhY2tCYXNlOjpFcnJvcjo6Tm9uZSkKKyAgICBfcGFnZS0+Z2V0U2VsZWN0aW9uT3JDb250ZW50
c0FzU3RyaW5nKFtzZWxmXShjb25zdCBTdHJpbmcmIHN0cmluZywgV2ViS2l0OjpDYWxsYmFja0Jh
c2U6OkVycm9yIGVycm9yKSB7CisgICAgICAgIGlmIChlcnJvciAhPSBXZWJLaXQ6OkNhbGxiYWNr
QmFzZTo6RXJyb3I6Ok5vbmUpCiAgICAgICAgICAgICByZXR1cm47CiAgICAgICAgIGlmIChbc2Vs
ZiByZXNwb25kc1RvU2VsZWN0b3I6QHNlbGVjdG9yKGFjY2Vzc2liaWxpdHlTcGVha1NlbGVjdGlv
blNldENvbnRlbnQ6KV0pCiAgICAgICAgICAgICBbc2VsZiBhY2Nlc3NpYmlsaXR5U3BlYWtTZWxl
Y3Rpb25TZXRDb250ZW50OnN0cmluZ107CkBAIC0xNzc3LDkgKzE3NzcsOSBAQCBzdGF0aWMgaW5s
aW5lIFdlYkNvcmU6OlNlbGVjdGlvbkRpcmVjdGlvCiAgICAgfQogfQogCi1zdGF0aWMgdm9pZCBz
ZWxlY3Rpb25DaGFuZ2VkV2l0aEdlc3R1cmUoV0tDb250ZW50VmlldyAqdmlldywgY29uc3QgV2Vi
Q29yZTo6SW50UG9pbnQmIHBvaW50LCB1aW50MzJfdCBnZXN0dXJlVHlwZSwgdWludDMyX3QgZ2Vz
dHVyZVN0YXRlLCB1aW50MzJfdCBmbGFncywgQ2FsbGJhY2tCYXNlOjpFcnJvciBlcnJvcikKK3N0
YXRpYyB2b2lkIHNlbGVjdGlvbkNoYW5nZWRXaXRoR2VzdHVyZShXS0NvbnRlbnRWaWV3ICp2aWV3
LCBjb25zdCBXZWJDb3JlOjpJbnRQb2ludCYgcG9pbnQsIHVpbnQzMl90IGdlc3R1cmVUeXBlLCB1
aW50MzJfdCBnZXN0dXJlU3RhdGUsIHVpbnQzMl90IGZsYWdzLCBXZWJLaXQ6OkNhbGxiYWNrQmFz
ZTo6RXJyb3IgZXJyb3IpCiB7Ci0gICAgaWYgKGVycm9yICE9IENhbGxiYWNrQmFzZTo6RXJyb3I6
Ok5vbmUpIHsKKyAgICBpZiAoZXJyb3IgIT0gV2ViS2l0OjpDYWxsYmFja0Jhc2U6OkVycm9yOjpO
b25lKSB7CiAgICAgICAgIEFTU0VSVF9OT1RfUkVBQ0hFRCgpOwogICAgICAgICByZXR1cm47CiAg
ICAgfQpAQCAtMTc4OSw5ICsxNzg5LDkgQEAgc3RhdGljIHZvaWQgc2VsZWN0aW9uQ2hhbmdlZFdp
dGhHZXN0dXJlKAogICAgICAgICBbKFVJV0tUZXh0SW50ZXJhY3Rpb25Bc3Npc3RhbnQgKilbdmll
dyBpbnRlcmFjdGlvbkFzc2lzdGFudF0gc2VsZWN0aW9uQ2hhbmdlZFdpdGhHZXN0dXJlQXQ6KENH
UG9pbnQpcG9pbnQgd2l0aEdlc3R1cmU6dG9VSVdLR2VzdHVyZVR5cGUoKEdlc3R1cmVUeXBlKWdl
c3R1cmVUeXBlKSB3aXRoU3RhdGU6dG9VSUdlc3R1cmVSZWNvZ25pemVyU3RhdGUoc3RhdGljX2Nh
c3Q8R2VzdHVyZVJlY29nbml6ZXJTdGF0ZT4oZ2VzdHVyZVN0YXRlKSkgd2l0aEZsYWdzOih0b1VJ
V0tTZWxlY3Rpb25GbGFncygoU2VsZWN0aW9uRmxhZ3MpZmxhZ3MpKV07CiB9CiAKLXN0YXRpYyB2
b2lkIHNlbGVjdGlvbkNoYW5nZWRXaXRoVG91Y2goV0tDb250ZW50VmlldyAqdmlldywgY29uc3Qg
V2ViQ29yZTo6SW50UG9pbnQmIHBvaW50LCB1aW50MzJfdCB0b3VjaCwgQ2FsbGJhY2tCYXNlOjpF
cnJvciBlcnJvcikKK3N0YXRpYyB2b2lkIHNlbGVjdGlvbkNoYW5nZWRXaXRoVG91Y2goV0tDb250
ZW50VmlldyAqdmlldywgY29uc3QgV2ViQ29yZTo6SW50UG9pbnQmIHBvaW50LCB1aW50MzJfdCB0
b3VjaCwgV2ViS2l0OjpDYWxsYmFja0Jhc2U6OkVycm9yIGVycm9yKQogewotICAgIGlmIChlcnJv
ciAhPSBDYWxsYmFja0Jhc2U6OkVycm9yOjpOb25lKSB7CisgICAgaWYgKGVycm9yICE9IFdlYktp
dDo6Q2FsbGJhY2tCYXNlOjpFcnJvcjo6Tm9uZSkgewogICAgICAgICBBU1NFUlRfTk9UX1JFQUNI
RUQoKTsKICAgICAgICAgcmV0dXJuOwogICAgIH0KQEAgLTE4MTEsNyArMTgxMSw3IEBAIC0gKHZv
aWQpX2RpZFVwZGF0ZUJsb2NrU2VsZWN0aW9uV2l0aFRvdWMKIC0gKHZvaWQpY2hhbmdlU2VsZWN0
aW9uV2l0aEdlc3R1cmVBdDooQ0dQb2ludClwb2ludCB3aXRoR2VzdHVyZTooVUlXS0dlc3R1cmVU
eXBlKWdlc3R1cmVUeXBlIHdpdGhTdGF0ZTooVUlHZXN0dXJlUmVjb2duaXplclN0YXRlKXN0YXRl
CiB7CiAgICAgX3VzaW5nR2VzdHVyZUZvclNlbGVjdGlvbiA9IFlFUzsKLSAgICBfcGFnZS0+c2Vs
ZWN0V2l0aEdlc3R1cmUoV2ViQ29yZTo6SW50UG9pbnQocG9pbnQpLCBDaGFyYWN0ZXJHcmFudWxh
cml0eSwgc3RhdGljX2Nhc3Q8dWludDMyX3Q+KHRvR2VzdHVyZVR5cGUoZ2VzdHVyZVR5cGUpKSwg
c3RhdGljX2Nhc3Q8dWludDMyX3Q+KHRvR2VzdHVyZVJlY29nbml6ZXJTdGF0ZShzdGF0ZSkpLCBb
c2VsZiwgc3RhdGVdKGNvbnN0IFdlYkNvcmU6OkludFBvaW50JiBwb2ludCwgdWludDMyX3QgZ2Vz
dHVyZVR5cGUsIHVpbnQzMl90IGdlc3R1cmVTdGF0ZSwgdWludDMyX3QgZmxhZ3MsIENhbGxiYWNr
QmFzZTo6RXJyb3IgZXJyb3IpIHsKKyAgICBfcGFnZS0+c2VsZWN0V2l0aEdlc3R1cmUoV2ViQ29y
ZTo6SW50UG9pbnQocG9pbnQpLCBDaGFyYWN0ZXJHcmFudWxhcml0eSwgc3RhdGljX2Nhc3Q8dWlu
dDMyX3Q+KHRvR2VzdHVyZVR5cGUoZ2VzdHVyZVR5cGUpKSwgc3RhdGljX2Nhc3Q8dWludDMyX3Q+
KHRvR2VzdHVyZVJlY29nbml6ZXJTdGF0ZShzdGF0ZSkpLCBbc2VsZiwgc3RhdGVdKGNvbnN0IFdl
YkNvcmU6OkludFBvaW50JiBwb2ludCwgdWludDMyX3QgZ2VzdHVyZVR5cGUsIHVpbnQzMl90IGdl
c3R1cmVTdGF0ZSwgdWludDMyX3QgZmxhZ3MsIFdlYktpdDo6Q2FsbGJhY2tCYXNlOjpFcnJvciBl
cnJvcikgewogICAgICAgICBzZWxlY3Rpb25DaGFuZ2VkV2l0aEdlc3R1cmUoc2VsZiwgcG9pbnQs
IGdlc3R1cmVUeXBlLCBnZXN0dXJlU3RhdGUsIGZsYWdzLCBlcnJvcik7CiAgICAgICAgIGlmIChz
dGF0ZSA9PSBVSUdlc3R1cmVSZWNvZ25pemVyU3RhdGVFbmRlZCB8fCBzdGF0ZSA9PSBVSUdlc3R1
cmVSZWNvZ25pemVyU3RhdGVDYW5jZWxsZWQpCiAgICAgICAgICAgICBfdXNpbmdHZXN0dXJlRm9y
U2VsZWN0aW9uID0gTk87CkBAIC0xODIxLDcgKzE4MjEsNyBAQCAtICh2b2lkKWNoYW5nZVNlbGVj
dGlvbldpdGhHZXN0dXJlQXQ6KENHCiAtICh2b2lkKWNoYW5nZVNlbGVjdGlvbldpdGhUb3VjaEF0
OihDR1BvaW50KXBvaW50IHdpdGhTZWxlY3Rpb25Ub3VjaDooVUlXS1NlbGVjdGlvblRvdWNoKXRv
dWNoIGJhc2VJc1N0YXJ0OihCT09MKWJhc2VJc1N0YXJ0CiB7CiAgICAgX3VzaW5nR2VzdHVyZUZv
clNlbGVjdGlvbiA9IFlFUzsKLSAgICBfcGFnZS0+dXBkYXRlU2VsZWN0aW9uV2l0aFRvdWNoZXMo
V2ViQ29yZTo6SW50UG9pbnQocG9pbnQpLCBzdGF0aWNfY2FzdDx1aW50MzJfdD4odG9TZWxlY3Rp
b25Ub3VjaCh0b3VjaCkpLCBiYXNlSXNTdGFydCwgW3NlbGYsIHRvdWNoXShjb25zdCBXZWJDb3Jl
OjpJbnRQb2ludCYgcG9pbnQsIHVpbnQzMl90IHRvdWNoLCBDYWxsYmFja0Jhc2U6OkVycm9yIGVy
cm9yKSB7CisgICAgX3BhZ2UtPnVwZGF0ZVNlbGVjdGlvbldpdGhUb3VjaGVzKFdlYkNvcmU6Oklu
dFBvaW50KHBvaW50KSwgc3RhdGljX2Nhc3Q8dWludDMyX3Q+KHRvU2VsZWN0aW9uVG91Y2godG91
Y2gpKSwgYmFzZUlzU3RhcnQsIFtzZWxmLCB0b3VjaF0oY29uc3QgV2ViQ29yZTo6SW50UG9pbnQm
IHBvaW50LCB1aW50MzJfdCB0b3VjaCwgV2ViS2l0OjpDYWxsYmFja0Jhc2U6OkVycm9yIGVycm9y
KSB7CiAgICAgICAgIHNlbGVjdGlvbkNoYW5nZWRXaXRoVG91Y2goc2VsZiwgcG9pbnQsIHRvdWNo
LCBlcnJvcik7CiAgICAgICAgIGlmICh0b3VjaCAhPSBVSVdLU2VsZWN0aW9uVG91Y2hTdGFydGVk
ICYmIHRvdWNoICE9IFVJV0tTZWxlY3Rpb25Ub3VjaE1vdmVkKQogICAgICAgICAgICAgX3VzaW5n
R2VzdHVyZUZvclNlbGVjdGlvbiA9IE5POwpAQCAtMTgzMSw3ICsxODMxLDcgQEAgLSAodm9pZClj
aGFuZ2VTZWxlY3Rpb25XaXRoVG91Y2hBdDooQ0dQbwogLSAodm9pZCljaGFuZ2VTZWxlY3Rpb25X
aXRoVG91Y2hlc0Zyb206KENHUG9pbnQpZnJvbSB0bzooQ0dQb2ludCl0byB3aXRoR2VzdHVyZToo
VUlXS0dlc3R1cmVUeXBlKWdlc3R1cmVUeXBlIHdpdGhTdGF0ZTooVUlHZXN0dXJlUmVjb2duaXpl
clN0YXRlKWdlc3R1cmVTdGF0ZQogewogICAgIF91c2luZ0dlc3R1cmVGb3JTZWxlY3Rpb24gPSBZ
RVM7Ci0gICAgX3BhZ2UtPnNlbGVjdFdpdGhUd29Ub3VjaGVzKFdlYkNvcmU6OkludFBvaW50KGZy
b20pLCBXZWJDb3JlOjpJbnRQb2ludCh0byksIHN0YXRpY19jYXN0PHVpbnQzMl90Pih0b0dlc3R1
cmVUeXBlKGdlc3R1cmVUeXBlKSksIHN0YXRpY19jYXN0PHVpbnQzMl90Pih0b0dlc3R1cmVSZWNv
Z25pemVyU3RhdGUoZ2VzdHVyZVN0YXRlKSksIFtzZWxmLCBnZXN0dXJlU3RhdGVdKGNvbnN0IFdl
YkNvcmU6OkludFBvaW50JiBwb2ludCwgdWludDMyX3QgZ2VzdHVyZVR5cGUsIHVpbnQzMl90IGdl
c3R1cmVTdGF0ZSwgdWludDMyX3QgZmxhZ3MsIENhbGxiYWNrQmFzZTo6RXJyb3IgZXJyb3IpIHsK
KyAgICBfcGFnZS0+c2VsZWN0V2l0aFR3b1RvdWNoZXMoV2ViQ29yZTo6SW50UG9pbnQoZnJvbSks
IFdlYkNvcmU6OkludFBvaW50KHRvKSwgc3RhdGljX2Nhc3Q8dWludDMyX3Q+KHRvR2VzdHVyZVR5
cGUoZ2VzdHVyZVR5cGUpKSwgc3RhdGljX2Nhc3Q8dWludDMyX3Q+KHRvR2VzdHVyZVJlY29nbml6
ZXJTdGF0ZShnZXN0dXJlU3RhdGUpKSwgW3NlbGYsIGdlc3R1cmVTdGF0ZV0oY29uc3QgV2ViQ29y
ZTo6SW50UG9pbnQmIHBvaW50LCB1aW50MzJfdCBnZXN0dXJlVHlwZSwgdWludDMyX3QgZ2VzdHVy
ZVN0YXRlLCB1aW50MzJfdCBmbGFncywgV2ViS2l0OjpDYWxsYmFja0Jhc2U6OkVycm9yIGVycm9y
KSB7CiAgICAgICAgIHNlbGVjdGlvbkNoYW5nZWRXaXRoR2VzdHVyZShzZWxmLCBwb2ludCwgZ2Vz
dHVyZVR5cGUsIGdlc3R1cmVTdGF0ZSwgZmxhZ3MsIGVycm9yKTsKICAgICAgICAgaWYgKGdlc3R1
cmVTdGF0ZSA9PSBVSUdlc3R1cmVSZWNvZ25pemVyU3RhdGVFbmRlZCB8fCBnZXN0dXJlU3RhdGUg
PT0gVUlHZXN0dXJlUmVjb2duaXplclN0YXRlQ2FuY2VsbGVkKQogICAgICAgICAgICAgX3VzaW5n
R2VzdHVyZUZvclNlbGVjdGlvbiA9IE5POwpAQCAtMTg1MCw3ICsxODUwLDcgQEAgLSAodm9pZClt
b3ZlQnlPZmZzZXQ6KE5TSW50ZWdlcilvZmZzZXQKICAgICAgICAgcmV0dXJuOwogICAgIAogICAg
IFtzZWxmIGJlZ2luU2VsZWN0aW9uQ2hhbmdlXTsKLSAgICBfcGFnZS0+bW92ZVNlbGVjdGlvbkJ5
T2Zmc2V0KG9mZnNldCwgW3NlbGZdKENhbGxiYWNrQmFzZTo6RXJyb3IpIHsKKyAgICBfcGFnZS0+
bW92ZVNlbGVjdGlvbkJ5T2Zmc2V0KG9mZnNldCwgW3NlbGZdKFdlYktpdDo6Q2FsbGJhY2tCYXNl
OjpFcnJvcikgewogICAgICAgICBbc2VsZiBlbmRTZWxlY3Rpb25DaGFuZ2VdOwogICAgIH0pOwog
fQpAQCAtMTg2OSw3ICsxODY5LDcgQEAgLSAodm9pZClyZXF1ZXN0QXV0b2NvcnJlY3Rpb25SZWN0
c0ZvclN0cgogICAgIH0KIAogICAgIF9hdXRvY29ycmVjdGlvbkRhdGEuYXV0b2NvcnJlY3Rpb25I
YW5kbGVyID0gW2NvbXBsZXRpb25IYW5kbGVyIGNvcHldOwotICAgIF9wYWdlLT5yZXF1ZXN0QXV0
b2NvcnJlY3Rpb25EYXRhKGlucHV0LCBbc2VsZl0oY29uc3QgVmVjdG9yPEZsb2F0UmVjdD4mIHJl
Y3RzLCBjb25zdCBTdHJpbmcmIGZvbnROYW1lLCBkb3VibGUgZm9udFNpemUsIHVpbnQ2NF90IHRy
YWl0cywgQ2FsbGJhY2tCYXNlOjpFcnJvcikgeworICAgIF9wYWdlLT5yZXF1ZXN0QXV0b2NvcnJl
Y3Rpb25EYXRhKGlucHV0LCBbc2VsZl0oY29uc3QgVmVjdG9yPEZsb2F0UmVjdD4mIHJlY3RzLCBj
b25zdCBTdHJpbmcmIGZvbnROYW1lLCBkb3VibGUgZm9udFNpemUsIHVpbnQ2NF90IHRyYWl0cywg
V2ViS2l0OjpDYWxsYmFja0Jhc2U6OkVycm9yKSB7CiAgICAgICAgIENHUmVjdCBmaXJzdFJlY3Qg
PSBDR1JlY3RaZXJvOwogICAgICAgICBDR1JlY3QgbGFzdFJlY3QgPSBDR1JlY3RaZXJvOwogICAg
ICAgICBpZiAocmVjdHMuc2l6ZSgpKSB7CkBAIC0xODkzLDcgKzE4OTMsNyBAQCAtICh2b2lkKXNl
bGVjdFBvc2l0aW9uQXRQb2ludDooQ0dQb2ludClwCiB7CiAgICAgVUlXS1NlbGVjdGlvbkNvbXBs
ZXRpb25IYW5kbGVyIHNlbGVjdGlvbkhhbmRsZXIgPSBbY29tcGxldGlvbkhhbmRsZXIgY29weV07
CiAgICAgCi0gICAgX3BhZ2UtPnNlbGVjdFBvc2l0aW9uQXRQb2ludChXZWJDb3JlOjpJbnRQb2lu
dChwb2ludCksIFtzZWxlY3Rpb25IYW5kbGVyXShDYWxsYmFja0Jhc2U6OkVycm9yIGVycm9yKSB7
CisgICAgX3BhZ2UtPnNlbGVjdFBvc2l0aW9uQXRQb2ludChXZWJDb3JlOjpJbnRQb2ludChwb2lu
dCksIFtzZWxlY3Rpb25IYW5kbGVyXShXZWJLaXQ6OkNhbGxiYWNrQmFzZTo6RXJyb3IgZXJyb3Ip
IHsKICAgICAgICAgc2VsZWN0aW9uSGFuZGxlcigpOwogICAgICAgICBbc2VsZWN0aW9uSGFuZGxl
ciByZWxlYXNlXTsKICAgICB9KTsKQEAgLTE5MDMsNyArMTkwMyw3IEBAIC0gKHZvaWQpc2VsZWN0
UG9zaXRpb25BdEJvdW5kYXJ5OihVSVRleHQKIHsKICAgICBVSVdLU2VsZWN0aW9uQ29tcGxldGlv
bkhhbmRsZXIgc2VsZWN0aW9uSGFuZGxlciA9IFtjb21wbGV0aW9uSGFuZGxlciBjb3B5XTsKICAg
ICAKLSAgICBfcGFnZS0+c2VsZWN0UG9zaXRpb25BdEJvdW5kYXJ5V2l0aERpcmVjdGlvbihXZWJD
b3JlOjpJbnRQb2ludChwb2ludCksIHRvV0tUZXh0R3JhbnVsYXJpdHkoZ3JhbnVsYXJpdHkpLCB0
b1dLU2VsZWN0aW9uRGlyZWN0aW9uKGRpcmVjdGlvbiksIFtzZWxlY3Rpb25IYW5kbGVyXShDYWxs
YmFja0Jhc2U6OkVycm9yIGVycm9yKSB7CisgICAgX3BhZ2UtPnNlbGVjdFBvc2l0aW9uQXRCb3Vu
ZGFyeVdpdGhEaXJlY3Rpb24oV2ViQ29yZTo6SW50UG9pbnQocG9pbnQpLCB0b1dLVGV4dEdyYW51
bGFyaXR5KGdyYW51bGFyaXR5KSwgdG9XS1NlbGVjdGlvbkRpcmVjdGlvbihkaXJlY3Rpb24pLCBb
c2VsZWN0aW9uSGFuZGxlcl0oV2ViS2l0OjpDYWxsYmFja0Jhc2U6OkVycm9yIGVycm9yKSB7CiAg
ICAgICAgIHNlbGVjdGlvbkhhbmRsZXIoKTsKICAgICAgICAgW3NlbGVjdGlvbkhhbmRsZXIgcmVs
ZWFzZV07CiAgICAgfSk7CkBAIC0xOTEzLDcgKzE5MTMsNyBAQCAtICh2b2lkKXNlbGVjdFRleHRX
aXRoR3JhbnVsYXJpdHk6KFVJVGV4CiB7CiAgICAgVUlXS1NlbGVjdGlvbkNvbXBsZXRpb25IYW5k
bGVyIHNlbGVjdGlvbkhhbmRsZXIgPSBbY29tcGxldGlvbkhhbmRsZXIgY29weV07CiAKLSAgICBf
cGFnZS0+c2VsZWN0VGV4dFdpdGhHcmFudWxhcml0eUF0UG9pbnQoV2ViQ29yZTo6SW50UG9pbnQo
cG9pbnQpLCB0b1dLVGV4dEdyYW51bGFyaXR5KGdyYW51bGFyaXR5KSwgW3NlbGVjdGlvbkhhbmRs
ZXJdKENhbGxiYWNrQmFzZTo6RXJyb3IgZXJyb3IpIHsKKyAgICBfcGFnZS0+c2VsZWN0VGV4dFdp
dGhHcmFudWxhcml0eUF0UG9pbnQoV2ViQ29yZTo6SW50UG9pbnQocG9pbnQpLCB0b1dLVGV4dEdy
YW51bGFyaXR5KGdyYW51bGFyaXR5KSwgW3NlbGVjdGlvbkhhbmRsZXJdKFdlYktpdDo6Q2FsbGJh
Y2tCYXNlOjpFcnJvciBlcnJvcikgewogICAgICAgICBzZWxlY3Rpb25IYW5kbGVyKCk7CiAgICAg
ICAgIFtzZWxlY3Rpb25IYW5kbGVyIHJlbGVhc2VdOwogICAgIH0pOwpAQCAtMTkyMyw3ICsxOTIz
LDcgQEAgLSAodm9pZCliZWdpblNlbGVjdGlvbkluRGlyZWN0aW9uOihVSVRleAogewogICAgIFVJ
V0tTZWxlY3Rpb25XaXRoRGlyZWN0aW9uQ29tcGxldGlvbkhhbmRsZXIgc2VsZWN0aW9uSGFuZGxl
ciA9IFtjb21wbGV0aW9uSGFuZGxlciBjb3B5XTsKIAotICAgIF9wYWdlLT5iZWdpblNlbGVjdGlv
bkluRGlyZWN0aW9uKHRvV0tTZWxlY3Rpb25EaXJlY3Rpb24oZGlyZWN0aW9uKSwgW3NlbGVjdGlv
bkhhbmRsZXJdKGJvb2wgZW5kSXNNb3ZpbmcsIENhbGxiYWNrQmFzZTo6RXJyb3IgZXJyb3IpIHsK
KyAgICBfcGFnZS0+YmVnaW5TZWxlY3Rpb25JbkRpcmVjdGlvbih0b1dLU2VsZWN0aW9uRGlyZWN0
aW9uKGRpcmVjdGlvbiksIFtzZWxlY3Rpb25IYW5kbGVyXShib29sIGVuZElzTW92aW5nLCBXZWJL
aXQ6OkNhbGxiYWNrQmFzZTo6RXJyb3IgZXJyb3IpIHsKICAgICAgICAgc2VsZWN0aW9uSGFuZGxl
cihlbmRJc01vdmluZyk7CiAgICAgICAgIFtzZWxlY3Rpb25IYW5kbGVyIHJlbGVhc2VdOwogICAg
IH0pOwpAQCAtMTkzMyw3ICsxOTMzLDcgQEAgLSAodm9pZCl1cGRhdGVTZWxlY3Rpb25XaXRoRXh0
ZW50UG9pbnQ6KAogewogICAgIFVJV0tTZWxlY3Rpb25XaXRoRGlyZWN0aW9uQ29tcGxldGlvbkhh
bmRsZXIgc2VsZWN0aW9uSGFuZGxlciA9IFtjb21wbGV0aW9uSGFuZGxlciBjb3B5XTsKICAgICAK
LSAgICBfcGFnZS0+dXBkYXRlU2VsZWN0aW9uV2l0aEV4dGVudFBvaW50KFdlYkNvcmU6OkludFBv
aW50KHBvaW50KSwgW3NlbGVjdGlvbkhhbmRsZXJdKGJvb2wgZW5kSXNNb3ZpbmcsIENhbGxiYWNr
QmFzZTo6RXJyb3IgZXJyb3IpIHsKKyAgICBfcGFnZS0+dXBkYXRlU2VsZWN0aW9uV2l0aEV4dGVu
dFBvaW50KFdlYkNvcmU6OkludFBvaW50KHBvaW50KSwgW3NlbGVjdGlvbkhhbmRsZXJdKGJvb2wg
ZW5kSXNNb3ZpbmcsIFdlYktpdDo6Q2FsbGJhY2tCYXNlOjpFcnJvciBlcnJvcikgewogICAgICAg
ICBzZWxlY3Rpb25IYW5kbGVyKGVuZElzTW92aW5nKTsKICAgICAgICAgW3NlbGVjdGlvbkhhbmRs
ZXIgcmVsZWFzZV07CiAgICAgfSk7CkBAIC0xOTgyLDcgKzE5ODIsNyBAQCAtICh2b2lkKXJlcXVl
c3REaWN0YXRpb25Db250ZXh0Oih2b2lkICheCiB7CiAgICAgVUlXS0RpY3RhdGlvbkNvbnRleHRI
YW5kbGVyIGRpY3RhdGlvbkhhbmRsZXIgPSBbY29tcGxldGlvbkhhbmRsZXIgY29weV07CiAKLSAg
ICBfcGFnZS0+cmVxdWVzdERpY3RhdGlvbkNvbnRleHQoW2RpY3RhdGlvbkhhbmRsZXJdKGNvbnN0
IFN0cmluZyYgc2VsZWN0ZWRUZXh0LCBjb25zdCBTdHJpbmcmIGJlZm9yZVRleHQsIGNvbnN0IFN0
cmluZyYgYWZ0ZXJUZXh0LCBDYWxsYmFja0Jhc2U6OkVycm9yKSB7CisgICAgX3BhZ2UtPnJlcXVl
c3REaWN0YXRpb25Db250ZXh0KFtkaWN0YXRpb25IYW5kbGVyXShjb25zdCBTdHJpbmcmIHNlbGVj
dGVkVGV4dCwgY29uc3QgU3RyaW5nJiBiZWZvcmVUZXh0LCBjb25zdCBTdHJpbmcmIGFmdGVyVGV4
dCwgV2ViS2l0OjpDYWxsYmFja0Jhc2U6OkVycm9yKSB7CiAgICAgICAgIGRpY3RhdGlvbkhhbmRs
ZXIoc2VsZWN0ZWRUZXh0LCBiZWZvcmVUZXh0LCBhZnRlclRleHQpOwogICAgICAgICBbZGljdGF0
aW9uSGFuZGxlciByZWxlYXNlXTsKICAgICB9KTsKQEAgLTE5OTksNyArMTk5OSw3IEBAIC0gKHZv
aWQpYXBwbHlBdXRvY29ycmVjdGlvbjooTlNTdHJpbmcgKikKICAgICAgICAgcmV0dXJuOwogICAg
IH0KICAgICBfYXV0b2NvcnJlY3Rpb25EYXRhLmF1dG9jb3JyZWN0aW9uSGFuZGxlciA9IFtjb21w
bGV0aW9uSGFuZGxlciBjb3B5XTsKLSAgICBfcGFnZS0+YXBwbHlBdXRvY29ycmVjdGlvbihjb3Jy
ZWN0aW9uLCBpbnB1dCwgW3NlbGZdKGNvbnN0IFN0cmluZyYgc3RyaW5nLCBDYWxsYmFja0Jhc2U6
OkVycm9yIGVycm9yKSB7CisgICAgX3BhZ2UtPmFwcGx5QXV0b2NvcnJlY3Rpb24oY29ycmVjdGlv
biwgaW5wdXQsIFtzZWxmXShjb25zdCBTdHJpbmcmIHN0cmluZywgV2ViS2l0OjpDYWxsYmFja0Jh
c2U6OkVycm9yIGVycm9yKSB7CiAgICAgICAgIF9hdXRvY29ycmVjdGlvbkRhdGEuYXV0b2NvcnJl
Y3Rpb25IYW5kbGVyKCFzdHJpbmcuaXNOdWxsKCkgPyBbV0tBdXRvY29ycmVjdGlvblJlY3RzIGF1
dG9jb3JyZWN0aW9uUmVjdHNXaXRoUmVjdHM6X2F1dG9jb3JyZWN0aW9uRGF0YS50ZXh0Rmlyc3RS
ZWN0IGxhc3RSZWN0Ol9hdXRvY29ycmVjdGlvbkRhdGEudGV4dExhc3RSZWN0XSA6IG5pbCk7CiAg
ICAgICAgIFtfYXV0b2NvcnJlY3Rpb25EYXRhLmF1dG9jb3JyZWN0aW9uSGFuZGxlciByZWxlYXNl
XTsKICAgICAgICAgX2F1dG9jb3JyZWN0aW9uRGF0YS5hdXRvY29ycmVjdGlvbkhhbmRsZXIgPSBu
aWw7CkBAIC0yMDIyLDcgKzIwMjIsNyBAQCAtICh2b2lkKXJlcXVlc3RBdXRvY29ycmVjdGlvbkNv
bnRleHRXaXRoCiAgICAgICAgIGNvbXBsZXRpb25IYW5kbGVyKFtXS0F1dG9jb3JyZWN0aW9uQ29u
dGV4dCBhdXRvY29ycmVjdGlvbkNvbnRleHRXaXRoRGF0YTpiZWZvcmVUZXh0IG1hcmtlZFRleHQ6
bWFya2VkVGV4dCBzZWxlY3RlZFRleHQ6c2VsZWN0ZWRUZXh0IGFmdGVyVGV4dDphZnRlclRleHQg
c2VsZWN0ZWRSYW5nZUluTWFya2VkVGV4dDpOU01ha2VSYW5nZShsb2NhdGlvbiwgbGVuZ3RoKV0p
OwogICAgIH0gZWxzZSB7CiAgICAgICAgIF9hdXRvY29ycmVjdGlvbkRhdGEuYXV0b2NvcnJlY3Rp
b25Db250ZXh0SGFuZGxlciA9IFtjb21wbGV0aW9uSGFuZGxlciBjb3B5XTsKLSAgICAgICAgX3Bh
Z2UtPnJlcXVlc3RBdXRvY29ycmVjdGlvbkNvbnRleHQoW3NlbGZdKGNvbnN0IFN0cmluZyYgYmVm
b3JlVGV4dCwgY29uc3QgU3RyaW5nJiBtYXJrZWRUZXh0LCBjb25zdCBTdHJpbmcmIHNlbGVjdGVk
VGV4dCwgY29uc3QgU3RyaW5nJiBhZnRlclRleHQsIHVpbnQ2NF90IGxvY2F0aW9uLCB1aW50NjRf
dCBsZW5ndGgsIENhbGxiYWNrQmFzZTo6RXJyb3IpIHsKKyAgICAgICAgX3BhZ2UtPnJlcXVlc3RB
dXRvY29ycmVjdGlvbkNvbnRleHQoW3NlbGZdKGNvbnN0IFN0cmluZyYgYmVmb3JlVGV4dCwgY29u
c3QgU3RyaW5nJiBtYXJrZWRUZXh0LCBjb25zdCBTdHJpbmcmIHNlbGVjdGVkVGV4dCwgY29uc3Qg
U3RyaW5nJiBhZnRlclRleHQsIHVpbnQ2NF90IGxvY2F0aW9uLCB1aW50NjRfdCBsZW5ndGgsIFdl
YktpdDo6Q2FsbGJhY2tCYXNlOjpFcnJvcikgewogICAgICAgICAgICAgX2F1dG9jb3JyZWN0aW9u
RGF0YS5hdXRvY29ycmVjdGlvbkNvbnRleHRIYW5kbGVyKFtXS0F1dG9jb3JyZWN0aW9uQ29udGV4
dCBhdXRvY29ycmVjdGlvbkNvbnRleHRXaXRoRGF0YTpiZWZvcmVUZXh0IG1hcmtlZFRleHQ6bWFy
a2VkVGV4dCBzZWxlY3RlZFRleHQ6c2VsZWN0ZWRUZXh0IGFmdGVyVGV4dDphZnRlclRleHQgc2Vs
ZWN0ZWRSYW5nZUluTWFya2VkVGV4dDpOU01ha2VSYW5nZShsb2NhdGlvbiwgbGVuZ3RoKV0pOwog
ICAgICAgICB9KTsKICAgICB9CkBAIC0yMDU3LDcgKzIwNTcsNyBAQCAtICh2b2lkKWFjY2Vzc29y
eVRhYjooQk9PTClpc05leHQKIAogICAgIF9kaWRBY2Nlc3NvcnlUYWJJbml0aWF0ZUZvY3VzID0g
WUVTOyAvLyBXaWxsIGJlIGNsZWFyZWQgaW4gZWl0aGVyIC1fZGlzcGxheUZvcm1Ob2RlSW5wdXRW
aWV3IG9yIC1jbGVhbnVwSW50ZXJhY3Rpb24uCiAgICAgW3NlbGYgYmVnaW5TZWxlY3Rpb25DaGFu
Z2VdOwotICAgIF9wYWdlLT5mb2N1c05leHRBc3Npc3RlZE5vZGUoaXNOZXh0LCBbc2VsZl0oQ2Fs
bGJhY2tCYXNlOjpFcnJvcikgeworICAgIF9wYWdlLT5mb2N1c05leHRBc3Npc3RlZE5vZGUoaXNO
ZXh0LCBbc2VsZl0oV2ViS2l0OjpDYWxsYmFja0Jhc2U6OkVycm9yKSB7CiAgICAgICAgIFtzZWxm
IGVuZFNlbGVjdGlvbkNoYW5nZV07CiAgICAgICAgIFtzZWxmIHJlbG9hZElucHV0Vmlld3NdOwog
ICAgIH0pOwpAQCAtMjU0NCw3ICsyNTQ0LDcgQEAgLSAoQk9PTClfaW50ZXJwcmV0S2V5RXZlbnQ6
KFdlYklPU0V2ZW50IAogLSAodm9pZClleGVjdXRlRWRpdENvbW1hbmRXaXRoQ2FsbGJhY2s6KE5T
U3RyaW5nICopY29tbWFuZE5hbWUKIHsKICAgICBbc2VsZiBiZWdpblNlbGVjdGlvbkNoYW5nZV07
Ci0gICAgX3BhZ2UtPmV4ZWN1dGVFZGl0Q29tbWFuZChjb21tYW5kTmFtZSwgW3NlbGZdKENhbGxi
YWNrQmFzZTo6RXJyb3IpIHsKKyAgICBfcGFnZS0+ZXhlY3V0ZUVkaXRDb21tYW5kKGNvbW1hbmRO
YW1lLCBbc2VsZl0oV2ViS2l0OjpDYWxsYmFja0Jhc2U6OkVycm9yKSB7CiAgICAgICAgIFtzZWxm
IGVuZFNlbGVjdGlvbkNoYW5nZV07CiAgICAgfSk7CiB9CkluZGV4OiBTb3VyY2UvV2ViS2l0Mi9V
SVByb2Nlc3MvbWFjL1dLRnVsbFNjcmVlbldpbmRvd0NvbnRyb2xsZXIubW0KPT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PQot
LS0gU291cmNlL1dlYktpdDIvVUlQcm9jZXNzL21hYy9XS0Z1bGxTY3JlZW5XaW5kb3dDb250cm9s
bGVyLm1tCShyZXZpc2lvbiAxODI3OTUpCisrKyBTb3VyY2UvV2ViS2l0Mi9VSVByb2Nlc3MvbWFj
L1dLRnVsbFNjcmVlbldpbmRvd0NvbnRyb2xsZXIubW0JKHdvcmtpbmcgY29weSkKQEAgLTEyNSw3
ICsxMjUsNyBAQCAtICh2b2lkKWRlYWxsb2MKICAgICBbW05TTm90aWZpY2F0aW9uQ2VudGVyIGRl
ZmF1bHRDZW50ZXJdIHJlbW92ZU9ic2VydmVyOnNlbGZdOwogCiAgICAgaWYgKF9yZXBhaW50Q2Fs
bGJhY2spIHsKLSAgICAgICAgX3JlcGFpbnRDYWxsYmFjay0+aW52YWxpZGF0ZShDYWxsYmFja0Jh
c2U6OkVycm9yOjpPd25lcldhc0ludmFsaWRhdGVkKTsKKyAgICAgICAgX3JlcGFpbnRDYWxsYmFj
ay0+aW52YWxpZGF0ZShXZWJLaXQ6OkNhbGxiYWNrQmFzZTo6RXJyb3I6Ok93bmVyV2FzSW52YWxp
ZGF0ZWQpOwogICAgICAgICAvLyBpbnZhbGlkYXRlKCkgY2FsbHMgY29tcGxldGVGaW5pc2hFeGl0
RnVsbFNjcmVlbkFuaW1hdGlvbkFmdGVyUmVwYWludCwgd2hpY2gKICAgICAgICAgLy8gY2xlYXJz
IF9yZXBhaW50Q2FsbGJhY2suCiAgICAgICAgIEFTU0VSVCghX3JlcGFpbnRDYWxsYmFjayk7CkBA
IC0zOTMsMTIgKzM5MywxMiBAQCAtICh2b2lkKWZpbmlzaGVkRXhpdEZ1bGxTY3JlZW5BbmltYXRp
b246CiAgICAgW3NlbGYgX21hbmFnZXJdLT5yZXN0b3JlU2Nyb2xsUG9zaXRpb24oKTsKIAogICAg
IGlmIChfcmVwYWludENhbGxiYWNrKSB7Ci0gICAgICAgIF9yZXBhaW50Q2FsbGJhY2stPmludmFs
aWRhdGUoQ2FsbGJhY2tCYXNlOjpFcnJvcjo6T3duZXJXYXNJbnZhbGlkYXRlZCk7CisgICAgICAg
IF9yZXBhaW50Q2FsbGJhY2stPmludmFsaWRhdGUoV2ViS2l0OjpDYWxsYmFja0Jhc2U6OkVycm9y
OjpPd25lcldhc0ludmFsaWRhdGVkKTsKICAgICAgICAgLy8gaW52YWxpZGF0ZSgpIGNhbGxzIGNv
bXBsZXRlRmluaXNoRXhpdEZ1bGxTY3JlZW5BbmltYXRpb25BZnRlclJlcGFpbnQsIHdoaWNoCiAg
ICAgICAgIC8vIGNsZWFycyBfcmVwYWludENhbGxiYWNrLgogICAgICAgICBBU1NFUlQoIV9yZXBh
aW50Q2FsbGJhY2spOwogICAgIH0KLSAgICBfcmVwYWludENhbGxiYWNrID0gVm9pZENhbGxiYWNr
OjpjcmVhdGUoW3NlbGZdKENhbGxiYWNrQmFzZTo6RXJyb3IpIHsKKyAgICBfcmVwYWludENhbGxi
YWNrID0gVm9pZENhbGxiYWNrOjpjcmVhdGUoW3NlbGZdKFdlYktpdDo6Q2FsbGJhY2tCYXNlOjpF
cnJvcikgewogICAgICAgICBbc2VsZiBjb21wbGV0ZUZpbmlzaEV4aXRGdWxsU2NyZWVuQW5pbWF0
aW9uQWZ0ZXJSZXBhaW50XTsKICAgICB9KTsKICAgICBbc2VsZiBfcGFnZV0tPmZvcmNlUmVwYWlu
dChfcmVwYWludENhbGxiYWNrKTsKSW5kZXg6IFNvdXJjZS9XZWJLaXQyL1VJUHJvY2Vzcy9tYWMv
V0tQcmludGluZ1ZpZXcubW0KPT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PQotLS0gU291cmNlL1dlYktpdDIvVUlQcm9jZXNz
L21hYy9XS1ByaW50aW5nVmlldy5tbQkocmV2aXNpb24gMTgyNzk1KQorKysgU291cmNlL1dlYktp
dDIvVUlQcm9jZXNzL21hYy9XS1ByaW50aW5nVmlldy5tbQkod29ya2luZyBjb3B5KQpAQCAtMjY1
LDcgKzI2NSw3IEBAIC0gKHZvaWQpX3ByZXBhcmVQREZEYXRhRm9yUHJpbnRpbmdPblNlY28KICAg
ICBfd2ViRnJhbWUtPnBhZ2UoKS0+YmVnaW5QcmludGluZyhfd2ViRnJhbWUuZ2V0KCksIHByaW50
SW5mbyk7CiAKICAgICBJUENDYWxsYmFja0NvbnRleHQqIGNvbnRleHQgPSBuZXcgSVBDQ2FsbGJh
Y2tDb250ZXh0OwotICAgIFJlZlB0cjxEYXRhQ2FsbGJhY2s+IGNhbGxiYWNrID0gRGF0YUNhbGxi
YWNrOjpjcmVhdGUoW2NvbnRleHRdKEFQSTo6RGF0YSogZGF0YSwgQ2FsbGJhY2tCYXNlOjpFcnJv
cikgeworICAgIFJlZlB0cjxEYXRhQ2FsbGJhY2s+IGNhbGxiYWNrID0gRGF0YUNhbGxiYWNrOjpj
cmVhdGUoW2NvbnRleHRdKEFQSTo6RGF0YSogZGF0YSwgV2ViS2l0OjpDYWxsYmFja0Jhc2U6OkVy
cm9yKSB7CiAgICAgICAgIEFTU0VSVChSdW5Mb29wOjppc01haW4oKSk7CiAKICAgICAgICAgc3Rk
Ojp1bmlxdWVfcHRyPElQQ0NhbGxiYWNrQ29udGV4dD4gY29udGV4dERlbGV0ZXIoY29udGV4dCk7
CkBAIC0zNDAsNyArMzQwLDcgQEAgLSAoQk9PTClfYXNrUGFnZVRvQ29tcHV0ZVBhZ2VSZWN0cwog
ICAgIEFTU0VSVCghX2V4cGVjdGVkQ29tcHV0ZWRQYWdlc0NhbGxiYWNrKTsKIAogICAgIElQQ0Nh
bGxiYWNrQ29udGV4dCogY29udGV4dCA9IG5ldyBJUENDYWxsYmFja0NvbnRleHQ7Ci0gICAgUmVm
UHRyPENvbXB1dGVkUGFnZXNDYWxsYmFjaz4gY2FsbGJhY2sgPSBDb21wdXRlZFBhZ2VzQ2FsbGJh
Y2s6OmNyZWF0ZShbY29udGV4dF0oY29uc3QgVmVjdG9yPFdlYkNvcmU6OkludFJlY3Q+JiBwYWdl
UmVjdHMsIGRvdWJsZSB0b3RhbFNjYWxlRmFjdG9yRm9yUHJpbnRpbmcsIENhbGxiYWNrQmFzZTo6
RXJyb3IpIHsKKyAgICBSZWZQdHI8Q29tcHV0ZWRQYWdlc0NhbGxiYWNrPiBjYWxsYmFjayA9IENv
bXB1dGVkUGFnZXNDYWxsYmFjazo6Y3JlYXRlKFtjb250ZXh0XShjb25zdCBWZWN0b3I8V2ViQ29y
ZTo6SW50UmVjdD4mIHBhZ2VSZWN0cywgZG91YmxlIHRvdGFsU2NhbGVGYWN0b3JGb3JQcmludGlu
ZywgV2ViS2l0OjpDYWxsYmFja0Jhc2U6OkVycm9yKSB7CiAgICAgICAgIHN0ZDo6dW5pcXVlX3B0
cjxJUENDYWxsYmFja0NvbnRleHQ+IGNvbnRleHREZWxldGVyKGNvbnRleHQpOwogICAgICAgICBw
YWdlRGlkQ29tcHV0ZVBhZ2VSZWN0cyhwYWdlUmVjdHMsIHRvdGFsU2NhbGVGYWN0b3JGb3JQcmlu
dGluZywgY29udGV4dCk7CiAgICAgfSk7CkBAIC00OTIsNyArNDkyLDcgQEAgLSAodm9pZClfZHJh
d1ByZXZpZXc6KE5TUmVjdCluc1JlY3QKICAgICAgICAgICAgICAgICBfd2ViRnJhbWUtPnBhZ2Uo
KS0+YmVnaW5QcmludGluZyhfd2ViRnJhbWUuZ2V0KCksIFByaW50SW5mbyhbX3ByaW50T3BlcmF0
aW9uIHByaW50SW5mb10pKTsKIAogICAgICAgICAgICAgICAgIElQQ0NhbGxiYWNrQ29udGV4dCog
Y29udGV4dCA9IG5ldyBJUENDYWxsYmFja0NvbnRleHQ7Ci0gICAgICAgICAgICAgICAgUmVmUHRy
PEltYWdlQ2FsbGJhY2s+IGNhbGxiYWNrID0gSW1hZ2VDYWxsYmFjazo6Y3JlYXRlKFtjb250ZXh0
XShjb25zdCBTaGFyZWFibGVCaXRtYXA6OkhhbmRsZSYgaW1hZ2VIYW5kbGUsIENhbGxiYWNrQmFz
ZTo6RXJyb3IpIHsKKyAgICAgICAgICAgICAgICBSZWZQdHI8SW1hZ2VDYWxsYmFjaz4gY2FsbGJh
Y2sgPSBJbWFnZUNhbGxiYWNrOjpjcmVhdGUoW2NvbnRleHRdKGNvbnN0IFNoYXJlYWJsZUJpdG1h
cDo6SGFuZGxlJiBpbWFnZUhhbmRsZSwgV2ViS2l0OjpDYWxsYmFja0Jhc2U6OkVycm9yKSB7CiAg
ICAgICAgICAgICAgICAgICAgIHN0ZDo6dW5pcXVlX3B0cjxJUENDYWxsYmFja0NvbnRleHQ+IGNv
bnRleHREZWxldGVyKGNvbnRleHQpOwogICAgICAgICAgICAgICAgICAgICBwYWdlRGlkRHJhd1Rv
SW1hZ2UoaW1hZ2VIYW5kbGUsIGNvbnRleHQpOwogICAgICAgICAgICAgICAgIH0pOwpJbmRleDog
U291cmNlL1dlYktpdDIvV2ViUHJvY2Vzcy9QbHVnaW5zL1BsdWdpblZpZXcuY3BwCj09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT0KLS0tIFNvdXJjZS9XZWJLaXQyL1dlYlByb2Nlc3MvUGx1Z2lucy9QbHVnaW5WaWV3LmNwcAko
cmV2aXNpb24gMTgyNzk1KQorKysgU291cmNlL1dlYktpdDIvV2ViUHJvY2Vzcy9QbHVnaW5zL1Bs
dWdpblZpZXcuY3BwCSh3b3JraW5nIGNvcHkpCkBAIC0xNDU2LDcgKzE0NTYsNyBAQCB2b2lkIFBs
dWdpblZpZXc6OnNldFBsdWdpbklzUGxheWluZ0F1ZGlvCiAgICAgICAgIHJldHVybjsKIAogICAg
IG1fcGx1Z2luSXNQbGF5aW5nQXVkaW8gPSBwbHVnaW5Jc1BsYXlpbmdBdWRpbzsKLSAgICBtX3Bs
dWdpbkVsZW1lbnQtPmRvY3VtZW50KCkudXBkYXRlSXNQbGF5aW5nQXVkaW8oKTsKKyAgICBtX3Bs
dWdpbkVsZW1lbnQtPmRvY3VtZW50KCkudXBkYXRlSXNQbGF5aW5nTWVkaWEoKTsKIH0KIAogYm9v
bCBQbHVnaW5WaWV3Ojppc011dGVkKCkgY29uc3QKSW5kZXg6IFNvdXJjZS9XZWJLaXQyL1dlYlBy
b2Nlc3MvV2ViQ29yZVN1cHBvcnQvV2ViQ2hyb21lQ2xpZW50LmNwcAo9PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09Ci0tLSBT
b3VyY2UvV2ViS2l0Mi9XZWJQcm9jZXNzL1dlYkNvcmVTdXBwb3J0L1dlYkNocm9tZUNsaWVudC5j
cHAJKHJldmlzaW9uIDE4Mjc5NSkKKysrIFNvdXJjZS9XZWJLaXQyL1dlYlByb2Nlc3MvV2ViQ29y
ZVN1cHBvcnQvV2ViQ2hyb21lQ2xpZW50LmNwcAkod29ya2luZyBjb3B5KQpAQCAtMTA1MCw5ICsx
MDUwLDkgQEAgYm9vbCBXZWJDaHJvbWVDbGllbnQ6OnNob3VsZFVzZVRpbGVkQmFjawogICAgIHJl
dHVybiBtX3BhZ2UtPmRyYXdpbmdBcmVhKCktPnNob3VsZFVzZVRpbGVkQmFja2luZ0ZvckZyYW1l
VmlldyhmcmFtZVZpZXcpOwogfQogCi12b2lkIFdlYkNocm9tZUNsaWVudDo6aXNQbGF5aW5nQXVk
aW9EaWRDaGFuZ2UoYm9vbCBuZXdJc1BsYXlpbmdBdWRpbykKK3ZvaWQgV2ViQ2hyb21lQ2xpZW50
Ojppc1BsYXlpbmdNZWRpYURpZENoYW5nZShNZWRpYVN0YXRlRmxhZ3Mgc3RhdGUpCiB7Ci0gICAg
bV9wYWdlLT5zZW5kKE1lc3NhZ2VzOjpXZWJQYWdlUHJveHk6OklzUGxheWluZ0F1ZGlvRGlkQ2hh
bmdlKG5ld0lzUGxheWluZ0F1ZGlvKSk7CisgICAgbV9wYWdlLT5zZW5kKE1lc3NhZ2VzOjpXZWJQ
YWdlUHJveHk6OklzUGxheWluZ01lZGlhRGlkQ2hhbmdlKHN0YXRlKSk7CiB9CiAKIHZvaWQgV2Vi
Q2hyb21lQ2xpZW50OjpzZXRQYWdlQWN0aXZpdHlTdGF0ZShQYWdlQWN0aXZpdHlTdGF0ZTo6Rmxh
Z3MgYWN0aXZpdHlTdGF0ZSkKSW5kZXg6IFNvdXJjZS9XZWJLaXQyL1dlYlByb2Nlc3MvV2ViQ29y
ZVN1cHBvcnQvV2ViQ2hyb21lQ2xpZW50LmgKPT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PQotLS0gU291cmNlL1dlYktpdDIv
V2ViUHJvY2Vzcy9XZWJDb3JlU3VwcG9ydC9XZWJDaHJvbWVDbGllbnQuaAkocmV2aXNpb24gMTgy
Nzk1KQorKysgU291cmNlL1dlYktpdDIvV2ViUHJvY2Vzcy9XZWJDb3JlU3VwcG9ydC9XZWJDaHJv
bWVDbGllbnQuaAkod29ya2luZyBjb3B5KQpAQCAtMjkyLDcgKzI5Miw3IEBAIHByaXZhdGU6CiAK
ICAgICB2aXJ0dWFsIGJvb2wgc2hvdWxkVXNlVGlsZWRCYWNraW5nRm9yRnJhbWVWaWV3KGNvbnN0
IFdlYkNvcmU6OkZyYW1lVmlldyopIGNvbnN0IG92ZXJyaWRlOwogCi0gICAgdmlydHVhbCB2b2lk
IGlzUGxheWluZ0F1ZGlvRGlkQ2hhbmdlKGJvb2wpIG92ZXJyaWRlOworICAgIHZpcnR1YWwgdm9p
ZCBpc1BsYXlpbmdNZWRpYURpZENoYW5nZShNZWRpYVN0YXRlRmxhZ3MpIG92ZXJyaWRlOwogICAg
IHZpcnR1YWwgdm9pZCBzZXRQYWdlQWN0aXZpdHlTdGF0ZShXZWJDb3JlOjpQYWdlQWN0aXZpdHlT
dGF0ZTo6RmxhZ3MpIG92ZXJyaWRlOwogCiAjaWYgRU5BQkxFKFNVQlRMRV9DUllQVE8pCg==
</data>

          </attachment>
          <attachment
              isobsolete="0"
              ispatch="1"
              isprivate="0"
          >
            <attachid>250792</attachid>
            <date>2015-04-15 08:50:51 -0700</date>
            <delta_ts>2015-04-15 08:50:51 -0700</delta_ts>
            <desc>Another patch for the bots.</desc>
            <filename>media_play_state_patch_5.txt</filename>
            <type>text/plain</type>
            <size>47109</size>
            <attacher name="Eric Carlson">eric.carlson</attacher>
            
              <data encoding="base64">SW5kZXg6IFNvdXJjZS9XZWJDb3JlL0NoYW5nZUxvZwo9PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09Ci0tLSBTb3VyY2UvV2Vi
Q29yZS9DaGFuZ2VMb2cJKHJldmlzaW9uIDE4MjgwNikKKysrIFNvdXJjZS9XZWJDb3JlL0NoYW5n
ZUxvZwkod29ya2luZyBjb3B5KQpAQCAtMSwzICsxLDMzIEBACisyMDE1LTA0LTE0ICBFcmljIENh
cmxzb24gIDxlcmljLmNhcmxzb25AYXBwbGUuY29tPgorCisgICAgICAgIEdlbmVyYWxpemUgImlz
UGxheWluZ0F1ZGlvIiB0byBpbmNsdWRlIG90aGVyIG1lZGlhIGNoYXJhY3RlcmlzdGljcworICAg
ICAgICBodHRwczovL2J1Z3Mud2Via2l0Lm9yZy9zaG93X2J1Zy5jZ2k/aWQ9MTQzNzEzCisKKyAg
ICAgICAgUmV2aWV3ZWQgYnkgSmVyIE5vYmxlLgorCisgICAgICAgIE5vIG5ldyBmdW5jdGlvbmFs
aXR5LgorCisgICAgICAgICogTW9kdWxlcy93ZWJhdWRpby9BdWRpb0NvbnRleHQuY3BwOgorICAg
ICAgICAoV2ViQ29yZTo6QXVkaW9Db250ZXh0OjpzdG9wKTogdXBkYXRlSXNQbGF5aW5nQXVkaW8g
LT4gdXBkYXRlSXNQbGF5aW5nTWVkaWEuCisgICAgICAgIChXZWJDb3JlOjpBdWRpb0NvbnRleHQ6
OmlzUGxheWluZ0F1ZGlvRGlkQ2hhbmdlKTogRGl0dG8uCisKKyAgICAgICAgKiBkb20vRG9jdW1l
bnQuY3BwOgorICAgICAgICAoV2ViQ29yZTo6RG9jdW1lbnQ6OmFkZEF1ZGlvUHJvZHVjZXIpOiBE
aXR0by4KKyAgICAgICAgKFdlYkNvcmU6OkRvY3VtZW50OjpyZW1vdmVBdWRpb1Byb2R1Y2VyKTog
RGl0dG8uCisgICAgICAgIChXZWJDb3JlOjpEb2N1bWVudDo6dXBkYXRlSXNQbGF5aW5nTWVkaWEp
OiBSZW5hbWVkLgorICAgICAgICAoV2ViQ29yZTo6RG9jdW1lbnQ6OnVwZGF0ZUlzUGxheWluZ0F1
ZGlvKTogRGVsZXRlZC4KKyAgICAgICAgKiBkb20vRG9jdW1lbnQuaDoKKworICAgICAgICAqIGh0
bWwvSFRNTE1lZGlhRWxlbWVudC5jcHA6CisgICAgICAgIChXZWJDb3JlOjpIVE1MTWVkaWFFbGVt
ZW50OjpzZXRNdXRlZCk6IHVwZGF0ZUlzUGxheWluZ0F1ZGlvIC0+IHVwZGF0ZUlzUGxheWluZ01l
ZGlhLgorICAgICAgICAoV2ViQ29yZTo6SFRNTE1lZGlhRWxlbWVudDo6c2V0UGxheWluZyk6IERp
dHRvLgorCisgICAgICAgICogcGFnZS9DaHJvbWVDbGllbnQuaDoKKyAgICAgICAgKiBwYWdlL1Bh
Z2UuY3BwOgorICAgICAgICAoV2ViQ29yZTo6UGFnZTo6dXBkYXRlSXNQbGF5aW5nTWVkaWEpOiBS
ZW5hbWVkLgorICAgICAgICAoV2ViQ29yZTo6UGFnZTo6dXBkYXRlSXNQbGF5aW5nQXVkaW8pOiBE
ZWxldGVkLgorICAgICAgICAqIHBhZ2UvUGFnZS5oOgorCiAyMDE1LTA0LTE0ICBDaHJpcyBEdW1l
eiAgPGNkdW1lekBhcHBsZS5jb20+CiAKICAgICAgICAgRnJhbWVWaWV3OjptX2ZyYW1lIHNob3Vs
ZCBiZSBhIFJlZjxGcmFtZT4KSW5kZXg6IFNvdXJjZS9XZWJDb3JlL01vZHVsZXMvd2ViYXVkaW8v
QXVkaW9Db250ZXh0LmNwcAo9PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09Ci0tLSBTb3VyY2UvV2ViQ29yZS9Nb2R1bGVzL3dl
YmF1ZGlvL0F1ZGlvQ29udGV4dC5jcHAJKHJldmlzaW9uIDE4Mjc5NSkKKysrIFNvdXJjZS9XZWJD
b3JlL01vZHVsZXMvd2ViYXVkaW8vQXVkaW9Db250ZXh0LmNwcAkod29ya2luZyBjb3B5KQpAQCAt
MzQ0LDcgKzM0NCw3IEBAIHZvaWQgQXVkaW9Db250ZXh0OjpzdG9wKCkKICAgICAgICAgcmV0dXJu
OwogICAgIG1faXNTdG9wU2NoZWR1bGVkID0gdHJ1ZTsKIAotICAgIGRvY3VtZW50KCktPnVwZGF0
ZUlzUGxheWluZ0F1ZGlvKCk7CisgICAgZG9jdW1lbnQoKS0+dXBkYXRlSXNQbGF5aW5nTWVkaWEo
KTsKIAogICAgIG1fZXZlbnRRdWV1ZS0+Y2xvc2UoKTsKIApAQCAtMTAzOCw3ICsxMDM4LDcgQEAg
dm9pZCBBdWRpb0NvbnRleHQ6OnBhZ2VNdXRlZFN0YXRlRGlkQ2hhbgogCiB2b2lkIEF1ZGlvQ29u
dGV4dDo6aXNQbGF5aW5nQXVkaW9EaWRDaGFuZ2UoKQogewotICAgIGRvY3VtZW50KCktPnVwZGF0
ZUlzUGxheWluZ0F1ZGlvKCk7CisgICAgZG9jdW1lbnQoKS0+dXBkYXRlSXNQbGF5aW5nTWVkaWEo
KTsKIH0KIAogdm9pZCBBdWRpb0NvbnRleHQ6OmZpcmVDb21wbGV0aW9uRXZlbnQoKQpJbmRleDog
U291cmNlL1dlYkNvcmUvZG9tL0RvY3VtZW50LmNwcAo9PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09Ci0tLSBTb3VyY2UvV2Vi
Q29yZS9kb20vRG9jdW1lbnQuY3BwCShyZXZpc2lvbiAxODI3OTUpCisrKyBTb3VyY2UvV2ViQ29y
ZS9kb20vRG9jdW1lbnQuY3BwCSh3b3JraW5nIGNvcHkpCkBAIC0zNDE2LDE2ICszNDE2LDE2IEBA
IHZvaWQgRG9jdW1lbnQ6OnVwZGF0ZVZpZXdwb3J0VW5pdHNPblJlc2kKIHZvaWQgRG9jdW1lbnQ6
OmFkZEF1ZGlvUHJvZHVjZXIoQXVkaW9Qcm9kdWNlciogYXVkaW9Qcm9kdWNlcikKIHsKICAgICBt
X2F1ZGlvUHJvZHVjZXJzLmFkZChhdWRpb1Byb2R1Y2VyKTsKLSAgICB1cGRhdGVJc1BsYXlpbmdB
dWRpbygpOworICAgIHVwZGF0ZUlzUGxheWluZ01lZGlhKCk7CiB9CiAKIHZvaWQgRG9jdW1lbnQ6
OnJlbW92ZUF1ZGlvUHJvZHVjZXIoQXVkaW9Qcm9kdWNlciogYXVkaW9Qcm9kdWNlcikKIHsKICAg
ICBtX2F1ZGlvUHJvZHVjZXJzLnJlbW92ZShhdWRpb1Byb2R1Y2VyKTsKLSAgICB1cGRhdGVJc1Bs
YXlpbmdBdWRpbygpOworICAgIHVwZGF0ZUlzUGxheWluZ01lZGlhKCk7CiB9CiAKLXZvaWQgRG9j
dW1lbnQ6OnVwZGF0ZUlzUGxheWluZ0F1ZGlvKCkKK3ZvaWQgRG9jdW1lbnQ6OnVwZGF0ZUlzUGxh
eWluZ01lZGlhKCkKIHsKICAgICBib29sIGlzUGxheWluZ0F1ZGlvID0gZmFsc2U7CiAgICAgZm9y
IChhdXRvIGF1ZGlvUHJvZHVjZXIgOiBtX2F1ZGlvUHJvZHVjZXJzKSB7CkBAIC0zNDQxLDcgKzM0
NDEsNyBAQCB2b2lkIERvY3VtZW50Ojp1cGRhdGVJc1BsYXlpbmdBdWRpbygpCiAgICAgbV9pc1Bs
YXlpbmdBdWRpbyA9IGlzUGxheWluZ0F1ZGlvOwogCiAgICAgaWYgKHBhZ2UoKSkKLSAgICAgICAg
cGFnZSgpLT51cGRhdGVJc1BsYXlpbmdBdWRpbygpOworICAgICAgICBwYWdlKCktPnVwZGF0ZUlz
UGxheWluZ01lZGlhKCk7CiB9CiAKIHZvaWQgRG9jdW1lbnQ6OnBhZ2VNdXRlZFN0YXRlRGlkQ2hh
bmdlKCkKSW5kZXg6IFNvdXJjZS9XZWJDb3JlL2RvbS9Eb2N1bWVudC5oCj09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT0KLS0t
IFNvdXJjZS9XZWJDb3JlL2RvbS9Eb2N1bWVudC5oCShyZXZpc2lvbiAxODI3OTUpCisrKyBTb3Vy
Y2UvV2ViQ29yZS9kb20vRG9jdW1lbnQuaAkod29ya2luZyBjb3B5KQpAQCAtMTIyOSw3ICsxMjI5
LDcgQEAgcHVibGljOgogICAgIFdFQkNPUkVfRVhQT1JUIHZvaWQgYWRkQXVkaW9Qcm9kdWNlcihB
dWRpb1Byb2R1Y2VyKik7CiAgICAgV0VCQ09SRV9FWFBPUlQgdm9pZCByZW1vdmVBdWRpb1Byb2R1
Y2VyKEF1ZGlvUHJvZHVjZXIqKTsKICAgICBib29sIGlzUGxheWluZ0F1ZGlvKCkgY29uc3QgeyBy
ZXR1cm4gbV9pc1BsYXlpbmdBdWRpbzsgfQotICAgIFdFQkNPUkVfRVhQT1JUIHZvaWQgdXBkYXRl
SXNQbGF5aW5nQXVkaW8oKTsKKyAgICBXRUJDT1JFX0VYUE9SVCB2b2lkIHVwZGF0ZUlzUGxheWlu
Z01lZGlhKCk7CiAgICAgdm9pZCBwYWdlTXV0ZWRTdGF0ZURpZENoYW5nZSgpOwogICAgIFdlYWtQ
dHI8RG9jdW1lbnQ+IGNyZWF0ZVdlYWtQdHIoKSB7IHJldHVybiBtX3dlYWtGYWN0b3J5LmNyZWF0
ZVdlYWtQdHIoKTsgfQogCkluZGV4OiBTb3VyY2UvV2ViQ29yZS9odG1sL0hUTUxNZWRpYUVsZW1l
bnQuY3BwCj09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT0KLS0tIFNvdXJjZS9XZWJDb3JlL2h0bWwvSFRNTE1lZGlhRWxlbWVu
dC5jcHAJKHJldmlzaW9uIDE4Mjc5NSkKKysrIFNvdXJjZS9XZWJDb3JlL2h0bWwvSFRNTE1lZGlh
RWxlbWVudC5jcHAJKHdvcmtpbmcgY29weSkKQEAgLTI5OTUsNyArMjk5NSw3IEBAIHZvaWQgSFRN
TE1lZGlhRWxlbWVudDo6c2V0TXV0ZWQoYm9vbCBtdXQKICAgICAgICAgICAgIH0KICAgICAgICAg
fQogICAgICAgICBzY2hlZHVsZUV2ZW50KGV2ZW50TmFtZXMoKS52b2x1bWVjaGFuZ2VFdmVudCk7
Ci0gICAgICAgIGRvY3VtZW50KCkudXBkYXRlSXNQbGF5aW5nQXVkaW8oKTsKKyAgICAgICAgZG9j
dW1lbnQoKS51cGRhdGVJc1BsYXlpbmdNZWRpYSgpOwogICAgIH0KICNlbmRpZgogfQpAQCAtNDMy
Myw3ICs0MzIzLDcgQEAgdm9pZCBIVE1MTWVkaWFFbGVtZW50OjptZWRpYVBsYXllckNoYXJhYwog
ICAgIGlmIChyZW5kZXJlcigpKQogICAgICAgICByZW5kZXJlcigpLT51cGRhdGVGcm9tRWxlbWVu
dCgpOwogCi0gICAgZG9jdW1lbnQoKS51cGRhdGVJc1BsYXlpbmdBdWRpbygpOworICAgIGRvY3Vt
ZW50KCkudXBkYXRlSXNQbGF5aW5nTWVkaWEoKTsKIAogICAgIGVuZFByb2Nlc3NpbmdNZWRpYVBs
YXllckNhbGxiYWNrKCk7CiB9CkBAIC00NTc4LDcgKzQ1NzgsNyBAQCB2b2lkIEhUTUxNZWRpYUVs
ZW1lbnQ6OnNldFBsYXlpbmcoYm9vbCBwCiAgICAgICAgIHJldHVybjsKICAgICAKICAgICBtX3Bs
YXlpbmcgPSBwbGF5aW5nOwotICAgIGRvY3VtZW50KCkudXBkYXRlSXNQbGF5aW5nQXVkaW8oKTsK
KyAgICBkb2N1bWVudCgpLnVwZGF0ZUlzUGxheWluZ01lZGlhKCk7CiB9CiAKIHZvaWQgSFRNTE1l
ZGlhRWxlbWVudDo6c2V0UGF1c2VkSW50ZXJuYWwoYm9vbCBiKQpJbmRleDogU291cmNlL1dlYkNv
cmUvcGFnZS9DaHJvbWVDbGllbnQuaAo9PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09Ci0tLSBTb3VyY2UvV2ViQ29yZS9wYWdl
L0Nocm9tZUNsaWVudC5oCShyZXZpc2lvbiAxODI3OTUpCisrKyBTb3VyY2UvV2ViQ29yZS9wYWdl
L0Nocm9tZUNsaWVudC5oCSh3b3JraW5nIGNvcHkpCkBAIC00MjMsNyArNDIzLDE1IEBAIHB1Ymxp
YzoKIAogICAgIHZpcnR1YWwgYm9vbCBzaG91bGRVc2VUaWxlZEJhY2tpbmdGb3JGcmFtZVZpZXco
Y29uc3QgRnJhbWVWaWV3KikgY29uc3QgeyByZXR1cm4gZmFsc2U7IH0KIAotICAgIHZpcnR1YWwg
dm9pZCBpc1BsYXlpbmdBdWRpb0RpZENoYW5nZShib29sKSB7IH0KKyAgICBlbnVtIE1lZGlhU3Rh
dGUgeworICAgICAgICBJc05vdFBsYXlpbmcgPSAwLAorICAgICAgICBJc1BsYXlpbmdBdWRpbyA9
IDEgPDwgMCwKKyAgICAgICAgSXNQbGF5aW5nVmlkZW8gPSAxIDw8IDEsCisgICAgICAgIElzUGxh
eWluZ1RvRXh0ZXJuYWxEZXZpY2UgPSAxIDw8IDIsCisgICAgfTsKKyAgICB0eXBlZGVmIHVuc2ln
bmVkIE1lZGlhU3RhdGVGbGFnczsKKyAgICB2aXJ0dWFsIHZvaWQgaXNQbGF5aW5nTWVkaWFEaWRD
aGFuZ2UoTWVkaWFTdGF0ZUZsYWdzKSB7IH0KKwogICAgIHZpcnR1YWwgdm9pZCBzZXRQYWdlQWN0
aXZpdHlTdGF0ZShQYWdlQWN0aXZpdHlTdGF0ZTo6RmxhZ3MpIHsgfQogCiAjaWYgRU5BQkxFKFNV
QlRMRV9DUllQVE8pCkluZGV4OiBTb3VyY2UvV2ViQ29yZS9wYWdlL1BhZ2UuY3BwCj09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT0KLS0tIFNvdXJjZS9XZWJDb3JlL3BhZ2UvUGFnZS5jcHAJKHJldmlzaW9uIDE4Mjc5NSkKKysr
IFNvdXJjZS9XZWJDb3JlL3BhZ2UvUGFnZS5jcHAJKHdvcmtpbmcgY29weSkKQEAgLTEwOCw3ICsx
MDgsNiBAQAogI2lmIEVOQUJMRShXSVJFTEVTU19QTEFZQkFDS19UQVJHRVQpCiAjaW5jbHVkZSAi
SFRNTFZpZGVvRWxlbWVudC5oIgogI2luY2x1ZGUgIk1lZGlhUGxheWJhY2tUYXJnZXQuaCIKLSNp
bmNsdWRlICJNZWRpYVBsYXliYWNrVGFyZ2V0UGlja2VyQ2xpZW50LmgiCiAjZW5kaWYKIAogbmFt
ZXNwYWNlIFdlYkNvcmUgewpAQCAtMTE5OCw3ICsxMTk3LDcgQEAgdm9pZCBQYWdlOjplbmFibGVM
ZWdhY3lQcml2YXRlQnJvd3NpbmcoYgogICAgIHNldFNlc3Npb25JRChwcml2YXRlQnJvd3NpbmdF
bmFibGVkID8gU2Vzc2lvbklEOjpsZWdhY3lQcml2YXRlU2Vzc2lvbklEKCkgOiBTZXNzaW9uSUQ6
OmRlZmF1bHRTZXNzaW9uSUQoKSk7CiB9CiAKLXZvaWQgUGFnZTo6dXBkYXRlSXNQbGF5aW5nQXVk
aW8oKQordm9pZCBQYWdlOjp1cGRhdGVJc1BsYXlpbmdNZWRpYSgpCiB7CiAgICAgYm9vbCBpc1Bs
YXlpbmdBdWRpbyA9IGZhbHNlOwogICAgIGZvciAoRnJhbWUqIGZyYW1lID0gJm1haW5GcmFtZSgp
OyBmcmFtZTsgZnJhbWUgPSBmcmFtZS0+dHJlZSgpLnRyYXZlcnNlTmV4dCgpKSB7CkBAIC0xMjEz
LDcgKzEyMTIsNyBAQCB2b2lkIFBhZ2U6OnVwZGF0ZUlzUGxheWluZ0F1ZGlvKCkKIAogICAgIG1f
aXNQbGF5aW5nQXVkaW8gPSBpc1BsYXlpbmdBdWRpbzsKIAotICAgIGNocm9tZSgpLmNsaWVudCgp
LmlzUGxheWluZ0F1ZGlvRGlkQ2hhbmdlKG1faXNQbGF5aW5nQXVkaW8pOworICAgIGNocm9tZSgp
LmNsaWVudCgpLmlzUGxheWluZ01lZGlhRGlkQ2hhbmdlKG1faXNQbGF5aW5nQXVkaW8gPyBDaHJv
bWVDbGllbnQ6OklzUGxheWluZ0F1ZGlvIDogQ2hyb21lQ2xpZW50OjpJc05vdFBsYXlpbmcpOwog
fQogCiB2b2lkIFBhZ2U6OnNldE11dGVkKGJvb2wgbXV0ZWQpCkluZGV4OiBTb3VyY2UvV2ViQ29y
ZS9wYWdlL1BhZ2UuaAo9PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09Ci0tLSBTb3VyY2UvV2ViQ29yZS9wYWdlL1BhZ2UuaAko
cmV2aXNpb24gMTgyNzk1KQorKysgU291cmNlL1dlYkNvcmUvcGFnZS9QYWdlLmgJKHdvcmtpbmcg
Y29weSkKQEAgLTQyMyw3ICs0MjMsNyBAQCBwdWJsaWM6CiAgICAgYm9vbCB1c2VzRXBoZW1lcmFs
U2Vzc2lvbigpIGNvbnN0IHsgcmV0dXJuIG1fc2Vzc2lvbklELmlzRXBoZW1lcmFsKCk7IH0KIAog
ICAgIGJvb2wgaXNQbGF5aW5nQXVkaW8oKSBjb25zdCB7IHJldHVybiBtX2lzUGxheWluZ0F1ZGlv
OyB9Ci0gICAgdm9pZCB1cGRhdGVJc1BsYXlpbmdBdWRpbygpOworICAgIHZvaWQgdXBkYXRlSXNQ
bGF5aW5nTWVkaWEoKTsKICAgICBib29sIGlzTXV0ZWQoKSBjb25zdCB7IHJldHVybiBtX211dGVk
OyB9CiAgICAgV0VCQ09SRV9FWFBPUlQgdm9pZCBzZXRNdXRlZChib29sKTsKIApJbmRleDogU291
cmNlL1dlYktpdDIvQ2hhbmdlTG9nCj09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT0KLS0tIFNvdXJjZS9XZWJLaXQyL0NoYW5n
ZUxvZwkocmV2aXNpb24gMTgyODA2KQorKysgU291cmNlL1dlYktpdDIvQ2hhbmdlTG9nCSh3b3Jr
aW5nIGNvcHkpCkBAIC0xLDMgKzEsNTQgQEAKKzIwMTUtMDQtMTQgIEVyaWMgQ2FybHNvbiAgPGVy
aWMuY2FybHNvbkBhcHBsZS5jb20+CisKKyAgICAgICAgR2VuZXJhbGl6ZSAiaXNQbGF5aW5nQXVk
aW8iIHRvIGluY2x1ZGUgb3RoZXIgbWVkaWEgY2hhcmFjdGVyaXN0aWNzCisgICAgICAgIGh0dHBz
Oi8vYnVncy53ZWJraXQub3JnL3Nob3dfYnVnLmNnaT9pZD0xNDM3MTMKKworICAgICAgICBSZXZp
ZXdlZCBieSBKZXIgTm9ibGUuCisKKyAgICAgICAgKiBVSVByb2Nlc3MvQVBJL0MvV0tQYWdlLmNw
cDoKKyAgICAgICAgKHRvR2VuZXJpY0NhbGxiYWNrRnVuY3Rpb24pOiBTY29wZSBDYWxsYmFja0Jh
c2UuCisgICAgICAgIChXS1BhZ2VGb3JjZVJlcGFpbnQpOiBEaXR0by4KKyAgICAgICAgKFdLUGFn
ZVZhbGlkYXRlQ29tbWFuZCk6IERpdHRvLgorICAgICAgICAoV0tQYWdlQ29tcHV0ZVBhZ2VzRm9y
UHJpbnRpbmcpOiBEaXR0by4KKworICAgICAgICAqIFVJUHJvY2Vzcy9BUEkvQ29jb2EvX1dLVGh1
bWJuYWlsVmlldy5tbToKKyAgICAgICAgKC1bX1dLVGh1bWJuYWlsVmlldyBfcmVxdWVzdFNuYXBz
aG90SWZOZWVkZWRdKTogRGl0dG8uCisKKyAgICAgICAgKiBVSVByb2Nlc3MvQVBJL21hYy9XS1Zp
ZXcubW06CisgICAgICAgICgtW1dLVmlldyBiZWNvbWVGaXJzdFJlc3BvbmRlcl0pOiBEaXR0by4K
KyAgICAgICAgKC1bV0tWaWV3IHVwZGF0ZUZvbnRQYW5lbElmTmVlZGVkXSk6IERpdHRvLgorICAg
ICAgICAoLVtXS1ZpZXcgdmFsaWRhdGVVc2VySW50ZXJmYWNlSXRlbTpdKTogRGl0dG8uCisgICAg
ICAgICgtW1dLVmlldyBzdGFydFNwZWFraW5nOl0pOiBEaXR0by4KKyAgICAgICAgKC1bV0tWaWV3
IHNlbGVjdGVkUmFuZ2VXaXRoQ29tcGxldGlvbkhhbmRsZXI6XSk6IERpdHRvLgorICAgICAgICAo
LVtXS1ZpZXcgbWFya2VkUmFuZ2VXaXRoQ29tcGxldGlvbkhhbmRsZXI6XSk6IERpdHRvLgorICAg
ICAgICAoLVtXS1ZpZXcgaGFzTWFya2VkVGV4dFdpdGhDb21wbGV0aW9uSGFuZGxlcjpdKTogRGl0
dG8uCisgICAgICAgICgtW1dLVmlldyBhdHRyaWJ1dGVkU3Vic3RyaW5nRm9yUHJvcG9zZWRSYW5n
ZTpjb21wbGV0aW9uSGFuZGxlcjpdKTogRGl0dG8uCisgICAgICAgICgtW1dLVmlldyBmaXJzdFJl
Y3RGb3JDaGFyYWN0ZXJSYW5nZTpjb21wbGV0aW9uSGFuZGxlcjpdKTogRGl0dG8uCisgICAgICAg
ICgtW1dLVmlldyBjaGFyYWN0ZXJJbmRleEZvclBvaW50OmNvbXBsZXRpb25IYW5kbGVyOl0pOiBE
aXR0by4KKworICAgICAgICAqIFVJUHJvY2Vzcy9XZWJQYWdlUHJveHkuY3BwOgorICAgICAgICAo
V2ViS2l0OjpXZWJQYWdlUHJveHk6OmlzUGxheWluZ01lZGlhRGlkQ2hhbmdlKTogUmVuYW1lIGZy
b20gaXNQbGF5aW5nQXVkaW9EaWRDaGFuZ2UuCisgICAgICAgIChXZWJLaXQ6OldlYlBhZ2VQcm94
eTo6aXNQbGF5aW5nQXVkaW9EaWRDaGFuZ2UpOiBEZWxldGVkLgorICAgICAgICAqIFVJUHJvY2Vz
cy9XZWJQYWdlUHJveHkuaDoKKworICAgICAgICAqIFVJUHJvY2Vzcy9XZWJQYWdlUHJveHkubWVz
c2FnZXMuaW46CisKKyAgICAgICAgKiBVSVByb2Nlc3MvbWFjL1dLRnVsbFNjcmVlbldpbmRvd0Nv
bnRyb2xsZXIubW06CisgICAgICAgICgtW1dLRnVsbFNjcmVlbldpbmRvd0NvbnRyb2xsZXIgZGVh
bGxvY10pOiBTY29wZSBDYWxsYmFja0Jhc2UuCisgICAgICAgICgtW1dLRnVsbFNjcmVlbldpbmRv
d0NvbnRyb2xsZXIgZmluaXNoZWRFeGl0RnVsbFNjcmVlbkFuaW1hdGlvbjpdKTogRGl0dG8uCisK
KyAgICAgICAgKiBVSVByb2Nlc3MvbWFjL1dLUHJpbnRpbmdWaWV3Lm1tOgorICAgICAgICAoLVtX
S1ByaW50aW5nVmlldyBfcHJlcGFyZVBERkRhdGFGb3JQcmludGluZ09uU2Vjb25kYXJ5VGhyZWFk
XSk6IERpdHRvLgorICAgICAgICAoLVtXS1ByaW50aW5nVmlldyBfYXNrUGFnZVRvQ29tcHV0ZVBh
Z2VSZWN0c10pOiBEaXR0by4KKyAgICAgICAgKC1bV0tQcmludGluZ1ZpZXcgX2RyYXdQcmV2aWV3
Ol0pOiBEaXR0by4KKworICAgICAgICAqIFdlYlByb2Nlc3MvUGx1Z2lucy9QbHVnaW5WaWV3LmNw
cDoKKyAgICAgICAgKFdlYktpdDo6UGx1Z2luVmlldzo6c2V0UGx1Z2luSXNQbGF5aW5nQXVkaW8p
OgorICAgICAgICAqIFdlYlByb2Nlc3MvV2ViQ29yZVN1cHBvcnQvV2ViQ2hyb21lQ2xpZW50LmNw
cDoKKyAgICAgICAgKFdlYktpdDo6V2ViQ2hyb21lQ2xpZW50Ojppc1BsYXlpbmdNZWRpYURpZENo
YW5nZSk6CisgICAgICAgIChXZWJLaXQ6OldlYkNocm9tZUNsaWVudDo6aXNQbGF5aW5nQXVkaW9E
aWRDaGFuZ2UpOiBEZWxldGVkLgorICAgICAgICAqIFdlYlByb2Nlc3MvV2ViQ29yZVN1cHBvcnQv
V2ViQ2hyb21lQ2xpZW50Lmg6CisKIDIwMTUtMDQtMTQgIEFuZGVycyBDYXJsc3NvbiAgPGFuZGVy
c2NhQGFwcGxlLmNvbT4KIAogICAgICAgICBNb3JlIHdvcmsgb24gbWFraW5nIHRoZSBTaGFyZWRN
ZW1vcnkgaW50ZXJmYWNlIG1vcmUgc2FuZQpJbmRleDogU291cmNlL1dlYktpdDIvVUlQcm9jZXNz
L1dlYlBhZ2VQcm94eS5jcHAKPT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PQotLS0gU291cmNlL1dlYktpdDIvVUlQcm9jZXNz
L1dlYlBhZ2VQcm94eS5jcHAJKHJldmlzaW9uIDE4Mjc5NSkKKysrIFNvdXJjZS9XZWJLaXQyL1VJ
UHJvY2Vzcy9XZWJQYWdlUHJveHkuY3BwCSh3b3JraW5nIGNvcHkpCkBAIC01NjQwLDEyICs1NjQw
LDEzIEBAIHZvaWQgV2ViUGFnZVByb3h5OjpuYXZpZ2F0aW9uR2VzdHVyZVNuYXAKICAgICBtX2lz
U2hvd2luZ05hdmlnYXRpb25HZXN0dXJlU25hcHNob3QgPSBmYWxzZTsKIH0KIAotdm9pZCBXZWJQ
YWdlUHJveHk6OmlzUGxheWluZ0F1ZGlvRGlkQ2hhbmdlKGJvb2wgbmV3SXNQbGF5aW5nQXVkaW8p
Cit2b2lkIFdlYlBhZ2VQcm94eTo6aXNQbGF5aW5nTWVkaWFEaWRDaGFuZ2UoV2ViQ29yZTo6Q2hy
b21lQ2xpZW50OjpNZWRpYVN0YXRlRmxhZ3Mgc3RhdGUpCiB7Ci0gICAgaWYgKG1faXNQbGF5aW5n
QXVkaW8gPT0gbmV3SXNQbGF5aW5nQXVkaW8pCisgICAgYm9vbCBpc1BsYXlpbmdBdWRpbyA9IHN0
YXRlICYgV2ViQ29yZTo6Q2hyb21lQ2xpZW50OjpJc1BsYXlpbmdBdWRpbzsKKyAgICBpZiAobV9p
c1BsYXlpbmdBdWRpbyA9PSBpc1BsYXlpbmdBdWRpbykKICAgICAgICAgcmV0dXJuOwogCi0gICAg
bV9pc1BsYXlpbmdBdWRpbyA9IG5ld0lzUGxheWluZ0F1ZGlvOworICAgIG1faXNQbGF5aW5nQXVk
aW8gPSBpc1BsYXlpbmdBdWRpbzsKICAgICBtX3VpQ2xpZW50LT5pc1BsYXlpbmdBdWRpb0RpZENo
YW5nZSgqdGhpcyk7CiB9CiAKSW5kZXg6IFNvdXJjZS9XZWJLaXQyL1VJUHJvY2Vzcy9XZWJQYWdl
UHJveHkuaAo9PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09Ci0tLSBTb3VyY2UvV2ViS2l0Mi9VSVByb2Nlc3MvV2ViUGFnZVBy
b3h5LmgJKHJldmlzaW9uIDE4Mjc5NSkKKysrIFNvdXJjZS9XZWJLaXQyL1VJUHJvY2Vzcy9XZWJQ
YWdlUHJveHkuaAkod29ya2luZyBjb3B5KQpAQCAtNjMsNiArNjMsNyBAQAogI2luY2x1ZGUgIldl
YlBhZ2VQcm94eU1lc3NhZ2VzLmgiCiAjaW5jbHVkZSAiV2ViUG9wdXBNZW51UHJveHkuaCIKICNp
bmNsdWRlICJXZWJQcm9jZXNzTGlmZXRpbWVUcmFja2VyLmgiCisjaW5jbHVkZSA8V2ViQ29yZS9D
aHJvbWVDbGllbnQuaD4KICNpbmNsdWRlIDxXZWJDb3JlL0NvbG9yLmg+CiAjaW5jbHVkZSA8V2Vi
Q29yZS9EcmFnQWN0aW9ucy5oPgogI2luY2x1ZGUgPFdlYkNvcmUvSGl0VGVzdFJlc3VsdC5oPgpA
QCAtOTgyLDcgKzk4Myw3IEBAIHB1YmxpYzoKIAogICAgIGJvb2wgaXNTaG93aW5nTmF2aWdhdGlv
bkdlc3R1cmVTbmFwc2hvdCgpIGNvbnN0IHsgcmV0dXJuIG1faXNTaG93aW5nTmF2aWdhdGlvbkdl
c3R1cmVTbmFwc2hvdDsgfQogCi0gICAgdm9pZCBpc1BsYXlpbmdBdWRpb0RpZENoYW5nZShib29s
KTsKKyAgICB2b2lkIGlzUGxheWluZ01lZGlhRGlkQ2hhbmdlKFdlYkNvcmU6OkNocm9tZUNsaWVu
dDo6TWVkaWFTdGF0ZUZsYWdzKTsKICAgICBib29sIGlzUGxheWluZ0F1ZGlvKCkgY29uc3QgeyBy
ZXR1cm4gbV9pc1BsYXlpbmdBdWRpbzsgfQogCiAjaWYgUExBVEZPUk0oTUFDKQpJbmRleDogU291
cmNlL1dlYktpdDIvVUlQcm9jZXNzL1dlYlBhZ2VQcm94eS5tZXNzYWdlcy5pbgo9PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
Ci0tLSBTb3VyY2UvV2ViS2l0Mi9VSVByb2Nlc3MvV2ViUGFnZVByb3h5Lm1lc3NhZ2VzLmluCShy
ZXZpc2lvbiAxODI3OTUpCisrKyBTb3VyY2UvV2ViS2l0Mi9VSVByb2Nlc3MvV2ViUGFnZVByb3h5
Lm1lc3NhZ2VzLmluCSh3b3JraW5nIGNvcHkpCkBAIC00MjEsNyArNDIxLDcgQEAgbWVzc2FnZXMg
LT4gV2ViUGFnZVByb3h5IHsKICAgICBDb250ZW50RmlsdGVyRGlkQmxvY2tMb2FkRm9yRnJhbWUo
V2ViQ29yZTo6Q29udGVudEZpbHRlclVuYmxvY2tIYW5kbGVyIHVuYmxvY2tIYW5kbGVyLCB1aW50
NjRfdCBmcmFtZUlEKQogI2VuZGlmCiAKLSAgICBJc1BsYXlpbmdBdWRpb0RpZENoYW5nZShib29s
IG5ld0lzUGxheWluZ0F1ZGlvKQorICAgIElzUGxheWluZ01lZGlhRGlkQ2hhbmdlKHVuc2lnbmVk
IHN0YXRlKQogCiAjaWYgUExBVEZPUk0oTUFDKQogICAgIERpZFBlcmZvcm1BY3Rpb25NZW51SGl0
VGVzdChzdHJ1Y3QgV2ViS2l0OjpXZWJIaXRUZXN0UmVzdWx0OjpEYXRhIHJlc3VsdCwgYm9vbCBm
b3JJbW1lZGlhdGVBY3Rpb24sIGJvb2wgY29udGVudFByZXZlbnRzRGVmYXVsdCwgV2ViS2l0OjpV
c2VyRGF0YSB1c2VyRGF0YSkKSW5kZXg6IFNvdXJjZS9XZWJLaXQyL1VJUHJvY2Vzcy9BUEkvQy9X
S1BhZ2UuY3BwCj09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT0KLS0tIFNvdXJjZS9XZWJLaXQyL1VJUHJvY2Vzcy9BUEkvQy9X
S1BhZ2UuY3BwCShyZXZpc2lvbiAxODI3OTUpCisrKyBTb3VyY2UvV2ViS2l0Mi9VSVByb2Nlc3Mv
QVBJL0MvV0tQYWdlLmNwcAkod29ya2luZyBjb3B5KQpAQCAtMTkzMywxMCArMTkzMywxMSBAQCB2
b2lkIFdLUGFnZVJ1bkphdmFTY3JpcHRJbk1haW5GcmFtZV9iKFdLCiB9CiAjZW5kaWYKIAotc3Rh
dGljIHN0ZDo6ZnVuY3Rpb248dm9pZCAoY29uc3QgU3RyaW5nJiwgQ2FsbGJhY2tCYXNlOjpFcnJv
cik+IHRvR2VuZXJpY0NhbGxiYWNrRnVuY3Rpb24odm9pZCogY29udGV4dCwgdm9pZCAoKmNhbGxi
YWNrKShXS1N0cmluZ1JlZiwgV0tFcnJvclJlZiwgdm9pZCopKQorc3RhdGljIHN0ZDo6ZnVuY3Rp
b248dm9pZCAoY29uc3QgU3RyaW5nJiwgV2ViS2l0OjpDYWxsYmFja0Jhc2U6OkVycm9yKT4gdG9H
ZW5lcmljQ2FsbGJhY2tGdW5jdGlvbih2b2lkKiBjb250ZXh0LCB2b2lkICgqY2FsbGJhY2spKFdL
U3RyaW5nUmVmLCBXS0Vycm9yUmVmLCB2b2lkKikpCiB7Ci0gICAgcmV0dXJuIFtjb250ZXh0LCBj
YWxsYmFja10oY29uc3QgU3RyaW5nJiByZXR1cm5WYWx1ZSwgQ2FsbGJhY2tCYXNlOjpFcnJvciBl
cnJvcikgewotICAgICAgICBjYWxsYmFjayh0b0FQSShBUEk6OlN0cmluZzo6Y3JlYXRlKHJldHVy
blZhbHVlKS5nZXQoKSksIGVycm9yICE9IENhbGxiYWNrQmFzZTo6RXJyb3I6Ok5vbmUgPyB0b0FQ
SShBUEk6OkVycm9yOjpjcmVhdGUoKS5nZXQoKSkgOiAwLCBjb250ZXh0KTsKKyAgICByZXR1cm4g
W2NvbnRleHQsIGNhbGxiYWNrXShjb25zdCBTdHJpbmcmIHJldHVyblZhbHVlLCBXZWJLaXQ6OkNh
bGxiYWNrQmFzZTo6RXJyb3IgZXJyb3IpCisgICAgeworICAgICAgICBjYWxsYmFjayh0b0FQSShB
UEk6OlN0cmluZzo6Y3JlYXRlKHJldHVyblZhbHVlKS5nZXQoKSksIGVycm9yICE9IFdlYktpdDo6
Q2FsbGJhY2tCYXNlOjpFcnJvcjo6Tm9uZSA/IHRvQVBJKEFQSTo6RXJyb3I6OmNyZWF0ZSgpLmdl
dCgpKSA6IDAsIGNvbnRleHQpOwogICAgIH07CiB9CiAKQEAgLTE5NzksOCArMTk4MCw4IEBAIHZv
aWQgV0tQYWdlR2V0Q29udGVudHNBc01IVE1MRGF0YShXS1BhZ2UKIAogdm9pZCBXS1BhZ2VGb3Jj
ZVJlcGFpbnQoV0tQYWdlUmVmIHBhZ2VSZWYsIHZvaWQqIGNvbnRleHQsIFdLUGFnZUZvcmNlUmVw
YWludEZ1bmN0aW9uIGNhbGxiYWNrKQogewotICAgIHRvSW1wbChwYWdlUmVmKS0+Zm9yY2VSZXBh
aW50KFZvaWRDYWxsYmFjazo6Y3JlYXRlKFtjb250ZXh0LCBjYWxsYmFja10oQ2FsbGJhY2tCYXNl
OjpFcnJvciBlcnJvcikgewotICAgICAgICBjYWxsYmFjayhlcnJvciA9PSBDYWxsYmFja0Jhc2U6
OkVycm9yOjpOb25lID8gbnVsbHB0ciA6IHRvQVBJKEFQSTo6RXJyb3I6OmNyZWF0ZSgpLmdldCgp
KSwgY29udGV4dCk7CisgICAgdG9JbXBsKHBhZ2VSZWYpLT5mb3JjZVJlcGFpbnQoVm9pZENhbGxi
YWNrOjpjcmVhdGUoW2NvbnRleHQsIGNhbGxiYWNrXShXZWJLaXQ6OkNhbGxiYWNrQmFzZTo6RXJy
b3IgZXJyb3IpIHsKKyAgICAgICAgY2FsbGJhY2soZXJyb3IgPT0gV2ViS2l0OjpDYWxsYmFja0Jh
c2U6OkVycm9yOjpOb25lID8gbnVsbHB0ciA6IHRvQVBJKEFQSTo6RXJyb3I6OmNyZWF0ZSgpLmdl
dCgpKSwgY29udGV4dCk7CiAgICAgfSkpOwogfQogCkBAIC0yMDE2LDggKzIwMTcsOCBAQCBXS1N0
cmluZ1JlZiBXS1BhZ2VDb3B5U3RhbmRhcmRVc2VyQWdlbnRXCiAKIHZvaWQgV0tQYWdlVmFsaWRh
dGVDb21tYW5kKFdLUGFnZVJlZiBwYWdlUmVmLCBXS1N0cmluZ1JlZiBjb21tYW5kLCB2b2lkKiBj
b250ZXh0LCBXS1BhZ2VWYWxpZGF0ZUNvbW1hbmRDYWxsYmFjayBjYWxsYmFjaykKIHsKLSAgICB0
b0ltcGwocGFnZVJlZiktPnZhbGlkYXRlQ29tbWFuZCh0b0ltcGwoY29tbWFuZCktPnN0cmluZygp
LCBbY29udGV4dCwgY2FsbGJhY2tdKGNvbnN0IFN0cmluZyYgY29tbWFuZE5hbWUsIGJvb2wgaXNF
bmFibGVkLCBpbnQzMl90IHN0YXRlLCBDYWxsYmFja0Jhc2U6OkVycm9yIGVycm9yKSB7Ci0gICAg
ICAgIGNhbGxiYWNrKHRvQVBJKEFQSTo6U3RyaW5nOjpjcmVhdGUoY29tbWFuZE5hbWUpLmdldCgp
KSwgaXNFbmFibGVkLCBzdGF0ZSwgZXJyb3IgIT0gQ2FsbGJhY2tCYXNlOjpFcnJvcjo6Tm9uZSA/
IHRvQVBJKEFQSTo6RXJyb3I6OmNyZWF0ZSgpLmdldCgpKSA6IDAsIGNvbnRleHQpOworICAgIHRv
SW1wbChwYWdlUmVmKS0+dmFsaWRhdGVDb21tYW5kKHRvSW1wbChjb21tYW5kKS0+c3RyaW5nKCks
IFtjb250ZXh0LCBjYWxsYmFja10oY29uc3QgU3RyaW5nJiBjb21tYW5kTmFtZSwgYm9vbCBpc0Vu
YWJsZWQsIGludDMyX3Qgc3RhdGUsIFdlYktpdDo6Q2FsbGJhY2tCYXNlOjpFcnJvciBlcnJvcikg
eworICAgICAgICBjYWxsYmFjayh0b0FQSShBUEk6OlN0cmluZzo6Y3JlYXRlKGNvbW1hbmROYW1l
KS5nZXQoKSksIGlzRW5hYmxlZCwgc3RhdGUsIGVycm9yICE9IFdlYktpdDo6Q2FsbGJhY2tCYXNl
OjpFcnJvcjo6Tm9uZSA/IHRvQVBJKEFQSTo6RXJyb3I6OmNyZWF0ZSgpLmdldCgpKSA6IDAsIGNv
bnRleHQpOwogICAgIH0pOwogfQogCkBAIC0yMDM4LDExICsyMDM5LDExIEBAIHN0YXRpYyBQcmlu
dEluZm8gcHJpbnRJbmZvRnJvbVdLUHJpbnRJbmYKIAogdm9pZCBXS1BhZ2VDb21wdXRlUGFnZXNG
b3JQcmludGluZyhXS1BhZ2VSZWYgcGFnZSwgV0tGcmFtZVJlZiBmcmFtZSwgV0tQcmludEluZm8g
cHJpbnRJbmZvLCBXS1BhZ2VDb21wdXRlUGFnZXNGb3JQcmludGluZ0Z1bmN0aW9uIGNhbGxiYWNr
LCB2b2lkKiBjb250ZXh0KQogewotICAgIHRvSW1wbChwYWdlKS0+Y29tcHV0ZVBhZ2VzRm9yUHJp
bnRpbmcodG9JbXBsKGZyYW1lKSwgcHJpbnRJbmZvRnJvbVdLUHJpbnRJbmZvKHByaW50SW5mbyks
IENvbXB1dGVkUGFnZXNDYWxsYmFjazo6Y3JlYXRlKFtjb250ZXh0LCBjYWxsYmFja10oY29uc3Qg
VmVjdG9yPFdlYkNvcmU6OkludFJlY3Q+JiByZWN0cywgZG91YmxlIHNjYWxlRmFjdG9yLCBDYWxs
YmFja0Jhc2U6OkVycm9yIGVycm9yKSB7CisgICAgdG9JbXBsKHBhZ2UpLT5jb21wdXRlUGFnZXNG
b3JQcmludGluZyh0b0ltcGwoZnJhbWUpLCBwcmludEluZm9Gcm9tV0tQcmludEluZm8ocHJpbnRJ
bmZvKSwgQ29tcHV0ZWRQYWdlc0NhbGxiYWNrOjpjcmVhdGUoW2NvbnRleHQsIGNhbGxiYWNrXShj
b25zdCBWZWN0b3I8V2ViQ29yZTo6SW50UmVjdD4mIHJlY3RzLCBkb3VibGUgc2NhbGVGYWN0b3Is
IFdlYktpdDo6Q2FsbGJhY2tCYXNlOjpFcnJvciBlcnJvcikgewogICAgICAgICBWZWN0b3I8V0tS
ZWN0PiB3a1JlY3RzKHJlY3RzLnNpemUoKSk7CiAgICAgICAgIGZvciAoc2l6ZV90IGkgPSAwOyBp
IDwgcmVjdHMuc2l6ZSgpOyArK2kpCiAgICAgICAgICAgICB3a1JlY3RzW2ldID0gdG9BUEkocmVj
dHNbaV0pOwotICAgICAgICBjYWxsYmFjayh3a1JlY3RzLmRhdGEoKSwgd2tSZWN0cy5zaXplKCks
IHNjYWxlRmFjdG9yLCBlcnJvciAhPSBDYWxsYmFja0Jhc2U6OkVycm9yOjpOb25lID8gdG9BUEko
QVBJOjpFcnJvcjo6Y3JlYXRlKCkuZ2V0KCkpIDogMCwgY29udGV4dCk7CisgICAgICAgIGNhbGxi
YWNrKHdrUmVjdHMuZGF0YSgpLCB3a1JlY3RzLnNpemUoKSwgc2NhbGVGYWN0b3IsIGVycm9yICE9
IFdlYktpdDo6Q2FsbGJhY2tCYXNlOjpFcnJvcjo6Tm9uZSA/IHRvQVBJKEFQSTo6RXJyb3I6OmNy
ZWF0ZSgpLmdldCgpKSA6IDAsIGNvbnRleHQpOwogICAgIH0pKTsKIH0KIApJbmRleDogU291cmNl
L1dlYktpdDIvVUlQcm9jZXNzL0FQSS9Db2NvYS9fV0tUaHVtYm5haWxWaWV3Lm1tCj09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT0KLS0tIFNvdXJjZS9XZWJLaXQyL1VJUHJvY2Vzcy9BUEkvQ29jb2EvX1dLVGh1bWJuYWlsVmll
dy5tbQkocmV2aXNpb24gMTgyNzk1KQorKysgU291cmNlL1dlYktpdDIvVUlQcm9jZXNzL0FQSS9D
b2NvYS9fV0tUaHVtYm5haWxWaWV3Lm1tCSh3b3JraW5nIGNvcHkpCkBAIC0xMTksNyArMTE5LDcg
QEAgLSAodm9pZClfcmVxdWVzdFNuYXBzaG90SWZOZWVkZWQKICAgICBJbnRTaXplIGJpdG1hcFNp
emUgPSBzbmFwc2hvdFJlY3Quc2l6ZSgpOwogICAgIGJpdG1hcFNpemUuc2NhbGUoX3NjYWxlICog
X3dlYlBhZ2VQcm94eS0+ZGV2aWNlU2NhbGVGYWN0b3IoKSk7CiAgICAgX2xhc3RTbmFwc2hvdFNj
YWxlID0gX3NjYWxlOwotICAgIF93ZWJQYWdlUHJveHktPnRha2VTbmFwc2hvdChzbmFwc2hvdFJl
Y3QsIGJpdG1hcFNpemUsIG9wdGlvbnMsIFt0aHVtYm5haWxWaWV3XShjb25zdCBTaGFyZWFibGVC
aXRtYXA6OkhhbmRsZSYgaW1hZ2VIYW5kbGUsIENhbGxiYWNrQmFzZTo6RXJyb3IpIHsKKyAgICBf
d2ViUGFnZVByb3h5LT50YWtlU25hcHNob3Qoc25hcHNob3RSZWN0LCBiaXRtYXBTaXplLCBvcHRp
b25zLCBbdGh1bWJuYWlsVmlld10oY29uc3QgU2hhcmVhYmxlQml0bWFwOjpIYW5kbGUmIGltYWdl
SGFuZGxlLCBXZWJLaXQ6OkNhbGxiYWNrQmFzZTo6RXJyb3IpIHsKICAgICAgICAgUmVmUHRyPFNo
YXJlYWJsZUJpdG1hcD4gYml0bWFwID0gU2hhcmVhYmxlQml0bWFwOjpjcmVhdGUoaW1hZ2VIYW5k
bGUsIFNoYXJlZE1lbW9yeTo6UHJvdGVjdGlvbjo6UmVhZE9ubHkpOwogICAgICAgICBSZXRhaW5Q
dHI8Q0dJbWFnZVJlZj4gY2dJbWFnZSA9IGJpdG1hcCA/IGJpdG1hcC0+bWFrZUNHSW1hZ2UoKSA6
IG51bGxwdHI7CiAgICAgICAgIFt0aHVtYm5haWxWaWV3IF9kaWRUYWtlU25hcHNob3Q6Y2dJbWFn
ZS5nZXQoKV07CkluZGV4OiBTb3VyY2UvV2ViS2l0Mi9VSVByb2Nlc3MvQVBJL2d0ay9XZWJLaXRX
ZWJWaWV3LmNwcAo9PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09Ci0tLSBTb3VyY2UvV2ViS2l0Mi9VSVByb2Nlc3MvQVBJL2d0
ay9XZWJLaXRXZWJWaWV3LmNwcAkocmV2aXNpb24gMTgyNzk1KQorKysgU291cmNlL1dlYktpdDIv
VUlQcm9jZXNzL0FQSS9ndGsvV2ViS2l0V2ViVmlldy5jcHAJKHdvcmtpbmcgY29weSkKQEAgLTI4
OTIsNyArMjg5Miw3IEBAIHZvaWQgd2Via2l0X3dlYl92aWV3X2Nhbl9leGVjdXRlX2VkaXRpbmcK
ICAgICBnX3JldHVybl9pZl9mYWlsKGNvbW1hbmQpOwogCiAgICAgR1Rhc2sqIHRhc2sgPSBnX3Rh
c2tfbmV3KHdlYlZpZXcsIGNhbmNlbGxhYmxlLCBjYWxsYmFjaywgdXNlckRhdGEpOwotICAgIGdl
dFBhZ2Uod2ViVmlldyktPnZhbGlkYXRlQ29tbWFuZChTdHJpbmc6OmZyb21VVEY4KGNvbW1hbmQp
LCBbdGFza10oY29uc3QgU3RyaW5nJiwgYm9vbCBpc0VuYWJsZWQsIGludDMyX3QsIENhbGxiYWNr
QmFzZTo6RXJyb3IpIHsKKyAgICBnZXRQYWdlKHdlYlZpZXcpLT52YWxpZGF0ZUNvbW1hbmQoU3Ry
aW5nOjpmcm9tVVRGOChjb21tYW5kKSwgW3Rhc2tdKGNvbnN0IFN0cmluZyYsIGJvb2wgaXNFbmFi
bGVkLCBpbnQzMl90LCBXZWJLaXQ6OkNhbGxiYWNrQmFzZTo6RXJyb3IpIHsKICAgICAgICAgZ190
YXNrX3JldHVybl9ib29sZWFuKGFkb3B0R1JlZih0YXNrKS5nZXQoKSwgaXNFbmFibGVkKTsgICAg
ICAgIAogICAgIH0pOwogfQpAQCAtMzAwOCw3ICszMDA4LDcgQEAgdm9pZCB3ZWJraXRfd2ViX3Zp
ZXdfcnVuX2phdmFzY3JpcHQoV2ViSwogICAgIGdfcmV0dXJuX2lmX2ZhaWwoc2NyaXB0KTsKIAog
ICAgIEdUYXNrKiB0YXNrID0gZ190YXNrX25ldyh3ZWJWaWV3LCBjYW5jZWxsYWJsZSwgY2FsbGJh
Y2ssIHVzZXJEYXRhKTsKLSAgICBnZXRQYWdlKHdlYlZpZXcpLT5ydW5KYXZhU2NyaXB0SW5NYWlu
RnJhbWUoU3RyaW5nOjpmcm9tVVRGOChzY3JpcHQpLCBbdGFza10oQVBJOjpTZXJpYWxpemVkU2Ny
aXB0VmFsdWUqIHNlcmlhbGl6ZWRTY3JpcHRWYWx1ZSwgQ2FsbGJhY2tCYXNlOjpFcnJvcikgewor
ICAgIGdldFBhZ2Uod2ViVmlldyktPnJ1bkphdmFTY3JpcHRJbk1haW5GcmFtZShTdHJpbmc6OmZy
b21VVEY4KHNjcmlwdCksIFt0YXNrXShBUEk6OlNlcmlhbGl6ZWRTY3JpcHRWYWx1ZSogc2VyaWFs
aXplZFNjcmlwdFZhbHVlLCBXZWJLaXQ6OkNhbGxiYWNrQmFzZTo6RXJyb3IpIHsKICAgICAgICAg
d2Via2l0V2ViVmlld1J1bkphdmFTY3JpcHRDYWxsYmFjayhzZXJpYWxpemVkU2NyaXB0VmFsdWUs
IGFkb3B0R1JlZih0YXNrKS5nZXQoKSk7CiAgICAgfSk7CiB9CkBAIC0zMDk5LDcgKzMwOTksNyBA
QCBzdGF0aWMgdm9pZCByZXNvdXJjZXNTdHJlYW1SZWFkQ2FsbGJhY2soCiAgICAgV2ViS2l0V2Vi
Vmlldyogd2ViVmlldyA9IFdFQktJVF9XRUJfVklFVyhnX3Rhc2tfZ2V0X3NvdXJjZV9vYmplY3Qo
dGFzay5nZXQoKSkpOwogICAgIGdwb2ludGVyIG91dHB1dFN0cmVhbURhdGEgPSBnX21lbW9yeV9v
dXRwdXRfc3RyZWFtX2dldF9kYXRhKEdfTUVNT1JZX09VVFBVVF9TVFJFQU0ob2JqZWN0KSk7CiAg
ICAgZ2V0UGFnZSh3ZWJWaWV3KS0+cnVuSmF2YVNjcmlwdEluTWFpbkZyYW1lKFN0cmluZzo6ZnJv
bVVURjgocmVpbnRlcnByZXRfY2FzdDxjb25zdCBnY2hhcio+KG91dHB1dFN0cmVhbURhdGEpKSwK
LSAgICAgICAgW3Rhc2tdKEFQSTo6U2VyaWFsaXplZFNjcmlwdFZhbHVlKiBzZXJpYWxpemVkU2Ny
aXB0VmFsdWUsIENhbGxiYWNrQmFzZTo6RXJyb3IpIHsKKyAgICAgICAgW3Rhc2tdKEFQSTo6U2Vy
aWFsaXplZFNjcmlwdFZhbHVlKiBzZXJpYWxpemVkU2NyaXB0VmFsdWUsIFdlYktpdDo6Q2FsbGJh
Y2tCYXNlOjpFcnJvcikgewogICAgICAgICAgICAgd2Via2l0V2ViVmlld1J1bkphdmFTY3JpcHRD
YWxsYmFjayhzZXJpYWxpemVkU2NyaXB0VmFsdWUsIHRhc2suZ2V0KCkpOwogICAgICAgICB9KTsK
IH0KQEAgLTMyNzcsNyArMzI3Nyw3IEBAIHZvaWQgd2Via2l0X3dlYl92aWV3X3NhdmUoV2ViS2l0
V2ViVmlldyoKICAgICBHVGFzayogdGFzayA9IGdfdGFza19uZXcod2ViVmlldywgY2FuY2VsbGFi
bGUsIGNhbGxiYWNrLCB1c2VyRGF0YSk7CiAgICAgZ190YXNrX3NldF9zb3VyY2VfdGFnKHRhc2ss
IHJlaW50ZXJwcmV0X2Nhc3Q8Z3BvaW50ZXI+KHdlYmtpdF93ZWJfdmlld19zYXZlKSk7CiAgICAg
Z190YXNrX3NldF90YXNrX2RhdGEodGFzaywgY3JlYXRlVmlld1NhdmVBc3luY0RhdGEoKSwgcmVp
bnRlcnByZXRfY2FzdDxHRGVzdHJveU5vdGlmeT4oZGVzdHJveVZpZXdTYXZlQXN5bmNEYXRhKSk7
Ci0gICAgZ2V0UGFnZSh3ZWJWaWV3KS0+Z2V0Q29udGVudHNBc01IVE1MRGF0YShbdGFza10oQVBJ
OjpEYXRhKiBkYXRhLCBDYWxsYmFja0Jhc2U6OkVycm9yKSB7CisgICAgZ2V0UGFnZSh3ZWJWaWV3
KS0+Z2V0Q29udGVudHNBc01IVE1MRGF0YShbdGFza10oQVBJOjpEYXRhKiBkYXRhLCBXZWJLaXQ6
OkNhbGxiYWNrQmFzZTo6RXJyb3IpIHsKICAgICAgICAgZ2V0Q29udGVudHNBc01IVE1MRGF0YUNh
bGxiYWNrKGRhdGEsIHRhc2spOwogICAgIH0sIGZhbHNlKTsKIH0KQEAgLTMzNDIsNyArMzM0Miw3
IEBAIHZvaWQgd2Via2l0X3dlYl92aWV3X3NhdmVfdG9fZmlsZShXZWJLaXQKICAgICBkYXRhLT5m
aWxlID0gZmlsZTsKICAgICBnX3Rhc2tfc2V0X3Rhc2tfZGF0YSh0YXNrLCBkYXRhLCByZWludGVy
cHJldF9jYXN0PEdEZXN0cm95Tm90aWZ5PihkZXN0cm95Vmlld1NhdmVBc3luY0RhdGEpKTsKIAot
ICAgIGdldFBhZ2Uod2ViVmlldyktPmdldENvbnRlbnRzQXNNSFRNTERhdGEoW3Rhc2tdKEFQSTo6
RGF0YSogZGF0YSwgQ2FsbGJhY2tCYXNlOjpFcnJvcikgeworICAgIGdldFBhZ2Uod2ViVmlldykt
PmdldENvbnRlbnRzQXNNSFRNTERhdGEoW3Rhc2tdKEFQSTo6RGF0YSogZGF0YSwgV2ViS2l0OjpD
YWxsYmFja0Jhc2U6OkVycm9yKSB7CiAgICAgICAgIGdldENvbnRlbnRzQXNNSFRNTERhdGFDYWxs
YmFjayhkYXRhLCB0YXNrKTsKICAgICB9LCBmYWxzZSk7CiB9CkluZGV4OiBTb3VyY2UvV2ViS2l0
Mi9VSVByb2Nlc3MvQVBJL21hYy9XS1ZpZXcubW0KPT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PQotLS0gU291cmNlL1dlYktp
dDIvVUlQcm9jZXNzL0FQSS9tYWMvV0tWaWV3Lm1tCShyZXZpc2lvbiAxODI3OTUpCisrKyBTb3Vy
Y2UvV2ViS2l0Mi9VSVByb2Nlc3MvQVBJL21hYy9XS1ZpZXcubW0JKHdvcmtpbmcgY29weSkKQEAg
LTQ3MCw3ICs0NzAsNyBAQCAtIChCT09MKWJlY29tZUZpcnN0UmVzcG9uZGVyCiAgICAgICAgIE5T
RXZlbnQgKmtleWJvYXJkRXZlbnQgPSBuaWw7CiAgICAgICAgIGlmIChbZXZlbnQgdHlwZV0gPT0g
TlNLZXlEb3duIHx8IFtldmVudCB0eXBlXSA9PSBOU0tleVVwKQogICAgICAgICAgICAga2V5Ym9h
cmRFdmVudCA9IGV2ZW50OwotICAgICAgICBfZGF0YS0+X3BhZ2UtPnNldEluaXRpYWxGb2N1cyhk
aXJlY3Rpb24gPT0gTlNTZWxlY3RpbmdOZXh0LCBrZXlib2FyZEV2ZW50ICE9IG5pbCwgTmF0aXZl
V2ViS2V5Ym9hcmRFdmVudChrZXlib2FyZEV2ZW50LCBmYWxzZSwgVmVjdG9yPEtleXByZXNzQ29t
bWFuZD4oKSksIFtdKENhbGxiYWNrQmFzZTo6RXJyb3IpIHsgfSk7CisgICAgICAgIF9kYXRhLT5f
cGFnZS0+c2V0SW5pdGlhbEZvY3VzKGRpcmVjdGlvbiA9PSBOU1NlbGVjdGluZ05leHQsIGtleWJv
YXJkRXZlbnQgIT0gbmlsLCBOYXRpdmVXZWJLZXlib2FyZEV2ZW50KGtleWJvYXJkRXZlbnQsIGZh
bHNlLCBWZWN0b3I8S2V5cHJlc3NDb21tYW5kPigpKSwgW10oV2ViS2l0OjpDYWxsYmFja0Jhc2U6
OkVycm9yKSB7IH0pOwogICAgIH0KICAgICByZXR1cm4gWUVTOwogfQpAQCAtODM1LDcgKzgzNSw3
IEBAIC0gKHZvaWQpdXBkYXRlRm9udFBhbmVsSWZOZWVkZWQKICAgICBpZiAoZWRpdG9yU3RhdGUu
c2VsZWN0aW9uSXNOb25lIHx8ICFlZGl0b3JTdGF0ZS5pc0NvbnRlbnRFZGl0YWJsZSkKICAgICAg
ICAgcmV0dXJuOwogICAgIGlmIChbTlNGb250UGFuZWwgc2hhcmVkRm9udFBhbmVsRXhpc3RzXSAm
JiBbW05TRm9udFBhbmVsIHNoYXJlZEZvbnRQYW5lbF0gaXNWaXNpYmxlXSkgewotICAgICAgICBf
ZGF0YS0+X3BhZ2UtPmZvbnRBdFNlbGVjdGlvbihbXShjb25zdCBTdHJpbmcmIGZvbnROYW1lLCBk
b3VibGUgZm9udFNpemUsIGJvb2wgc2VsZWN0aW9uSGFzTXVsdGlwbGVGb250cywgQ2FsbGJhY2tC
YXNlOjpFcnJvciBlcnJvcikgeworICAgICAgICBfZGF0YS0+X3BhZ2UtPmZvbnRBdFNlbGVjdGlv
bihbXShjb25zdCBTdHJpbmcmIGZvbnROYW1lLCBkb3VibGUgZm9udFNpemUsIGJvb2wgc2VsZWN0
aW9uSGFzTXVsdGlwbGVGb250cywgV2ViS2l0OjpDYWxsYmFja0Jhc2U6OkVycm9yIGVycm9yKSB7
CiAgICAgICAgICAgICBOU0ZvbnQgKmZvbnQgPSBbTlNGb250IGZvbnRXaXRoTmFtZTpmb250TmFt
ZSBzaXplOmZvbnRTaXplXTsKICAgICAgICAgICAgIGlmIChmb250KQogICAgICAgICAgICAgICAg
IFtbTlNGb250TWFuYWdlciBzaGFyZWRGb250TWFuYWdlcl0gc2V0U2VsZWN0ZWRGb250OmZvbnQg
aXNNdWx0aXBsZTpzZWxlY3Rpb25IYXNNdWx0aXBsZUZvbnRzXTsKQEAgLTk5NSw5ICs5OTUsOSBA
QCAtIChCT09MKXZhbGlkYXRlVXNlckludGVyZmFjZUl0ZW06KGlkIDxOCiAgICAgICAgIC8vIElm
IHdlIGFyZSBub3QgYWxyZWFkeSBhd2FpdGluZyB2YWxpZGF0aW9uIGZvciB0aGlzIGNvbW1hbmQs
IHN0YXJ0IHRoZSBhc3luY2hyb25vdXMgdmFsaWRhdGlvbiBwcm9jZXNzLgogICAgICAgICAvLyBG
SVhNRTogVGhlb3JldGljYWxseSwgdGhlcmUgaXMgYSByYWNlIGhlcmU7IHdoZW4gd2UgZ2V0IHRo
ZSBhbnN3ZXIgaXQgbWlnaHQgYmUgb2xkLCBmcm9tIGEgcHJldmlvdXMgdGltZQogICAgICAgICAv
LyB3ZSBhc2tlZCBmb3IgdGhlIHNhbWUgY29tbWFuZDsgdGhlcmUgaXMgbm8gZ3VhcmFudGVlIHRo
ZSBhbnN3ZXIgaXMgc3RpbGwgdmFsaWQuCi0gICAgICAgIF9kYXRhLT5fcGFnZS0+dmFsaWRhdGVD
b21tYW5kKGNvbW1hbmROYW1lLCBbc2VsZl0oY29uc3QgU3RyaW5nJiBjb21tYW5kTmFtZSwgYm9v
bCBpc0VuYWJsZWQsIGludDMyX3Qgc3RhdGUsIENhbGxiYWNrQmFzZTo6RXJyb3IgZXJyb3IpIHsK
KyAgICAgICAgX2RhdGEtPl9wYWdlLT52YWxpZGF0ZUNvbW1hbmQoY29tbWFuZE5hbWUsIFtzZWxm
XShjb25zdCBTdHJpbmcmIGNvbW1hbmROYW1lLCBib29sIGlzRW5hYmxlZCwgaW50MzJfdCBzdGF0
ZSwgV2ViS2l0OjpDYWxsYmFja0Jhc2U6OkVycm9yIGVycm9yKSB7CiAgICAgICAgICAgICAvLyBJ
ZiB0aGUgcHJvY2VzcyBleGl0cyBiZWZvcmUgdGhlIGNvbW1hbmQgY2FuIGJlIHZhbGlkYXRlZCwg
d2UnbGwgYmUgY2FsbGVkIGJhY2sgd2l0aCBhbiBlcnJvci4KLSAgICAgICAgICAgIGlmIChlcnJv
ciAhPSBDYWxsYmFja0Jhc2U6OkVycm9yOjpOb25lKQorICAgICAgICAgICAgaWYgKGVycm9yICE9
IFdlYktpdDo6Q2FsbGJhY2tCYXNlOjpFcnJvcjo6Tm9uZSkKICAgICAgICAgICAgICAgICByZXR1
cm47CiAgICAgICAgICAgICAKICAgICAgICAgICAgIFtzZWxmIF9zZXRVc2VySW50ZXJmYWNlSXRl
bVN0YXRlOmNvbW1hbmROYW1lIGVuYWJsZWQ6aXNFbmFibGVkIHN0YXRlOnN0YXRlXTsKQEAgLTEw
MTIsOCArMTAxMiw4IEBAIC0gKEJPT0wpdmFsaWRhdGVVc2VySW50ZXJmYWNlSXRlbTooaWQgPE4K
IAogLSAoSUJBY3Rpb24pc3RhcnRTcGVha2luZzooaWQpc2VuZGVyCiB7Ci0gICAgX2RhdGEtPl9w
YWdlLT5nZXRTZWxlY3Rpb25PckNvbnRlbnRzQXNTdHJpbmcoW3NlbGZdKGNvbnN0IFN0cmluZyYg
c3RyaW5nLCBDYWxsYmFja0Jhc2U6OkVycm9yIGVycm9yKSB7Ci0gICAgICAgIGlmIChlcnJvciAh
PSBDYWxsYmFja0Jhc2U6OkVycm9yOjpOb25lKQorICAgIF9kYXRhLT5fcGFnZS0+Z2V0U2VsZWN0
aW9uT3JDb250ZW50c0FzU3RyaW5nKFtzZWxmXShjb25zdCBTdHJpbmcmIHN0cmluZywgV2ViS2l0
OjpDYWxsYmFja0Jhc2U6OkVycm9yIGVycm9yKSB7CisgICAgICAgIGlmIChlcnJvciAhPSBXZWJL
aXQ6OkNhbGxiYWNrQmFzZTo6RXJyb3I6Ok5vbmUpCiAgICAgICAgICAgICByZXR1cm47CiAgICAg
ICAgIGlmICghc3RyaW5nKQogICAgICAgICAgICAgcmV0dXJuOwpAQCAtMTY3Niw5ICsxNjc2LDkg
QEAgLSAodm9pZClzZWxlY3RlZFJhbmdlV2l0aENvbXBsZXRpb25IYW5kbAogICAgIFJldGFpblB0
cjxpZD4gY29tcGxldGlvbkhhbmRsZXIgPSBhZG9wdE5TKFtjb21wbGV0aW9uSGFuZGxlclB0ciBj
b3B5XSk7CiAKICAgICBMT0coVGV4dElucHV0LCAic2VsZWN0ZWRSYW5nZSIpOwotICAgIF9kYXRh
LT5fcGFnZS0+Z2V0U2VsZWN0ZWRSYW5nZUFzeW5jKFtjb21wbGV0aW9uSGFuZGxlcl0oY29uc3Qg
RWRpdGluZ1JhbmdlJiBlZGl0aW5nUmFuZ2VSZXN1bHQsIENhbGxiYWNrQmFzZTo6RXJyb3IgZXJy
b3IpIHsKKyAgICBfZGF0YS0+X3BhZ2UtPmdldFNlbGVjdGVkUmFuZ2VBc3luYyhbY29tcGxldGlv
bkhhbmRsZXJdKGNvbnN0IEVkaXRpbmdSYW5nZSYgZWRpdGluZ1JhbmdlUmVzdWx0LCBXZWJLaXQ6
OkNhbGxiYWNrQmFzZTo6RXJyb3IgZXJyb3IpIHsKICAgICAgICAgdm9pZCAoXmNvbXBsZXRpb25I
YW5kbGVyQmxvY2spKE5TUmFuZ2UpID0gKHZvaWQgKF4pKE5TUmFuZ2UpKWNvbXBsZXRpb25IYW5k
bGVyLmdldCgpOwotICAgICAgICBpZiAoZXJyb3IgIT0gQ2FsbGJhY2tCYXNlOjpFcnJvcjo6Tm9u
ZSkgeworICAgICAgICBpZiAoZXJyb3IgIT0gV2ViS2l0OjpDYWxsYmFja0Jhc2U6OkVycm9yOjpO
b25lKSB7CiAgICAgICAgICAgICBMT0coVGV4dElucHV0LCAiICAgIC4uLnNlbGVjdGVkUmFuZ2Ug
ZmFpbGVkLiIpOwogICAgICAgICAgICAgY29tcGxldGlvbkhhbmRsZXJCbG9jayhOU01ha2VSYW5n
ZShOU05vdEZvdW5kLCAwKSk7CiAgICAgICAgICAgICByZXR1cm47CkBAIC0xNjk3LDkgKzE2OTcs
OSBAQCAtICh2b2lkKW1hcmtlZFJhbmdlV2l0aENvbXBsZXRpb25IYW5kbGVyCiAgICAgUmV0YWlu
UHRyPGlkPiBjb21wbGV0aW9uSGFuZGxlciA9IGFkb3B0TlMoW2NvbXBsZXRpb25IYW5kbGVyUHRy
IGNvcHldKTsKIAogICAgIExPRyhUZXh0SW5wdXQsICJtYXJrZWRSYW5nZSIpOwotICAgIF9kYXRh
LT5fcGFnZS0+Z2V0TWFya2VkUmFuZ2VBc3luYyhbY29tcGxldGlvbkhhbmRsZXJdKGNvbnN0IEVk
aXRpbmdSYW5nZSYgZWRpdGluZ1JhbmdlUmVzdWx0LCBDYWxsYmFja0Jhc2U6OkVycm9yIGVycm9y
KSB7CisgICAgX2RhdGEtPl9wYWdlLT5nZXRNYXJrZWRSYW5nZUFzeW5jKFtjb21wbGV0aW9uSGFu
ZGxlcl0oY29uc3QgRWRpdGluZ1JhbmdlJiBlZGl0aW5nUmFuZ2VSZXN1bHQsIFdlYktpdDo6Q2Fs
bGJhY2tCYXNlOjpFcnJvciBlcnJvcikgewogICAgICAgICB2b2lkICheY29tcGxldGlvbkhhbmRs
ZXJCbG9jaykoTlNSYW5nZSkgPSAodm9pZCAoXikoTlNSYW5nZSkpY29tcGxldGlvbkhhbmRsZXIu
Z2V0KCk7Ci0gICAgICAgIGlmIChlcnJvciAhPSBDYWxsYmFja0Jhc2U6OkVycm9yOjpOb25lKSB7
CisgICAgICAgIGlmIChlcnJvciAhPSBXZWJLaXQ6OkNhbGxiYWNrQmFzZTo6RXJyb3I6Ok5vbmUp
IHsKICAgICAgICAgICAgIExPRyhUZXh0SW5wdXQsICIgICAgLi4ubWFya2VkUmFuZ2UgZmFpbGVk
LiIpOwogICAgICAgICAgICAgY29tcGxldGlvbkhhbmRsZXJCbG9jayhOU01ha2VSYW5nZShOU05v
dEZvdW5kLCAwKSk7CiAgICAgICAgICAgICByZXR1cm47CkBAIC0xNzE4LDkgKzE3MTgsOSBAQCAt
ICh2b2lkKWhhc01hcmtlZFRleHRXaXRoQ29tcGxldGlvbkhhbmRsCiAgICAgUmV0YWluUHRyPGlk
PiBjb21wbGV0aW9uSGFuZGxlciA9IGFkb3B0TlMoW2NvbXBsZXRpb25IYW5kbGVyUHRyIGNvcHld
KTsKIAogICAgIExPRyhUZXh0SW5wdXQsICJoYXNNYXJrZWRUZXh0Iik7Ci0gICAgX2RhdGEtPl9w
YWdlLT5nZXRNYXJrZWRSYW5nZUFzeW5jKFtjb21wbGV0aW9uSGFuZGxlcl0oY29uc3QgRWRpdGlu
Z1JhbmdlJiBlZGl0aW5nUmFuZ2VSZXN1bHQsIENhbGxiYWNrQmFzZTo6RXJyb3IgZXJyb3IpIHsK
KyAgICBfZGF0YS0+X3BhZ2UtPmdldE1hcmtlZFJhbmdlQXN5bmMoW2NvbXBsZXRpb25IYW5kbGVy
XShjb25zdCBFZGl0aW5nUmFuZ2UmIGVkaXRpbmdSYW5nZVJlc3VsdCwgV2ViS2l0OjpDYWxsYmFj
a0Jhc2U6OkVycm9yIGVycm9yKSB7CiAgICAgICAgIHZvaWQgKF5jb21wbGV0aW9uSGFuZGxlckJs
b2NrKShCT09MKSA9ICh2b2lkICheKShCT09MKSljb21wbGV0aW9uSGFuZGxlci5nZXQoKTsKLSAg
ICAgICAgaWYgKGVycm9yICE9IENhbGxiYWNrQmFzZTo6RXJyb3I6Ok5vbmUpIHsKKyAgICAgICAg
aWYgKGVycm9yICE9IFdlYktpdDo6Q2FsbGJhY2tCYXNlOjpFcnJvcjo6Tm9uZSkgewogICAgICAg
ICAgICAgTE9HKFRleHRJbnB1dCwgIiAgICAuLi5oYXNNYXJrZWRUZXh0IGZhaWxlZC4iKTsKICAg
ICAgICAgICAgIGNvbXBsZXRpb25IYW5kbGVyQmxvY2soTk8pOwogICAgICAgICAgICAgcmV0dXJu
OwpAQCAtMTczNiw5ICsxNzM2LDkgQEAgLSAodm9pZClhdHRyaWJ1dGVkU3Vic3RyaW5nRm9yUHJv
cG9zZWRSYQogICAgIFJldGFpblB0cjxpZD4gY29tcGxldGlvbkhhbmRsZXIgPSBhZG9wdE5TKFtj
b21wbGV0aW9uSGFuZGxlclB0ciBjb3B5XSk7CiAKICAgICBMT0coVGV4dElucHV0LCAiYXR0cmli
dXRlZFN1YnN0cmluZ0Zyb21SYW5nZTooJXUsICV1KSIsIG5zUmFuZ2UubG9jYXRpb24sIG5zUmFu
Z2UubGVuZ3RoKTsKLSAgICBfZGF0YS0+X3BhZ2UtPmF0dHJpYnV0ZWRTdWJzdHJpbmdGb3JDaGFy
YWN0ZXJSYW5nZUFzeW5jKG5zUmFuZ2UsIFtjb21wbGV0aW9uSGFuZGxlcl0oY29uc3QgQXR0cmli
dXRlZFN0cmluZyYgc3RyaW5nLCBjb25zdCBFZGl0aW5nUmFuZ2UmIGFjdHVhbFJhbmdlLCBDYWxs
YmFja0Jhc2U6OkVycm9yIGVycm9yKSB7CisgICAgX2RhdGEtPl9wYWdlLT5hdHRyaWJ1dGVkU3Vi
c3RyaW5nRm9yQ2hhcmFjdGVyUmFuZ2VBc3luYyhuc1JhbmdlLCBbY29tcGxldGlvbkhhbmRsZXJd
KGNvbnN0IEF0dHJpYnV0ZWRTdHJpbmcmIHN0cmluZywgY29uc3QgRWRpdGluZ1JhbmdlJiBhY3R1
YWxSYW5nZSwgV2ViS2l0OjpDYWxsYmFja0Jhc2U6OkVycm9yIGVycm9yKSB7CiAgICAgICAgIHZv
aWQgKF5jb21wbGV0aW9uSGFuZGxlckJsb2NrKShOU0F0dHJpYnV0ZWRTdHJpbmcgKiwgTlNSYW5n
ZSkgPSAodm9pZCAoXikoTlNBdHRyaWJ1dGVkU3RyaW5nICosIE5TUmFuZ2UpKWNvbXBsZXRpb25I
YW5kbGVyLmdldCgpOwotICAgICAgICBpZiAoZXJyb3IgIT0gQ2FsbGJhY2tCYXNlOjpFcnJvcjo6
Tm9uZSkgeworICAgICAgICBpZiAoZXJyb3IgIT0gV2ViS2l0OjpDYWxsYmFja0Jhc2U6OkVycm9y
OjpOb25lKSB7CiAgICAgICAgICAgICBMT0coVGV4dElucHV0LCAiICAgIC4uLmF0dHJpYnV0ZWRT
dWJzdHJpbmdGcm9tUmFuZ2UgZmFpbGVkLiIpOwogICAgICAgICAgICAgY29tcGxldGlvbkhhbmRs
ZXJCbG9jaygwLCBOU01ha2VSYW5nZShOU05vdEZvdW5kLCAwKSk7CiAgICAgICAgICAgICByZXR1
cm47CkBAIC0xNzY2LDkgKzE3NjYsOSBAQCAtICh2b2lkKWZpcnN0UmVjdEZvckNoYXJhY3RlclJh
bmdlOihOU1JhCiAgICAgICAgIHJldHVybjsKICAgICB9CiAKLSAgICBfZGF0YS0+X3BhZ2UtPmZp
cnN0UmVjdEZvckNoYXJhY3RlclJhbmdlQXN5bmModGhlUmFuZ2UsIFtzZWxmLCBjb21wbGV0aW9u
SGFuZGxlcl0oY29uc3QgSW50UmVjdCYgcmVjdCwgY29uc3QgRWRpdGluZ1JhbmdlJiBhY3R1YWxS
YW5nZSwgQ2FsbGJhY2tCYXNlOjpFcnJvciBlcnJvcikgeworICAgIF9kYXRhLT5fcGFnZS0+Zmly
c3RSZWN0Rm9yQ2hhcmFjdGVyUmFuZ2VBc3luYyh0aGVSYW5nZSwgW3NlbGYsIGNvbXBsZXRpb25I
YW5kbGVyXShjb25zdCBJbnRSZWN0JiByZWN0LCBjb25zdCBFZGl0aW5nUmFuZ2UmIGFjdHVhbFJh
bmdlLCBXZWJLaXQ6OkNhbGxiYWNrQmFzZTo6RXJyb3IgZXJyb3IpIHsKICAgICAgICAgdm9pZCAo
XmNvbXBsZXRpb25IYW5kbGVyQmxvY2spKE5TUmVjdCwgTlNSYW5nZSkgPSAodm9pZCAoXikoTlNS
ZWN0LCBOU1JhbmdlKSljb21wbGV0aW9uSGFuZGxlci5nZXQoKTsKLSAgICAgICAgaWYgKGVycm9y
ICE9IENhbGxiYWNrQmFzZTo6RXJyb3I6Ok5vbmUpIHsKKyAgICAgICAgaWYgKGVycm9yICE9IFdl
YktpdDo6Q2FsbGJhY2tCYXNlOjpFcnJvcjo6Tm9uZSkgewogICAgICAgICAgICAgTE9HKFRleHRJ
bnB1dCwgIiAgICAuLi5maXJzdFJlY3RGb3JDaGFyYWN0ZXJSYW5nZSBmYWlsZWQuIik7CiAgICAg
ICAgICAgICBjb21wbGV0aW9uSGFuZGxlckJsb2NrKE5TWmVyb1JlY3QsIE5TTWFrZVJhbmdlKE5T
Tm90Rm91bmQsIDApKTsKICAgICAgICAgICAgIHJldHVybjsKQEAgLTE3OTcsOSArMTc5Nyw5IEBA
IC0gKHZvaWQpY2hhcmFjdGVySW5kZXhGb3JQb2ludDooTlNQb2ludCkKICNwcmFnbWEgY2xhbmcg
ZGlhZ25vc3RpYyBwb3AKICAgICB0aGVQb2ludCA9IFtzZWxmIGNvbnZlcnRQb2ludDp0aGVQb2lu
dCBmcm9tVmlldzpuaWxdOyAgLy8gdGhlIHBvaW50IGlzIHJlbGF0aXZlIHRvIHRoZSBtYWluIGZy
YW1lCiAKLSAgICBfZGF0YS0+X3BhZ2UtPmNoYXJhY3RlckluZGV4Rm9yUG9pbnRBc3luYyhJbnRQ
b2ludCh0aGVQb2ludCksIFtjb21wbGV0aW9uSGFuZGxlcl0odWludDY0X3QgcmVzdWx0LCBDYWxs
YmFja0Jhc2U6OkVycm9yIGVycm9yKSB7CisgICAgX2RhdGEtPl9wYWdlLT5jaGFyYWN0ZXJJbmRl
eEZvclBvaW50QXN5bmMoSW50UG9pbnQodGhlUG9pbnQpLCBbY29tcGxldGlvbkhhbmRsZXJdKHVp
bnQ2NF90IHJlc3VsdCwgV2ViS2l0OjpDYWxsYmFja0Jhc2U6OkVycm9yIGVycm9yKSB7CiAgICAg
ICAgIHZvaWQgKF5jb21wbGV0aW9uSGFuZGxlckJsb2NrKShOU1VJbnRlZ2VyKSA9ICh2b2lkIChe
KShOU1VJbnRlZ2VyKSljb21wbGV0aW9uSGFuZGxlci5nZXQoKTsKLSAgICAgICAgaWYgKGVycm9y
ICE9IENhbGxiYWNrQmFzZTo6RXJyb3I6Ok5vbmUpIHsKKyAgICAgICAgaWYgKGVycm9yICE9IFdl
YktpdDo6Q2FsbGJhY2tCYXNlOjpFcnJvcjo6Tm9uZSkgewogICAgICAgICAgICAgTE9HKFRleHRJ
bnB1dCwgIiAgICAuLi5jaGFyYWN0ZXJJbmRleEZvclBvaW50IGZhaWxlZC4iKTsKICAgICAgICAg
ICAgIGNvbXBsZXRpb25IYW5kbGVyQmxvY2soMCk7CiAgICAgICAgICAgICByZXR1cm47CkluZGV4
OiBTb3VyY2UvV2ViS2l0Mi9VSVByb2Nlc3MvaW9zL1dLQ29udGVudFZpZXdJbnRlcmFjdGlvbi5t
bQo9PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09Ci0tLSBTb3VyY2UvV2ViS2l0Mi9VSVByb2Nlc3MvaW9zL1dLQ29udGVudFZp
ZXdJbnRlcmFjdGlvbi5tbQkocmV2aXNpb24gMTgyNzk1KQorKysgU291cmNlL1dlYktpdDIvVUlQ
cm9jZXNzL2lvcy9XS0NvbnRlbnRWaWV3SW50ZXJhY3Rpb24ubW0JKHdvcmtpbmcgY29weSkKQEAg
LTE1NDYsOCArMTU0Niw4IEBAIC0gKHZvaWQpX2RlZmluZTooaWQpc2VuZGVyCiAgICAgaWYgKFtb
Z2V0TUNQcm9maWxlQ29ubmVjdGlvbkNsYXNzKCkgc2hhcmVkQ29ubmVjdGlvbl0gZWZmZWN0aXZl
Qm9vbFZhbHVlRm9yU2V0dGluZzpNQ0ZlYXR1cmVEZWZpbml0aW9uTG9va3VwQWxsb3dlZF0gPT0g
TUNSZXN0cmljdGVkQm9vbEV4cGxpY2l0Tm8pCiAgICAgICAgIHJldHVybjsKIAotICAgIF9wYWdl
LT5nZXRTZWxlY3Rpb25PckNvbnRlbnRzQXNTdHJpbmcoW3NlbGZdKGNvbnN0IFN0cmluZyYgc3Ry
aW5nLCBDYWxsYmFja0Jhc2U6OkVycm9yIGVycm9yKSB7Ci0gICAgICAgIGlmIChlcnJvciAhPSBD
YWxsYmFja0Jhc2U6OkVycm9yOjpOb25lKQorICAgIF9wYWdlLT5nZXRTZWxlY3Rpb25PckNvbnRl
bnRzQXNTdHJpbmcoW3NlbGZdKGNvbnN0IFN0cmluZyYgc3RyaW5nLCBXZWJLaXQ6OkNhbGxiYWNr
QmFzZTo6RXJyb3IgZXJyb3IpIHsKKyAgICAgICAgaWYgKGVycm9yICE9IFdlYktpdDo6Q2FsbGJh
Y2tCYXNlOjpFcnJvcjo6Tm9uZSkKICAgICAgICAgICAgIHJldHVybjsKICAgICAgICAgaWYgKCFz
dHJpbmcpCiAgICAgICAgICAgICByZXR1cm47CkBAIC0xNTU4LDggKzE1NTgsOCBAQCAtICh2b2lk
KV9kZWZpbmU6KGlkKXNlbmRlcgogCiAtICh2b2lkKWFjY2Vzc2liaWxpdHlSZXRyaWV2ZVNwZWFr
U2VsZWN0aW9uQ29udGVudAogewotICAgIF9wYWdlLT5nZXRTZWxlY3Rpb25PckNvbnRlbnRzQXNT
dHJpbmcoW3NlbGZdKGNvbnN0IFN0cmluZyYgc3RyaW5nLCBDYWxsYmFja0Jhc2U6OkVycm9yIGVy
cm9yKSB7Ci0gICAgICAgIGlmIChlcnJvciAhPSBDYWxsYmFja0Jhc2U6OkVycm9yOjpOb25lKQor
ICAgIF9wYWdlLT5nZXRTZWxlY3Rpb25PckNvbnRlbnRzQXNTdHJpbmcoW3NlbGZdKGNvbnN0IFN0
cmluZyYgc3RyaW5nLCBXZWJLaXQ6OkNhbGxiYWNrQmFzZTo6RXJyb3IgZXJyb3IpIHsKKyAgICAg
ICAgaWYgKGVycm9yICE9IFdlYktpdDo6Q2FsbGJhY2tCYXNlOjpFcnJvcjo6Tm9uZSkKICAgICAg
ICAgICAgIHJldHVybjsKICAgICAgICAgaWYgKFtzZWxmIHJlc3BvbmRzVG9TZWxlY3RvcjpAc2Vs
ZWN0b3IoYWNjZXNzaWJpbGl0eVNwZWFrU2VsZWN0aW9uU2V0Q29udGVudDopXSkKICAgICAgICAg
ICAgIFtzZWxmIGFjY2Vzc2liaWxpdHlTcGVha1NlbGVjdGlvblNldENvbnRlbnQ6c3RyaW5nXTsK
QEAgLTE3NzcsOSArMTc3Nyw5IEBAIHN0YXRpYyBpbmxpbmUgV2ViQ29yZTo6U2VsZWN0aW9uRGly
ZWN0aW8KICAgICB9CiB9CiAKLXN0YXRpYyB2b2lkIHNlbGVjdGlvbkNoYW5nZWRXaXRoR2VzdHVy
ZShXS0NvbnRlbnRWaWV3ICp2aWV3LCBjb25zdCBXZWJDb3JlOjpJbnRQb2ludCYgcG9pbnQsIHVp
bnQzMl90IGdlc3R1cmVUeXBlLCB1aW50MzJfdCBnZXN0dXJlU3RhdGUsIHVpbnQzMl90IGZsYWdz
LCBDYWxsYmFja0Jhc2U6OkVycm9yIGVycm9yKQorc3RhdGljIHZvaWQgc2VsZWN0aW9uQ2hhbmdl
ZFdpdGhHZXN0dXJlKFdLQ29udGVudFZpZXcgKnZpZXcsIGNvbnN0IFdlYkNvcmU6OkludFBvaW50
JiBwb2ludCwgdWludDMyX3QgZ2VzdHVyZVR5cGUsIHVpbnQzMl90IGdlc3R1cmVTdGF0ZSwgdWlu
dDMyX3QgZmxhZ3MsIFdlYktpdDo6Q2FsbGJhY2tCYXNlOjpFcnJvciBlcnJvcikKIHsKLSAgICBp
ZiAoZXJyb3IgIT0gQ2FsbGJhY2tCYXNlOjpFcnJvcjo6Tm9uZSkgeworICAgIGlmIChlcnJvciAh
PSBXZWJLaXQ6OkNhbGxiYWNrQmFzZTo6RXJyb3I6Ok5vbmUpIHsKICAgICAgICAgQVNTRVJUX05P
VF9SRUFDSEVEKCk7CiAgICAgICAgIHJldHVybjsKICAgICB9CkBAIC0xNzg5LDkgKzE3ODksOSBA
QCBzdGF0aWMgdm9pZCBzZWxlY3Rpb25DaGFuZ2VkV2l0aEdlc3R1cmUoCiAgICAgICAgIFsoVUlX
S1RleHRJbnRlcmFjdGlvbkFzc2lzdGFudCAqKVt2aWV3IGludGVyYWN0aW9uQXNzaXN0YW50XSBz
ZWxlY3Rpb25DaGFuZ2VkV2l0aEdlc3R1cmVBdDooQ0dQb2ludClwb2ludCB3aXRoR2VzdHVyZTp0
b1VJV0tHZXN0dXJlVHlwZSgoR2VzdHVyZVR5cGUpZ2VzdHVyZVR5cGUpIHdpdGhTdGF0ZTp0b1VJ
R2VzdHVyZVJlY29nbml6ZXJTdGF0ZShzdGF0aWNfY2FzdDxHZXN0dXJlUmVjb2duaXplclN0YXRl
PihnZXN0dXJlU3RhdGUpKSB3aXRoRmxhZ3M6KHRvVUlXS1NlbGVjdGlvbkZsYWdzKChTZWxlY3Rp
b25GbGFncylmbGFncykpXTsKIH0KIAotc3RhdGljIHZvaWQgc2VsZWN0aW9uQ2hhbmdlZFdpdGhU
b3VjaChXS0NvbnRlbnRWaWV3ICp2aWV3LCBjb25zdCBXZWJDb3JlOjpJbnRQb2ludCYgcG9pbnQs
IHVpbnQzMl90IHRvdWNoLCBDYWxsYmFja0Jhc2U6OkVycm9yIGVycm9yKQorc3RhdGljIHZvaWQg
c2VsZWN0aW9uQ2hhbmdlZFdpdGhUb3VjaChXS0NvbnRlbnRWaWV3ICp2aWV3LCBjb25zdCBXZWJD
b3JlOjpJbnRQb2ludCYgcG9pbnQsIHVpbnQzMl90IHRvdWNoLCBXZWJLaXQ6OkNhbGxiYWNrQmFz
ZTo6RXJyb3IgZXJyb3IpCiB7Ci0gICAgaWYgKGVycm9yICE9IENhbGxiYWNrQmFzZTo6RXJyb3I6
Ok5vbmUpIHsKKyAgICBpZiAoZXJyb3IgIT0gV2ViS2l0OjpDYWxsYmFja0Jhc2U6OkVycm9yOjpO
b25lKSB7CiAgICAgICAgIEFTU0VSVF9OT1RfUkVBQ0hFRCgpOwogICAgICAgICByZXR1cm47CiAg
ICAgfQpAQCAtMTgxMSw3ICsxODExLDcgQEAgLSAodm9pZClfZGlkVXBkYXRlQmxvY2tTZWxlY3Rp
b25XaXRoVG91YwogLSAodm9pZCljaGFuZ2VTZWxlY3Rpb25XaXRoR2VzdHVyZUF0OihDR1BvaW50
KXBvaW50IHdpdGhHZXN0dXJlOihVSVdLR2VzdHVyZVR5cGUpZ2VzdHVyZVR5cGUgd2l0aFN0YXRl
OihVSUdlc3R1cmVSZWNvZ25pemVyU3RhdGUpc3RhdGUKIHsKICAgICBfdXNpbmdHZXN0dXJlRm9y
U2VsZWN0aW9uID0gWUVTOwotICAgIF9wYWdlLT5zZWxlY3RXaXRoR2VzdHVyZShXZWJDb3JlOjpJ
bnRQb2ludChwb2ludCksIENoYXJhY3RlckdyYW51bGFyaXR5LCBzdGF0aWNfY2FzdDx1aW50MzJf
dD4odG9HZXN0dXJlVHlwZShnZXN0dXJlVHlwZSkpLCBzdGF0aWNfY2FzdDx1aW50MzJfdD4odG9H
ZXN0dXJlUmVjb2duaXplclN0YXRlKHN0YXRlKSksIFtzZWxmLCBzdGF0ZV0oY29uc3QgV2ViQ29y
ZTo6SW50UG9pbnQmIHBvaW50LCB1aW50MzJfdCBnZXN0dXJlVHlwZSwgdWludDMyX3QgZ2VzdHVy
ZVN0YXRlLCB1aW50MzJfdCBmbGFncywgQ2FsbGJhY2tCYXNlOjpFcnJvciBlcnJvcikgeworICAg
IF9wYWdlLT5zZWxlY3RXaXRoR2VzdHVyZShXZWJDb3JlOjpJbnRQb2ludChwb2ludCksIENoYXJh
Y3RlckdyYW51bGFyaXR5LCBzdGF0aWNfY2FzdDx1aW50MzJfdD4odG9HZXN0dXJlVHlwZShnZXN0
dXJlVHlwZSkpLCBzdGF0aWNfY2FzdDx1aW50MzJfdD4odG9HZXN0dXJlUmVjb2duaXplclN0YXRl
KHN0YXRlKSksIFtzZWxmLCBzdGF0ZV0oY29uc3QgV2ViQ29yZTo6SW50UG9pbnQmIHBvaW50LCB1
aW50MzJfdCBnZXN0dXJlVHlwZSwgdWludDMyX3QgZ2VzdHVyZVN0YXRlLCB1aW50MzJfdCBmbGFn
cywgV2ViS2l0OjpDYWxsYmFja0Jhc2U6OkVycm9yIGVycm9yKSB7CiAgICAgICAgIHNlbGVjdGlv
bkNoYW5nZWRXaXRoR2VzdHVyZShzZWxmLCBwb2ludCwgZ2VzdHVyZVR5cGUsIGdlc3R1cmVTdGF0
ZSwgZmxhZ3MsIGVycm9yKTsKICAgICAgICAgaWYgKHN0YXRlID09IFVJR2VzdHVyZVJlY29nbml6
ZXJTdGF0ZUVuZGVkIHx8IHN0YXRlID09IFVJR2VzdHVyZVJlY29nbml6ZXJTdGF0ZUNhbmNlbGxl
ZCkKICAgICAgICAgICAgIF91c2luZ0dlc3R1cmVGb3JTZWxlY3Rpb24gPSBOTzsKQEAgLTE4MjEs
NyArMTgyMSw3IEBAIC0gKHZvaWQpY2hhbmdlU2VsZWN0aW9uV2l0aEdlc3R1cmVBdDooQ0cKIC0g
KHZvaWQpY2hhbmdlU2VsZWN0aW9uV2l0aFRvdWNoQXQ6KENHUG9pbnQpcG9pbnQgd2l0aFNlbGVj
dGlvblRvdWNoOihVSVdLU2VsZWN0aW9uVG91Y2gpdG91Y2ggYmFzZUlzU3RhcnQ6KEJPT0wpYmFz
ZUlzU3RhcnQKIHsKICAgICBfdXNpbmdHZXN0dXJlRm9yU2VsZWN0aW9uID0gWUVTOwotICAgIF9w
YWdlLT51cGRhdGVTZWxlY3Rpb25XaXRoVG91Y2hlcyhXZWJDb3JlOjpJbnRQb2ludChwb2ludCks
IHN0YXRpY19jYXN0PHVpbnQzMl90Pih0b1NlbGVjdGlvblRvdWNoKHRvdWNoKSksIGJhc2VJc1N0
YXJ0LCBbc2VsZiwgdG91Y2hdKGNvbnN0IFdlYkNvcmU6OkludFBvaW50JiBwb2ludCwgdWludDMy
X3QgdG91Y2gsIENhbGxiYWNrQmFzZTo6RXJyb3IgZXJyb3IpIHsKKyAgICBfcGFnZS0+dXBkYXRl
U2VsZWN0aW9uV2l0aFRvdWNoZXMoV2ViQ29yZTo6SW50UG9pbnQocG9pbnQpLCBzdGF0aWNfY2Fz
dDx1aW50MzJfdD4odG9TZWxlY3Rpb25Ub3VjaCh0b3VjaCkpLCBiYXNlSXNTdGFydCwgW3NlbGYs
IHRvdWNoXShjb25zdCBXZWJDb3JlOjpJbnRQb2ludCYgcG9pbnQsIHVpbnQzMl90IHRvdWNoLCBX
ZWJLaXQ6OkNhbGxiYWNrQmFzZTo6RXJyb3IgZXJyb3IpIHsKICAgICAgICAgc2VsZWN0aW9uQ2hh
bmdlZFdpdGhUb3VjaChzZWxmLCBwb2ludCwgdG91Y2gsIGVycm9yKTsKICAgICAgICAgaWYgKHRv
dWNoICE9IFVJV0tTZWxlY3Rpb25Ub3VjaFN0YXJ0ZWQgJiYgdG91Y2ggIT0gVUlXS1NlbGVjdGlv
blRvdWNoTW92ZWQpCiAgICAgICAgICAgICBfdXNpbmdHZXN0dXJlRm9yU2VsZWN0aW9uID0gTk87
CkBAIC0xODMxLDcgKzE4MzEsNyBAQCAtICh2b2lkKWNoYW5nZVNlbGVjdGlvbldpdGhUb3VjaEF0
OihDR1BvCiAtICh2b2lkKWNoYW5nZVNlbGVjdGlvbldpdGhUb3VjaGVzRnJvbTooQ0dQb2ludClm
cm9tIHRvOihDR1BvaW50KXRvIHdpdGhHZXN0dXJlOihVSVdLR2VzdHVyZVR5cGUpZ2VzdHVyZVR5
cGUgd2l0aFN0YXRlOihVSUdlc3R1cmVSZWNvZ25pemVyU3RhdGUpZ2VzdHVyZVN0YXRlCiB7CiAg
ICAgX3VzaW5nR2VzdHVyZUZvclNlbGVjdGlvbiA9IFlFUzsKLSAgICBfcGFnZS0+c2VsZWN0V2l0
aFR3b1RvdWNoZXMoV2ViQ29yZTo6SW50UG9pbnQoZnJvbSksIFdlYkNvcmU6OkludFBvaW50KHRv
KSwgc3RhdGljX2Nhc3Q8dWludDMyX3Q+KHRvR2VzdHVyZVR5cGUoZ2VzdHVyZVR5cGUpKSwgc3Rh
dGljX2Nhc3Q8dWludDMyX3Q+KHRvR2VzdHVyZVJlY29nbml6ZXJTdGF0ZShnZXN0dXJlU3RhdGUp
KSwgW3NlbGYsIGdlc3R1cmVTdGF0ZV0oY29uc3QgV2ViQ29yZTo6SW50UG9pbnQmIHBvaW50LCB1
aW50MzJfdCBnZXN0dXJlVHlwZSwgdWludDMyX3QgZ2VzdHVyZVN0YXRlLCB1aW50MzJfdCBmbGFn
cywgQ2FsbGJhY2tCYXNlOjpFcnJvciBlcnJvcikgeworICAgIF9wYWdlLT5zZWxlY3RXaXRoVHdv
VG91Y2hlcyhXZWJDb3JlOjpJbnRQb2ludChmcm9tKSwgV2ViQ29yZTo6SW50UG9pbnQodG8pLCBz
dGF0aWNfY2FzdDx1aW50MzJfdD4odG9HZXN0dXJlVHlwZShnZXN0dXJlVHlwZSkpLCBzdGF0aWNf
Y2FzdDx1aW50MzJfdD4odG9HZXN0dXJlUmVjb2duaXplclN0YXRlKGdlc3R1cmVTdGF0ZSkpLCBb
c2VsZiwgZ2VzdHVyZVN0YXRlXShjb25zdCBXZWJDb3JlOjpJbnRQb2ludCYgcG9pbnQsIHVpbnQz
Ml90IGdlc3R1cmVUeXBlLCB1aW50MzJfdCBnZXN0dXJlU3RhdGUsIHVpbnQzMl90IGZsYWdzLCBX
ZWJLaXQ6OkNhbGxiYWNrQmFzZTo6RXJyb3IgZXJyb3IpIHsKICAgICAgICAgc2VsZWN0aW9uQ2hh
bmdlZFdpdGhHZXN0dXJlKHNlbGYsIHBvaW50LCBnZXN0dXJlVHlwZSwgZ2VzdHVyZVN0YXRlLCBm
bGFncywgZXJyb3IpOwogICAgICAgICBpZiAoZ2VzdHVyZVN0YXRlID09IFVJR2VzdHVyZVJlY29n
bml6ZXJTdGF0ZUVuZGVkIHx8IGdlc3R1cmVTdGF0ZSA9PSBVSUdlc3R1cmVSZWNvZ25pemVyU3Rh
dGVDYW5jZWxsZWQpCiAgICAgICAgICAgICBfdXNpbmdHZXN0dXJlRm9yU2VsZWN0aW9uID0gTk87
CkBAIC0xODUwLDcgKzE4NTAsNyBAQCAtICh2b2lkKW1vdmVCeU9mZnNldDooTlNJbnRlZ2VyKW9m
ZnNldAogICAgICAgICByZXR1cm47CiAgICAgCiAgICAgW3NlbGYgYmVnaW5TZWxlY3Rpb25DaGFu
Z2VdOwotICAgIF9wYWdlLT5tb3ZlU2VsZWN0aW9uQnlPZmZzZXQob2Zmc2V0LCBbc2VsZl0oQ2Fs
bGJhY2tCYXNlOjpFcnJvcikgeworICAgIF9wYWdlLT5tb3ZlU2VsZWN0aW9uQnlPZmZzZXQob2Zm
c2V0LCBbc2VsZl0oV2ViS2l0OjpDYWxsYmFja0Jhc2U6OkVycm9yKSB7CiAgICAgICAgIFtzZWxm
IGVuZFNlbGVjdGlvbkNoYW5nZV07CiAgICAgfSk7CiB9CkBAIC0xODY5LDcgKzE4NjksNyBAQCAt
ICh2b2lkKXJlcXVlc3RBdXRvY29ycmVjdGlvblJlY3RzRm9yU3RyCiAgICAgfQogCiAgICAgX2F1
dG9jb3JyZWN0aW9uRGF0YS5hdXRvY29ycmVjdGlvbkhhbmRsZXIgPSBbY29tcGxldGlvbkhhbmRs
ZXIgY29weV07Ci0gICAgX3BhZ2UtPnJlcXVlc3RBdXRvY29ycmVjdGlvbkRhdGEoaW5wdXQsIFtz
ZWxmXShjb25zdCBWZWN0b3I8RmxvYXRSZWN0PiYgcmVjdHMsIGNvbnN0IFN0cmluZyYgZm9udE5h
bWUsIGRvdWJsZSBmb250U2l6ZSwgdWludDY0X3QgdHJhaXRzLCBDYWxsYmFja0Jhc2U6OkVycm9y
KSB7CisgICAgX3BhZ2UtPnJlcXVlc3RBdXRvY29ycmVjdGlvbkRhdGEoaW5wdXQsIFtzZWxmXShj
b25zdCBWZWN0b3I8RmxvYXRSZWN0PiYgcmVjdHMsIGNvbnN0IFN0cmluZyYgZm9udE5hbWUsIGRv
dWJsZSBmb250U2l6ZSwgdWludDY0X3QgdHJhaXRzLCBXZWJLaXQ6OkNhbGxiYWNrQmFzZTo6RXJy
b3IpIHsKICAgICAgICAgQ0dSZWN0IGZpcnN0UmVjdCA9IENHUmVjdFplcm87CiAgICAgICAgIENH
UmVjdCBsYXN0UmVjdCA9IENHUmVjdFplcm87CiAgICAgICAgIGlmIChyZWN0cy5zaXplKCkpIHsK
QEAgLTE4OTMsNyArMTg5Myw3IEBAIC0gKHZvaWQpc2VsZWN0UG9zaXRpb25BdFBvaW50OihDR1Bv
aW50KXAKIHsKICAgICBVSVdLU2VsZWN0aW9uQ29tcGxldGlvbkhhbmRsZXIgc2VsZWN0aW9uSGFu
ZGxlciA9IFtjb21wbGV0aW9uSGFuZGxlciBjb3B5XTsKICAgICAKLSAgICBfcGFnZS0+c2VsZWN0
UG9zaXRpb25BdFBvaW50KFdlYkNvcmU6OkludFBvaW50KHBvaW50KSwgW3NlbGVjdGlvbkhhbmRs
ZXJdKENhbGxiYWNrQmFzZTo6RXJyb3IgZXJyb3IpIHsKKyAgICBfcGFnZS0+c2VsZWN0UG9zaXRp
b25BdFBvaW50KFdlYkNvcmU6OkludFBvaW50KHBvaW50KSwgW3NlbGVjdGlvbkhhbmRsZXJdKFdl
YktpdDo6Q2FsbGJhY2tCYXNlOjpFcnJvciBlcnJvcikgewogICAgICAgICBzZWxlY3Rpb25IYW5k
bGVyKCk7CiAgICAgICAgIFtzZWxlY3Rpb25IYW5kbGVyIHJlbGVhc2VdOwogICAgIH0pOwpAQCAt
MTkwMyw3ICsxOTAzLDcgQEAgLSAodm9pZClzZWxlY3RQb3NpdGlvbkF0Qm91bmRhcnk6KFVJVGV4
dAogewogICAgIFVJV0tTZWxlY3Rpb25Db21wbGV0aW9uSGFuZGxlciBzZWxlY3Rpb25IYW5kbGVy
ID0gW2NvbXBsZXRpb25IYW5kbGVyIGNvcHldOwogICAgIAotICAgIF9wYWdlLT5zZWxlY3RQb3Np
dGlvbkF0Qm91bmRhcnlXaXRoRGlyZWN0aW9uKFdlYkNvcmU6OkludFBvaW50KHBvaW50KSwgdG9X
S1RleHRHcmFudWxhcml0eShncmFudWxhcml0eSksIHRvV0tTZWxlY3Rpb25EaXJlY3Rpb24oZGly
ZWN0aW9uKSwgW3NlbGVjdGlvbkhhbmRsZXJdKENhbGxiYWNrQmFzZTo6RXJyb3IgZXJyb3IpIHsK
KyAgICBfcGFnZS0+c2VsZWN0UG9zaXRpb25BdEJvdW5kYXJ5V2l0aERpcmVjdGlvbihXZWJDb3Jl
OjpJbnRQb2ludChwb2ludCksIHRvV0tUZXh0R3JhbnVsYXJpdHkoZ3JhbnVsYXJpdHkpLCB0b1dL
U2VsZWN0aW9uRGlyZWN0aW9uKGRpcmVjdGlvbiksIFtzZWxlY3Rpb25IYW5kbGVyXShXZWJLaXQ6
OkNhbGxiYWNrQmFzZTo6RXJyb3IgZXJyb3IpIHsKICAgICAgICAgc2VsZWN0aW9uSGFuZGxlcigp
OwogICAgICAgICBbc2VsZWN0aW9uSGFuZGxlciByZWxlYXNlXTsKICAgICB9KTsKQEAgLTE5MTMs
NyArMTkxMyw3IEBAIC0gKHZvaWQpc2VsZWN0VGV4dFdpdGhHcmFudWxhcml0eTooVUlUZXgKIHsK
ICAgICBVSVdLU2VsZWN0aW9uQ29tcGxldGlvbkhhbmRsZXIgc2VsZWN0aW9uSGFuZGxlciA9IFtj
b21wbGV0aW9uSGFuZGxlciBjb3B5XTsKIAotICAgIF9wYWdlLT5zZWxlY3RUZXh0V2l0aEdyYW51
bGFyaXR5QXRQb2ludChXZWJDb3JlOjpJbnRQb2ludChwb2ludCksIHRvV0tUZXh0R3JhbnVsYXJp
dHkoZ3JhbnVsYXJpdHkpLCBbc2VsZWN0aW9uSGFuZGxlcl0oQ2FsbGJhY2tCYXNlOjpFcnJvciBl
cnJvcikgeworICAgIF9wYWdlLT5zZWxlY3RUZXh0V2l0aEdyYW51bGFyaXR5QXRQb2ludChXZWJD
b3JlOjpJbnRQb2ludChwb2ludCksIHRvV0tUZXh0R3JhbnVsYXJpdHkoZ3JhbnVsYXJpdHkpLCBb
c2VsZWN0aW9uSGFuZGxlcl0oV2ViS2l0OjpDYWxsYmFja0Jhc2U6OkVycm9yIGVycm9yKSB7CiAg
ICAgICAgIHNlbGVjdGlvbkhhbmRsZXIoKTsKICAgICAgICAgW3NlbGVjdGlvbkhhbmRsZXIgcmVs
ZWFzZV07CiAgICAgfSk7CkBAIC0xOTIzLDcgKzE5MjMsNyBAQCAtICh2b2lkKWJlZ2luU2VsZWN0
aW9uSW5EaXJlY3Rpb246KFVJVGV4CiB7CiAgICAgVUlXS1NlbGVjdGlvbldpdGhEaXJlY3Rpb25D
b21wbGV0aW9uSGFuZGxlciBzZWxlY3Rpb25IYW5kbGVyID0gW2NvbXBsZXRpb25IYW5kbGVyIGNv
cHldOwogCi0gICAgX3BhZ2UtPmJlZ2luU2VsZWN0aW9uSW5EaXJlY3Rpb24odG9XS1NlbGVjdGlv
bkRpcmVjdGlvbihkaXJlY3Rpb24pLCBbc2VsZWN0aW9uSGFuZGxlcl0oYm9vbCBlbmRJc01vdmlu
ZywgQ2FsbGJhY2tCYXNlOjpFcnJvciBlcnJvcikgeworICAgIF9wYWdlLT5iZWdpblNlbGVjdGlv
bkluRGlyZWN0aW9uKHRvV0tTZWxlY3Rpb25EaXJlY3Rpb24oZGlyZWN0aW9uKSwgW3NlbGVjdGlv
bkhhbmRsZXJdKGJvb2wgZW5kSXNNb3ZpbmcsIFdlYktpdDo6Q2FsbGJhY2tCYXNlOjpFcnJvciBl
cnJvcikgewogICAgICAgICBzZWxlY3Rpb25IYW5kbGVyKGVuZElzTW92aW5nKTsKICAgICAgICAg
W3NlbGVjdGlvbkhhbmRsZXIgcmVsZWFzZV07CiAgICAgfSk7CkBAIC0xOTMzLDcgKzE5MzMsNyBA
QCAtICh2b2lkKXVwZGF0ZVNlbGVjdGlvbldpdGhFeHRlbnRQb2ludDooCiB7CiAgICAgVUlXS1Nl
bGVjdGlvbldpdGhEaXJlY3Rpb25Db21wbGV0aW9uSGFuZGxlciBzZWxlY3Rpb25IYW5kbGVyID0g
W2NvbXBsZXRpb25IYW5kbGVyIGNvcHldOwogICAgIAotICAgIF9wYWdlLT51cGRhdGVTZWxlY3Rp
b25XaXRoRXh0ZW50UG9pbnQoV2ViQ29yZTo6SW50UG9pbnQocG9pbnQpLCBbc2VsZWN0aW9uSGFu
ZGxlcl0oYm9vbCBlbmRJc01vdmluZywgQ2FsbGJhY2tCYXNlOjpFcnJvciBlcnJvcikgeworICAg
IF9wYWdlLT51cGRhdGVTZWxlY3Rpb25XaXRoRXh0ZW50UG9pbnQoV2ViQ29yZTo6SW50UG9pbnQo
cG9pbnQpLCBbc2VsZWN0aW9uSGFuZGxlcl0oYm9vbCBlbmRJc01vdmluZywgV2ViS2l0OjpDYWxs
YmFja0Jhc2U6OkVycm9yIGVycm9yKSB7CiAgICAgICAgIHNlbGVjdGlvbkhhbmRsZXIoZW5kSXNN
b3ZpbmcpOwogICAgICAgICBbc2VsZWN0aW9uSGFuZGxlciByZWxlYXNlXTsKICAgICB9KTsKQEAg
LTE5ODIsNyArMTk4Miw3IEBAIC0gKHZvaWQpcmVxdWVzdERpY3RhdGlvbkNvbnRleHQ6KHZvaWQg
KF4KIHsKICAgICBVSVdLRGljdGF0aW9uQ29udGV4dEhhbmRsZXIgZGljdGF0aW9uSGFuZGxlciA9
IFtjb21wbGV0aW9uSGFuZGxlciBjb3B5XTsKIAotICAgIF9wYWdlLT5yZXF1ZXN0RGljdGF0aW9u
Q29udGV4dChbZGljdGF0aW9uSGFuZGxlcl0oY29uc3QgU3RyaW5nJiBzZWxlY3RlZFRleHQsIGNv
bnN0IFN0cmluZyYgYmVmb3JlVGV4dCwgY29uc3QgU3RyaW5nJiBhZnRlclRleHQsIENhbGxiYWNr
QmFzZTo6RXJyb3IpIHsKKyAgICBfcGFnZS0+cmVxdWVzdERpY3RhdGlvbkNvbnRleHQoW2RpY3Rh
dGlvbkhhbmRsZXJdKGNvbnN0IFN0cmluZyYgc2VsZWN0ZWRUZXh0LCBjb25zdCBTdHJpbmcmIGJl
Zm9yZVRleHQsIGNvbnN0IFN0cmluZyYgYWZ0ZXJUZXh0LCBXZWJLaXQ6OkNhbGxiYWNrQmFzZTo6
RXJyb3IpIHsKICAgICAgICAgZGljdGF0aW9uSGFuZGxlcihzZWxlY3RlZFRleHQsIGJlZm9yZVRl
eHQsIGFmdGVyVGV4dCk7CiAgICAgICAgIFtkaWN0YXRpb25IYW5kbGVyIHJlbGVhc2VdOwogICAg
IH0pOwpAQCAtMTk5OSw3ICsxOTk5LDcgQEAgLSAodm9pZClhcHBseUF1dG9jb3JyZWN0aW9uOihO
U1N0cmluZyAqKQogICAgICAgICByZXR1cm47CiAgICAgfQogICAgIF9hdXRvY29ycmVjdGlvbkRh
dGEuYXV0b2NvcnJlY3Rpb25IYW5kbGVyID0gW2NvbXBsZXRpb25IYW5kbGVyIGNvcHldOwotICAg
IF9wYWdlLT5hcHBseUF1dG9jb3JyZWN0aW9uKGNvcnJlY3Rpb24sIGlucHV0LCBbc2VsZl0oY29u
c3QgU3RyaW5nJiBzdHJpbmcsIENhbGxiYWNrQmFzZTo6RXJyb3IgZXJyb3IpIHsKKyAgICBfcGFn
ZS0+YXBwbHlBdXRvY29ycmVjdGlvbihjb3JyZWN0aW9uLCBpbnB1dCwgW3NlbGZdKGNvbnN0IFN0
cmluZyYgc3RyaW5nLCBXZWJLaXQ6OkNhbGxiYWNrQmFzZTo6RXJyb3IgZXJyb3IpIHsKICAgICAg
ICAgX2F1dG9jb3JyZWN0aW9uRGF0YS5hdXRvY29ycmVjdGlvbkhhbmRsZXIoIXN0cmluZy5pc051
bGwoKSA/IFtXS0F1dG9jb3JyZWN0aW9uUmVjdHMgYXV0b2NvcnJlY3Rpb25SZWN0c1dpdGhSZWN0
czpfYXV0b2NvcnJlY3Rpb25EYXRhLnRleHRGaXJzdFJlY3QgbGFzdFJlY3Q6X2F1dG9jb3JyZWN0
aW9uRGF0YS50ZXh0TGFzdFJlY3RdIDogbmlsKTsKICAgICAgICAgW19hdXRvY29ycmVjdGlvbkRh
dGEuYXV0b2NvcnJlY3Rpb25IYW5kbGVyIHJlbGVhc2VdOwogICAgICAgICBfYXV0b2NvcnJlY3Rp
b25EYXRhLmF1dG9jb3JyZWN0aW9uSGFuZGxlciA9IG5pbDsKQEAgLTIwMjIsNyArMjAyMiw3IEBA
IC0gKHZvaWQpcmVxdWVzdEF1dG9jb3JyZWN0aW9uQ29udGV4dFdpdGgKICAgICAgICAgY29tcGxl
dGlvbkhhbmRsZXIoW1dLQXV0b2NvcnJlY3Rpb25Db250ZXh0IGF1dG9jb3JyZWN0aW9uQ29udGV4
dFdpdGhEYXRhOmJlZm9yZVRleHQgbWFya2VkVGV4dDptYXJrZWRUZXh0IHNlbGVjdGVkVGV4dDpz
ZWxlY3RlZFRleHQgYWZ0ZXJUZXh0OmFmdGVyVGV4dCBzZWxlY3RlZFJhbmdlSW5NYXJrZWRUZXh0
Ok5TTWFrZVJhbmdlKGxvY2F0aW9uLCBsZW5ndGgpXSk7CiAgICAgfSBlbHNlIHsKICAgICAgICAg
X2F1dG9jb3JyZWN0aW9uRGF0YS5hdXRvY29ycmVjdGlvbkNvbnRleHRIYW5kbGVyID0gW2NvbXBs
ZXRpb25IYW5kbGVyIGNvcHldOwotICAgICAgICBfcGFnZS0+cmVxdWVzdEF1dG9jb3JyZWN0aW9u
Q29udGV4dChbc2VsZl0oY29uc3QgU3RyaW5nJiBiZWZvcmVUZXh0LCBjb25zdCBTdHJpbmcmIG1h
cmtlZFRleHQsIGNvbnN0IFN0cmluZyYgc2VsZWN0ZWRUZXh0LCBjb25zdCBTdHJpbmcmIGFmdGVy
VGV4dCwgdWludDY0X3QgbG9jYXRpb24sIHVpbnQ2NF90IGxlbmd0aCwgQ2FsbGJhY2tCYXNlOjpF
cnJvcikgeworICAgICAgICBfcGFnZS0+cmVxdWVzdEF1dG9jb3JyZWN0aW9uQ29udGV4dChbc2Vs
Zl0oY29uc3QgU3RyaW5nJiBiZWZvcmVUZXh0LCBjb25zdCBTdHJpbmcmIG1hcmtlZFRleHQsIGNv
bnN0IFN0cmluZyYgc2VsZWN0ZWRUZXh0LCBjb25zdCBTdHJpbmcmIGFmdGVyVGV4dCwgdWludDY0
X3QgbG9jYXRpb24sIHVpbnQ2NF90IGxlbmd0aCwgV2ViS2l0OjpDYWxsYmFja0Jhc2U6OkVycm9y
KSB7CiAgICAgICAgICAgICBfYXV0b2NvcnJlY3Rpb25EYXRhLmF1dG9jb3JyZWN0aW9uQ29udGV4
dEhhbmRsZXIoW1dLQXV0b2NvcnJlY3Rpb25Db250ZXh0IGF1dG9jb3JyZWN0aW9uQ29udGV4dFdp
dGhEYXRhOmJlZm9yZVRleHQgbWFya2VkVGV4dDptYXJrZWRUZXh0IHNlbGVjdGVkVGV4dDpzZWxl
Y3RlZFRleHQgYWZ0ZXJUZXh0OmFmdGVyVGV4dCBzZWxlY3RlZFJhbmdlSW5NYXJrZWRUZXh0Ok5T
TWFrZVJhbmdlKGxvY2F0aW9uLCBsZW5ndGgpXSk7CiAgICAgICAgIH0pOwogICAgIH0KQEAgLTIw
NTcsNyArMjA1Nyw3IEBAIC0gKHZvaWQpYWNjZXNzb3J5VGFiOihCT09MKWlzTmV4dAogCiAgICAg
X2RpZEFjY2Vzc29yeVRhYkluaXRpYXRlRm9jdXMgPSBZRVM7IC8vIFdpbGwgYmUgY2xlYXJlZCBp
biBlaXRoZXIgLV9kaXNwbGF5Rm9ybU5vZGVJbnB1dFZpZXcgb3IgLWNsZWFudXBJbnRlcmFjdGlv
bi4KICAgICBbc2VsZiBiZWdpblNlbGVjdGlvbkNoYW5nZV07Ci0gICAgX3BhZ2UtPmZvY3VzTmV4
dEFzc2lzdGVkTm9kZShpc05leHQsIFtzZWxmXShDYWxsYmFja0Jhc2U6OkVycm9yKSB7CisgICAg
X3BhZ2UtPmZvY3VzTmV4dEFzc2lzdGVkTm9kZShpc05leHQsIFtzZWxmXShXZWJLaXQ6OkNhbGxi
YWNrQmFzZTo6RXJyb3IpIHsKICAgICAgICAgW3NlbGYgZW5kU2VsZWN0aW9uQ2hhbmdlXTsKICAg
ICAgICAgW3NlbGYgcmVsb2FkSW5wdXRWaWV3c107CiAgICAgfSk7CkBAIC0yNTQ0LDcgKzI1NDQs
NyBAQCAtIChCT09MKV9pbnRlcnByZXRLZXlFdmVudDooV2ViSU9TRXZlbnQgCiAtICh2b2lkKWV4
ZWN1dGVFZGl0Q29tbWFuZFdpdGhDYWxsYmFjazooTlNTdHJpbmcgKiljb21tYW5kTmFtZQogewog
ICAgIFtzZWxmIGJlZ2luU2VsZWN0aW9uQ2hhbmdlXTsKLSAgICBfcGFnZS0+ZXhlY3V0ZUVkaXRD
b21tYW5kKGNvbW1hbmROYW1lLCBbc2VsZl0oQ2FsbGJhY2tCYXNlOjpFcnJvcikgeworICAgIF9w
YWdlLT5leGVjdXRlRWRpdENvbW1hbmQoY29tbWFuZE5hbWUsIFtzZWxmXShXZWJLaXQ6OkNhbGxi
YWNrQmFzZTo6RXJyb3IpIHsKICAgICAgICAgW3NlbGYgZW5kU2VsZWN0aW9uQ2hhbmdlXTsKICAg
ICB9KTsKIH0KSW5kZXg6IFNvdXJjZS9XZWJLaXQyL1VJUHJvY2Vzcy9tYWMvV0tGdWxsU2NyZWVu
V2luZG93Q29udHJvbGxlci5tbQo9PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09Ci0tLSBTb3VyY2UvV2ViS2l0Mi9VSVByb2Nl
c3MvbWFjL1dLRnVsbFNjcmVlbldpbmRvd0NvbnRyb2xsZXIubW0JKHJldmlzaW9uIDE4Mjc5NSkK
KysrIFNvdXJjZS9XZWJLaXQyL1VJUHJvY2Vzcy9tYWMvV0tGdWxsU2NyZWVuV2luZG93Q29udHJv
bGxlci5tbQkod29ya2luZyBjb3B5KQpAQCAtMTI1LDcgKzEyNSw3IEBAIC0gKHZvaWQpZGVhbGxv
YwogICAgIFtbTlNOb3RpZmljYXRpb25DZW50ZXIgZGVmYXVsdENlbnRlcl0gcmVtb3ZlT2JzZXJ2
ZXI6c2VsZl07CiAKICAgICBpZiAoX3JlcGFpbnRDYWxsYmFjaykgewotICAgICAgICBfcmVwYWlu
dENhbGxiYWNrLT5pbnZhbGlkYXRlKENhbGxiYWNrQmFzZTo6RXJyb3I6Ok93bmVyV2FzSW52YWxp
ZGF0ZWQpOworICAgICAgICBfcmVwYWludENhbGxiYWNrLT5pbnZhbGlkYXRlKFdlYktpdDo6Q2Fs
bGJhY2tCYXNlOjpFcnJvcjo6T3duZXJXYXNJbnZhbGlkYXRlZCk7CiAgICAgICAgIC8vIGludmFs
aWRhdGUoKSBjYWxscyBjb21wbGV0ZUZpbmlzaEV4aXRGdWxsU2NyZWVuQW5pbWF0aW9uQWZ0ZXJS
ZXBhaW50LCB3aGljaAogICAgICAgICAvLyBjbGVhcnMgX3JlcGFpbnRDYWxsYmFjay4KICAgICAg
ICAgQVNTRVJUKCFfcmVwYWludENhbGxiYWNrKTsKQEAgLTM5MywxMiArMzkzLDEyIEBAIC0gKHZv
aWQpZmluaXNoZWRFeGl0RnVsbFNjcmVlbkFuaW1hdGlvbjoKICAgICBbc2VsZiBfbWFuYWdlcl0t
PnJlc3RvcmVTY3JvbGxQb3NpdGlvbigpOwogCiAgICAgaWYgKF9yZXBhaW50Q2FsbGJhY2spIHsK
LSAgICAgICAgX3JlcGFpbnRDYWxsYmFjay0+aW52YWxpZGF0ZShDYWxsYmFja0Jhc2U6OkVycm9y
OjpPd25lcldhc0ludmFsaWRhdGVkKTsKKyAgICAgICAgX3JlcGFpbnRDYWxsYmFjay0+aW52YWxp
ZGF0ZShXZWJLaXQ6OkNhbGxiYWNrQmFzZTo6RXJyb3I6Ok93bmVyV2FzSW52YWxpZGF0ZWQpOwog
ICAgICAgICAvLyBpbnZhbGlkYXRlKCkgY2FsbHMgY29tcGxldGVGaW5pc2hFeGl0RnVsbFNjcmVl
bkFuaW1hdGlvbkFmdGVyUmVwYWludCwgd2hpY2gKICAgICAgICAgLy8gY2xlYXJzIF9yZXBhaW50
Q2FsbGJhY2suCiAgICAgICAgIEFTU0VSVCghX3JlcGFpbnRDYWxsYmFjayk7CiAgICAgfQotICAg
IF9yZXBhaW50Q2FsbGJhY2sgPSBWb2lkQ2FsbGJhY2s6OmNyZWF0ZShbc2VsZl0oQ2FsbGJhY2tC
YXNlOjpFcnJvcikgeworICAgIF9yZXBhaW50Q2FsbGJhY2sgPSBWb2lkQ2FsbGJhY2s6OmNyZWF0
ZShbc2VsZl0oV2ViS2l0OjpDYWxsYmFja0Jhc2U6OkVycm9yKSB7CiAgICAgICAgIFtzZWxmIGNv
bXBsZXRlRmluaXNoRXhpdEZ1bGxTY3JlZW5BbmltYXRpb25BZnRlclJlcGFpbnRdOwogICAgIH0p
OwogICAgIFtzZWxmIF9wYWdlXS0+Zm9yY2VSZXBhaW50KF9yZXBhaW50Q2FsbGJhY2spOwpJbmRl
eDogU291cmNlL1dlYktpdDIvVUlQcm9jZXNzL21hYy9XS1ByaW50aW5nVmlldy5tbQo9PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09Ci0tLSBTb3VyY2UvV2ViS2l0Mi9VSVByb2Nlc3MvbWFjL1dLUHJpbnRpbmdWaWV3Lm1tCShy
ZXZpc2lvbiAxODI3OTUpCisrKyBTb3VyY2UvV2ViS2l0Mi9VSVByb2Nlc3MvbWFjL1dLUHJpbnRp
bmdWaWV3Lm1tCSh3b3JraW5nIGNvcHkpCkBAIC0yNjUsNyArMjY1LDcgQEAgLSAodm9pZClfcHJl
cGFyZVBERkRhdGFGb3JQcmludGluZ09uU2VjbwogICAgIF93ZWJGcmFtZS0+cGFnZSgpLT5iZWdp
blByaW50aW5nKF93ZWJGcmFtZS5nZXQoKSwgcHJpbnRJbmZvKTsKIAogICAgIElQQ0NhbGxiYWNr
Q29udGV4dCogY29udGV4dCA9IG5ldyBJUENDYWxsYmFja0NvbnRleHQ7Ci0gICAgUmVmUHRyPERh
dGFDYWxsYmFjaz4gY2FsbGJhY2sgPSBEYXRhQ2FsbGJhY2s6OmNyZWF0ZShbY29udGV4dF0oQVBJ
OjpEYXRhKiBkYXRhLCBDYWxsYmFja0Jhc2U6OkVycm9yKSB7CisgICAgUmVmUHRyPERhdGFDYWxs
YmFjaz4gY2FsbGJhY2sgPSBEYXRhQ2FsbGJhY2s6OmNyZWF0ZShbY29udGV4dF0oQVBJOjpEYXRh
KiBkYXRhLCBXZWJLaXQ6OkNhbGxiYWNrQmFzZTo6RXJyb3IpIHsKICAgICAgICAgQVNTRVJUKFJ1
bkxvb3A6OmlzTWFpbigpKTsKIAogICAgICAgICBzdGQ6OnVuaXF1ZV9wdHI8SVBDQ2FsbGJhY2tD
b250ZXh0PiBjb250ZXh0RGVsZXRlcihjb250ZXh0KTsKQEAgLTM0MCw3ICszNDAsNyBAQCAtIChC
T09MKV9hc2tQYWdlVG9Db21wdXRlUGFnZVJlY3RzCiAgICAgQVNTRVJUKCFfZXhwZWN0ZWRDb21w
dXRlZFBhZ2VzQ2FsbGJhY2spOwogCiAgICAgSVBDQ2FsbGJhY2tDb250ZXh0KiBjb250ZXh0ID0g
bmV3IElQQ0NhbGxiYWNrQ29udGV4dDsKLSAgICBSZWZQdHI8Q29tcHV0ZWRQYWdlc0NhbGxiYWNr
PiBjYWxsYmFjayA9IENvbXB1dGVkUGFnZXNDYWxsYmFjazo6Y3JlYXRlKFtjb250ZXh0XShjb25z
dCBWZWN0b3I8V2ViQ29yZTo6SW50UmVjdD4mIHBhZ2VSZWN0cywgZG91YmxlIHRvdGFsU2NhbGVG
YWN0b3JGb3JQcmludGluZywgQ2FsbGJhY2tCYXNlOjpFcnJvcikgeworICAgIFJlZlB0cjxDb21w
dXRlZFBhZ2VzQ2FsbGJhY2s+IGNhbGxiYWNrID0gQ29tcHV0ZWRQYWdlc0NhbGxiYWNrOjpjcmVh
dGUoW2NvbnRleHRdKGNvbnN0IFZlY3RvcjxXZWJDb3JlOjpJbnRSZWN0PiYgcGFnZVJlY3RzLCBk
b3VibGUgdG90YWxTY2FsZUZhY3RvckZvclByaW50aW5nLCBXZWJLaXQ6OkNhbGxiYWNrQmFzZTo6
RXJyb3IpIHsKICAgICAgICAgc3RkOjp1bmlxdWVfcHRyPElQQ0NhbGxiYWNrQ29udGV4dD4gY29u
dGV4dERlbGV0ZXIoY29udGV4dCk7CiAgICAgICAgIHBhZ2VEaWRDb21wdXRlUGFnZVJlY3RzKHBh
Z2VSZWN0cywgdG90YWxTY2FsZUZhY3RvckZvclByaW50aW5nLCBjb250ZXh0KTsKICAgICB9KTsK
QEAgLTQ5Miw3ICs0OTIsNyBAQCAtICh2b2lkKV9kcmF3UHJldmlldzooTlNSZWN0KW5zUmVjdAog
ICAgICAgICAgICAgICAgIF93ZWJGcmFtZS0+cGFnZSgpLT5iZWdpblByaW50aW5nKF93ZWJGcmFt
ZS5nZXQoKSwgUHJpbnRJbmZvKFtfcHJpbnRPcGVyYXRpb24gcHJpbnRJbmZvXSkpOwogCiAgICAg
ICAgICAgICAgICAgSVBDQ2FsbGJhY2tDb250ZXh0KiBjb250ZXh0ID0gbmV3IElQQ0NhbGxiYWNr
Q29udGV4dDsKLSAgICAgICAgICAgICAgICBSZWZQdHI8SW1hZ2VDYWxsYmFjaz4gY2FsbGJhY2sg
PSBJbWFnZUNhbGxiYWNrOjpjcmVhdGUoW2NvbnRleHRdKGNvbnN0IFNoYXJlYWJsZUJpdG1hcDo6
SGFuZGxlJiBpbWFnZUhhbmRsZSwgQ2FsbGJhY2tCYXNlOjpFcnJvcikgeworICAgICAgICAgICAg
ICAgIFJlZlB0cjxJbWFnZUNhbGxiYWNrPiBjYWxsYmFjayA9IEltYWdlQ2FsbGJhY2s6OmNyZWF0
ZShbY29udGV4dF0oY29uc3QgU2hhcmVhYmxlQml0bWFwOjpIYW5kbGUmIGltYWdlSGFuZGxlLCBX
ZWJLaXQ6OkNhbGxiYWNrQmFzZTo6RXJyb3IpIHsKICAgICAgICAgICAgICAgICAgICAgc3RkOjp1
bmlxdWVfcHRyPElQQ0NhbGxiYWNrQ29udGV4dD4gY29udGV4dERlbGV0ZXIoY29udGV4dCk7CiAg
ICAgICAgICAgICAgICAgICAgIHBhZ2VEaWREcmF3VG9JbWFnZShpbWFnZUhhbmRsZSwgY29udGV4
dCk7CiAgICAgICAgICAgICAgICAgfSk7CkluZGV4OiBTb3VyY2UvV2ViS2l0Mi9XZWJQcm9jZXNz
L1BsdWdpbnMvUGx1Z2luVmlldy5jcHAKPT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PQotLS0gU291cmNlL1dlYktpdDIvV2Vi
UHJvY2Vzcy9QbHVnaW5zL1BsdWdpblZpZXcuY3BwCShyZXZpc2lvbiAxODI3OTUpCisrKyBTb3Vy
Y2UvV2ViS2l0Mi9XZWJQcm9jZXNzL1BsdWdpbnMvUGx1Z2luVmlldy5jcHAJKHdvcmtpbmcgY29w
eSkKQEAgLTE0NTYsNyArMTQ1Niw3IEBAIHZvaWQgUGx1Z2luVmlldzo6c2V0UGx1Z2luSXNQbGF5
aW5nQXVkaW8KICAgICAgICAgcmV0dXJuOwogCiAgICAgbV9wbHVnaW5Jc1BsYXlpbmdBdWRpbyA9
IHBsdWdpbklzUGxheWluZ0F1ZGlvOwotICAgIG1fcGx1Z2luRWxlbWVudC0+ZG9jdW1lbnQoKS51
cGRhdGVJc1BsYXlpbmdBdWRpbygpOworICAgIG1fcGx1Z2luRWxlbWVudC0+ZG9jdW1lbnQoKS51
cGRhdGVJc1BsYXlpbmdNZWRpYSgpOwogfQogCiBib29sIFBsdWdpblZpZXc6OmlzTXV0ZWQoKSBj
b25zdApJbmRleDogU291cmNlL1dlYktpdDIvV2ViUHJvY2Vzcy9XZWJDb3JlU3VwcG9ydC9XZWJD
aHJvbWVDbGllbnQuY3BwCj09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT0KLS0tIFNvdXJjZS9XZWJLaXQyL1dlYlByb2Nlc3Mv
V2ViQ29yZVN1cHBvcnQvV2ViQ2hyb21lQ2xpZW50LmNwcAkocmV2aXNpb24gMTgyNzk1KQorKysg
U291cmNlL1dlYktpdDIvV2ViUHJvY2Vzcy9XZWJDb3JlU3VwcG9ydC9XZWJDaHJvbWVDbGllbnQu
Y3BwCSh3b3JraW5nIGNvcHkpCkBAIC0xMDUwLDkgKzEwNTAsOSBAQCBib29sIFdlYkNocm9tZUNs
aWVudDo6c2hvdWxkVXNlVGlsZWRCYWNrCiAgICAgcmV0dXJuIG1fcGFnZS0+ZHJhd2luZ0FyZWEo
KS0+c2hvdWxkVXNlVGlsZWRCYWNraW5nRm9yRnJhbWVWaWV3KGZyYW1lVmlldyk7CiB9CiAKLXZv
aWQgV2ViQ2hyb21lQ2xpZW50Ojppc1BsYXlpbmdBdWRpb0RpZENoYW5nZShib29sIG5ld0lzUGxh
eWluZ0F1ZGlvKQordm9pZCBXZWJDaHJvbWVDbGllbnQ6OmlzUGxheWluZ01lZGlhRGlkQ2hhbmdl
KE1lZGlhU3RhdGVGbGFncyBzdGF0ZSkKIHsKLSAgICBtX3BhZ2UtPnNlbmQoTWVzc2FnZXM6Oldl
YlBhZ2VQcm94eTo6SXNQbGF5aW5nQXVkaW9EaWRDaGFuZ2UobmV3SXNQbGF5aW5nQXVkaW8pKTsK
KyAgICBtX3BhZ2UtPnNlbmQoTWVzc2FnZXM6OldlYlBhZ2VQcm94eTo6SXNQbGF5aW5nTWVkaWFE
aWRDaGFuZ2Uoc3RhdGUpKTsKIH0KIAogdm9pZCBXZWJDaHJvbWVDbGllbnQ6OnNldFBhZ2VBY3Rp
dml0eVN0YXRlKFBhZ2VBY3Rpdml0eVN0YXRlOjpGbGFncyBhY3Rpdml0eVN0YXRlKQpJbmRleDog
U291cmNlL1dlYktpdDIvV2ViUHJvY2Vzcy9XZWJDb3JlU3VwcG9ydC9XZWJDaHJvbWVDbGllbnQu
aAo9PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09Ci0tLSBTb3VyY2UvV2ViS2l0Mi9XZWJQcm9jZXNzL1dlYkNvcmVTdXBwb3J0
L1dlYkNocm9tZUNsaWVudC5oCShyZXZpc2lvbiAxODI3OTUpCisrKyBTb3VyY2UvV2ViS2l0Mi9X
ZWJQcm9jZXNzL1dlYkNvcmVTdXBwb3J0L1dlYkNocm9tZUNsaWVudC5oCSh3b3JraW5nIGNvcHkp
CkBAIC0yOTIsNyArMjkyLDcgQEAgcHJpdmF0ZToKIAogICAgIHZpcnR1YWwgYm9vbCBzaG91bGRV
c2VUaWxlZEJhY2tpbmdGb3JGcmFtZVZpZXcoY29uc3QgV2ViQ29yZTo6RnJhbWVWaWV3KikgY29u
c3Qgb3ZlcnJpZGU7CiAKLSAgICB2aXJ0dWFsIHZvaWQgaXNQbGF5aW5nQXVkaW9EaWRDaGFuZ2Uo
Ym9vbCkgb3ZlcnJpZGU7CisgICAgdmlydHVhbCB2b2lkIGlzUGxheWluZ01lZGlhRGlkQ2hhbmdl
KE1lZGlhU3RhdGVGbGFncykgb3ZlcnJpZGU7CiAgICAgdmlydHVhbCB2b2lkIHNldFBhZ2VBY3Rp
dml0eVN0YXRlKFdlYkNvcmU6OlBhZ2VBY3Rpdml0eVN0YXRlOjpGbGFncykgb3ZlcnJpZGU7CiAK
ICNpZiBFTkFCTEUoU1VCVExFX0NSWVBUTykK
</data>

          </attachment>
      

    </bug>

</bugzilla>