<?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>4091</bug_id>
          
          <creation_ts>2005-07-20 22:06:33 -0700</creation_ts>
          <short_desc>PDF views should keep a separate scaling factor from shared text scaling factor</short_desc>
          <delta_ts>2006-09-14 15:47:23 -0700</delta_ts>
          <reporter_accessible>1</reporter_accessible>
          <cclist_accessible>1</cclist_accessible>
          <classification_id>1</classification_id>
          <classification>Unclassified</classification>
          <product>WebKit</product>
          <component>New Bugs</component>
          <version>420+</version>
          <rep_platform>Mac</rep_platform>
          <op_sys>OS X 10.4</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="Trey Matteson">trey</reporter>
          <assigned_to name="Trey Matteson">trey</assigned_to>
          <cc>sullivan</cc>
          

      

      

      

          <comment_sort_order>oldest_to_newest</comment_sort_order>  
          <long_desc isprivate="0" >
    <commentid>14987</commentid>
    <comment_count>0</comment_count>
    <who name="Trey Matteson">trey</who>
    <bug_when>2005-07-20 22:06:33 -0700</bug_when>
    <thetext>As of the to 3766909 on 2005-06-14, WebPDFView implements the _web_WebDocumentTextSizing 
protocol, which brought the benefit that cmd--and cmd-+ would work on PDF docs.  In addition, the 
current zoom factor for the window became shared by PDF views.  I think this latter aspect turns out to 
be a lose for a few reasons:

1) PDF files tend to have smaller text than most web pages.  I believe this is an artifact of them being 
pre-laid out in pages for printing on paper.  Examples include the typical TEX academic research paper 
format (http://www.ctan.org/tex-archive/info/lshort/english/lshort.pdf).  The practical result is that as 
the user moves between HTML and PDF content, no one zoom factor works for both, and either the 
HTML looks too big or the PDF looks too small.

2) The PDF autoscale feature does not fit well with the Safari model.  Example:  Open a pdf doc.  Resize 
the window so that one page fits at a time.  Zoom in three times.  Choose autoscale.  The zoom factor 
should be similar to what you started with.  Zoom out.  The user expects to now be looking at a 
relatively &quot;more distant&quot; image, but instead the image is further magnified.  The reason is that the 
change to autosize does not update the zoom factor stored for the whole window.

2&apos;) If we fixed this by updating the zoom factor in the window when you switched to autosize mode, we 
have a new problem.  We&apos;ve decided that it would be nice for the various PDF view settings to be sticky.  
Let&apos;s say the user prefers autoscaling to be on.  Now everytime a new PDF doc with a different size is 
opened, the window&apos;s zoom factor changes, affecting HTML pages in erratic ways.  Even just resizing an 
autosize window affects the scale of subsequent HTML docs.

My proposal is that the scale factor for PDFs be kept separate from the window&apos;s scale factor.  I would 
also have the WebPDFView implement the action messages makeTextSmaller: and makeTextLarger: to 
be the same as ZoomIn and ZoomOut in the context menu.  It is a bit of a fudge to have these slightly 
bent semantics of these commands, but I think few users would think of it enough to realize the 
inconsistency of it, compared to the faults raised above.</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>14988</commentid>
    <comment_count>1</comment_count>
      <attachid>3040</attachid>
    <who name="Trey Matteson">trey</who>
    <bug_when>2005-07-20 22:48:48 -0700</bug_when>
    <thetext>Created attachment 3040
proposed patch - also fixed 4015

This worked out so well I am attaching a patch.  I like these semantics better,
but I am also relieved that all the weird PDFKit crashing and midbehavior I was
getting when the textScale mechanism was poking the PDFKit scale factors has
gone away.</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>14997</commentid>
    <comment_count>2</comment_count>
      <attachid>3040</attachid>
    <who name="John Sullivan">sullivan</who>
    <bug_when>2005-07-21 09:43:28 -0700</bug_when>
    <thetext>Comment on attachment 3040
proposed patch - also fixed 4015

You convinced me that trying to use zoom factor and text scaling
interchangeably has UI problems that are worse than the UI problems of reusing
the Make Text Smaller/Larger menu items in a related but non-interdependent
way. So I think this approach is great, and the code looks really good too. I
just have a few comments and questions, so I&apos;m marking it review- for this
round.


Typo in ChangeLog: &quot;Sace scrollState&quot;


+		 // Parent is the clipview of the DynamicScrollView the
WebFrame installs
+		 point = [parent bounds].origin;

I&apos;d add an ASSERT here to match the comment. I realize that this code didn&apos;t
change, but as the surrounding code gets more complex I think the ASSERT is a
useful safety measure.

It looks like the WebHistoryItem private data structure now has a scrollPoint
item and a viewState item that contains a scrollPoint item. Can the standalone
scrollPoint item be eliminated, and the viewState always used?

What&apos;s the story with removing these lines:

-
-@interface WebHTMLView (TextSizing) &lt;_web_WebDocumentTextSizing&gt;
-@end
-

We&apos;re not very consistent with our naming of internal-to-webkit protocols, but
I think that _WebDocumentViewState should be _web_WebDocumentViewState to match
_web_WebDocumentTextSizing.


With this patch, when are &quot;Make Text Larger/Smaller&quot; dimmed in the menu when
viewing a PDF flie?</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>15211</commentid>
    <comment_count>3</comment_count>
      <attachid>3092</attachid>
    <who name="Trey Matteson">trey</who>
    <bug_when>2005-07-26 14:01:10 -0700</bug_when>
    <thetext>Created attachment 3092
This is a good testing file

Here&apos;s a good testing file that has 4 frames with HTML, PDF, plain text and an
image.</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>15266</commentid>
    <comment_count>4</comment_count>
      <attachid>3115</attachid>
    <who name="Trey Matteson">trey</who>
    <bug_when>2005-07-27 12:13:32 -0700</bug_when>
    <thetext>Created attachment 3115
patch #2 - still also fixes 4015</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>15270</commentid>
    <comment_count>5</comment_count>
      <attachid>3117</attachid>
    <who name="Trey Matteson">trey</who>
    <bug_when>2005-07-27 13:47:06 -0700</bug_when>
    <thetext>Created attachment 3117
patch #3 - in response to comments just fixing typos, one method rename</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>15271</commentid>
    <comment_count>6</comment_count>
      <attachid>3117</attachid>
    <who name="John Sullivan">sullivan</who>
    <bug_when>2005-07-27 14:07:16 -0700</bug_when>
    <thetext>Comment on attachment 3117
patch #3 - in response to comments just fixing typos, one method rename

Thanks for the persistence on this. I&apos;ll commit this soon.</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>15275</commentid>
    <comment_count>7</comment_count>
    <who name="John Sullivan">sullivan</who>
    <bug_when>2005-07-27 14:55:49 -0700</bug_when>
    <thetext>Checked this in. Trey and I found a couple of loose ends that he will write up separately, but neither of 
them is a regression from the old behavior.</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>55525</commentid>
    <comment_count>8</comment_count>
    <who name="David Harrison">harrison</who>
    <bug_when>2006-09-14 15:47:23 -0700</bug_when>
    <thetext>This caused &lt;rdar://problem/4494340&gt; REGRESSION: Making the font size bigger/smaller in an HTML message doesn&apos;t affect the body until you reopen it</thetext>
  </long_desc>
      
          <attachment
              isobsolete="1"
              ispatch="1"
              isprivate="0"
          >
            <attachid>3040</attachid>
            <date>2005-07-20 22:48:48 -0700</date>
            <delta_ts>2005-07-27 12:13:32 -0700</delta_ts>
            <desc>proposed patch - also fixed 4015</desc>
            <filename>4015-4091.patch</filename>
            <type>text/plain</type>
            <size>20643</size>
            <attacher name="Trey Matteson">trey</attacher>
            
              <data encoding="base64">SW5kZXg6IENoYW5nZUxvZwo9PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09ClJDUyBmaWxlOiAvY3ZzL3Jvb3QvV2ViS2l0L0No
YW5nZUxvZyx2CnJldHJpZXZpbmcgcmV2aXNpb24gMS4zMjQzCmRpZmYgLXAgLXUgLXIxLjMyNDMg
Q2hhbmdlTG9nCi0tLSBDaGFuZ2VMb2cJMjAgSnVsIDIwMDUgMjI6NTU6MDEgLTAwMDAJMS4zMjQz
CisrKyBDaGFuZ2VMb2cJMjEgSnVsIDIwMDUgMDU6NDc6MTAgLTAwMDAKQEAgLTEsMyArMSw0MSBA
QAorMjAwNS0wNy0yMCAgVHJleSBNYXR0ZXNvbiAgPHRyZXlAdXNhLm5ldD4KKworICAgICAgICBS
ZXZpZXdlZCBieSBKb2huIFN1bGxpdmFuLgorCisgICAgICAgIEZpeGVkIGh0dHA6Ly9idWd6aWxs
YS5vcGVuZGFyd2luLm9yZy9zaG93X2J1Zy5jZ2k/aWQ9NDAxNQorICAgICAgICAgIFBERiB2aWV3
cyBzaG91bGQgcmVtZW1iZXIgdmlld2luZyBtb2RlLCBzY3JvbGwgcG9zaXRpb24gYWNyb3NzIGJh
Y2svZm9yd2FyZAorICAgICAgICBGaXhlZCBodHRwOi8vYnVnemlsbGEub3BlbmRhcndpbi5vcmcv
c2hvd19idWcuY2dpP2lkPTQwOTEKKyAgICAgICAgICBQREYgdmlld3Mgc2hvdWxkIGtlZXAgYSBz
ZXBhcmF0ZSBzY2FsaW5nIGZhY3RvciBmcm9tIHNoYXJlZCB0ZXh0IHNjYWxpbmcgZmFjdG9yCisK
KyAgICAgICAgKiBIaXN0b3J5LnN1YnByb2ovV2ViSGlzdG9yeUl0ZW0ubToKKyAgICAgICAgKC1b
V2ViSGlzdG9yeUl0ZW0gc2V0Vmlld1N0YXRlOl0pOiAgTmV3IG1ldGhvZHMgdG8gaG9sZCBQTGlz
dCBvZiBhcmJpdHJhcnkgV2ViVmlldyBzdGF0ZQorICAgICAgICAoLVtXZWJIaXN0b3J5SXRlbSB2
aWV3U3RhdGVdKToKKyAgICAgICAgKiBIaXN0b3J5LnN1YnByb2ovV2ViSGlzdG9yeUl0ZW1Qcml2
YXRlLmg6CisgICAgICAgICogV2ViVmlldy5zdWJwcm9qL1dlYkRvY3VtZW50SW50ZXJuYWwuaDoK
KyAgICAgICAgKiBXZWJWaWV3LnN1YnByb2ovV2ViRnJhbWUubToKKyAgICAgICAgKC1bV2ViRnJh
bWUgX2NyZWF0ZUl0ZW1UcmVlV2l0aFRhcmdldEZyYW1lOmNsaXBwZWRBdFRhcmdldDpdKTogIE5h
bWUgY2hhbmdlLgorICAgICAgICAoLVtXZWJGcmFtZSBfZGV0YWNoRnJvbVBhcmVudF0pOiAgRGl0
dG8KKyAgICAgICAgKC1bV2ViRnJhbWUgX3RyYW5zaXRpb25Ub0NvbW1pdHRlZDpdKTogIERpdHRv
CisgICAgICAgICgtW1dlYkZyYW1lIF9jaGVja0xvYWRDb21wbGV0ZUZvclRoaXNGcmFtZV0pOiAg
RGl0dG8KKyAgICAgICAgKC1bV2ViRnJhbWUgX2xvYWRJdGVtOndpdGhMb2FkVHlwZTpdKTogIERp
dHRvCisgICAgICAgICgtW1dlYkZyYW1lIF9yZWN1cnNpdmVHb1RvSXRlbTpmcm9tSXRlbTp3aXRo
TG9hZFR5cGU6XSk6ICBEaXR0bworICAgICAgICAoLVtXZWJGcmFtZSBfc2F2ZVZpZXdTdGF0ZVRv
SXRlbTpdKTogIERpdHRvCisgICAgICAgICgtW1dlYkZyYW1lIF9yZXN0b3JlVmlld1N0YXRlXSk6
ICBSZXN0b3JlIHNjcm9sbFN0YXRlIGFzIGJlZm9yZSwgYnV0IG5vdyBkbyB2aWV3U3RhdGUgdG9v
CisgICAgICAgICgtW1dlYkZyYW1lIF9zYXZlRG9jdW1lbnRBbmRTY3JvbGxTdGF0ZV0pOiAgU2Fj
ZSBzY3JvbGxTdGF0ZSBhcyBiZWZvcmUsIGFuZCBkbyB2aWV3U3RhdGUgdG9vCisgICAgICAgICgt
W1dlYkZyYW1lIF9zY3JvbGxUb1RvcDpdKTogIE51a2UgZGVhZCBjb2RlCisgICAgICAgICgtW1dl
YkZyYW1lIF9kaWRGaXJzdExheW91dF0pOiAgTmFtZSBjaGFuZ2UKKyAgICAgICAgKiBXZWJWaWV3
LnN1YnByb2ovV2ViSFRNTFZpZXcubToKKyAgICAgICAgKiBXZWJWaWV3LnN1YnByb2ovV2ViUERG
Vmlldy5oOgorICAgICAgICAqIFdlYlZpZXcuc3VicHJvai9XZWJQREZWaWV3Lm06CisgICAgICAg
ICgtW1dlYlBERlZpZXcgbWFrZVRleHRTbWFsbGVyOl0pOiAgSW1wbGVtZW50IGhlcmUgaW5zdGVh
ZCBvZiB0YWtpbmcgZ2VuZXJpYyBXZWJWaWV3IGltcGwKKyAgICAgICAgKC1bV2ViUERGVmlldyBt
YWtlVGV4dExhcmdlcjpdKTogIERpdHRvIC0gc2VlIDQwOTEgZm9yIHJlYXNvbnMKKyAgICAgICAg
KC1bV2ViUERGVmlldyBfbWVudUl0ZW1zRnJvbVBERktpdEZvckV2ZW50Ol0pOiAgRGl0dG8KKyAg
ICAgICAgKC1bV2ViUERGVmlldyBzZXREYXRhU291cmNlOl0pOiAgRGl0dG8gLSB3ZSBkbyBvdXIg
b3duIHpvb21pbmcgaW5zdGVhZCBvZiBpbnRlZ3JhdGluZyB3aXRoIHRleHRTY2FsaW5nCisgICAg
ICAgICgtW1dlYlBERlZpZXcgc2Nyb2xsUG9pbnRdKTogIERpZyB0aHJvdWdoIFBERktpdCB2aWV3
IHRyZWUgdG8gZ2V0IHJlYWwgc2Nyb2xsIHBvc2l0aW9uCisgICAgICAgICgtW1dlYlBERlZpZXcg
c2V0U2Nyb2xsUG9pbnQ6XSk6ICBEaXR0bworICAgICAgICAoLVtXZWJQREZWaWV3IHZpZXdTdGF0
ZV0pOiAgUmV0dXJuIGJ1bmRsZSBvZiB2aWV3aW5nIHBhcmFtcworICAgICAgICAoLVtXZWJQREZW
aWV3IHNldFZpZXdTdGF0ZTpdKTogIFJlc3RvcmUgYnVuZGxlIG9mIHZpZXdpbmcgcGFyYW1zCisK
IDIwMDUtMDctMjAgIEpvaG4gU3VsbGl2YW4gIDxzdWxsaXZhbkBhcHBsZS5jb20+CiAKICAgICAg
ICAgUmV2aWV3ZWQgYnkgVmlja2kgTXVybGV5LgpJbmRleDogLi9IaXN0b3J5LnN1YnByb2ovV2Vi
SGlzdG9yeUl0ZW0ubQo9PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09ClJDUyBmaWxlOiAvY3ZzL3Jvb3QvV2ViS2l0L0hpc3Rv
cnkuc3VicHJvai9XZWJIaXN0b3J5SXRlbS5tLHYKcmV0cmlldmluZyByZXZpc2lvbiAxLjkxCmRp
ZmYgLXAgLXUgLXIxLjkxIC4vSGlzdG9yeS5zdWJwcm9qL1dlYkhpc3RvcnlJdGVtLm0KLS0tIC4v
SGlzdG9yeS5zdWJwcm9qL1dlYkhpc3RvcnlJdGVtLm0JMTQgSnVsIDIwMDUgMDI6NDM6NTEgLTAw
MDAJMS45MQorKysgLi9IaXN0b3J5LnN1YnByb2ovV2ViSGlzdG9yeUl0ZW0ubQkyMSBKdWwgMjAw
NSAwNTo0NzoxMiAtMDAwMApAQCAtNzksNiArNzksNyBAQCBOU1N0cmluZyAqV2ViSGlzdG9yeUl0
ZW1DaGFuZ2VkTm90aWZpY2F0CiAgICAgTlNTdHJpbmcgKmZvcm1SZWZlcnJlcjsKICAgICAvLyBp
bmZvIHVzZWQgdG8gc3VwcG9ydCBSU1MgZmVlZHMKICAgICBOU1N0cmluZyAqUlNTRmVlZFJlZmVy
cmVyOworICAgIGlkIHZpZXdTdGF0ZTsKIH0KIEBlbmQKIApAQCAtNDMwLDYgKzQzMSwxOCBAQCBO
U1N0cmluZyAqV2ViSGlzdG9yeUl0ZW1DaGFuZ2VkTm90aWZpY2F0CiAgICAgX3ByaXZhdGUtPnNj
cm9sbFBvaW50ID0gc2Nyb2xsUG9pbnQ7CiB9CiAKKy0gKHZvaWQpc2V0Vmlld1N0YXRlOihpZClz
dGF0ZVBMaXN0OworeworICAgIGlkIGNvcHkgPSBbc3RhdGVQTGlzdCBjb3B5XTsKKyAgICBbX3By
aXZhdGUtPnZpZXdTdGF0ZSByZWxlYXNlXTsKKyAgICBfcHJpdmF0ZS0+dmlld1N0YXRlID0gY29w
eTsKK30KKworLSAoaWQpdmlld1N0YXRlCit7CisgICAgcmV0dXJuIF9wcml2YXRlLT52aWV3U3Rh
dGU7Cit9CisKIC0gKEJPT0wpaXNUYXJnZXRJdGVtCiB7CiAgICAgcmV0dXJuIF9wcml2YXRlLT5p
c1RhcmdldEl0ZW07CkluZGV4OiAuL0hpc3Rvcnkuc3VicHJvai9XZWJIaXN0b3J5SXRlbVByaXZh
dGUuaAo9PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09ClJDUyBmaWxlOiAvY3ZzL3Jvb3QvV2ViS2l0L0hpc3Rvcnkuc3VicHJv
ai9XZWJIaXN0b3J5SXRlbVByaXZhdGUuaCx2CnJldHJpZXZpbmcgcmV2aXNpb24gMS4xNApkaWZm
IC1wIC11IC1yMS4xNCAuL0hpc3Rvcnkuc3VicHJvai9XZWJIaXN0b3J5SXRlbVByaXZhdGUuaAot
LS0gLi9IaXN0b3J5LnN1YnByb2ovV2ViSGlzdG9yeUl0ZW1Qcml2YXRlLmgJNSBKdW4gMjAwNSAx
Nzo1NDoyMyAtMDAwMAkxLjE0CisrKyAuL0hpc3Rvcnkuc3VicHJvai9XZWJIaXN0b3J5SXRlbVBy
aXZhdGUuaAkyMSBKdWwgMjAwNSAwNTo0NzoxMyAtMDAwMApAQCAtNTcsNiArNTcsNyBAQAogLSAo
TlNTdHJpbmcgKilmb3JtUmVmZXJyZXI7CiAtIChOU1N0cmluZyAqKVJTU0ZlZWRSZWZlcnJlcjsK
IC0gKGludCl2aXNpdENvdW50OworLSAoaWQpdmlld1N0YXRlOwogCiAtICh2b2lkKV9tZXJnZUF1
dG9Db21wbGV0ZUhpbnRzOihXZWJIaXN0b3J5SXRlbSAqKW90aGVySXRlbTsKIApAQCAtNzIsNiAr
NzMsNyBAQAogLSAodm9pZClfc2V0Rm9ybUluZm9Gcm9tUmVxdWVzdDooTlNVUkxSZXF1ZXN0ICop
cmVxdWVzdDsKIC0gKHZvaWQpc2V0UlNTRmVlZFJlZmVycmVyOihOU1N0cmluZyAqKXJlZmVycmVy
OwogLSAodm9pZClzZXRWaXNpdENvdW50OihpbnQpY291bnQ7CistICh2b2lkKXNldFZpZXdTdGF0
ZTooaWQpc3RhdGVQTGlzdDsKIAogLSAoTlNBcnJheSAqKWNoaWxkcmVuOwogLSAodm9pZClhZGRD
aGlsZEl0ZW06KFdlYkhpc3RvcnlJdGVtICopaXRlbTsKSW5kZXg6IC4vV2ViVmlldy5zdWJwcm9q
L1dlYkRvY3VtZW50SW50ZXJuYWwuaAo9PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09ClJDUyBmaWxlOiAvY3ZzL3Jvb3QvV2Vi
S2l0L1dlYlZpZXcuc3VicHJvai9XZWJEb2N1bWVudEludGVybmFsLmgsdgpyZXRyaWV2aW5nIHJl
dmlzaW9uIDEuOQpkaWZmIC1wIC11IC1yMS45IC4vV2ViVmlldy5zdWJwcm9qL1dlYkRvY3VtZW50
SW50ZXJuYWwuaAotLS0gLi9XZWJWaWV3LnN1YnByb2ovV2ViRG9jdW1lbnRJbnRlcm5hbC5oCTE4
IEp1bCAyMDA1IDE4OjAyOjIxIC0wMDAwCTEuOQorKysgLi9XZWJWaWV3LnN1YnByb2ovV2ViRG9j
dW1lbnRJbnRlcm5hbC5oCTIxIEp1bCAyMDA1IDA1OjQ3OjIwIC0wMDAwCkBAIC01MCwzICs1MCwx
MSBAQAogQHByb3RvY29sIFdlYkRvY3VtZW50RWxlbWVudCA8TlNPYmplY3Q+CiAtIChOU0RpY3Rp
b25hcnkgKillbGVtZW50QXRQb2ludDooTlNQb2ludClwb2ludDsKIEBlbmQKKworLyogVXNlZCB0
byBzYXZlIGFuZCByZXN0b3JlIHN0YXRlIGluIHRoZSB2aWV3LCB0eXBpY2FsbHkgd2hlbiBnb2lu
ZyBiYWNrL2ZvcndhcmQgKi8KK0Bwcm90b2NvbCBfV2ViRG9jdW1lbnRWaWV3U3RhdGUgPE5TT2Jq
ZWN0PgorLSAoTlNQb2ludClzY3JvbGxQb2ludDsKKy0gKHZvaWQpc2V0U2Nyb2xsUG9pbnQ6KE5T
UG9pbnQpcDsKKy0gKGlkKXZpZXdTdGF0ZTsKKy0gKHZvaWQpc2V0Vmlld1N0YXRlOihpZClzdGF0
ZVBMaXN0OworQGVuZApJbmRleDogLi9XZWJWaWV3LnN1YnByb2ovV2ViRnJhbWUubQo9PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09ClJDUyBmaWxlOiAvY3ZzL3Jvb3QvV2ViS2l0L1dlYlZpZXcuc3VicHJvai9XZWJGcmFtZS5t
LHYKcmV0cmlldmluZyByZXZpc2lvbiAxLjI0MwpkaWZmIC1wIC11IC1yMS4yNDMgLi9XZWJWaWV3
LnN1YnByb2ovV2ViRnJhbWUubQotLS0gLi9XZWJWaWV3LnN1YnByb2ovV2ViRnJhbWUubQkxOSBK
dWwgMjAwNSAxNzoxMTo1NiAtMDAwMAkxLjI0MworKysgLi9XZWJWaWV3LnN1YnByb2ovV2ViRnJh
bWUubQkyMSBKdWwgMjAwNSAwNTo0NzoyMyAtMDAwMApAQCAtMTc2LDggKzE3Niw4IEBAIE5TU3Ry
aW5nICpXZWJQYWdlQ2FjaGVEb2N1bWVudFZpZXdLZXkgPSAKIC0gKHZvaWQpX2xvYWRIVE1MU3Ry
aW5nOihOU1N0cmluZyAqKXN0cmluZyBiYXNlVVJMOihOU1VSTCAqKVVSTCB1bnJlYWNoYWJsZVVS
TDooTlNVUkwgKil1bnJlYWNoYWJsZVVSTDsKIC0gKE5TRGljdGlvbmFyeSAqKV9hY3Rpb25JbmZv
cm1hdGlvbkZvckxvYWRUeXBlOihXZWJGcmFtZUxvYWRUeXBlKWxvYWRUeXBlIGlzRm9ybVN1Ym1p
c3Npb246KEJPT0wpaXNGb3JtU3VibWlzc2lvbiBldmVudDooTlNFdmVudCAqKWV2ZW50IG9yaWdp
bmFsVVJMOihOU1VSTCAqKVVSTDsKIAotLSAodm9pZClfc2F2ZVNjcm9sbFBvc2l0aW9uVG9JdGVt
OihXZWJIaXN0b3J5SXRlbSAqKWl0ZW07Ci0tICh2b2lkKV9yZXN0b3JlU2Nyb2xsUG9zaXRpb247
CistICh2b2lkKV9zYXZlVmlld1N0YXRlVG9JdGVtOihXZWJIaXN0b3J5SXRlbSAqKWl0ZW07Cist
ICh2b2lkKV9yZXN0b3JlVmlld1N0YXRlOwogCiAtIChXZWJIaXN0b3J5SXRlbSAqKV9jcmVhdGVJ
dGVtOiAoQk9PTCl1c2VPcmlnaW5hbDsKIC0gKFdlYkhpc3RvcnlJdGVtICopX2NyZWF0ZUl0ZW1U
cmVlV2l0aFRhcmdldEZyYW1lOihXZWJGcmFtZSAqKXRhcmdldEZyYW1lIGNsaXBwZWRBdFRhcmdl
dDooQk9PTClkb0NsaXA7CkBAIC00NDQsNyArNDQ0LDcgQEAgTlNTdHJpbmcgKldlYlBhZ2VDYWNo
ZURvY3VtZW50Vmlld0tleSA9IAogewogICAgIFdlYkhpc3RvcnlJdGVtICpiZkl0ZW0gPSBbc2Vs
ZiBfY3JlYXRlSXRlbTogW3NlbGYgcGFyZW50RnJhbWVdP1lFUzpOT107CiAKLSAgICBbc2VsZiBf
c2F2ZVNjcm9sbFBvc2l0aW9uVG9JdGVtOltfcHJpdmF0ZSBwcmV2aW91c0l0ZW1dXTsKKyAgICBb
c2VsZiBfc2F2ZVZpZXdTdGF0ZVRvSXRlbTpbX3ByaXZhdGUgcHJldmlvdXNJdGVtXV07CiAgICAg
aWYgKCEoZG9DbGlwICYmIHNlbGYgPT0gdGFyZ2V0RnJhbWUpKSB7CiAgICAgICAgIC8vIHNhdmUg
ZnJhbWUgc3RhdGUgZm9yIGl0ZW1zIHRoYXQgYXJlbid0IGxvYWRpbmcgKGtodG1sIGRvZXNuJ3Qg
c2F2ZSB0aG9zZSkKICAgICAgICAgW19wcml2YXRlLT5icmlkZ2Ugc2F2ZURvY3VtZW50U3RhdGVd
OwpAQCAtNjEwLDcgKzYxMCw3IEBAIE5TU3RyaW5nICpXZWJQYWdlQ2FjaGVEb2N1bWVudFZpZXdL
ZXkgPSAKICAgICBfcHJpdmF0ZS0+YnJpZGdlID0gbmlsOwogCiAgICAgW3NlbGYgc3RvcExvYWRp
bmddOwotICAgIFtzZWxmIF9zYXZlU2Nyb2xsUG9zaXRpb25Ub0l0ZW06W19wcml2YXRlIGN1cnJl
bnRJdGVtXV07CisgICAgW3NlbGYgX3NhdmVWaWV3U3RhdGVUb0l0ZW06W19wcml2YXRlIGN1cnJl
bnRJdGVtXV07CiAKICAgICBbYnJpZGdlIGNsb3NlVVJMXTsKIApAQCAtNzgzLDcgKzc4Myw3IEBA
IE5TU3RyaW5nICpXZWJQYWdlQ2FjaGVEb2N1bWVudFZpZXdLZXkgPSAKICAgICAgICAgICAgIGNh
c2UgV2ViRnJhbWVMb2FkVHlwZUluZGV4ZWRCYWNrRm9yd2FyZDoKICAgICAgICAgICAgICAgICBp
ZiAoW1tzZWxmIHdlYlZpZXddIGJhY2tGb3J3YXJkTGlzdF0pIHsKICAgICAgICAgICAgICAgICAg
ICAgLy8gTXVzdCBncmFiIHRoZSBjdXJyZW50IHNjcm9sbCBwb3NpdGlvbiBiZWZvcmUgZGlzdHVy
YmluZyBpdAotICAgICAgICAgICAgICAgICAgICBbc2VsZiBfc2F2ZVNjcm9sbFBvc2l0aW9uVG9J
dGVtOltfcHJpdmF0ZSBwcmV2aW91c0l0ZW1dXTsKKyAgICAgICAgICAgICAgICAgICAgW3NlbGYg
X3NhdmVWaWV3U3RhdGVUb0l0ZW06W19wcml2YXRlIHByZXZpb3VzSXRlbV1dOwogICAgICAgICAg
ICAgICAgICAgICAKICAgICAgICAgICAgICAgICAgICAgLy8gQ3JlYXRlIGEgZG9jdW1lbnQgdmll
dyBmb3IgdGhpcyBkb2N1bWVudCwgb3IgdXNlZCB0aGUgY2FjaGVkIHZpZXcuCiAgICAgICAgICAg
ICAgICAgICAgIGlmIChwYWdlQ2FjaGUpewpAQCAtODA0LDcgKzgwNCw3IEBAIE5TU3RyaW5nICpX
ZWJQYWdlQ2FjaGVEb2N1bWVudFZpZXdLZXkgPSAKICAgICAgICAgICAgICAgICAvLyBGSVhNRTog
cmp3IHNleiB0aGlzIGNhY2hlIGNsZWFyaW5nIGlzIG5vIGxvbmdlciBuZWVkZWQKICAgICAgICAg
ICAgICAgICBbY3Vyckl0ZW0gc2V0SGFzUGFnZUNhY2hlOk5PXTsKICAgICAgICAgICAgICAgICBp
ZiAobG9hZFR5cGUgPT0gV2ViRnJhbWVMb2FkVHlwZVJlbG9hZCkgewotICAgICAgICAgICAgICAg
ICAgICBbc2VsZiBfc2F2ZVNjcm9sbFBvc2l0aW9uVG9JdGVtOmN1cnJJdGVtXTsKKyAgICAgICAg
ICAgICAgICAgICAgW3NlbGYgX3NhdmVWaWV3U3RhdGVUb0l0ZW06Y3Vyckl0ZW1dOwogICAgICAg
ICAgICAgICAgIH0KICAgICAgICAgICAgICAgICAvLyBVcGRhdGUgdGhlIGxhc3QgdmlzaXRlZCB0
aW1lLiAgTW9zdGx5IGludGVyZXN0aW5nIGZvciBVUkwgYXV0b2NvbXBsZXRpb24KICAgICAgICAg
ICAgICAgICAvLyBzdGF0aXN0aWNzLgpAQCAtMTE3OSw3ICsxMTc5LDcgQEAgc3RhdGljIENGQWJz
b2x1dGVUaW1lIF90aW1lT2ZMYXN0Q29tcGxldAogICAgICAgICAgICAgICAgICAgICBjYXNlIFdl
YkZyYW1lTG9hZFR5cGVCYWNrOgogICAgICAgICAgICAgICAgICAgICBjYXNlIFdlYkZyYW1lTG9h
ZFR5cGVJbmRleGVkQmFja0ZvcndhcmQ6CiAgICAgICAgICAgICAgICAgICAgIGNhc2UgV2ViRnJh
bWVMb2FkVHlwZVJlbG9hZDoKLSAgICAgICAgICAgICAgICAgICAgICAgIFtzZWxmIF9yZXN0b3Jl
U2Nyb2xsUG9zaXRpb25dOworICAgICAgICAgICAgICAgICAgICAgICAgW3NlbGYgX3Jlc3RvcmVW
aWV3U3RhdGVdOwogICAgICAgICAgICAgICAgICAgICAgICAgYnJlYWs7CiAKICAgICAgICAgICAg
ICAgICAgICAgY2FzZSBXZWJGcmFtZUxvYWRUeXBlU3RhbmRhcmQ6CkBAIC0xMzQzLDcgKzEzNDMs
NyBAQCBzdGF0aWMgQ0ZBYnNvbHV0ZVRpbWUgX3RpbWVPZkxhc3RDb21wbGV0CiAgICAgICAgIFtz
ZWxmIF9sb2FkVVJMOml0ZW1VUkwgcmVmZXJyZXI6W1tbc2VsZiBkYXRhU291cmNlXSByZXF1ZXN0
XSBIVFRQUmVmZXJyZXJdIGxvYWRUeXBlOmxvYWRUeXBlIHRhcmdldDpuaWwgdHJpZ2dlcmluZ0V2
ZW50Om5pbCBmb3JtOm5pbCBmb3JtVmFsdWVzOm5pbF07CiAjZW5kaWYKICAgICAgICAgLy8gbXVz
dCBkbyB0aGlzIG1haW50ZW5hbmNlIGhlcmUsIHNpbmNlIHdlIGRvbid0IGdvIHRocm91Z2ggYSBy
ZWFsIHBhZ2UgcmVsb2FkCi0gICAgICAgIFtzZWxmIF9zYXZlU2Nyb2xsUG9zaXRpb25Ub0l0ZW06
W19wcml2YXRlIGN1cnJlbnRJdGVtXV07CisgICAgICAgIFtzZWxmIF9zYXZlVmlld1N0YXRlVG9J
dGVtOltfcHJpdmF0ZSBjdXJyZW50SXRlbV1dOwogICAgICAgICAvLyBGSVhNRTogZm9ybSBzdGF0
ZSBtaWdodCB3YW50IHRvIGJlIHNhdmVkIGhlcmUgdG9vCiAKICAgICAgICAgLy8gRklYTUU6IFBl
cmhhcHMgd2UgY2FuIHVzZSBzY3JvbGxUb0FuY2hvcldpdGhVUkwgaGVyZSBpbnN0ZWFkIGFuZCBy
ZW1vdmUgdGhlIG9sZGVyIHNjcm9sbFRvQW5jaG9yOj8KQEAgLTEzNTMsNyArMTM1Myw3IEBAIHN0
YXRpYyBDRkFic29sdXRlVGltZSBfdGltZU9mTGFzdENvbXBsZXQKICAgICAKICAgICAgICAgLy8g
bXVzdCBkbyB0aGlzIG1haW50ZW5hbmNlIGhlcmUsIHNpbmNlIHdlIGRvbid0IGdvIHRocm91Z2gg
YSByZWFsIHBhZ2UgcmVsb2FkCiAgICAgICAgIFtfcHJpdmF0ZSBzZXRDdXJyZW50SXRlbTppdGVt
XTsKLSAgICAgICAgW3NlbGYgX3Jlc3RvcmVTY3JvbGxQb3NpdGlvbl07CisgICAgICAgIFtzZWxm
IF9yZXN0b3JlVmlld1N0YXRlXTsKIAogICAgICAgICAvLyBGYWtlIHRoZSBVUkwgY2hhbmdlIGJ5
IHVwZGF0aW5nIHRoZSBkYXRhc291cmNlJ3MgcmVxdWVzdC4gIFRoaXMgd2lsbCBubyBsb25nZXIK
ICAgICAgICAgLy8gYmUgbmVjZXNzYXJ5IGlmIHdlIGRvIHRoZSBiZXR0ZXIgZml4IGRlc2NyaWJl
ZCBhYm92ZS4KQEAgLTE0NzgsMTQgKzE0NzgsMTQgQEAgc3RhdGljIENGQWJzb2x1dGVUaW1lIF90
aW1lT2ZMYXN0Q29tcGxldAogICAgICAgICAvLyBTYXZlIGZvcm0gc3RhdGUgKHdvcmtzIGZyb20g
Y3VycmVudEl0ZW0sIHNpbmNlIHByZXZJdGVtIGlzIG5pbCkKICAgICAgICAgQVNTRVJUKCFbX3By
aXZhdGUgcHJldmlvdXNJdGVtXSk7CiAgICAgICAgIFtfcHJpdmF0ZS0+YnJpZGdlIHNhdmVEb2N1
bWVudFN0YXRlXTsKLSAgICAgICAgW3NlbGYgX3NhdmVTY3JvbGxQb3NpdGlvblRvSXRlbTpbX3By
aXZhdGUgY3VycmVudEl0ZW1dXTsKKyAgICAgICAgW3NlbGYgX3NhdmVWaWV3U3RhdGVUb0l0ZW06
W19wcml2YXRlIGN1cnJlbnRJdGVtXV07CiAgICAgICAgIAogICAgICAgICBbX3ByaXZhdGUgc2V0
Q3VycmVudEl0ZW06aXRlbV07CiAKICAgICAgICAgLy8gUmVzdG9yZSBmb3JtIHN0YXRlICh3b3Jr
cyBmcm9tIGN1cnJlbnRJdGVtKQogICAgICAgICBbX3ByaXZhdGUtPmJyaWRnZSByZXN0b3JlRG9j
dW1lbnRTdGF0ZV07CiAgICAgICAgIC8vIFJlc3RvcmUgdGhlIHNjcm9sbCBwb3NpdGlvbiAodGFr
ZW4gaW4gZmF2b3Igb2YgZ29pbmcgYmFjayB0byB0aGUgYW5jaG9yKQotICAgICAgICBbc2VsZiBf
cmVzdG9yZVNjcm9sbFBvc2l0aW9uXTsKKyAgICAgICAgW3NlbGYgX3Jlc3RvcmVWaWV3U3RhdGVd
OwogICAgICAgICAKICAgICAgICAgTlNBcnJheSAqY2hpbGRJdGVtcyA9IFtpdGVtIGNoaWxkcmVu
XTsKICAgICAgICAgaW50IG51bUNoaWxkSXRlbXMgPSBjaGlsZEl0ZW1zID8gW2NoaWxkSXRlbXMg
Y291bnRdIDogMDsKQEAgLTIwNzUsMTQgKzIwNzUsMjUgQEAgc3RhdGljIENGQWJzb2x1dGVUaW1l
IF90aW1lT2ZMYXN0Q29tcGxldAogICAgIExPRyhSZWRpcmVjdCwgIiVAKCVwKSBfcHJpdmF0ZS0+
cXVpY2tSZWRpcmVjdENvbWluZyA9ICVkIiwgW3NlbGYgbmFtZV0sIHNlbGYsIChpbnQpX3ByaXZh
dGUtPnF1aWNrUmVkaXJlY3RDb21pbmcpOwogfQogCi0tICh2b2lkKV9zYXZlU2Nyb2xsUG9zaXRp
b25Ub0l0ZW06KFdlYkhpc3RvcnlJdGVtICopaXRlbQorLSAodm9pZClfc2F2ZVZpZXdTdGF0ZVRv
SXRlbTooV2ViSGlzdG9yeUl0ZW0gKilpdGVtCiB7CiAgICAgaWYgKGl0ZW0pIHsKLSAgICAgICAg
TlNWaWV3ICpjbGlwVmlldyA9IFtbW3NlbGYgZnJhbWVWaWV3XSBkb2N1bWVudFZpZXddIHN1cGVy
dmlld107CisgICAgICAgIE5TVmlldyA8V2ViRG9jdW1lbnRWaWV3PiAqZG9jVmlldyA9IFtbc2Vs
ZiBmcmFtZVZpZXddIGRvY3VtZW50Vmlld107CisgICAgICAgIE5TVmlldyAqcGFyZW50ID0gW2Rv
Y1ZpZXcgc3VwZXJ2aWV3XTsKICAgICAgICAgLy8gd2UgbWlnaHQgYWxyZWFkeSBiZSBkZXRhY2hl
ZCB3aGVuIHRoaXMgaXMgY2FsbGVkIGZyb20gZGV0YWNoRnJvbVBhcmVudCwgaW4gd2hpY2gKICAg
ICAgICAgLy8gY2FzZSB3ZSBkb24ndCB3YW50IHRvIG92ZXJyaWRlIHJlYWwgZGF0YSBlYXJsaWVy
IGdhdGhlcmVkIHdpdGggKDAsMCkKLSAgICAgICAgaWYgKGNsaXBWaWV3KSB7Ci0gICAgICAgICAg
ICBbaXRlbSBzZXRTY3JvbGxQb2ludDpbY2xpcFZpZXcgYm91bmRzXS5vcmlnaW5dOworICAgICAg
ICBpZiAocGFyZW50KSB7CisgICAgICAgICAgICBOU1BvaW50IHBvaW50OworICAgICAgICAgICAg
aWYgKFtkb2NWaWV3IGNvbmZvcm1zVG9Qcm90b2NvbDpAcHJvdG9jb2woX1dlYkRvY3VtZW50Vmll
d1N0YXRlKV0pIHsKKyAgICAgICAgICAgICAgICAvLyBUaGUgdmlldyBoYXMgaXQncyBvd24gaWRl
YSBvZiB3aGVyZSBpdCBpcyBzY3JvbGxlZCB0bywgcGVyaGFwcyBiZWNhdXNlIGl0IGNvbnRhaW5z
IGl0cyBvd24KKyAgICAgICAgICAgICAgICAvLyBTY3JvbGxWaWV3IGluc3RlYWQgb2YgdXNpbmcg
dGhlIG9uZSBwcm92aWRlZCBieSB0aGUgV2ViRnJhbWUKKyAgICAgICAgICAgICAgICBwb2ludCA9
IFsoaWQgPF9XZWJEb2N1bWVudFZpZXdTdGF0ZT4pZG9jVmlldyBzY3JvbGxQb2ludF07CisgICAg
ICAgICAgICAgICAgW2l0ZW0gc2V0Vmlld1N0YXRlOlsoaWQgPF9XZWJEb2N1bWVudFZpZXdTdGF0
ZT4pZG9jVmlldyB2aWV3U3RhdGVdXTsKKyAgICAgICAgICAgIH0gZWxzZSB7CisgICAgICAgICAg
ICAgICAgLy8gUGFyZW50IGlzIHRoZSBjbGlwdmlldyBvZiB0aGUgRHluYW1pY1Njcm9sbFZpZXcg
dGhlIFdlYkZyYW1lIGluc3RhbGxzCisgICAgICAgICAgICAgICAgcG9pbnQgPSBbcGFyZW50IGJv
dW5kc10ub3JpZ2luOworICAgICAgICAgICAgfQorICAgICAgICAgICAgW2l0ZW0gc2V0U2Nyb2xs
UG9pbnQ6cG9pbnRdOwogICAgICAgICB9CiAgICAgfQogfQpAQCAtMjA5OSwxNSArMjExMCwyMSBA
QCBzdGF0aWMgQ0ZBYnNvbHV0ZVRpbWUgX3RpbWVPZkxhc3RDb21wbGV0CiAgICAgICAgZmFpbHMu
ICBXZSB0aGVuIHN1Y2Nlc3NmdWxseSByZXN0b3JlIGl0IHdoZW4gdGhlIGxheW91dCBoYXBwZW5z
LgogICovCiAKLS0gKHZvaWQpX3Jlc3RvcmVTY3JvbGxQb3NpdGlvbgorLSAodm9pZClfcmVzdG9y
ZVZpZXdTdGF0ZQogewogICAgIEFTU0VSVChbX3ByaXZhdGUgY3VycmVudEl0ZW1dKTsKLSAgICBb
W1tzZWxmIGZyYW1lVmlld10gZG9jdW1lbnRWaWV3XSBzY3JvbGxQb2ludDpbW19wcml2YXRlIGN1
cnJlbnRJdGVtXSBzY3JvbGxQb2ludF1dOwotfQotCi0tICh2b2lkKV9zY3JvbGxUb1RvcAotewot
ICAgIFtbW3NlbGYgZnJhbWVWaWV3XSBkb2N1bWVudFZpZXddIHNjcm9sbFBvaW50OiBOU1plcm9Q
b2ludF07CisgICAgTlNWaWV3IDxXZWJEb2N1bWVudFZpZXc+ICpkb2NWaWV3ID0gW1tzZWxmIGZy
YW1lVmlld10gZG9jdW1lbnRWaWV3XTsKKyAgICBOU1BvaW50IHBvaW50ID0gW1tfcHJpdmF0ZSBj
dXJyZW50SXRlbV0gc2Nyb2xsUG9pbnRdOworICAgIGlmIChbZG9jVmlldyBjb25mb3Jtc1RvUHJv
dG9jb2w6QHByb3RvY29sKF9XZWJEb2N1bWVudFZpZXdTdGF0ZSldKSB7ICAgICAgICAKKyAgICAg
ICAgaWQgc3RhdGUgPSBbW19wcml2YXRlIGN1cnJlbnRJdGVtXSB2aWV3U3RhdGVdOworICAgICAg
ICBpZiAoc3RhdGUpIHsKKyAgICAgICAgICAgIFsoaWQgPF9XZWJEb2N1bWVudFZpZXdTdGF0ZT4p
ZG9jVmlldyBzZXRWaWV3U3RhdGU6c3RhdGVdOworICAgICAgICB9CisgICAgICAgIAorICAgICAg
ICBbKGlkIDxfV2ViRG9jdW1lbnRWaWV3U3RhdGU+KWRvY1ZpZXcgc2V0U2Nyb2xsUG9pbnQ6cG9p
bnRdOworICAgIH0gZWxzZSB7CisgICAgICAgIFtkb2NWaWV3IHNjcm9sbFBvaW50OnBvaW50XTsK
KyAgICB9CiB9CiAKIC0gKHZvaWQpX3RleHRTaXplTXVsdGlwbGllckNoYW5nZWQKQEAgLTIzMDYs
NyArMjMyMyw3IEBAIHN0YXRpYyBDRkFic29sdXRlVGltZSBfdGltZU9mTGFzdENvbXBsZXQKIC0g
KHZvaWQpX3NhdmVEb2N1bWVudEFuZFNjcm9sbFN0YXRlCiB7CiAgICAgW19wcml2YXRlLT5icmlk
Z2Ugc2F2ZURvY3VtZW50U3RhdGVdOwotICAgIFtzZWxmIF9zYXZlU2Nyb2xsUG9zaXRpb25Ub0l0
ZW06W19wcml2YXRlIGN1cnJlbnRJdGVtXV07CisgICAgW3NlbGYgX3NhdmVWaWV3U3RhdGVUb0l0
ZW06W19wcml2YXRlIGN1cnJlbnRJdGVtXV07CiAKICAgICAvLyBJdCdzIE9LIHRvIHVzZSB0aGUg
aW50ZXJuYWwgdmVyc2lvbiBiZWNhdXNlIHRoaXMgbWV0aG9kIGlzCiAgICAgLy8gZ3VhcmFudGVl
ZCBub3QgdG8gY2hhbmdlIHRoZSBzZXQgb2YgZnJhbWVzLgpAQCAtMjcxNiw3ICsyNzMzLDcgQEAg
c3RhdGljIENGQWJzb2x1dGVUaW1lIF90aW1lT2ZMYXN0Q29tcGxldAogICAgICAgICAgICAgbG9h
ZFR5cGUgPT0gV2ViRnJhbWVMb2FkVHlwZUJhY2sgfHwKICAgICAgICAgICAgIGxvYWRUeXBlID09
IFdlYkZyYW1lTG9hZFR5cGVJbmRleGVkQmFja0ZvcndhcmQpCiAgICAgICAgIHsKLSAgICAgICAg
ICAgIFtzZWxmIF9yZXN0b3JlU2Nyb2xsUG9zaXRpb25dOworICAgICAgICAgICAgW3NlbGYgX3Jl
c3RvcmVWaWV3U3RhdGVdOwogICAgICAgICB9CiAgICAgfQogfQpJbmRleDogLi9XZWJWaWV3LnN1
YnByb2ovV2ViSFRNTFZpZXcubQo9PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09ClJDUyBmaWxlOiAvY3ZzL3Jvb3QvV2ViS2l0
L1dlYlZpZXcuc3VicHJvai9XZWJIVE1MVmlldy5tLHYKcmV0cmlldmluZyByZXZpc2lvbiAxLjQ1
OQpkaWZmIC1wIC11IC1yMS40NTkgLi9XZWJWaWV3LnN1YnByb2ovV2ViSFRNTFZpZXcubQotLS0g
Li9XZWJWaWV3LnN1YnByb2ovV2ViSFRNTFZpZXcubQkxOCBKdWwgMjAwNSAyMzoxODoyMiAtMDAw
MAkxLjQ1OQorKysgLi9XZWJWaWV3LnN1YnByb2ovV2ViSFRNTFZpZXcubQkyMSBKdWwgMjAwNSAw
NTo0NzoyOCAtMDAwMApAQCAtMTY4OCwxMCArMTY4OCw2IEBAIHN0YXRpYyBXZWJIVE1MVmlldyAq
bGFzdEhpdFZpZXcgPSBuaWw7CiAKIEBlbmQKIAotCi1AaW50ZXJmYWNlIFdlYkhUTUxWaWV3IChU
ZXh0U2l6aW5nKSA8X3dlYl9XZWJEb2N1bWVudFRleHRTaXppbmc+Ci1AZW5kCi0KIEBpbnRlcmZh
Y2UgTlNBcnJheSAoV2ViSFRNTFZpZXcpCiAtICh2b2lkKV93ZWJfbWFrZVBsdWdpblZpZXdzUGVy
Zm9ybVNlbGVjdG9yOihTRUwpc2VsZWN0b3Igd2l0aE9iamVjdDooaWQpb2JqZWN0OwogQGVuZApJ
bmRleDogLi9XZWJWaWV3LnN1YnByb2ovV2ViUERGVmlldy5oCj09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT0KUkNTIGZpbGU6
IC9jdnMvcm9vdC9XZWJLaXQvV2ViVmlldy5zdWJwcm9qL1dlYlBERlZpZXcuaCx2CnJldHJpZXZp
bmcgcmV2aXNpb24gMS4xMApkaWZmIC1wIC11IC1yMS4xMCAuL1dlYlZpZXcuc3VicHJvai9XZWJQ
REZWaWV3LmgKLS0tIC4vV2ViVmlldy5zdWJwcm9qL1dlYlBERlZpZXcuaAkxOCBKdWwgMjAwNSAy
MzoxODoyMiAtMDAwMAkxLjEwCisrKyAuL1dlYlZpZXcuc3VicHJvai9XZWJQREZWaWV3LmgJMjEg
SnVsIDIwMDUgMDU6NDc6MjggLTAwMDAKQEAgLTMyLDEwICszMiwxMSBAQAogQGNsYXNzIFdlYkRh
dGFTb3VyY2U7CiAKIEBwcm90b2NvbCBfd2ViX1dlYkRvY3VtZW50VGV4dFNpemluZzsKK0Bwcm90
b2NvbCBfV2ViRG9jdW1lbnRWaWV3U3RhdGU7CiBAcHJvdG9jb2wgV2ViRG9jdW1lbnRTZWxlY3Rp
b247CiBAcHJvdG9jb2wgV2ViRG9jdW1lbnRFbGVtZW50OwogCi1AaW50ZXJmYWNlIFdlYlBERlZp
ZXcgOiBOU1ZpZXcgPFdlYkRvY3VtZW50VmlldywgV2ViRG9jdW1lbnRTZWFyY2hpbmcsIFdlYkRv
Y3VtZW50VGV4dCwgX3dlYl9XZWJEb2N1bWVudFRleHRTaXppbmcsIFdlYkRvY3VtZW50U2VsZWN0
aW9uLCBXZWJEb2N1bWVudEVsZW1lbnQ+CitAaW50ZXJmYWNlIFdlYlBERlZpZXcgOiBOU1ZpZXcg
PFdlYkRvY3VtZW50VmlldywgV2ViRG9jdW1lbnRTZWFyY2hpbmcsIFdlYkRvY3VtZW50VGV4dCwg
V2ViRG9jdW1lbnRTZWxlY3Rpb24sIFdlYkRvY3VtZW50RWxlbWVudCwgX1dlYkRvY3VtZW50Vmll
d1N0YXRlPgogewogICAgIFBERlZpZXcgKlBERlN1YnZpZXc7CiAgICAgV2ViRGF0YVNvdXJjZSAq
ZGF0YVNvdXJjZTsKSW5kZXg6IC4vV2ViVmlldy5zdWJwcm9qL1dlYlBERlZpZXcubQo9PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09ClJDUyBmaWxlOiAvY3ZzL3Jvb3QvV2ViS2l0L1dlYlZpZXcuc3VicHJvai9XZWJQREZWaWV3
Lm0sdgpyZXRyaWV2aW5nIHJldmlzaW9uIDEuMjIKZGlmZiAtcCAtdSAtcjEuMjIgLi9XZWJWaWV3
LnN1YnByb2ovV2ViUERGVmlldy5tCi0tLSAuL1dlYlZpZXcuc3VicHJvai9XZWJQREZWaWV3Lm0J
MTggSnVsIDIwMDUgMjM6MTg6MjIgLTAwMDAJMS4yMgorKysgLi9XZWJWaWV3LnN1YnByb2ovV2Vi
UERGVmlldy5tCTIxIEp1bCAyMDA1IDA1OjQ3OjI5IC0wMDAwCkBAIC0xMTgsNiArMTE4LDE2IEBA
IE5TU3RyaW5nICpfTlNQYXRoRm9yU3lzdGVtRnJhbWV3b3JrKE5TU3QKICAgICBbUERGU3Vidmll
dyBjb3B5OnNlbmRlcl07CiB9CiAKKy0gKElCQWN0aW9uKW1ha2VUZXh0U21hbGxlcjooaWQpc2Vu
ZGVyCit7CisgICAgW1BERlN1YnZpZXcgem9vbU91dDpzZW5kZXJdOworfQorCistIChJQkFjdGlv
biltYWtlVGV4dExhcmdlcjooaWQpc2VuZGVyCit7CisgICAgW1BERlN1YnZpZXcgem9vbUluOnNl
bmRlcl07Cit9CisKICNkZWZpbmUgVEVNUF9QUkVGSVggIi90bXAvWFhYWFhYLSIKICNkZWZpbmUg
T0JKQ19URU1QX1BSRUZJWCBAIi90bXAvWFhYWFhYLSIKIApAQCAtMjQ2LDI2ICsyNTYsNiBAQCBz
dGF0aWMgdm9pZCBhcHBsaWNhdGlvbkluZm9Gb3JNSU1FVHlwZShOCiAgICAgICAgIH0gZWxzZSB7
CiAgICAgICAgICAgICBFUlJPUigiUERGIGNvbnRleHQgbWVudSBpdGVtICVAIGNhbWUgd2l0aCB0
YWcgJWQsIHNvIG5vIFdlYktpdCB0YWcgd2FzIGFwcGxpZWQuIFRoaXMgY291bGQgbWVhbiB0aGF0
IHRoZSBpdGVtIGRvZXNuJ3QgYXBwZWFyIGluIGNsaWVudHMgc3VjaCBhcyBTYWZhcmkuIiwgW2l0
ZW1Db3B5IHRpdGxlXSwgW2l0ZW1Db3B5IHRhZ10pOwogICAgICAgICB9Ci0gICAgICAgIAotICAg
ICAgICAvLyBJbnRlcmNlcHQgc29tZSBvZiB0aGVzZSBtZW51IGl0ZW1zIGZvciBiZXR0ZXIgV2Vi
S2l0IGludGVncmF0aW9uLgotICAgICAgICBzd2l0Y2ggKHRhZykgewotICAgICAgICAgICAgLy8g
Q29udmVydCB0aGUgc2NhbGUtZmFjdG9yLXJlbGF0ZWQgaXRlbXMgdG8gdXNlIFdlYktpdCdzIHRl
eHQgc2l6aW5nIEFQSSBpbnN0ZWFkLCBzbyB0aGV5IG1hdGNoIG90aGVyCi0gICAgICAgICAgICAv
LyBVSSB0aGF0IHVzZXMgdGhlIHRleHQgc2l6aW5nIEFQSSAoc3VjaCBhcyBNYWtlIFRleHQgTGFy
Z2VyL1NtYWxsZXIgbWVudSBpdGVtcyBpbiBTYWZhcmkpLgotICAgICAgICAgICAgY2FzZSBXZWJN
ZW51SXRlbVBERkFjdHVhbFNpemU6Ci0gICAgICAgICAgICAgICAgW2l0ZW1Db3B5IHNldFRhcmdl
dDpbW2RhdGFTb3VyY2Ugd2ViRnJhbWVdIHdlYlZpZXddXTsKLSAgICAgICAgICAgICAgICBbaXRl
bUNvcHkgc2V0QWN0aW9uOkBzZWxlY3RvcihtYWtlVGV4dFN0YW5kYXJkU2l6ZTopXTsKLSAgICAg
ICAgICAgICAgICBicmVhazsKLSAgICAgICAgICAgIGNhc2UgV2ViTWVudUl0ZW1QREZab29tSW46
Ci0gICAgICAgICAgICAgICAgW2l0ZW1Db3B5IHNldFRhcmdldDpbW2RhdGFTb3VyY2Ugd2ViRnJh
bWVdIHdlYlZpZXddXTsKLSAgICAgICAgICAgICAgICBbaXRlbUNvcHkgc2V0QWN0aW9uOkBzZWxl
Y3RvcihtYWtlVGV4dExhcmdlcjopXTsKLSAgICAgICAgICAgICAgICBicmVhazsKLSAgICAgICAg
ICAgIGNhc2UgV2ViTWVudUl0ZW1QREZab29tT3V0OgotICAgICAgICAgICAgICAgIFtpdGVtQ29w
eSBzZXRUYXJnZXQ6W1tkYXRhU291cmNlIHdlYkZyYW1lXSB3ZWJWaWV3XV07Ci0gICAgICAgICAg
ICAgICAgW2l0ZW1Db3B5IHNldEFjdGlvbjpAc2VsZWN0b3IobWFrZVRleHRTbWFsbGVyOildOwot
ICAgICAgICAgICAgICAgIGJyZWFrOwotICAgICAgICAgICAgZGVmYXVsdDoKLSAgICAgICAgICAg
ICAgICBicmVhazsKLSAgICAgICAgfQogICAgIH0KICAgICAKICAgICBbYWN0aW9uc1RvVGFncyBy
ZWxlYXNlXTsKQEAgLTM0NywyMiArMzM3LDEwIEBAIHN0YXRpYyB2b2lkIGFwcGxpY2F0aW9uSW5m
b0Zvck1JTUVUeXBlKE4KICAgICByZXR1cm4gbWVudTsKIH0KIAotLSAodm9pZClfdXBkYXRlU2Nh
bGluZ1RvUmVmbGVjdFRleHRTaXplCi17Ci0gICAgV2ViVmlldyAqdmlldyA9IFtbZGF0YVNvdXJj
ZSB3ZWJGcmFtZV0gd2ViVmlld107Ci0gICAgCi0gICAgLy8gVGhlIHNjYWxlIGZhY3RvciBhbmQg
dGV4dCBzaXplIG11bHRpcGxpZXIgY29udmVuaWVudGx5IHVzZSB0aGUgc2FtZSB1bml0cywgc28g
d2UgY2FuIGp1c3QKLSAgICAvLyB0cmVhdCB0aGUgdmFsdWVzIGFzIGludGVyY2hhbmdlYWJsZS4K
LSAgICBpZiAodmlldyAhPSBuaWwpIHsKLSAgICAgICAgW1BERlN1YnZpZXcgc2V0U2NhbGVGYWN0
b3I6W3ZpZXcgdGV4dFNpemVNdWx0aXBsaWVyXV07CQkKLSAgICB9CQotfQotCiAtICh2b2lkKXNl
dERhdGFTb3VyY2U6KFdlYkRhdGFTb3VyY2UgKilkcwogewogICAgIGRhdGFTb3VyY2UgPSBkczsK
ICAgICBbc2VsZiBzZXRGcmFtZTpbW3NlbGYgc3VwZXJ2aWV3XSBmcmFtZV1dOwotICAgIFtzZWxm
IF91cGRhdGVTY2FsaW5nVG9SZWZsZWN0VGV4dFNpemVdOwogfQogCiAtICh2b2lkKWRhdGFTb3Vy
Y2VVcGRhdGVkOihXZWJEYXRhU291cmNlICopZGF0YVNvdXJjZQpAQCAtNDAyLDExICszODAsNiBA
QCBzdGF0aWMgdm9pZCBhcHBsaWNhdGlvbkluZm9Gb3JNSU1FVHlwZShOCiAgICAgfQogfQogCi0t
ICh2b2lkKV93ZWJfdGV4dFNpemVNdWx0aXBsaWVyQ2hhbmdlZAotewotICAgIFtzZWxmIF91cGRh
dGVTY2FsaW5nVG9SZWZsZWN0VGV4dFNpemVdOwotfQotCiAvLyBGSVhNRSA0MTgyODc2OiBXZSBj
YW4gZWxpbWluYXRlIHRoaXMgZnVuY3Rpb24gaW4gZmF2b3IgaWYgLWlzRXF1YWw6IGlmIFtQREZT
ZWxlY3Rpb24gaXNFcXVhbDpdIGlzIG92ZXJyaWRkZW4KIC8vIHRvIGNvbXBhcmUgY29udGVudHMu
CiBzdGF0aWMgQk9PTCBQREZTZWxlY3Rpb25zQXJlRXF1YWwoUERGU2VsZWN0aW9uICpzZWxlY3Rp
b25BLCBQREZTZWxlY3Rpb24gKnNlbGVjdGlvbkIpCkBAIC01NzAsNiArNTQzLDYxIEBAIHN0YXRp
YyBCT09MIFBERlNlbGVjdGlvbnNBcmVFcXVhbChQREZTZWwKICAgICBbUERGU3VidmlldyBjbGVh
clNlbGVjdGlvbl07CiB9CiAKKy8qKiogV2ViRG9jdW1lbnRWaWV3U3RhdGUgcHJvdG9jb2wgaW1w
bGVtZW50YXRpb24gKioqLworCisvLyBFdmVuIHRob3VnaCB0byBXZWJLaXQgd2UgYXJlIHRoZSAi
ZG9jVmlldyIsIGluIHJlYWxpdHkgYSBQREZWaWV3IGNvbnRhaW5zIGl0cyBvd24gc2Nyb2xsdmll
dyBhbmQgZG9jVmlldy4KKy8vIEFuZCBpdCBldmVuIHR1cm5zIG91dCB0aGVyZSBpcyBhbm90aGVy
IFBERktpdCB2aWV3IGJldHdlZW4gdGhlIGRvY1ZpZXcgYW5kIGl0cyBlbmNsb3NpbmcgU2Nyb2xs
Vmlldywgc28KKy8vIHdlIGhhdmUgdG8gYmUgc3VyZSB0byBkbyBvdXIgY2FsY3VsdWF0aW9ucyBi
YXNlZCBvbiB0aGF0IHZpZXcsIGltbWVkaWF0ZWx5IGluc2lkZSB0aGUgQ2xpcFZpZXcuICBXZSB0
cnkKKy8vIHRvIG1ha2UgYXMgZmV3IGFzc3VtcHRpb25zIGFib3V0IHRoZSBQREZLaXQgdmlldyBo
aWVyYXJjaHkgYXMgcG9zc2libGUuCisKKy0gKE5TUG9pbnQpc2Nyb2xsUG9pbnQKK3sKKyAgICBO
U1ZpZXcgKnJlYWxEb2NWaWV3ID0gW1BERlN1YnZpZXcgZG9jdW1lbnRWaWV3XTsKKyAgICBOU0Ns
aXBWaWV3ICpjbGlwVmlldyA9IFtbcmVhbERvY1ZpZXcgZW5jbG9zaW5nU2Nyb2xsVmlld10gY29u
dGVudFZpZXddOworICAgIHJldHVybiBbY2xpcFZpZXcgYm91bmRzXS5vcmlnaW47Cit9CisKKy0g
KHZvaWQpc2V0U2Nyb2xsUG9pbnQ6KE5TUG9pbnQpcAoreworICAgIE5TVmlldyAqcmVhbERvY1Zp
ZXcgPSBbUERGU3VidmlldyBkb2N1bWVudFZpZXddOworICAgIFtbW3JlYWxEb2NWaWV3IGVuY2xv
c2luZ1Njcm9sbFZpZXddIGRvY3VtZW50Vmlld10gc2Nyb2xsUG9pbnQ6cF07Cit9CisKKy0gKGlk
KXZpZXdTdGF0ZQoreworICAgIE5TTXV0YWJsZUFycmF5ICpzdGF0ZSA9IFtOU011dGFibGVBcnJh
eSBhcnJheVdpdGhDYXBhY2l0eTo0XTsKKyAgICBQREZEaXNwbGF5TW9kZSBtb2RlID0gW1BERlN1
YnZpZXcgZGlzcGxheU1vZGVdOworICAgIFtzdGF0ZSBhZGRPYmplY3Q6W05TTnVtYmVyIG51bWJl
cldpdGhJbnQ6bW9kZV1dOworICAgIGlmIChtb2RlID09IGtQREZEaXNwbGF5U2luZ2xlUGFnZSB8
fCBtb2RlID09IGtQREZEaXNwbGF5VHdvVXApIHsKKyAgICAgICAgdW5zaWduZWQgaW50IHBhZ2VJ
bmRleCA9IFtbUERGU3VidmlldyBkb2N1bWVudF0gaW5kZXhGb3JQYWdlOltQREZTdWJ2aWV3IGN1
cnJlbnRQYWdlXV07CisgICAgICAgIFtzdGF0ZSBhZGRPYmplY3Q6W05TTnVtYmVyIG51bWJlcldp
dGhVbnNpZ25lZEludDpwYWdlSW5kZXhdXTsKKyAgICB9ICAvLyBlbHNlIGluIGNvbnRpbnVvdXMg
bW9kZXMsIHNjcm9sbCBwb3NpdGlvbiBnZXRzIHVzIHRvIHRoZSByaWdodCBwYWdlCisgICAgQk9P
TCBhdXRvU2NhbGVGbGFnID0gW1BERlN1YnZpZXcgYXV0b1NjYWxlc107CisgICAgW3N0YXRlIGFk
ZE9iamVjdDpbTlNOdW1iZXIgbnVtYmVyV2l0aEJvb2w6YXV0b1NjYWxlRmxhZ11dOworICAgIGlm
ICghYXV0b1NjYWxlRmxhZykgeworICAgICAgICBbc3RhdGUgYWRkT2JqZWN0OltOU051bWJlciBu
dW1iZXJXaXRoRmxvYXQ6W1BERlN1YnZpZXcgc2NhbGVGYWN0b3JdXV07CisgICAgfQorICAgIHJl
dHVybiBzdGF0ZTsKK30KKworLSAodm9pZClzZXRWaWV3U3RhdGU6KGlkKXN0YXRlUExpc3QKK3sK
KyAgICBBU1NFUlQoW3N0YXRlUExpc3QgaXNLaW5kT2ZDbGFzczpbTlNBcnJheSBjbGFzc11dKTsK
KyAgICBOU0FycmF5ICpzdGF0ZSA9IHN0YXRlUExpc3Q7CisgICAgaW50IGkgPSAwOworICAgIFBE
RkRpc3BsYXlNb2RlIG1vZGUgPSBbW3N0YXRlIG9iamVjdEF0SW5kZXg6aSsrXSBpbnRWYWx1ZV07
CisgICAgW1BERlN1YnZpZXcgc2V0RGlzcGxheU1vZGU6bW9kZV07CisgICAgaWYgKG1vZGUgPT0g
a1BERkRpc3BsYXlTaW5nbGVQYWdlIHx8IG1vZGUgPT0ga1BERkRpc3BsYXlUd29VcCkgeworICAg
ICAgICB1bnNpZ25lZCBpbnQgcGFnZUluZGV4ID0gW1tzdGF0ZSBvYmplY3RBdEluZGV4OmkrK10g
dW5zaWduZWRJbnRWYWx1ZV07CisgICAgICAgIFtQREZTdWJ2aWV3IGdvVG9QYWdlOltbUERGU3Vi
dmlldyBkb2N1bWVudF0gcGFnZUF0SW5kZXg6cGFnZUluZGV4XV07CisgICAgfSAgLy8gZWxzZSBp
biBjb250aW51b3VzIG1vZGVzLCBzY3JvbGwgcG9zaXRpb24gZ2V0cyB1cyB0byB0aGUgcmlnaHQg
cGFnZQorICAgIEJPT0wgYXV0b1NjYWxlRmxhZyA9IFtbc3RhdGUgb2JqZWN0QXRJbmRleDppKytd
IGJvb2xWYWx1ZV07CisgICAgW1BERlN1YnZpZXcgc2V0QXV0b1NjYWxlczphdXRvU2NhbGVGbGFn
XTsKKyAgICBpZiAoIWF1dG9TY2FsZUZsYWcpIHsKKyAgICAgICAgW1BERlN1YnZpZXcgc2V0U2Nh
bGVGYWN0b3I6W1tzdGF0ZSBvYmplY3RBdEluZGV4OmkrK10gZmxvYXRWYWx1ZV1dOworICAgIH0K
K30KKwogLSAoTlNSZWN0KXNlbGVjdGlvblJlY3QKIHsKICAgICBOU1JlY3QgcmVzdWx0ID0gTlNa
ZXJvUmVjdDsK
</data>
<flag name="review"
          id="261"
          type_id="1"
          status="-"
          setter="sullivan"
    />
          </attachment>
          <attachment
              isobsolete="0"
              ispatch="0"
              isprivate="0"
          >
            <attachid>3092</attachid>
            <date>2005-07-26 14:01:10 -0700</date>
            <delta_ts>2005-07-26 14:01:10 -0700</delta_ts>
            <desc>This is a good testing file</desc>
            <filename>MultiTypeFrames.html</filename>
            <type>text/html</type>
            <size>453</size>
            <attacher name="Trey Matteson">trey</attacher>
            
              <data encoding="base64">PCFET0NUWVBFIEhUTUwgUFVCTElDICItLy9XM0MvL0RURCBIVE1MIDQuMC8vRU4iCiAgICJodHRw
Oi8vd3d3LnczLm9yZy9UUi9SRUMtaHRtbDQwL3N0cmljdC5kdGQiPgo8aHRtbD4KCjxGUkFNRVNF
VCBST1dTPSI1MCUsNTAlIiBDT0xTPSI1MCUsNTAlIj4KICA8RlJBTUUgTkFNRT0iZjEiIFNSQz0i
aHR0cDovL25ld3MuZ29vZ2xlLmNvbS8iPgogIDxGUkFNRSBOQU1FPSJmMiIgU1JDPSJodHRwOi8v
d3d3Lmlycy5nb3YvcHViL2lycy1wZGYvaTEwOTkucGRmIj4KICA8RlJBTUUgTkFNRT0iZjMiIFNS
Qz0iaHR0cDovL3Bpbmtlci53amguaGFydmFyZC5lZHUvcGhvdG9zL3NhbnRhX2JhcmJhcmFfY2Fs
aWZvcm5pYS9pbWFnZXMvcHVycGxlJTIwZmxvd2VyLmpwZyI+CiAgPEZSQU1FIE5BTUU9ImY0IiBT
UkM9Imh0dHA6Ly93d3cuaWV0Zi5vcmcvcmZjL3JmYzA4MjEudHh0Ij4KPC9GUkFNRVNFVD4K
</data>

          </attachment>
          <attachment
              isobsolete="1"
              ispatch="1"
              isprivate="0"
          >
            <attachid>3115</attachid>
            <date>2005-07-27 12:13:32 -0700</date>
            <delta_ts>2005-07-27 13:47:06 -0700</delta_ts>
            <desc>patch #2 - still also fixes 4015</desc>
            <filename>4015-4091.patch</filename>
            <type>text/plain</type>
            <size>41151</size>
            <attacher name="Trey Matteson">trey</attacher>
            
              <data encoding="base64">SW5kZXg6IENoYW5nZUxvZwo9PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09ClJDUyBmaWxlOiAvY3ZzL3Jvb3QvV2ViS2l0L0No
YW5nZUxvZyx2CnJldHJpZXZpbmcgcmV2aXNpb24gMS4zMjYxCmRpZmYgLXAgLXUgLXIxLjMyNjEg
Q2hhbmdlTG9nCi0tLSBDaGFuZ2VMb2cJMjcgSnVsIDIwMDUgMDI6MDE6MDAgLTAwMDAJMS4zMjYx
CisrKyBDaGFuZ2VMb2cJMjcgSnVsIDIwMDUgMTk6MDk6NDcgLTAwMDAKQEAgLTEsMyArMSw4MSBA
QAorMjAwNS0wNy0yNyAgVHJleSBNYXR0ZXNvbiAgPHRyZXlAdXNhLm5ldD4KKworICAgICAgICBS
ZXZpZXdlZCBieSBKb2huIFN1bGxpdmFuLgorCisgICAgICAgIEZpeGVkIGh0dHA6Ly9idWd6aWxs
YS5vcGVuZGFyd2luLm9yZy9zaG93X2J1Zy5jZ2k/aWQ9NDAxNQorICAgICAgICAgIFBERiB2aWV3
cyBzaG91bGQgcmVtZW1iZXIgdmlld2luZyBtb2RlLCBzY3JvbGwgcG9zaXRpb24gYWNyb3NzIGJh
Y2svZm9yd2FyZAorICAgICAgICAgIE5vdGUgdGhpcyBkb2Vzbid0IHdvcmsgd2l0aGluIGZyYW1l
cyBiZWNhdXNlIG9mIGEgUERGS2l0IGJ1ZyAtIHNlZSA0MTY0CisgICAgICAgIEZpeGVkIGh0dHA6
Ly9idWd6aWxsYS5vcGVuZGFyd2luLm9yZy9zaG93X2J1Zy5jZ2k/aWQ9NDA5MQorICAgICAgICAg
IFBERiB2aWV3cyBzaG91bGQga2VlcCBhIHNlcGFyYXRlIHNjYWxpbmcgZmFjdG9yIGZyb20gc2hh
cmVkIHRleHQgc2NhbGluZyBmYWN0b3IKKworICAgICAgICBCYXNpYyBpZGVhICMxIGlzIHRoYXQg
d2Ugbm93IGhhdmUgYSBnZW5lcmFsIG1lY2hhbmlzbSBmb3IgYSBXZWJEb2NWaWV3IHRvIHNhdmUv
cmVzdG9yZSBzb21lIFVJCisgICAgICAgIHN0YXRlIHRvIHRoZSBXZWJIaXN0b3J5SXRlbS4KKyAg
ICAgICAgQmFzaWMgaWRlYSAjMiBpcyB0aGF0IF9XZWJEb2N1bWVudFRleHRTaXppbmcgaXMgZXhw
YW5kZWQgdG8gYWxsb3cgZm9yIHRoZSBjYXNlIG9mIGEgV2ViRG9jVmlldworICAgICAgICBrZWVw
aW5nIGl0cyBvd24gbm90aW9uIG9mIGEgc2NhbGluZyBmYWN0b3IuICBXZWJQREZWaWV3J3MgLV90
cmFja3NDb21tb25TaXplRmFjdG9yIGhhcyBqdXN0aWZpY2F0aW9uLgorCisgICAgICAgICogSGlz
dG9yeS5zdWJwcm9qL1dlYkhpc3RvcnlJdGVtLm06CisgICAgICAgICgtW1dlYkhpc3RvcnlJdGVt
IHNldFZpZXdTdGF0ZTpdKTogIE5ldyBtZXRob2RzIHRvIGhvbGQgUExpc3Qgb2YgYXJiaXRyYXJ5
IFdlYlZpZXcgc3RhdGUKKyAgICAgICAgKC1bV2ViSGlzdG9yeUl0ZW0gdmlld1N0YXRlXSk6Cisg
ICAgICAgICogSGlzdG9yeS5zdWJwcm9qL1dlYkhpc3RvcnlJdGVtUHJpdmF0ZS5oOgorICAgICAg
ICAqIFdlYktpdC54Y29kZXByb2ovcHJvamVjdC5wYnhwcm9qOiAgQWRkIFF1YXJ0eiB0byBmcmFt
ZXdvcmsgcGF0aCBzbyB3ZSBjYW4gaW1wb3J0IFBERktpdCBmaWxlcworICAgICAgICAqIFdlYlZp
ZXcuc3VicHJvai9XZWJEb2N1bWVudEludGVybmFsLmg6ICBOZXcgbWV0aG9kcyBhZGRlZCB0byBf
V2ViRG9jdW1lbnRUZXh0U2l6aW5nLgorICAgICAgICAgIEFsc28gdGhlIF8gcHJlZml4IGlzIHN1
ZmZpY2llbnQgaW5zdGVhZCBvZiBfd2ViX1dlYkRvY3VtZW50VGV4dFNpemluZy4KKyAgICAgICAg
ICBBZGRlZCBfV2ViRG9jdW1lbnRWaWV3U3RhdGUgcHJvdG9jb2wuCisgICAgICAgICogV2ViVmll
dy5zdWJwcm9qL1dlYkZyYW1lLm06CisgICAgICAgICgtW1dlYkZyYW1lIF9jcmVhdGVJdGVtVHJl
ZVdpdGhUYXJnZXRGcmFtZTpjbGlwcGVkQXRUYXJnZXQ6XSk6ICBSZW5hbWUgb2Ygc2F2ZS9yZXN0
b3JlIG1ldGhvZHMuCisgICAgICAgICgtW1dlYkZyYW1lIF9kZXRhY2hGcm9tUGFyZW50XSk6ICBE
aXR0bworICAgICAgICAoLVtXZWJGcmFtZSBfdHJhbnNpdGlvblRvQ29tbWl0dGVkOl0pOiAgRGl0
dG8KKyAgICAgICAgKC1bV2ViRnJhbWUgX2NoZWNrTG9hZENvbXBsZXRlRm9yVGhpc0ZyYW1lXSk6
ICBEaXR0bworICAgICAgICAoLVtXZWJGcmFtZSBfbG9hZEl0ZW06d2l0aExvYWRUeXBlOl0pOiAg
RGl0dG8KKyAgICAgICAgKC1bV2ViRnJhbWUgX3JlY3Vyc2l2ZUdvVG9JdGVtOmZyb21JdGVtOndp
dGhMb2FkVHlwZTpdKTogIERpdHRvCisgICAgICAgICgtW1dlYkZyYW1lIF9zYXZlVmlld1N0YXRl
VG9JdGVtOl0pOiAgQ2FsbCBkb2MgdmlldyB0byByZXRyaWV2ZSB2aWV3IHN0YXRlLgorICAgICAg
ICAoLVtXZWJGcmFtZSBfcmVzdG9yZVZpZXdTdGF0ZV0pOiAgQ2FsbCBkb2MgdmlldyB0byBzZXQg
dmlldyBzdGF0ZS4KKyAgICAgICAgKC1bV2ViRnJhbWUgX3Njcm9sbFRvVG9wXSk6ICBOdWtlZCBk
ZWFkIGNvZGUuCisgICAgICAgICgtW1dlYkZyYW1lIF90ZXh0U2l6ZU11bHRpcGxpZXJDaGFuZ2Vk
XSk6ICBUaGlzIHdvcmsgbm93IGFwcGVhcnMgaW4gV2ViVmlldy4KKyAgICAgICAgKC1bV2ViRnJh
bWUgX3NhdmVEb2N1bWVudEFuZFNjcm9sbFN0YXRlXSk6ICBTYW1lIHJlbmFtZSwgb25lIGNvZGUg
Y2xlYW51cC4KKyAgICAgICAgKC1bV2ViRnJhbWUgX2FjY3VtdWxhdGVEb2N1bWVudFZpZXdzOl0p
OiBBZGQgb3VyIGRvY3ZpZXcgdG8gdGhlIGFycmF5LCBjYWxsIGtpZHMuCisgICAgICAgICgtW1dl
YkZyYW1lIF9kb2N1bWVudFZpZXdzXSk6ICBOZXcgaGVscGVyIHRvIHJldHVybiBhbGwgZG9jdmll
d3MuCisgICAgICAgICgtW1dlYkZyYW1lIF9kaWRGaXJzdExheW91dF0pOiAgU2FtZSBuYW1lIGNo
YW5nZS4KKyAgICAgICAgKiBXZWJWaWV3LnN1YnByb2ovV2ViRnJhbWVJbnRlcm5hbC5oOgorICAg
ICAgICAqIFdlYlZpZXcuc3VicHJvai9XZWJGcmFtZVByaXZhdGUuaDoKKyAgICAgICAgKiBXZWJW
aWV3LnN1YnByb2ovV2ViSFRNTFZpZXcubTogIFJlbW92ZWQgcmVkdW5kYW50IGNhdGVnb3J5IGRl
Y2wuCisgICAgICAgICgtW1dlYkhUTUxWaWV3IF9tYWtlVGV4dFNtYWxsZXI6XSk6ICBJbXBsZW1l
bnQgbmV3IHByb3RvY29sLgorICAgICAgICAoLVtXZWJIVE1MVmlldyBfbWFrZVRleHRMYXJnZXI6
XSk6CisgICAgICAgICgtW1dlYkhUTUxWaWV3IF9tYWtlVGV4dFN0YW5kYXJkU2l6ZTpdKToKKyAg
ICAgICAgKC1bV2ViSFRNTFZpZXcgX3RyYWNrc0NvbW1vblNpemVGYWN0b3JdKToKKyAgICAgICAg
KiBXZWJWaWV3LnN1YnByb2ovV2ViUERGUmVwcmVzZW50YXRpb24ubTogIFR3ZWFrICNpbXBvcnRz
LgorICAgICAgICAqIFdlYlZpZXcuc3VicHJvai9XZWJQREZWaWV3Lmg6CisgICAgICAgICogV2Vi
Vmlldy5zdWJwcm9qL1dlYlBERlZpZXcubToKKyAgICAgICAgKC1bV2ViUERGVmlldyBfbWVudUl0
ZW1zRnJvbVBERktpdEZvckV2ZW50Ol0pOiAgTm8gbG9uZ2VyIGludGVyY2VwdCBjb250ZXh0IG1l
bnUgdGV4dCBzaXppbmcgaXRlbXMuCisgICAgICAgICgtW1dlYlBERlZpZXcgc2V0RGF0YVNvdXJj
ZTpdKTogIE5vIGxvbmdlciB0cmFjayB0aGUgV2ViVmlldydzIHNjYWxpbmcgZmFjdG9yLgorICAg
ICAgICAoLVtXZWJQREZWaWV3IHNjcm9sbFBvaW50XSk6ICBEaWcgdGhyb3VnaCBQREZLaXQgdmll
dyB0cmVlIHRvIGdldCByZWFsIHNjcm9sbCBwb3NpdGlvbgorICAgICAgICAoLVtXZWJQREZWaWV3
IHNldFNjcm9sbFBvaW50Ol0pOiAgRGl0dG8KKyAgICAgICAgKC1bV2ViUERGVmlldyB2aWV3U3Rh
dGVdKTogIFJldHVybiBidW5kbGUgb2Ygdmlld2luZyBwYXJhbXMKKyAgICAgICAgKC1bV2ViUERG
VmlldyBzZXRWaWV3U3RhdGU6XSk6ICBSZXN0b3JlIGJ1bmRsZSBvZiB2aWV3aW5nIHBhcmFtcwor
ICAgICAgICAoLVtXZWJQREZWaWV3IF9tYWtlVGV4dFNtYWxsZXI6XSk6ICBJbXBsZW1lbnQgbmV3
IHRleHQgc2l6aW5nIHByb3RvY29sCisgICAgICAgICgtW1dlYlBERlZpZXcgX21ha2VUZXh0TGFy
Z2VyOl0pOgorICAgICAgICAoLVtXZWJQREZWaWV3IF9tYWtlVGV4dFN0YW5kYXJkU2l6ZTpdKToK
KyAgICAgICAgKC1bV2ViUERGVmlldyBfdHJhY2tzQ29tbW9uU2l6ZUZhY3Rvcl0pOgorICAgICAg
ICAoLVtXZWJQREZWaWV3IF9jYW5NYWtlVGV4dFNtYWxsZXJdKToKKyAgICAgICAgKC1bV2ViUERG
VmlldyBfY2FuTWFrZVRleHRMYXJnZXJdKToKKyAgICAgICAgKC1bV2ViUERGVmlldyBfY2FuTWFr
ZVRleHRTdGFuZGFyZFNpemVdKToKKyAgICAgICAgKiBXZWJWaWV3LnN1YnByb2ovV2ViVGV4dFZp
ZXcubToKKyAgICAgICAgKC1bV2ViVGV4dFZpZXcgX21ha2VUZXh0U21hbGxlcjpdKTogIEltcGxl
bWVudCBuZXcgdGV4dCBzaXppbmcgcHJvdG9jb2wKKyAgICAgICAgKC1bV2ViVGV4dFZpZXcgX21h
a2VUZXh0TGFyZ2VyOl0pOgorICAgICAgICAoLVtXZWJUZXh0VmlldyBfbWFrZVRleHRTdGFuZGFy
ZFNpemU6XSk6CisgICAgICAgICgtW1dlYlRleHRWaWV3IF90cmFja3NDb21tb25TaXplRmFjdG9y
XSk6CisgICAgICAgICogV2ViVmlldy5zdWJwcm9qL1dlYlZpZXcubToKKyAgICAgICAgKC1bV2Vi
VmlldyBzZXRUZXh0U2l6ZU11bHRpcGxpZXI6XSk6ICBDYWxsaW5nIGRvY1ZpZXdzIGlzIG5vdyBt
b3JlIGNvbXBsaWNhdGVzIHRoYW4ganVzdCBwb3N0aW5nCisgICAgICAgICAgIGEgbm90aWZpY2F0
aW9uIHRvIHRoZSBmcmFtZS4KKyAgICAgICAgKC1bV2ViVmlldyBfcGVyZm9ybVRleHRTaXppbmdT
ZWxlY3Rvcjp3aXRoT2JqZWN0Om9uVHJhY2tpbmdEb2NzOnNlbEZvck5vblRyYWNraW5nRG9jczpd
KTogIFdvcmtob3JzZQorICAgICAgICAgICB0aGF0IHNlbmRzIHRoZSB0ZXh0IHNpemluZyBtZXRo
b2QgdG8gdGhlIHJpZ2h0IGRvYyB2aWV3cy4KKyAgICAgICAgKC1bV2ViVmlldyBjYW5NYWtlVGV4
dFNtYWxsZXJdKTogIENhbGwgd29ya2hvcnNlLgorICAgICAgICAoLVtXZWJWaWV3IGNhbk1ha2VU
ZXh0TGFyZ2VyXSk6ICBEaXR0bworICAgICAgICAoLVtXZWJWaWV3IG1ha2VUZXh0U21hbGxlcjpd
KTogIERpdHRvCisgICAgICAgICgtW1dlYlZpZXcgbWFrZVRleHRMYXJnZXI6XSk6ICBEaXR0bwor
ICAgICAgICAoLVtXZWJWaWV3IGNhbk1ha2VUZXh0U3RhbmRhcmRTaXplXSk6ICBEaXR0bworICAg
ICAgICAoLVtXZWJWaWV3IG1ha2VUZXh0U3RhbmRhcmRTaXplOl0pOiAgRGl0dG8KKwogMjAwNS0w
Ny0yNiAgSnVzdGluIEdhcmNpYSAgPGp1c3Rpbi5nYXJjaWFAYXBwbGUuY29tPgogCiAgICAgICAg
IFBhdGNoIGJ5IFRyZXkgTWF0dGVzb24gPHRyZXlAdXNhLm5ldD4KSW5kZXg6IC4vSGlzdG9yeS5z
dWJwcm9qL1dlYkhpc3RvcnlJdGVtLm0KPT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PQpSQ1MgZmlsZTogL2N2cy9yb290L1dl
YktpdC9IaXN0b3J5LnN1YnByb2ovV2ViSGlzdG9yeUl0ZW0ubSx2CnJldHJpZXZpbmcgcmV2aXNp
b24gMS45MQpkaWZmIC1wIC11IC1yMS45MSAuL0hpc3Rvcnkuc3VicHJvai9XZWJIaXN0b3J5SXRl
bS5tCi0tLSAuL0hpc3Rvcnkuc3VicHJvai9XZWJIaXN0b3J5SXRlbS5tCTE0IEp1bCAyMDA1IDAy
OjQzOjUxIC0wMDAwCTEuOTEKKysrIC4vSGlzdG9yeS5zdWJwcm9qL1dlYkhpc3RvcnlJdGVtLm0J
MjcgSnVsIDIwMDUgMTk6MDk6NTAgLTAwMDAKQEAgLTc5LDYgKzc5LDcgQEAgTlNTdHJpbmcgKldl
Ykhpc3RvcnlJdGVtQ2hhbmdlZE5vdGlmaWNhdAogICAgIE5TU3RyaW5nICpmb3JtUmVmZXJyZXI7
CiAgICAgLy8gaW5mbyB1c2VkIHRvIHN1cHBvcnQgUlNTIGZlZWRzCiAgICAgTlNTdHJpbmcgKlJT
U0ZlZWRSZWZlcnJlcjsKKyAgICBpZCB2aWV3U3RhdGU7CiB9CiBAZW5kCiAKQEAgLTQzMCw2ICs0
MzEsMTggQEAgTlNTdHJpbmcgKldlYkhpc3RvcnlJdGVtQ2hhbmdlZE5vdGlmaWNhdAogICAgIF9w
cml2YXRlLT5zY3JvbGxQb2ludCA9IHNjcm9sbFBvaW50OwogfQogCistICh2b2lkKXNldFZpZXdT
dGF0ZTooaWQpc3RhdGVQTGlzdDsKK3sKKyAgICBpZCBjb3B5ID0gW3N0YXRlUExpc3QgY29weV07
CisgICAgW19wcml2YXRlLT52aWV3U3RhdGUgcmVsZWFzZV07CisgICAgX3ByaXZhdGUtPnZpZXdT
dGF0ZSA9IGNvcHk7Cit9CisKKy0gKGlkKXZpZXdTdGF0ZQoreworICAgIHJldHVybiBfcHJpdmF0
ZS0+dmlld1N0YXRlOworfQorCiAtIChCT09MKWlzVGFyZ2V0SXRlbQogewogICAgIHJldHVybiBf
cHJpdmF0ZS0+aXNUYXJnZXRJdGVtOwpJbmRleDogLi9IaXN0b3J5LnN1YnByb2ovV2ViSGlzdG9y
eUl0ZW1Qcml2YXRlLmgKPT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PQpSQ1MgZmlsZTogL2N2cy9yb290L1dlYktpdC9IaXN0
b3J5LnN1YnByb2ovV2ViSGlzdG9yeUl0ZW1Qcml2YXRlLmgsdgpyZXRyaWV2aW5nIHJldmlzaW9u
IDEuMTQKZGlmZiAtcCAtdSAtcjEuMTQgLi9IaXN0b3J5LnN1YnByb2ovV2ViSGlzdG9yeUl0ZW1Q
cml2YXRlLmgKLS0tIC4vSGlzdG9yeS5zdWJwcm9qL1dlYkhpc3RvcnlJdGVtUHJpdmF0ZS5oCTUg
SnVuIDIwMDUgMTc6NTQ6MjMgLTAwMDAJMS4xNAorKysgLi9IaXN0b3J5LnN1YnByb2ovV2ViSGlz
dG9yeUl0ZW1Qcml2YXRlLmgJMjcgSnVsIDIwMDUgMTk6MDk6NTAgLTAwMDAKQEAgLTU3LDYgKzU3
LDcgQEAKIC0gKE5TU3RyaW5nICopZm9ybVJlZmVycmVyOwogLSAoTlNTdHJpbmcgKilSU1NGZWVk
UmVmZXJyZXI7CiAtIChpbnQpdmlzaXRDb3VudDsKKy0gKGlkKXZpZXdTdGF0ZTsKIAogLSAodm9p
ZClfbWVyZ2VBdXRvQ29tcGxldGVIaW50czooV2ViSGlzdG9yeUl0ZW0gKilvdGhlckl0ZW07CiAK
QEAgLTcyLDYgKzczLDcgQEAKIC0gKHZvaWQpX3NldEZvcm1JbmZvRnJvbVJlcXVlc3Q6KE5TVVJM
UmVxdWVzdCAqKXJlcXVlc3Q7CiAtICh2b2lkKXNldFJTU0ZlZWRSZWZlcnJlcjooTlNTdHJpbmcg
KilyZWZlcnJlcjsKIC0gKHZvaWQpc2V0VmlzaXRDb3VudDooaW50KWNvdW50OworLSAodm9pZClz
ZXRWaWV3U3RhdGU6KGlkKXN0YXRlUExpc3Q7CiAKIC0gKE5TQXJyYXkgKiljaGlsZHJlbjsKIC0g
KHZvaWQpYWRkQ2hpbGRJdGVtOihXZWJIaXN0b3J5SXRlbSAqKWl0ZW07CkluZGV4OiAuL1dlYktp
dC54Y29kZXByb2ovcHJvamVjdC5wYnhwcm9qCj09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT0KUkNTIGZpbGU6IC9jdnMvcm9v
dC9XZWJLaXQvV2ViS2l0Lnhjb2RlcHJvai9wcm9qZWN0LnBieHByb2osdgpyZXRyaWV2aW5nIHJl
dmlzaW9uIDEuMQpkaWZmIC1wIC11IC1yMS4xIC4vV2ViS2l0Lnhjb2RlcHJvai9wcm9qZWN0LnBi
eHByb2oKLS0tIC4vV2ViS2l0Lnhjb2RlcHJvai9wcm9qZWN0LnBieHByb2oJMjEgSnVsIDIwMDUg
MjA6MjQ6MzcgLTAwMDAJMS4xCisrKyAuL1dlYktpdC54Y29kZXByb2ovcHJvamVjdC5wYnhwcm9q
CTI3IEp1bCAyMDA1IDE5OjA5OjU5IC0wMDAwCkBAIC0xODQ3LDYgKzE4NDcsNyBAQAogCQkJCQkv
U3lzdGVtL0xpYnJhcnkvRnJhbWV3b3Jrcy9XZWJLaXQuZnJhbWV3b3JrL0ZyYW1ld29ya3MsCiAJ
CQkJCS9TeXN0ZW0vTGlicmFyeS9GcmFtZXdvcmtzL0FwcGxpY2F0aW9uU2VydmljZXMuZnJhbWV3
b3JrL0ZyYW1ld29ya3MsCiAJCQkJCSIkKFNZU1RFTV9MSUJSQVJZX0RJUikvRnJhbWV3b3Jrcy9D
YXJib24uZnJhbWV3b3JrL0ZyYW1ld29ya3MiLAorCQkJCQkvU3lzdGVtL0xpYnJhcnkvRnJhbWV3
b3Jrcy9RdWFydHouZnJhbWV3b3JrL0ZyYW1ld29ya3MsCiAJCQkJCS9TeXN0ZW0vTGlicmFyeS9Q
cml2YXRlRnJhbWV3b3JrcywKIAkJCQkpOwogCQkJCUdDQ19FTkFCTEVfT0JKQ19HQyA9IFlFUzsK
QEAgLTE5MDksNiArMTkxMCw3IEBACiAJCQkJCS9TeXN0ZW0vTGlicmFyeS9GcmFtZXdvcmtzL1dl
YktpdC5mcmFtZXdvcmsvRnJhbWV3b3JrcywKIAkJCQkJL1N5c3RlbS9MaWJyYXJ5L0ZyYW1ld29y
a3MvQXBwbGljYXRpb25TZXJ2aWNlcy5mcmFtZXdvcmsvRnJhbWV3b3JrcywKIAkJCQkJIiQoU1lT
VEVNX0xJQlJBUllfRElSKS9GcmFtZXdvcmtzL0NhcmJvbi5mcmFtZXdvcmsvRnJhbWV3b3JrcyIs
CisJCQkJCS9TeXN0ZW0vTGlicmFyeS9GcmFtZXdvcmtzL1F1YXJ0ei5mcmFtZXdvcmsvRnJhbWV3
b3JrcywKIAkJCQkJL1N5c3RlbS9MaWJyYXJ5L1ByaXZhdGVGcmFtZXdvcmtzLAogCQkJCSk7CiAJ
CQkJR0NDX0VOQUJMRV9PQkpDX0dDID0gWUVTOwpAQCAtMTk3MCw2ICsxOTcyLDcgQEAKIAkJCQkJ
L1N5c3RlbS9MaWJyYXJ5L0ZyYW1ld29ya3MvV2ViS2l0LmZyYW1ld29yay9GcmFtZXdvcmtzLAog
CQkJCQkvU3lzdGVtL0xpYnJhcnkvRnJhbWV3b3Jrcy9BcHBsaWNhdGlvblNlcnZpY2VzLmZyYW1l
d29yay9GcmFtZXdvcmtzLAogCQkJCQkiJChTWVNURU1fTElCUkFSWV9ESVIpL0ZyYW1ld29ya3Mv
Q2FyYm9uLmZyYW1ld29yay9GcmFtZXdvcmtzIiwKKwkJCQkJL1N5c3RlbS9MaWJyYXJ5L0ZyYW1l
d29ya3MvUXVhcnR6LmZyYW1ld29yay9GcmFtZXdvcmtzLAogCQkJCQkvU3lzdGVtL0xpYnJhcnkv
UHJpdmF0ZUZyYW1ld29ya3MsCiAJCQkJKTsKIAkJCQlHQ0NfRU5BQkxFX09CSkNfR0MgPSBZRVM7
CkBAIC0yMDMyLDYgKzIwMzUsNyBAQAogCQkJCQkvU3lzdGVtL0xpYnJhcnkvRnJhbWV3b3Jrcy9X
ZWJLaXQuZnJhbWV3b3JrL0ZyYW1ld29ya3MsCiAJCQkJCS9TeXN0ZW0vTGlicmFyeS9GcmFtZXdv
cmtzL0FwcGxpY2F0aW9uU2VydmljZXMuZnJhbWV3b3JrL0ZyYW1ld29ya3MsCiAJCQkJCSIkKFNZ
U1RFTV9MSUJSQVJZX0RJUikvRnJhbWV3b3Jrcy9DYXJib24uZnJhbWV3b3JrL0ZyYW1ld29ya3Mi
LAorCQkJCQkvU3lzdGVtL0xpYnJhcnkvRnJhbWV3b3Jrcy9RdWFydHouZnJhbWV3b3JrL0ZyYW1l
d29ya3MsCiAJCQkJCS9TeXN0ZW0vTGlicmFyeS9Qcml2YXRlRnJhbWV3b3JrcywKIAkJCQkpOwog
CQkJCUdDQ19FTkFCTEVfT0JKQ19HQyA9IFlFUzsKSW5kZXg6IC4vV2ViVmlldy5zdWJwcm9qL1dl
YkRvY3VtZW50SW50ZXJuYWwuaAo9PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09ClJDUyBmaWxlOiAvY3ZzL3Jvb3QvV2ViS2l0
L1dlYlZpZXcuc3VicHJvai9XZWJEb2N1bWVudEludGVybmFsLmgsdgpyZXRyaWV2aW5nIHJldmlz
aW9uIDEuOQpkaWZmIC1wIC11IC1yMS45IC4vV2ViVmlldy5zdWJwcm9qL1dlYkRvY3VtZW50SW50
ZXJuYWwuaAotLS0gLi9XZWJWaWV3LnN1YnByb2ovV2ViRG9jdW1lbnRJbnRlcm5hbC5oCTE4IEp1
bCAyMDA1IDE4OjAyOjIxIC0wMDAwCTEuOQorKysgLi9XZWJWaWV3LnN1YnByb2ovV2ViRG9jdW1l
bnRJbnRlcm5hbC5oCTI3IEp1bCAyMDA1IDE5OjA5OjU5IC0wMDAwCkBAIC0yOSwxNiArMjksMjcg
QEAKICNpbXBvcnQgPFdlYktpdC9XZWJEb2N1bWVudFByaXZhdGUuaD4KIAogLyohCi1AcHJvdG9j
b2wgX3dlYl9XZWJEb2N1bWVudFRleHRTaXppbmcKLUBkaXNjdXNzaW9uIE9wdGlvbmFsIHByb3Rv
Y29sIGZvciBtYWtpbmcgdGV4dCBsYXJnZXIgYW5kIHNtYWxsZXIgCitAcHJvdG9jb2wgX1dlYkRv
Y3VtZW50VGV4dFNpemluZworQGRpc2N1c3Npb24gT3B0aW9uYWwgcHJvdG9jb2wgZm9yIG1ha2lu
ZyB0ZXh0IGxhcmdlciBhbmQgc21hbGxlci4KICovCi1AcHJvdG9jb2wgX3dlYl9XZWJEb2N1bWVu
dFRleHRTaXppbmcgPE5TT2JqZWN0PgorQHByb3RvY29sIF9XZWJEb2N1bWVudFRleHRTaXppbmcg
PE5TT2JqZWN0PgorCisvLyBNZXRob2RzIHRvIHBlcmZvcm0gdGhlIGFjdHVhbCBjb21tYW5kcwor
LSAoSUJBY3Rpb24pX21ha2VUZXh0U21hbGxlcjooaWQpc2VuZGVyOworLSAoSUJBY3Rpb24pX21h
a2VUZXh0TGFyZ2VyOihpZClzZW5kZXI7CistIChJQkFjdGlvbilfbWFrZVRleHRTdGFuZGFyZFNp
emU6KGlkKXNlbmRlcjsKKworLy8gVmlld3MgdGhhdCBkbyB0ZXh0IHNpemluZyBjb21lIGluIHR3
byBmbGF2b3JzLiAgU29tZSB3aWxsIHRyYWNrIHRoZSBjb21tb24gdGV4dFNpemVNdWx0aXBsaWVy
IGZhY3RvciBzdG9yZWQKKy8vIGluIHRoZSBXZWJWaWV3LiAgT3RoZXJzIChzZWUgUERGVmlldykg
a2VlcCB0aGVpciBvd24gc2NhbGluZyBmYWN0b3IsIGJ1dCBzdGlsbCB3YW50IHRvIHBsYXkgYWxv
bmcgbG9vc2VseQorLy8gd2l0aCB0aGUgc21hbGxlci9sYXJnZXIgY29tbWFuZHMsIHdoaWNoIGlu
IHRoZSB1c2VyIG1vZGVsIG9wZXJhdGUgYWNyb3NzIGFsbCBmcmFtZXMgb2YgdGhlIFdlYlZpZXcu
CistIChCT09MKV90cmFja3NDb21tb25TaXplRmFjdG9yOworCisvLyBWaWV3cyB0aGF0IGRvIG5v
dCB0cmFjayB0aGUgY29tbW9uIHNpemUgZmFjdG9yIG11c3QgYW5zd2VyIGZvciB0aGVtc2VsdmVz
IGlmIHRoZXkgYXJlIGFibGUgdG8gem9vbSBpbgorLy8gb3Igb3V0LiAgVmlld3MgdGhhdCBkbyB0
cmFjayBpdCBhcmUgbm90IHNlbnQgdGhlc2UgbWVzc2FnZXMuCistIChCT09MKV9jYW5NYWtlVGV4
dFNtYWxsZXI7CistIChCT09MKV9jYW5NYWtlVGV4dExhcmdlcjsKKy0gKEJPT0wpX2Nhbk1ha2VU
ZXh0U3RhbmRhcmRTaXplOwogCi0vKiEKLUBtZXRob2QgX3dlYl90ZXh0U2l6ZU11bHRpcGxpZXJD
aGFuZ2VkCi1AYWJzdHJhY3QgQ2FsbGVkIHdoZW4gdGhlIHRleHQgc2l6ZSBtdWx0aXBsaWVyIGhh
cyBiZWVuIGNoYW5nZWQuIC1bV2ViVmlldyB0ZXh0U2l6ZU11bHRpcGxpZXJdIHJldHVybnMgdGhl
IGN1cnJlbnQgdmFsdWUuCi0qLwotLSAodm9pZClfd2ViX3RleHRTaXplTXVsdGlwbGllckNoYW5n
ZWQ7CiBAZW5kCiAKIEBwcm90b2NvbCBXZWJEb2N1bWVudERyYWdnaW5nIDxOU09iamVjdD4KQEAg
LTUwLDMgKzYxLDExIEBACiBAcHJvdG9jb2wgV2ViRG9jdW1lbnRFbGVtZW50IDxOU09iamVjdD4K
IC0gKE5TRGljdGlvbmFyeSAqKWVsZW1lbnRBdFBvaW50OihOU1BvaW50KXBvaW50OwogQGVuZAor
CisvKiBVc2VkIHRvIHNhdmUgYW5kIHJlc3RvcmUgc3RhdGUgaW4gdGhlIHZpZXcsIHR5cGljYWxs
eSB3aGVuIGdvaW5nIGJhY2svZm9yd2FyZCAqLworQHByb3RvY29sIF9XZWJEb2N1bWVudFZpZXdT
dGF0ZSA8TlNPYmplY3Q+CistIChOU1BvaW50KXNjcm9sbFBvaW50OworLSAodm9pZClzZXRTY3Jv
bGxQb2ludDooTlNQb2ludClwOworLSAoaWQpdmlld1N0YXRlOworLSAodm9pZClzZXRWaWV3U3Rh
dGU6KGlkKXN0YXRlUExpc3Q7CitAZW5kCkluZGV4OiAuL1dlYlZpZXcuc3VicHJvai9XZWJGcmFt
ZS5tCj09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT0KUkNTIGZpbGU6IC9jdnMvcm9vdC9XZWJLaXQvV2ViVmlldy5zdWJwcm9q
L1dlYkZyYW1lLm0sdgpyZXRyaWV2aW5nIHJldmlzaW9uIDEuMjQ1CmRpZmYgLXAgLXUgLXIxLjI0
NSAuL1dlYlZpZXcuc3VicHJvai9XZWJGcmFtZS5tCi0tLSAuL1dlYlZpZXcuc3VicHJvai9XZWJG
cmFtZS5tCTI3IEp1bCAyMDA1IDAyOjAxOjAzIC0wMDAwCTEuMjQ1CisrKyAuL1dlYlZpZXcuc3Vi
cHJvai9XZWJGcmFtZS5tCTI3IEp1bCAyMDA1IDE5OjEwOjAyIC0wMDAwCkBAIC0xNzYsOCArMTc2
LDggQEAgTlNTdHJpbmcgKldlYlBhZ2VDYWNoZURvY3VtZW50Vmlld0tleSA9IAogLSAodm9pZClf
bG9hZEhUTUxTdHJpbmc6KE5TU3RyaW5nICopc3RyaW5nIGJhc2VVUkw6KE5TVVJMICopVVJMIHVu
cmVhY2hhYmxlVVJMOihOU1VSTCAqKXVucmVhY2hhYmxlVVJMOwogLSAoTlNEaWN0aW9uYXJ5ICop
X2FjdGlvbkluZm9ybWF0aW9uRm9yTG9hZFR5cGU6KFdlYkZyYW1lTG9hZFR5cGUpbG9hZFR5cGUg
aXNGb3JtU3VibWlzc2lvbjooQk9PTClpc0Zvcm1TdWJtaXNzaW9uIGV2ZW50OihOU0V2ZW50ICop
ZXZlbnQgb3JpZ2luYWxVUkw6KE5TVVJMICopVVJMOwogCi0tICh2b2lkKV9zYXZlU2Nyb2xsUG9z
aXRpb25Ub0l0ZW06KFdlYkhpc3RvcnlJdGVtICopaXRlbTsKLS0gKHZvaWQpX3Jlc3RvcmVTY3Jv
bGxQb3NpdGlvbjsKKy0gKHZvaWQpX3NhdmVWaWV3U3RhdGVUb0l0ZW06KFdlYkhpc3RvcnlJdGVt
ICopaXRlbTsKKy0gKHZvaWQpX3Jlc3RvcmVWaWV3U3RhdGU7CiAKIC0gKFdlYkhpc3RvcnlJdGVt
ICopX2NyZWF0ZUl0ZW06IChCT09MKXVzZU9yaWdpbmFsOwogLSAoV2ViSGlzdG9yeUl0ZW0gKilf
Y3JlYXRlSXRlbVRyZWVXaXRoVGFyZ2V0RnJhbWU6KFdlYkZyYW1lICopdGFyZ2V0RnJhbWUgY2xp
cHBlZEF0VGFyZ2V0OihCT09MKWRvQ2xpcDsKQEAgLTQ0Myw3ICs0NDMsNyBAQCBOU1N0cmluZyAq
V2ViUGFnZUNhY2hlRG9jdW1lbnRWaWV3S2V5ID0gCiB7CiAgICAgV2ViSGlzdG9yeUl0ZW0gKmJm
SXRlbSA9IFtzZWxmIF9jcmVhdGVJdGVtOiBbc2VsZiBwYXJlbnRGcmFtZV0/WUVTOk5PXTsKIAot
ICAgIFtzZWxmIF9zYXZlU2Nyb2xsUG9zaXRpb25Ub0l0ZW06W19wcml2YXRlIHByZXZpb3VzSXRl
bV1dOworICAgIFtzZWxmIF9zYXZlVmlld1N0YXRlVG9JdGVtOltfcHJpdmF0ZSBwcmV2aW91c0l0
ZW1dXTsKICAgICBpZiAoIShkb0NsaXAgJiYgc2VsZiA9PSB0YXJnZXRGcmFtZSkpIHsKICAgICAg
ICAgLy8gc2F2ZSBmcmFtZSBzdGF0ZSBmb3IgaXRlbXMgdGhhdCBhcmVuJ3QgbG9hZGluZyAoa2h0
bWwgZG9lc24ndCBzYXZlIHRob3NlKQogICAgICAgICBbX3ByaXZhdGUtPmJyaWRnZSBzYXZlRG9j
dW1lbnRTdGF0ZV07CkBAIC02MDksNyArNjA5LDcgQEAgTlNTdHJpbmcgKldlYlBhZ2VDYWNoZURv
Y3VtZW50Vmlld0tleSA9IAogICAgIF9wcml2YXRlLT5icmlkZ2UgPSBuaWw7CiAKICAgICBbc2Vs
ZiBzdG9wTG9hZGluZ107Ci0gICAgW3NlbGYgX3NhdmVTY3JvbGxQb3NpdGlvblRvSXRlbTpbX3By
aXZhdGUgY3VycmVudEl0ZW1dXTsKKyAgICBbc2VsZiBfc2F2ZVZpZXdTdGF0ZVRvSXRlbTpbX3By
aXZhdGUgY3VycmVudEl0ZW1dXTsKIAogICAgIFticmlkZ2UgY2xvc2VVUkxdOwogCkBAIC03ODEs
NyArNzgxLDcgQEAgTlNTdHJpbmcgKldlYlBhZ2VDYWNoZURvY3VtZW50Vmlld0tleSA9IAogICAg
ICAgICAgICAgY2FzZSBXZWJGcmFtZUxvYWRUeXBlSW5kZXhlZEJhY2tGb3J3YXJkOgogICAgICAg
ICAgICAgICAgIGlmIChbW3NlbGYgd2ViVmlld10gYmFja0ZvcndhcmRMaXN0XSkgewogICAgICAg
ICAgICAgICAgICAgICAvLyBNdXN0IGdyYWIgdGhlIGN1cnJlbnQgc2Nyb2xsIHBvc2l0aW9uIGJl
Zm9yZSBkaXN0dXJiaW5nIGl0Ci0gICAgICAgICAgICAgICAgICAgIFtzZWxmIF9zYXZlU2Nyb2xs
UG9zaXRpb25Ub0l0ZW06W19wcml2YXRlIHByZXZpb3VzSXRlbV1dOworICAgICAgICAgICAgICAg
ICAgICBbc2VsZiBfc2F2ZVZpZXdTdGF0ZVRvSXRlbTpbX3ByaXZhdGUgcHJldmlvdXNJdGVtXV07
CiAgICAgICAgICAgICAgICAgICAgIAogICAgICAgICAgICAgICAgICAgICAvLyBDcmVhdGUgYSBk
b2N1bWVudCB2aWV3IGZvciB0aGlzIGRvY3VtZW50LCBvciB1c2VkIHRoZSBjYWNoZWQgdmlldy4K
ICAgICAgICAgICAgICAgICAgICAgaWYgKHBhZ2VDYWNoZSl7CkBAIC04MDIsNyArODAyLDcgQEAg
TlNTdHJpbmcgKldlYlBhZ2VDYWNoZURvY3VtZW50Vmlld0tleSA9IAogICAgICAgICAgICAgICAg
IC8vIEZJWE1FOiByancgc2V6IHRoaXMgY2FjaGUgY2xlYXJpbmcgaXMgbm8gbG9uZ2VyIG5lZWRl
ZAogICAgICAgICAgICAgICAgIFtjdXJySXRlbSBzZXRIYXNQYWdlQ2FjaGU6Tk9dOwogICAgICAg
ICAgICAgICAgIGlmIChsb2FkVHlwZSA9PSBXZWJGcmFtZUxvYWRUeXBlUmVsb2FkKSB7Ci0gICAg
ICAgICAgICAgICAgICAgIFtzZWxmIF9zYXZlU2Nyb2xsUG9zaXRpb25Ub0l0ZW06Y3Vyckl0ZW1d
OworICAgICAgICAgICAgICAgICAgICBbc2VsZiBfc2F2ZVZpZXdTdGF0ZVRvSXRlbTpjdXJySXRl
bV07CiAgICAgICAgICAgICAgICAgfQogICAgICAgICAgICAgICAgIE5TVVJMUmVxdWVzdCAqcmVx
dWVzdCA9IFtkcyByZXF1ZXN0XTsKICAgICAgICAgICAgICAgICBpZiAoW3JlcXVlc3QgX3dlYkRh
dGFSZXF1ZXN0VW5yZWFjaGFibGVVUkxdID09IG5pbCkgewpAQCAtMTE4MSw3ICsxMTgxLDcgQEAg
c3RhdGljIENGQWJzb2x1dGVUaW1lIF90aW1lT2ZMYXN0Q29tcGxldAogICAgICAgICAgICAgICAg
ICAgICBjYXNlIFdlYkZyYW1lTG9hZFR5cGVCYWNrOgogICAgICAgICAgICAgICAgICAgICBjYXNl
IFdlYkZyYW1lTG9hZFR5cGVJbmRleGVkQmFja0ZvcndhcmQ6CiAgICAgICAgICAgICAgICAgICAg
IGNhc2UgV2ViRnJhbWVMb2FkVHlwZVJlbG9hZDoKLSAgICAgICAgICAgICAgICAgICAgICAgIFtz
ZWxmIF9yZXN0b3JlU2Nyb2xsUG9zaXRpb25dOworICAgICAgICAgICAgICAgICAgICAgICAgW3Nl
bGYgX3Jlc3RvcmVWaWV3U3RhdGVdOwogICAgICAgICAgICAgICAgICAgICAgICAgYnJlYWs7CiAK
ICAgICAgICAgICAgICAgICAgICAgY2FzZSBXZWJGcmFtZUxvYWRUeXBlU3RhbmRhcmQ6CkBAIC0x
MzQ1LDcgKzEzNDUsNyBAQCBzdGF0aWMgQ0ZBYnNvbHV0ZVRpbWUgX3RpbWVPZkxhc3RDb21wbGV0
CiAgICAgICAgIFtzZWxmIF9sb2FkVVJMOml0ZW1VUkwgcmVmZXJyZXI6W1tbc2VsZiBkYXRhU291
cmNlXSByZXF1ZXN0XSBIVFRQUmVmZXJyZXJdIGxvYWRUeXBlOmxvYWRUeXBlIHRhcmdldDpuaWwg
dHJpZ2dlcmluZ0V2ZW50Om5pbCBmb3JtOm5pbCBmb3JtVmFsdWVzOm5pbF07CiAjZW5kaWYKICAg
ICAgICAgLy8gbXVzdCBkbyB0aGlzIG1haW50ZW5hbmNlIGhlcmUsIHNpbmNlIHdlIGRvbid0IGdv
IHRocm91Z2ggYSByZWFsIHBhZ2UgcmVsb2FkCi0gICAgICAgIFtzZWxmIF9zYXZlU2Nyb2xsUG9z
aXRpb25Ub0l0ZW06W19wcml2YXRlIGN1cnJlbnRJdGVtXV07CisgICAgICAgIFtzZWxmIF9zYXZl
Vmlld1N0YXRlVG9JdGVtOltfcHJpdmF0ZSBjdXJyZW50SXRlbV1dOwogICAgICAgICAvLyBGSVhN
RTogZm9ybSBzdGF0ZSBtaWdodCB3YW50IHRvIGJlIHNhdmVkIGhlcmUgdG9vCiAKICAgICAgICAg
Ly8gRklYTUU6IFBlcmhhcHMgd2UgY2FuIHVzZSBzY3JvbGxUb0FuY2hvcldpdGhVUkwgaGVyZSBp
bnN0ZWFkIGFuZCByZW1vdmUgdGhlIG9sZGVyIHNjcm9sbFRvQW5jaG9yOj8KQEAgLTEzNTUsNyAr
MTM1NSw3IEBAIHN0YXRpYyBDRkFic29sdXRlVGltZSBfdGltZU9mTGFzdENvbXBsZXQKICAgICAK
ICAgICAgICAgLy8gbXVzdCBkbyB0aGlzIG1haW50ZW5hbmNlIGhlcmUsIHNpbmNlIHdlIGRvbid0
IGdvIHRocm91Z2ggYSByZWFsIHBhZ2UgcmVsb2FkCiAgICAgICAgIFtfcHJpdmF0ZSBzZXRDdXJy
ZW50SXRlbTppdGVtXTsKLSAgICAgICAgW3NlbGYgX3Jlc3RvcmVTY3JvbGxQb3NpdGlvbl07Cisg
ICAgICAgIFtzZWxmIF9yZXN0b3JlVmlld1N0YXRlXTsKIAogICAgICAgICAvLyBGYWtlIHRoZSBV
UkwgY2hhbmdlIGJ5IHVwZGF0aW5nIHRoZSBkYXRhc291cmNlJ3MgcmVxdWVzdC4gIFRoaXMgd2ls
bCBubyBsb25nZXIKICAgICAgICAgLy8gYmUgbmVjZXNzYXJ5IGlmIHdlIGRvIHRoZSBiZXR0ZXIg
Zml4IGRlc2NyaWJlZCBhYm92ZS4KQEAgLTE0ODAsMTQgKzE0ODAsMTQgQEAgc3RhdGljIENGQWJz
b2x1dGVUaW1lIF90aW1lT2ZMYXN0Q29tcGxldAogICAgICAgICAvLyBTYXZlIGZvcm0gc3RhdGUg
KHdvcmtzIGZyb20gY3VycmVudEl0ZW0sIHNpbmNlIHByZXZJdGVtIGlzIG5pbCkKICAgICAgICAg
QVNTRVJUKCFbX3ByaXZhdGUgcHJldmlvdXNJdGVtXSk7CiAgICAgICAgIFtfcHJpdmF0ZS0+YnJp
ZGdlIHNhdmVEb2N1bWVudFN0YXRlXTsKLSAgICAgICAgW3NlbGYgX3NhdmVTY3JvbGxQb3NpdGlv
blRvSXRlbTpbX3ByaXZhdGUgY3VycmVudEl0ZW1dXTsKKyAgICAgICAgW3NlbGYgX3NhdmVWaWV3
U3RhdGVUb0l0ZW06W19wcml2YXRlIGN1cnJlbnRJdGVtXV07CiAgICAgICAgIAogICAgICAgICBb
X3ByaXZhdGUgc2V0Q3VycmVudEl0ZW06aXRlbV07CiAKICAgICAgICAgLy8gUmVzdG9yZSBmb3Jt
IHN0YXRlICh3b3JrcyBmcm9tIGN1cnJlbnRJdGVtKQogICAgICAgICBbX3ByaXZhdGUtPmJyaWRn
ZSByZXN0b3JlRG9jdW1lbnRTdGF0ZV07CiAgICAgICAgIC8vIFJlc3RvcmUgdGhlIHNjcm9sbCBw
b3NpdGlvbiAodGFrZW4gaW4gZmF2b3Igb2YgZ29pbmcgYmFjayB0byB0aGUgYW5jaG9yKQotICAg
ICAgICBbc2VsZiBfcmVzdG9yZVNjcm9sbFBvc2l0aW9uXTsKKyAgICAgICAgW3NlbGYgX3Jlc3Rv
cmVWaWV3U3RhdGVdOwogICAgICAgICAKICAgICAgICAgTlNBcnJheSAqY2hpbGRJdGVtcyA9IFtp
dGVtIGNoaWxkcmVuXTsKICAgICAgICAgaW50IG51bUNoaWxkSXRlbXMgPSBjaGlsZEl0ZW1zID8g
W2NoaWxkSXRlbXMgY291bnRdIDogMDsKQEAgLTIwNzgsMTQgKzIwNzgsMjYgQEAgc3RhdGljIENG
QWJzb2x1dGVUaW1lIF90aW1lT2ZMYXN0Q29tcGxldAogICAgIFtbX3ByaXZhdGUgY3VycmVudEl0
ZW1dIHNldFRpdGxlOnRpdGxlXTsKIH0KIAotLSAodm9pZClfc2F2ZVNjcm9sbFBvc2l0aW9uVG9J
dGVtOihXZWJIaXN0b3J5SXRlbSAqKWl0ZW0KKy0gKHZvaWQpX3NhdmVWaWV3U3RhdGVUb0l0ZW06
KFdlYkhpc3RvcnlJdGVtICopaXRlbQogewogICAgIGlmIChpdGVtKSB7Ci0gICAgICAgIE5TVmll
dyAqY2xpcFZpZXcgPSBbW1tzZWxmIGZyYW1lVmlld10gZG9jdW1lbnRWaWV3XSBzdXBlcnZpZXdd
OworICAgICAgICBOU1ZpZXcgPFdlYkRvY3VtZW50Vmlldz4gKmRvY1ZpZXcgPSBbW3NlbGYgZnJh
bWVWaWV3XSBkb2N1bWVudFZpZXddOworICAgICAgICBOU1ZpZXcgKnBhcmVudCA9IFtkb2NWaWV3
IHN1cGVydmlld107CiAgICAgICAgIC8vIHdlIG1pZ2h0IGFscmVhZHkgYmUgZGV0YWNoZWQgd2hl
biB0aGlzIGlzIGNhbGxlZCBmcm9tIGRldGFjaEZyb21QYXJlbnQsIGluIHdoaWNoCiAgICAgICAg
IC8vIGNhc2Ugd2UgZG9uJ3Qgd2FudCB0byBvdmVycmlkZSByZWFsIGRhdGEgZWFybGllciBnYXRo
ZXJlZCB3aXRoICgwLDApCi0gICAgICAgIGlmIChjbGlwVmlldykgewotICAgICAgICAgICAgW2l0
ZW0gc2V0U2Nyb2xsUG9pbnQ6W2NsaXBWaWV3IGJvdW5kc10ub3JpZ2luXTsKKyAgICAgICAgaWYg
KHBhcmVudCkgeworICAgICAgICAgICAgTlNQb2ludCBwb2ludDsKKyAgICAgICAgICAgIGlmIChb
ZG9jVmlldyBjb25mb3Jtc1RvUHJvdG9jb2w6QHByb3RvY29sKF9XZWJEb2N1bWVudFZpZXdTdGF0
ZSldKSB7CisgICAgICAgICAgICAgICAgLy8gVGhlIHZpZXcgaGFzIGl0J3Mgb3duIGlkZWEgb2Yg
d2hlcmUgaXQgaXMgc2Nyb2xsZWQgdG8sIHBlcmhhcHMgYmVjYXVzZSBpdCBjb250YWlucyBpdHMg
b3duCisgICAgICAgICAgICAgICAgLy8gU2Nyb2xsVmlldyBpbnN0ZWFkIG9mIHVzaW5nIHRoZSBv
bmUgcHJvdmlkZWQgYnkgdGhlIFdlYkZyYW1lCisgICAgICAgICAgICAgICAgcG9pbnQgPSBbKGlk
IDxfV2ViRG9jdW1lbnRWaWV3U3RhdGU+KWRvY1ZpZXcgc2Nyb2xsUG9pbnRdOworICAgICAgICAg
ICAgICAgIFtpdGVtIHNldFZpZXdTdGF0ZTpbKGlkIDxfV2ViRG9jdW1lbnRWaWV3U3RhdGU+KWRv
Y1ZpZXcgdmlld1N0YXRlXV07CisgICAgICAgICAgICB9IGVsc2UgeworICAgICAgICAgICAgICAg
IC8vIFBhcmVudCBpcyB0aGUgY2xpcHZpZXcgb2YgdGhlIER5bmFtaWNTY3JvbGxWaWV3IHRoZSBX
ZWJGcmFtZSBpbnN0YWxscworICAgICAgICAgICAgICAgIEFTU0VSVChbcGFyZW50IGlzS2luZE9m
Q2xhc3M6W05TQ2xpcFZpZXcgY2xhc3NdXSk7CisgICAgICAgICAgICAgICAgcG9pbnQgPSBbcGFy
ZW50IGJvdW5kc10ub3JpZ2luOworICAgICAgICAgICAgfQorICAgICAgICAgICAgW2l0ZW0gc2V0
U2Nyb2xsUG9pbnQ6cG9pbnRdOwogICAgICAgICB9CiAgICAgfQogfQpAQCAtMjEwMiwyNyArMjEx
NCwyMSBAQCBzdGF0aWMgQ0ZBYnNvbHV0ZVRpbWUgX3RpbWVPZkxhc3RDb21wbGV0CiAgICAgICAg
ZmFpbHMuICBXZSB0aGVuIHN1Y2Nlc3NmdWxseSByZXN0b3JlIGl0IHdoZW4gdGhlIGxheW91dCBo
YXBwZW5zLgogICovCiAKLS0gKHZvaWQpX3Jlc3RvcmVTY3JvbGxQb3NpdGlvbgorLSAodm9pZClf
cmVzdG9yZVZpZXdTdGF0ZQogewogICAgIEFTU0VSVChbX3ByaXZhdGUgY3VycmVudEl0ZW1dKTsK
LSAgICBbW1tzZWxmIGZyYW1lVmlld10gZG9jdW1lbnRWaWV3XSBzY3JvbGxQb2ludDpbW19wcml2
YXRlIGN1cnJlbnRJdGVtXSBzY3JvbGxQb2ludF1dOwotfQotCi0tICh2b2lkKV9zY3JvbGxUb1Rv
cAotewotICAgIFtbW3NlbGYgZnJhbWVWaWV3XSBkb2N1bWVudFZpZXddIHNjcm9sbFBvaW50OiBO
U1plcm9Qb2ludF07Ci19Ci0KLS0gKHZvaWQpX3RleHRTaXplTXVsdGlwbGllckNoYW5nZWQKLXsK
LSAgICBOU1ZpZXcgPFdlYkRvY3VtZW50Vmlldz4gKnZpZXcgPSBbW3NlbGYgZnJhbWVWaWV3XSBk
b2N1bWVudFZpZXddOwotICAgIGlmIChbdmlldyBjb25mb3Jtc1RvUHJvdG9jb2w6QHByb3RvY29s
KF93ZWJfV2ViRG9jdW1lbnRUZXh0U2l6aW5nKV0pIHsKLSAgICAgICAgWyhOU1ZpZXcgPF93ZWJf
V2ViRG9jdW1lbnRUZXh0U2l6aW5nPiAqKXZpZXcgX3dlYl90ZXh0U2l6ZU11bHRpcGxpZXJDaGFu
Z2VkXTsKKyAgICBOU1ZpZXcgPFdlYkRvY3VtZW50Vmlldz4gKmRvY1ZpZXcgPSBbW3NlbGYgZnJh
bWVWaWV3XSBkb2N1bWVudFZpZXddOworICAgIE5TUG9pbnQgcG9pbnQgPSBbW19wcml2YXRlIGN1
cnJlbnRJdGVtXSBzY3JvbGxQb2ludF07CisgICAgaWYgKFtkb2NWaWV3IGNvbmZvcm1zVG9Qcm90
b2NvbDpAcHJvdG9jb2woX1dlYkRvY3VtZW50Vmlld1N0YXRlKV0pIHsgICAgICAgIAorICAgICAg
ICBpZCBzdGF0ZSA9IFtbX3ByaXZhdGUgY3VycmVudEl0ZW1dIHZpZXdTdGF0ZV07CisgICAgICAg
IGlmIChzdGF0ZSkgeworICAgICAgICAgICAgWyhpZCA8X1dlYkRvY3VtZW50Vmlld1N0YXRlPilk
b2NWaWV3IHNldFZpZXdTdGF0ZTpzdGF0ZV07CisgICAgICAgIH0KKyAgICAgICAgCisgICAgICAg
IFsoaWQgPF9XZWJEb2N1bWVudFZpZXdTdGF0ZT4pZG9jVmlldyBzZXRTY3JvbGxQb2ludDpwb2lu
dF07CisgICAgfSBlbHNlIHsKKyAgICAgICAgW2RvY1ZpZXcgc2Nyb2xsUG9pbnQ6cG9pbnRdOwog
ICAgIH0KLQotICAgIC8vIEl0J3MgT0sgdG8gdXNlIHRoZSBpbnRlcm5hbCB2ZXJzaW9uIGJlY2F1
c2UgdGhpcyBtZXRob2QgaXMKLSAgICAvLyBndWFyYW50ZWVkIG5vdCB0byBjaGFuZ2UgdGhlIHNl
dCBvZiBmcmFtZXMuCi0gICAgW1tzZWxmIF9pbnRlcm5hbENoaWxkRnJhbWVzXSBtYWtlT2JqZWN0
c1BlcmZvcm1TZWxlY3RvcjpAc2VsZWN0b3IoX3RleHRTaXplTXVsdGlwbGllckNoYW5nZWQpXTsK
IH0KIAogLSAodm9pZClfZGVmZXJzQ2FsbGJhY2tzQ2hhbmdlZApAQCAtMjMwOSwxNiArMjMxNSwx
MSBAQCBzdGF0aWMgQ0ZBYnNvbHV0ZVRpbWUgX3RpbWVPZkxhc3RDb21wbGV0CiAtICh2b2lkKV9z
YXZlRG9jdW1lbnRBbmRTY3JvbGxTdGF0ZQogewogICAgIFtfcHJpdmF0ZS0+YnJpZGdlIHNhdmVE
b2N1bWVudFN0YXRlXTsKLSAgICBbc2VsZiBfc2F2ZVNjcm9sbFBvc2l0aW9uVG9JdGVtOltfcHJp
dmF0ZSBjdXJyZW50SXRlbV1dOworICAgIFtzZWxmIF9zYXZlVmlld1N0YXRlVG9JdGVtOltfcHJp
dmF0ZSBjdXJyZW50SXRlbV1dOwogCiAgICAgLy8gSXQncyBPSyB0byB1c2UgdGhlIGludGVybmFs
IHZlcnNpb24gYmVjYXVzZSB0aGlzIG1ldGhvZCBpcwogICAgIC8vIGd1YXJhbnRlZWQgbm90IHRv
IGNoYW5nZSB0aGUgc2V0IG9mIGZyYW1lcy4KLSAgICBOU0FycmF5ICpmcmFtZXMgPSBbc2VsZiBf
aW50ZXJuYWxDaGlsZEZyYW1lc107Ci0gICAgaW50IGNvdW50ID0gW2ZyYW1lcyBjb3VudF07Ci0g
ICAgaW50IGk7Ci0gICAgZm9yIChpID0gMDsgaSA8IGNvdW50OyBpKyspIHsKLSAgICAgICAgW1tm
cmFtZXMgb2JqZWN0QXRJbmRleDppXSBfc2F2ZURvY3VtZW50QW5kU2Nyb2xsU3RhdGVdOwotICAg
IH0KKyAgICBbW3NlbGYgX2ludGVybmFsQ2hpbGRGcmFtZXNdIG1ha2VPYmplY3RzUGVyZm9ybVNl
bGVjdG9yOkBzZWxlY3Rvcihfc2F2ZURvY3VtZW50QW5kU2Nyb2xsU3RhdGUpXTsKIH0KIAogLy8g
Q2FsbGVkIGFmdGVyIHRoZSBGb3Jtc0RlbGVnYXRlIGlzIGRvbmUgcHJvY2Vzc2luZyB3aWxsU3Vi
bWl0Rm9ybToKQEAgLTI1ODUsNiArMjU4NiwyMiBAQCBzdGF0aWMgQ0ZBYnNvbHV0ZVRpbWUgX3Rp
bWVPZkxhc3RDb21wbGV0CiAKIEBpbXBsZW1lbnRhdGlvbiBXZWJGcmFtZSAoV2ViSW50ZXJuYWwp
CiAKKy0gKHZvaWQpX2FjY3VtdWxhdGVEb2N1bWVudFZpZXdzOihOU011dGFibGVBcnJheSAqKXJl
c3VsdAoreworICAgIGlkIGRvY1ZpZXcgPSBbW3NlbGYgZnJhbWVWaWV3XSBkb2N1bWVudFZpZXdd
OworICAgIGlmIChkb2NWaWV3KSB7CisgICAgICAgIFtyZXN1bHQgYWRkT2JqZWN0OmRvY1ZpZXdd
OworICAgIH0KKyAgICBbX3ByaXZhdGUtPmNoaWxkcmVuIG1ha2VPYmplY3RzUGVyZm9ybVNlbGVj
dG9yOkBzZWxlY3RvcihfYWNjdW11bGF0ZURvY3VtZW50Vmlld3M6KSB3aXRoT2JqZWN0OnJlc3Vs
dF07Cit9CisKKy0gKE5TQXJyYXkgKilfZG9jdW1lbnRWaWV3cworeworICAgIE5TTXV0YWJsZUFy
cmF5ICpyZXN1bHQgPSBbTlNNdXRhYmxlQXJyYXkgYXJyYXldOworICAgIFtzZWxmIF9hY2N1bXVs
YXRlRG9jdW1lbnRWaWV3czpyZXN1bHRdOworICAgIHJldHVybiByZXN1bHQ7Cit9CisKIC0gKHZv
aWQpX3VwZGF0ZURyYXdzQmFja2dyb3VuZAogewogICAgIEJPT0wgZHJhd3NCYWNrZ3JvdW5kID0g
W1tzZWxmIHdlYlZpZXddIGRyYXdzQmFja2dyb3VuZF07CkBAIC0yNzE5LDcgKzI3MzYsNyBAQCBz
dGF0aWMgQ0ZBYnNvbHV0ZVRpbWUgX3RpbWVPZkxhc3RDb21wbGV0CiAgICAgICAgICAgICBsb2Fk
VHlwZSA9PSBXZWJGcmFtZUxvYWRUeXBlQmFjayB8fAogICAgICAgICAgICAgbG9hZFR5cGUgPT0g
V2ViRnJhbWVMb2FkVHlwZUluZGV4ZWRCYWNrRm9yd2FyZCkKICAgICAgICAgewotICAgICAgICAg
ICAgW3NlbGYgX3Jlc3RvcmVTY3JvbGxQb3NpdGlvbl07CisgICAgICAgICAgICBbc2VsZiBfcmVz
dG9yZVZpZXdTdGF0ZV07CiAgICAgICAgIH0KICAgICB9CiB9CkluZGV4OiAuL1dlYlZpZXcuc3Vi
cHJvai9XZWJGcmFtZUludGVybmFsLmgKPT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PQpSQ1MgZmlsZTogL2N2cy9yb290L1dl
YktpdC9XZWJWaWV3LnN1YnByb2ovV2ViRnJhbWVJbnRlcm5hbC5oLHYKcmV0cmlldmluZyByZXZp
c2lvbiAxLjEyCmRpZmYgLXAgLXUgLXIxLjEyIC4vV2ViVmlldy5zdWJwcm9qL1dlYkZyYW1lSW50
ZXJuYWwuaAotLS0gLi9XZWJWaWV3LnN1YnByb2ovV2ViRnJhbWVJbnRlcm5hbC5oCTE5IEp1bCAy
MDA1IDE3OjExOjU2IC0wMDAwCTEuMTIKKysrIC4vV2ViVmlldy5zdWJwcm9qL1dlYkZyYW1lSW50
ZXJuYWwuaAkyNyBKdWwgMjAwNSAxOToxMDowMiAtMDAwMApAQCAtMzcsNiArMzcsOCBAQAogLSAo
aWQpX2ludGVybmFsTG9hZERlbGVnYXRlOwogLSAodm9pZClfdW5tYXJrQWxsTWlzc3BlbGxpbmdz
OwogLSAodm9pZClfZGlkRmlyc3RMYXlvdXQ7CisvLyBOb3RlIHRoYXQgY2FsbGVycyBzaG91bGQg
bm90IHBlcmZvcm0gYW55IG9wcyBvbiB0aGVzZSB2aWV3cyB0aGF0IGNvdWxkIGNoYW5nZSB0aGUg
c2V0IG9mIGZyYW1lcworLSAoTlNBcnJheSAqKV9kb2N1bWVudFZpZXdzOwogCiAtIChOU1VSTFJl
cXVlc3QgKilfcmVxdWVzdEZyb21EZWxlZ2F0ZUZvclJlcXVlc3Q6KE5TVVJMUmVxdWVzdCAqKXJl
cXVlc3QgaWRlbnRpZmllcjooaWQgKilpZGVudGlmaWVyIGVycm9yOihOU0Vycm9yICoqKWVycm9y
OwogLSAodm9pZClfc2VuZFJlbWFpbmluZ0RlbGVnYXRlTWVzc2FnZXNXaXRoSWRlbnRpZmllcjoo
aWQpaWRlbnRpZmllciByZXNwb25zZTooTlNVUkxSZXNwb25zZSAqKXJlc3BvbnNlIGxlbmd0aDoo
dW5zaWduZWQpbGVuZ3RoIGVycm9yOihOU0Vycm9yICopZXJyb3I7CkluZGV4OiAuL1dlYlZpZXcu
c3VicHJvai9XZWJGcmFtZVByaXZhdGUuaAo9PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09ClJDUyBmaWxlOiAvY3ZzL3Jvb3Qv
V2ViS2l0L1dlYlZpZXcuc3VicHJvai9XZWJGcmFtZVByaXZhdGUuaCx2CnJldHJpZXZpbmcgcmV2
aXNpb24gMS4xNTYKZGlmZiAtcCAtdSAtcjEuMTU2IC4vV2ViVmlldy5zdWJwcm9qL1dlYkZyYW1l
UHJpdmF0ZS5oCi0tLSAuL1dlYlZpZXcuc3VicHJvai9XZWJGcmFtZVByaXZhdGUuaAkyNCBKdWwg
MjAwNSAyMjo1ODoyMyAtMDAwMAkxLjE1NgorKysgLi9XZWJWaWV3LnN1YnByb2ovV2ViRnJhbWVQ
cml2YXRlLmgJMjcgSnVsIDIwMDUgMTk6MTA6MDIgLTAwMDAKQEAgLTE4MCw4ICsxODAsNiBAQCBl
eHRlcm4gTlNTdHJpbmcgKldlYlBhZ2VDYWNoZURvY3VtZW50VmllCiAtICh2b2lkKV9jbGllbnRS
ZWRpcmVjdGVkVG86KE5TVVJMICopVVJMIGRlbGF5OihOU1RpbWVJbnRlcnZhbClzZWNvbmRzIGZp
cmVEYXRlOihOU0RhdGUgKilkYXRlIGxvY2tIaXN0b3J5OihCT09MKWxvY2tIaXN0b3J5IGlzSmF2
YVNjcmlwdEZvcm1BY3Rpb246KEJPT0wpaXNKYXZhU2NyaXB0Rm9ybUFjdGlvbjsKIC0gKHZvaWQp
X2NsaWVudFJlZGlyZWN0Q2FuY2VsbGVkOihCT09MKWNhbmNlbFdpdGhMb2FkSW5Qcm9ncmVzczsK
IAotLSAodm9pZClfdGV4dFNpemVNdWx0aXBsaWVyQ2hhbmdlZDsKLQogLSAodm9pZClfZGVmZXJz
Q2FsbGJhY2tzQ2hhbmdlZDsKIAogLSAodm9pZClfdmlld1dpbGxNb3ZlVG9Ib3N0V2luZG93OihO
U1dpbmRvdyAqKWhvc3RXaW5kb3c7CkluZGV4OiAuL1dlYlZpZXcuc3VicHJvai9XZWJIVE1MVmll
dy5tCj09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT0KUkNTIGZpbGU6IC9jdnMvcm9vdC9XZWJLaXQvV2ViVmlldy5zdWJwcm9q
L1dlYkhUTUxWaWV3Lm0sdgpyZXRyaWV2aW5nIHJldmlzaW9uIDEuNDYxCmRpZmYgLXAgLXUgLXIx
LjQ2MSAuL1dlYlZpZXcuc3VicHJvai9XZWJIVE1MVmlldy5tCi0tLSAuL1dlYlZpZXcuc3VicHJv
ai9XZWJIVE1MVmlldy5tCTI2IEp1bCAyMDA1IDIwOjI5OjA2IC0wMDAwCTEuNDYxCisrKyAuL1dl
YlZpZXcuc3VicHJvai9XZWJIVE1MVmlldy5tCTI3IEp1bCAyMDA1IDE5OjEwOjA3IC0wMDAwCkBA
IC0xNjksNyArMTY5LDcgQEAgdm9pZCAqX05TU29mdExpbmtpbmdHZXRGcmFtZXdvcmtGdW5jUHRy
KAogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIGNvbnN0IHN0cnVjdCBt
YWNoX2hlYWRlciAqKmlvQ2FjaGVkRnJhbWV3b3JrSW1hZ2VIZWFkZXJQdHIpOwogCiAKLUBpbnRl
cmZhY2UgV2ViSFRNTFZpZXcgKFdlYlRleHRTaXppbmcpIDxfd2ViX1dlYkRvY3VtZW50VGV4dFNp
emluZz4KK0BpbnRlcmZhY2UgV2ViSFRNTFZpZXcgKFdlYlRleHRTaXppbmcpIDxfV2ViRG9jdW1l
bnRUZXh0U2l6aW5nPgogQGVuZAogCiBAaW50ZXJmYWNlIFdlYkhUTUxWaWV3IChXZWJIVE1MVmll
d0ZpbGVJbnRlcm5hbCkKQEAgLTE2ODgsMTAgKzE2ODgsNiBAQCBzdGF0aWMgV2ViSFRNTFZpZXcg
Kmxhc3RIaXRWaWV3ID0gbmlsOwogCiBAZW5kCiAKLQotQGludGVyZmFjZSBXZWJIVE1MVmlldyAo
VGV4dFNpemluZykgPF93ZWJfV2ViRG9jdW1lbnRUZXh0U2l6aW5nPgotQGVuZAotCiBAaW50ZXJm
YWNlIE5TQXJyYXkgKFdlYkhUTUxWaWV3KQogLSAodm9pZClfd2ViX21ha2VQbHVnaW5WaWV3c1Bl
cmZvcm1TZWxlY3RvcjooU0VMKXNlbGVjdG9yIHdpdGhPYmplY3Q6KGlkKW9iamVjdDsKIEBlbmQK
QEAgLTQ3NzMsMTEgKzQ3NjksMzEgQEAgc3RhdGljIERPTVJhbmdlICp1bmlvbkRPTVJhbmdlcyhE
T01SYW5nZQogCiBAaW1wbGVtZW50YXRpb24gV2ViSFRNTFZpZXcgKFdlYlRleHRTaXppbmcpCiAK
LS0gKHZvaWQpX3dlYl90ZXh0U2l6ZU11bHRpcGxpZXJDaGFuZ2VkCistIChJQkFjdGlvbilfbWFr
ZVRleHRTbWFsbGVyOihpZClzZW5kZXIKK3sKKyAgICBbc2VsZiBfdXBkYXRlVGV4dFNpemVNdWx0
aXBsaWVyXTsKK30KKworLSAoSUJBY3Rpb24pX21ha2VUZXh0TGFyZ2VyOihpZClzZW5kZXIKK3sK
KyAgICBbc2VsZiBfdXBkYXRlVGV4dFNpemVNdWx0aXBsaWVyXTsKK30KKworLSAoSUJBY3Rpb24p
X21ha2VUZXh0U3RhbmRhcmRTaXplOihpZClzZW5kZXIKIHsKICAgICBbc2VsZiBfdXBkYXRlVGV4
dFNpemVNdWx0aXBsaWVyXTsKIH0KIAorLSAoQk9PTClfdHJhY2tzQ29tbW9uU2l6ZUZhY3Rvcgor
eworICAgIHJldHVybiBZRVM7Cit9CisKKy8vIG5ldmVyIHNlbnQgYmVjYXVzZSB3ZSB0cmFjayB0
aGUgY29tbW9uIHNpemUgZmFjdG9yCistIChCT09MKV9jYW5NYWtlVGV4dFNtYWxsZXIgICAgICAg
ICAgeyAgIEFTU0VSVF9OT1RfUkVBQ0hFRCgpOyByZXR1cm4gTk87ICAgIH0KKy0gKEJPT0wpX2Nh
bk1ha2VUZXh0TGFyZ2VyICAgICAgICAgICB7ICAgQVNTRVJUX05PVF9SRUFDSEVEKCk7IHJldHVy
biBOTzsgICAgfQorLSAoQk9PTClfY2FuTWFrZVRleHRTdGFuZGFyZFNpemUgICAgIHsgICBBU1NF
UlRfTk9UX1JFQUNIRUQoKTsgcmV0dXJuIE5POyAgICB9CisKIEBlbmQKIAogQGltcGxlbWVudGF0
aW9uIE5TQXJyYXkgKFdlYkhUTUxWaWV3KQpJbmRleDogLi9XZWJWaWV3LnN1YnByb2ovV2ViUERG
UmVwcmVzZW50YXRpb24ubQo9PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09ClJDUyBmaWxlOiAvY3ZzL3Jvb3QvV2ViS2l0L1dl
YlZpZXcuc3VicHJvai9XZWJQREZSZXByZXNlbnRhdGlvbi5tLHYKcmV0cmlldmluZyByZXZpc2lv
biAxLjQKZGlmZiAtcCAtdSAtcjEuNCAuL1dlYlZpZXcuc3VicHJvai9XZWJQREZSZXByZXNlbnRh
dGlvbi5tCi0tLSAuL1dlYlZpZXcuc3VicHJvai9XZWJQREZSZXByZXNlbnRhdGlvbi5tCTUgSnVu
IDIwMDUgMTc6NTQ6NDggLTAwMDAJMS40CisrKyAuL1dlYlZpZXcuc3VicHJvai9XZWJQREZSZXBy
ZXNlbnRhdGlvbi5tCTI3IEp1bCAyMDA1IDE5OjEwOjA3IC0wMDAwCkBAIC0zNSw3ICszNSw4IEBA
CiAjaW1wb3J0IDxXZWJLaXQvV2ViUERGUmVwcmVzZW50YXRpb24uaD4KICNpbXBvcnQgPFdlYktp
dC9XZWJQREZWaWV3Lmg+CiAKLSNpbXBvcnQgPFF1YXJ0ei9RdWFydHouaD4KKyNpbXBvcnQgPFBE
RktpdC9QREZEb2N1bWVudC5oPgorI2ltcG9ydCA8UERGS2l0L1BERlZpZXcuaD4KIAogQGltcGxl
bWVudGF0aW9uIFdlYlBERlJlcHJlc2VudGF0aW9uCiAKSW5kZXg6IC4vV2ViVmlldy5zdWJwcm9q
L1dlYlBERlZpZXcuaAo9PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09ClJDUyBmaWxlOiAvY3ZzL3Jvb3QvV2ViS2l0L1dlYlZp
ZXcuc3VicHJvai9XZWJQREZWaWV3LmgsdgpyZXRyaWV2aW5nIHJldmlzaW9uIDEuMTAKZGlmZiAt
cCAtdSAtcjEuMTAgLi9XZWJWaWV3LnN1YnByb2ovV2ViUERGVmlldy5oCi0tLSAuL1dlYlZpZXcu
c3VicHJvai9XZWJQREZWaWV3LmgJMTggSnVsIDIwMDUgMjM6MTg6MjIgLTAwMDAJMS4xMAorKysg
Li9XZWJWaWV3LnN1YnByb2ovV2ViUERGVmlldy5oCTI3IEp1bCAyMDA1IDE5OjEwOjA4IC0wMDAw
CkBAIC0zMSwxMSArMzEsMTIgQEAKIEBjbGFzcyBQREZWaWV3OwogQGNsYXNzIFdlYkRhdGFTb3Vy
Y2U7CiAKLUBwcm90b2NvbCBfd2ViX1dlYkRvY3VtZW50VGV4dFNpemluZzsKK0Bwcm90b2NvbCBf
V2ViRG9jdW1lbnRUZXh0U2l6aW5nOworQHByb3RvY29sIF9XZWJEb2N1bWVudFZpZXdTdGF0ZTsK
IEBwcm90b2NvbCBXZWJEb2N1bWVudFNlbGVjdGlvbjsKIEBwcm90b2NvbCBXZWJEb2N1bWVudEVs
ZW1lbnQ7CiAKLUBpbnRlcmZhY2UgV2ViUERGVmlldyA6IE5TVmlldyA8V2ViRG9jdW1lbnRWaWV3
LCBXZWJEb2N1bWVudFNlYXJjaGluZywgV2ViRG9jdW1lbnRUZXh0LCBfd2ViX1dlYkRvY3VtZW50
VGV4dFNpemluZywgV2ViRG9jdW1lbnRTZWxlY3Rpb24sIFdlYkRvY3VtZW50RWxlbWVudD4KK0Bp
bnRlcmZhY2UgV2ViUERGVmlldyA6IE5TVmlldyA8V2ViRG9jdW1lbnRWaWV3LCBXZWJEb2N1bWVu
dFNlYXJjaGluZywgV2ViRG9jdW1lbnRUZXh0LCBXZWJEb2N1bWVudFNlbGVjdGlvbiwgV2ViRG9j
dW1lbnRFbGVtZW50LCBfV2ViRG9jdW1lbnRWaWV3U3RhdGUsIF9XZWJEb2N1bWVudFRleHRTaXpp
bmc+CiB7CiAgICAgUERGVmlldyAqUERGU3VidmlldzsKICAgICBXZWJEYXRhU291cmNlICpkYXRh
U291cmNlOwpJbmRleDogLi9XZWJWaWV3LnN1YnByb2ovV2ViUERGVmlldy5tCj09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT0K
UkNTIGZpbGU6IC9jdnMvcm9vdC9XZWJLaXQvV2ViVmlldy5zdWJwcm9qL1dlYlBERlZpZXcubSx2
CnJldHJpZXZpbmcgcmV2aXNpb24gMS4yMgpkaWZmIC1wIC11IC1yMS4yMiAuL1dlYlZpZXcuc3Vi
cHJvai9XZWJQREZWaWV3Lm0KLS0tIC4vV2ViVmlldy5zdWJwcm9qL1dlYlBERlZpZXcubQkxOCBK
dWwgMjAwNSAyMzoxODoyMiAtMDAwMAkxLjIyCisrKyAuL1dlYlZpZXcuc3VicHJvai9XZWJQREZW
aWV3Lm0JMjcgSnVsIDIwMDUgMTk6MTA6MDggLTAwMDAKQEAgLTQ1LDcgKzQ1LDcgQEAKICNpbXBv
cnQgPFdlYktpdC9XZWJWaWV3UHJpdmF0ZS5oPgogCiAjaW1wb3J0IDxXZWJLaXRTeXN0ZW1JbnRl
cmZhY2UuaD4KLSNpbXBvcnQgPFF1YXJ0ei9RdWFydHouaD4KKyNpbXBvcnQgPFBERktpdC9QREZL
aXQuaD4KIAogLy8gUXVhcnR6UHJpdmF0ZS5oIGRvZXNuJ3QgaW5jbHVkZSB0aGUgUERGS2l0IHBy
aXZhdGUgaGVhZGVycywgc28gd2UgY2FuJ3QgZ2V0IGF0IFBERlZpZXdQcml2LmguICgzOTU3OTcx
KQogLy8gRXZlbiBpZiB0aGF0IHdhcyBmaXhlZCwgd2UnZCBoYXZlIHRvIHR3ZWFrIGNvbXBpbGUg
b3B0aW9ucyB0byBpbmNsdWRlIFF1YXJ0elByaXZhdGUuaC4gKDM5NTc4MzkpCkBAIC0yNDYsMjYg
KzI0Niw2IEBAIHN0YXRpYyB2b2lkIGFwcGxpY2F0aW9uSW5mb0Zvck1JTUVUeXBlKE4KICAgICAg
ICAgfSBlbHNlIHsKICAgICAgICAgICAgIEVSUk9SKCJQREYgY29udGV4dCBtZW51IGl0ZW0gJUAg
Y2FtZSB3aXRoIHRhZyAlZCwgc28gbm8gV2ViS2l0IHRhZyB3YXMgYXBwbGllZC4gVGhpcyBjb3Vs
ZCBtZWFuIHRoYXQgdGhlIGl0ZW0gZG9lc24ndCBhcHBlYXIgaW4gY2xpZW50cyBzdWNoIGFzIFNh
ZmFyaS4iLCBbaXRlbUNvcHkgdGl0bGVdLCBbaXRlbUNvcHkgdGFnXSk7CiAgICAgICAgIH0KLSAg
ICAgICAgCi0gICAgICAgIC8vIEludGVyY2VwdCBzb21lIG9mIHRoZXNlIG1lbnUgaXRlbXMgZm9y
IGJldHRlciBXZWJLaXQgaW50ZWdyYXRpb24uCi0gICAgICAgIHN3aXRjaCAodGFnKSB7Ci0gICAg
ICAgICAgICAvLyBDb252ZXJ0IHRoZSBzY2FsZS1mYWN0b3ItcmVsYXRlZCBpdGVtcyB0byB1c2Ug
V2ViS2l0J3MgdGV4dCBzaXppbmcgQVBJIGluc3RlYWQsIHNvIHRoZXkgbWF0Y2ggb3RoZXIKLSAg
ICAgICAgICAgIC8vIFVJIHRoYXQgdXNlcyB0aGUgdGV4dCBzaXppbmcgQVBJIChzdWNoIGFzIE1h
a2UgVGV4dCBMYXJnZXIvU21hbGxlciBtZW51IGl0ZW1zIGluIFNhZmFyaSkuCi0gICAgICAgICAg
ICBjYXNlIFdlYk1lbnVJdGVtUERGQWN0dWFsU2l6ZToKLSAgICAgICAgICAgICAgICBbaXRlbUNv
cHkgc2V0VGFyZ2V0OltbZGF0YVNvdXJjZSB3ZWJGcmFtZV0gd2ViVmlld11dOwotICAgICAgICAg
ICAgICAgIFtpdGVtQ29weSBzZXRBY3Rpb246QHNlbGVjdG9yKG1ha2VUZXh0U3RhbmRhcmRTaXpl
OildOwotICAgICAgICAgICAgICAgIGJyZWFrOwotICAgICAgICAgICAgY2FzZSBXZWJNZW51SXRl
bVBERlpvb21JbjoKLSAgICAgICAgICAgICAgICBbaXRlbUNvcHkgc2V0VGFyZ2V0OltbZGF0YVNv
dXJjZSB3ZWJGcmFtZV0gd2ViVmlld11dOwotICAgICAgICAgICAgICAgIFtpdGVtQ29weSBzZXRB
Y3Rpb246QHNlbGVjdG9yKG1ha2VUZXh0TGFyZ2VyOildOwotICAgICAgICAgICAgICAgIGJyZWFr
OwotICAgICAgICAgICAgY2FzZSBXZWJNZW51SXRlbVBERlpvb21PdXQ6Ci0gICAgICAgICAgICAg
ICAgW2l0ZW1Db3B5IHNldFRhcmdldDpbW2RhdGFTb3VyY2Ugd2ViRnJhbWVdIHdlYlZpZXddXTsK
LSAgICAgICAgICAgICAgICBbaXRlbUNvcHkgc2V0QWN0aW9uOkBzZWxlY3RvcihtYWtlVGV4dFNt
YWxsZXI6KV07Ci0gICAgICAgICAgICAgICAgYnJlYWs7Ci0gICAgICAgICAgICBkZWZhdWx0Ogot
ICAgICAgICAgICAgICAgIGJyZWFrOwotICAgICAgICB9CiAgICAgfQogICAgIAogICAgIFthY3Rp
b25zVG9UYWdzIHJlbGVhc2VdOwpAQCAtMzQ3LDIyICszMjcsMTAgQEAgc3RhdGljIHZvaWQgYXBw
bGljYXRpb25JbmZvRm9yTUlNRVR5cGUoTgogICAgIHJldHVybiBtZW51OwogfQogCi0tICh2b2lk
KV91cGRhdGVTY2FsaW5nVG9SZWZsZWN0VGV4dFNpemUKLXsKLSAgICBXZWJWaWV3ICp2aWV3ID0g
W1tkYXRhU291cmNlIHdlYkZyYW1lXSB3ZWJWaWV3XTsKLSAgICAKLSAgICAvLyBUaGUgc2NhbGUg
ZmFjdG9yIGFuZCB0ZXh0IHNpemUgbXVsdGlwbGllciBjb252ZW5pZW50bHkgdXNlIHRoZSBzYW1l
IHVuaXRzLCBzbyB3ZSBjYW4ganVzdAotICAgIC8vIHRyZWF0IHRoZSB2YWx1ZXMgYXMgaW50ZXJj
aGFuZ2VhYmxlLgotICAgIGlmICh2aWV3ICE9IG5pbCkgewotICAgICAgICBbUERGU3VidmlldyBz
ZXRTY2FsZUZhY3RvcjpbdmlldyB0ZXh0U2l6ZU11bHRpcGxpZXJdXTsJCQotICAgIH0JCi19Ci0K
IC0gKHZvaWQpc2V0RGF0YVNvdXJjZTooV2ViRGF0YVNvdXJjZSAqKWRzCiB7CiAgICAgZGF0YVNv
dXJjZSA9IGRzOwogICAgIFtzZWxmIHNldEZyYW1lOltbc2VsZiBzdXBlcnZpZXddIGZyYW1lXV07
Ci0gICAgW3NlbGYgX3VwZGF0ZVNjYWxpbmdUb1JlZmxlY3RUZXh0U2l6ZV07CiB9CiAKIC0gKHZv
aWQpZGF0YVNvdXJjZVVwZGF0ZWQ6KFdlYkRhdGFTb3VyY2UgKilkYXRhU291cmNlCkBAIC00MDIs
MTEgKzM3MCw2IEBAIHN0YXRpYyB2b2lkIGFwcGxpY2F0aW9uSW5mb0Zvck1JTUVUeXBlKE4KICAg
ICB9CiB9CiAKLS0gKHZvaWQpX3dlYl90ZXh0U2l6ZU11bHRpcGxpZXJDaGFuZ2VkCi17Ci0gICAg
W3NlbGYgX3VwZGF0ZVNjYWxpbmdUb1JlZmxlY3RUZXh0U2l6ZV07Ci19Ci0KIC8vIEZJWE1FIDQx
ODI4NzY6IFdlIGNhbiBlbGltaW5hdGUgdGhpcyBmdW5jdGlvbiBpbiBmYXZvciBpZiAtaXNFcXVh
bDogaWYgW1BERlNlbGVjdGlvbiBpc0VxdWFsOl0gaXMgb3ZlcnJpZGRlbgogLy8gdG8gY29tcGFy
ZSBjb250ZW50cy4KIHN0YXRpYyBCT09MIFBERlNlbGVjdGlvbnNBcmVFcXVhbChQREZTZWxlY3Rp
b24gKnNlbGVjdGlvbkEsIFBERlNlbGVjdGlvbiAqc2VsZWN0aW9uQikKQEAgLTU3MCw2ICs1MzMs
MTA3IEBAIHN0YXRpYyBCT09MIFBERlNlbGVjdGlvbnNBcmVFcXVhbChQREZTZWwKICAgICBbUERG
U3VidmlldyBjbGVhclNlbGVjdGlvbl07CiB9CiAKKy8qKiogV2ViRG9jdW1lbnRWaWV3U3RhdGUg
cHJvdG9jb2wgaW1wbGVtZW50YXRpb24gKioqLworCisvLyBFdmVuIHRob3VnaCB0byBXZWJLaXQg
d2UgYXJlIHRoZSAiZG9jVmlldyIsIGluIHJlYWxpdHkgYSBQREZWaWV3IGNvbnRhaW5zIGl0cyBv
d24gc2Nyb2xsdmlldyBhbmQgZG9jVmlldy4KKy8vIEFuZCBpdCBldmVuIHR1cm5zIG91dCB0aGVy
ZSBpcyBhbm90aGVyIFBERktpdCB2aWV3IGJldHdlZW4gdGhlIGRvY1ZpZXcgYW5kIGl0cyBlbmNs
b3NpbmcgU2Nyb2xsVmlldywgc28KKy8vIHdlIGhhdmUgdG8gYmUgc3VyZSB0byBkbyBvdXIgY2Fs
Y3VsdWF0aW9ucyBiYXNlZCBvbiB0aGF0IHZpZXcsIGltbWVkaWF0ZWx5IGluc2lkZSB0aGUgQ2xp
cFZpZXcuICBXZSB0cnkKKy8vIHRvIG1ha2UgYXMgZmV3IGFzc3VtcHRpb25zIGFib3V0IHRoZSBQ
REZLaXQgdmlldyBoaWVyYXJjaHkgYXMgcG9zc2libGUuCisKKy0gKE5TUG9pbnQpc2Nyb2xsUG9p
bnQKK3sKKyAgICBOU1ZpZXcgKnJlYWxEb2NWaWV3ID0gW1BERlN1YnZpZXcgZG9jdW1lbnRWaWV3
XTsKKyAgICBOU0NsaXBWaWV3ICpjbGlwVmlldyA9IFtbcmVhbERvY1ZpZXcgZW5jbG9zaW5nU2Ny
b2xsVmlld10gY29udGVudFZpZXddOworICAgIHJldHVybiBbY2xpcFZpZXcgYm91bmRzXS5vcmln
aW47Cit9CisKKy0gKHZvaWQpc2V0U2Nyb2xsUG9pbnQ6KE5TUG9pbnQpcAoreworICAgIFdlYkZy
YW1lICpmcmFtZSA9IFtkYXRhU291cmNlIHdlYkZyYW1lXTsKKyAgICAvL0ZJWE1FOiAgV2Ugb25s
eSByZXN0b3JlIHNjcm9sbCBzdGF0ZSBpbiB0aGUgbm9uLWZyYW1lcyBjYXNlIGJlY2F1c2Ugb3Ro
ZXJ3aXNlIHdlIGdldCBhIGNyYXNoIGR1ZSB0bworICAgIC8vIFBERktpdCBjYWxsaW5nIGRpc3Bs
YXkgZnJvbSB3aXRoaW4gaXRzIGRyYXdSZWN0Oi4gU2VlIFJhZGFyIFhYWFhYWFguCisgICAgaWYg
KCFbZnJhbWUgcGFyZW50RnJhbWVdKSB7CisgICAgICAgIE5TVmlldyAqcmVhbERvY1ZpZXcgPSBb
UERGU3VidmlldyBkb2N1bWVudFZpZXddOworICAgICAgICBbW1tyZWFsRG9jVmlldyBlbmNsb3Np
bmdTY3JvbGxWaWV3XSBkb2N1bWVudFZpZXddIHNjcm9sbFBvaW50OnBdOworICAgIH0KK30KKwor
LSAoaWQpdmlld1N0YXRlCit7CisgICAgTlNNdXRhYmxlQXJyYXkgKnN0YXRlID0gW05TTXV0YWJs
ZUFycmF5IGFycmF5V2l0aENhcGFjaXR5OjRdOworICAgIFBERkRpc3BsYXlNb2RlIG1vZGUgPSBb
UERGU3VidmlldyBkaXNwbGF5TW9kZV07CisgICAgW3N0YXRlIGFkZE9iamVjdDpbTlNOdW1iZXIg
bnVtYmVyV2l0aEludDptb2RlXV07CisgICAgaWYgKG1vZGUgPT0ga1BERkRpc3BsYXlTaW5nbGVQ
YWdlIHx8IG1vZGUgPT0ga1BERkRpc3BsYXlUd29VcCkgeworICAgICAgICB1bnNpZ25lZCBpbnQg
cGFnZUluZGV4ID0gW1tQREZTdWJ2aWV3IGRvY3VtZW50XSBpbmRleEZvclBhZ2U6W1BERlN1YnZp
ZXcgY3VycmVudFBhZ2VdXTsKKyAgICAgICAgW3N0YXRlIGFkZE9iamVjdDpbTlNOdW1iZXIgbnVt
YmVyV2l0aFVuc2lnbmVkSW50OnBhZ2VJbmRleF1dOworICAgIH0gIC8vIGVsc2UgaW4gY29udGlu
dW91cyBtb2Rlcywgc2Nyb2xsIHBvc2l0aW9uIGdldHMgdXMgdG8gdGhlIHJpZ2h0IHBhZ2UKKyAg
ICBCT09MIGF1dG9TY2FsZUZsYWcgPSBbUERGU3VidmlldyBhdXRvU2NhbGVzXTsKKyAgICBbc3Rh
dGUgYWRkT2JqZWN0OltOU051bWJlciBudW1iZXJXaXRoQm9vbDphdXRvU2NhbGVGbGFnXV07Cisg
ICAgaWYgKCFhdXRvU2NhbGVGbGFnKSB7CisgICAgICAgIFtzdGF0ZSBhZGRPYmplY3Q6W05TTnVt
YmVyIG51bWJlcldpdGhGbG9hdDpbUERGU3VidmlldyBzY2FsZUZhY3Rvcl1dXTsKKyAgICB9Cisg
ICAgcmV0dXJuIHN0YXRlOworfQorCistICh2b2lkKXNldFZpZXdTdGF0ZTooaWQpc3RhdGVQTGlz
dAoreworICAgIEFTU0VSVChbc3RhdGVQTGlzdCBpc0tpbmRPZkNsYXNzOltOU0FycmF5IGNsYXNz
XV0pOworICAgIE5TQXJyYXkgKnN0YXRlID0gc3RhdGVQTGlzdDsKKyAgICBpbnQgaSA9IDA7Cisg
ICAgUERGRGlzcGxheU1vZGUgbW9kZSA9IFtbc3RhdGUgb2JqZWN0QXRJbmRleDppKytdIGludFZh
bHVlXTsKKyAgICBbUERGU3VidmlldyBzZXREaXNwbGF5TW9kZTptb2RlXTsKKyAgICBpZiAobW9k
ZSA9PSBrUERGRGlzcGxheVNpbmdsZVBhZ2UgfHwgbW9kZSA9PSBrUERGRGlzcGxheVR3b1VwKSB7
CisgICAgICAgIHVuc2lnbmVkIGludCBwYWdlSW5kZXggPSBbW3N0YXRlIG9iamVjdEF0SW5kZXg6
aSsrXSB1bnNpZ25lZEludFZhbHVlXTsKKyAgICAgICAgW1BERlN1YnZpZXcgZ29Ub1BhZ2U6W1tQ
REZTdWJ2aWV3IGRvY3VtZW50XSBwYWdlQXRJbmRleDpwYWdlSW5kZXhdXTsKKyAgICB9ICAvLyBl
bHNlIGluIGNvbnRpbnVvdXMgbW9kZXMsIHNjcm9sbCBwb3NpdGlvbiBnZXRzIHVzIHRvIHRoZSBy
aWdodCBwYWdlCisgICAgQk9PTCBhdXRvU2NhbGVGbGFnID0gW1tzdGF0ZSBvYmplY3RBdEluZGV4
OmkrK10gYm9vbFZhbHVlXTsKKyAgICBbUERGU3VidmlldyBzZXRBdXRvU2NhbGVzOmF1dG9TY2Fs
ZUZsYWddOworICAgIGlmICghYXV0b1NjYWxlRmxhZykgeworICAgICAgICBbUERGU3VidmlldyBz
ZXRTY2FsZUZhY3RvcjpbW3N0YXRlIG9iamVjdEF0SW5kZXg6aSsrXSBmbG9hdFZhbHVlXV07Cisg
ICAgfQorfQorCisvKioqIF9XZWJEb2N1bWVudFRleHRTaXppbmcgcHJvdG9jb2wgaW1wbGVtZW50
YXRpb24gKioqLworCistIChJQkFjdGlvbilfbWFrZVRleHRTbWFsbGVyOihpZClzZW5kZXIKK3sK
KyAgICBbUERGU3VidmlldyB6b29tT3V0OnNlbmRlcl07Cit9CisKKy0gKElCQWN0aW9uKV9tYWtl
VGV4dExhcmdlcjooaWQpc2VuZGVyCit7CisgICAgW1BERlN1YnZpZXcgem9vbUluOnNlbmRlcl07
Cit9CisKKy0gKElCQWN0aW9uKV9tYWtlVGV4dFN0YW5kYXJkU2l6ZTooaWQpc2VuZGVyCit7Cisg
ICAgW1BERlN1YnZpZXcgc2V0U2NhbGVGYWN0b3I6MS4wXTsKK30KKworLSAoQk9PTClfdHJhY2tz
Q29tbW9uU2l6ZUZhY3RvcgoreworICAgIC8vIFdlIGRvbid0IGtlZXAgb3VyIG93biBzY2FsZSBm
YWN0b3IgaW5zdGVhZCBvZiB0cmFja2luZyB0aGUgY29tbW9uIG9uZSBpbiB0aGUgV2ViVmlldyBm
b3IgYSBjb3VwbGUgcmVhc29ucy4KKyAgICAvLyBGaXJzdCwgUERGcyB0ZW5kIHRvIGhhdmUgdmlz
dWFsbHkgc21hbGxlciB0ZXh0IGJlY2F1c2UgdGhleSBhcmUgbGFpZCBvdXQgZm9yIGEgcHJpbnRl
ZCBwYWdlIGluc3RlYWQgb2YKKyAgICAvLyB0aGUgc2NyZWVuLiAgU2Vjb25kLCB0aGUgUERGVmll
dyBmZWF0dXJlIG9mIEF1dG9TY2FsaW5nIG1lYW5zIG91ciBzY2FsaW5nIGZhY3RvciBjYW4gYmUg
cXVpZXQgdmFyaWFibGUuCisgICAgcmV0dXJuIE5POworfQorCistIChCT09MKV9jYW5NYWtlVGV4
dFNtYWxsZXIKK3sKKyAgICByZXR1cm4gW1BERlN1YnZpZXcgY2FuWm9vbU91dF07Cit9CisKKy0g
KEJPT0wpX2Nhbk1ha2VUZXh0TGFyZ2VyCit7CisgICAgcmV0dXJuIFtQREZTdWJ2aWV3IGNhblpv
b21Jbl07Cit9CisKKy0gKEJPT0wpX2Nhbk1ha2VUZXh0U3RhbmRhcmRTaXplCit7CisgICAgcmV0
dXJuIFtQREZTdWJ2aWV3IHNjYWxlRmFjdG9yXSAhPSAxLjA7Cit9CisKKwogLSAoTlNSZWN0KXNl
bGVjdGlvblJlY3QKIHsKICAgICBOU1JlY3QgcmVzdWx0ID0gTlNaZXJvUmVjdDsKSW5kZXg6IC4v
V2ViVmlldy5zdWJwcm9qL1dlYlRleHRWaWV3Lm0KPT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PQpSQ1MgZmlsZTogL2N2cy9y
b290L1dlYktpdC9XZWJWaWV3LnN1YnByb2ovV2ViVGV4dFZpZXcubSx2CnJldHJpZXZpbmcgcmV2
aXNpb24gMS41OQpkaWZmIC1wIC11IC1yMS41OSAuL1dlYlZpZXcuc3VicHJvai9XZWJUZXh0Vmll
dy5tCi0tLSAuL1dlYlZpZXcuc3VicHJvai9XZWJUZXh0Vmlldy5tCTIwIEp1bCAyMDA1IDAwOjUw
OjIzIC0wMDAwCTEuNTkKKysrIC4vV2ViVmlldy5zdWJwcm9qL1dlYlRleHRWaWV3Lm0JMjcgSnVs
IDIwMDUgMTk6MTA6MDggLTAwMDAKQEAgLTUzLDcgKzUzLDcgQEAKIC0gKHZvaWQpX3VwZGF0ZVRl
eHRTaXplTXVsdGlwbGllcjsKIEBlbmQKIAotQGludGVyZmFjZSBXZWJUZXh0VmlldyAoVGV4dFNp
emluZykgPF93ZWJfV2ViRG9jdW1lbnRUZXh0U2l6aW5nPgorQGludGVyZmFjZSBXZWJUZXh0Vmll
dyAoVGV4dFNpemluZykgPF9XZWJEb2N1bWVudFRleHRTaXppbmc+CiBAZW5kCiAKIEBpbXBsZW1l
bnRhdGlvbiBXZWJUZXh0VmlldwpAQCAtMzg2LDkgKzM4NiwyOSBAQAogCiBAaW1wbGVtZW50YXRp
b24gV2ViVGV4dFZpZXcgKFRleHRTaXppbmcpCiAKLS0gKHZvaWQpX3dlYl90ZXh0U2l6ZU11bHRp
cGxpZXJDaGFuZ2VkCistIChJQkFjdGlvbilfbWFrZVRleHRTbWFsbGVyOihpZClzZW5kZXIKIHsK
ICAgICBbc2VsZiBfdXBkYXRlVGV4dFNpemVNdWx0aXBsaWVyXTsKIH0KIAorLSAoSUJBY3Rpb24p
X21ha2VUZXh0TGFyZ2VyOihpZClzZW5kZXIKK3sKKyAgICBbc2VsZiBfdXBkYXRlVGV4dFNpemVN
dWx0aXBsaWVyXTsKK30KKworLSAoSUJBY3Rpb24pX21ha2VUZXh0U3RhbmRhcmRTaXplOihpZClz
ZW5kZXIKK3sKKyAgICBbc2VsZiBfdXBkYXRlVGV4dFNpemVNdWx0aXBsaWVyXTsKK30KKworLSAo
Qk9PTClfdHJhY2tzQ29tbW9uU2l6ZUZhY3RvcgoreworICAgIHJldHVybiBZRVM7Cit9CisKKy8v
IG5ldmVyIHNlbnQgYmVjYXVzZSB3ZSB0cmFjayB0aGUgY29tbW9uIHNpemUgZmFjdG9yCistIChC
T09MKV9jYW5NYWtlVGV4dFNtYWxsZXIgICAgICAgICAgeyAgIEFTU0VSVF9OT1RfUkVBQ0hFRCgp
OyByZXR1cm4gTk87ICAgIH0KKy0gKEJPT0wpX2Nhbk1ha2VUZXh0TGFyZ2VyICAgICAgICAgICB7
ICAgQVNTRVJUX05PVF9SRUFDSEVEKCk7IHJldHVybiBOTzsgICAgfQorLSAoQk9PTClfY2FuTWFr
ZVRleHRTdGFuZGFyZFNpemUgICAgIHsgICBBU1NFUlRfTk9UX1JFQUNIRUQoKTsgcmV0dXJuIE5P
OyAgICB9CisKIEBlbmQKSW5kZXg6IC4vV2ViVmlldy5zdWJwcm9qL1dlYlZpZXcubQo9PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09ClJDUyBmaWxlOiAvY3ZzL3Jvb3QvV2ViS2l0L1dlYlZpZXcuc3VicHJvai9XZWJWaWV3Lm0s
dgpyZXRyaWV2aW5nIHJldmlzaW9uIDEuMjk3CmRpZmYgLXAgLXUgLXIxLjI5NyAuL1dlYlZpZXcu
c3VicHJvai9XZWJWaWV3Lm0KLS0tIC4vV2ViVmlldy5zdWJwcm9qL1dlYlZpZXcubQkyNiBKdWwg
MjAwNSAwMDoxMTozMyAtMDAwMAkxLjI5NworKysgLi9XZWJWaWV3LnN1YnByb2ovV2ViVmlldy5t
CTI3IEp1bCAyMDA1IDE5OjEwOjExIC0wMDAwCkBAIC04Niw2ICs4Niw3IEBACiAjaW1wb3J0IDxX
ZWJDb3JlL1dlYkNvcmVWaWV3Lmg+CiAKICNpbXBvcnQgPEZvdW5kYXRpb24vTlNVUkxDb25uZWN0
aW9uLmg+CisjaW1wb3J0IDxvYmpjL29iamMtcnVudGltZS5oPgogCiAjaWYgX19wcGNfXwogI2Rl
ZmluZSBQUk9DRVNTT1IgIlBQQyIKQEAgLTE4NDAsNyArMTg0MSw2IEBAIE5TX0VOREhBTkRMRVIK
ICAgICAgICAgcmV0dXJuOwogICAgIH0KICAgICBfcHJpdmF0ZS0+dGV4dFNpemVNdWx0aXBsaWVy
ID0gbTsKLSAgICBbW3NlbGYgbWFpbkZyYW1lXSBfdGV4dFNpemVNdWx0aXBsaWVyQ2hhbmdlZF07
CiB9CiAKIC0gKGZsb2F0KXRleHRTaXplTXVsdGlwbGllcgpAQCAtMjM2Miw1MCArMjM2Miw3NSBA
QCBzdGF0aWMgV2ViRnJhbWUgKmluY3JlbWVudEZyYW1lKFdlYkZyYW1lCiAjZGVmaW5lIE1heGlt
dW1UZXh0U2l6ZU11bHRpcGxpZXIJMy4wCiAjZGVmaW5lIFRleHRTaXplTXVsdGlwbGllclJhdGlv
CQkxLjIKIAotLSAoQk9PTCljYW5NYWtlVGV4dFNtYWxsZXIKKy8vIFNsaWdodGx5IGZ1bmt5IG1l
dGhvZCB0aGF0IGxldHMgdXMgaGF2ZSBvbmUgY29weSBvZiB0aGUgbG9naWMgZm9yIGZpbmRpbmcg
ZG9jVmlld3MgdGhhdCBjYW4gZG8KKy8vIHRleHQgc2l6aW5nLiAgSXQgcmV0dXJucyB3aGV0aGVy
IGl0IGZvdW5kIGFueSAic3VpdGFibGUiIGRvYyB2aWV3cy4gIEl0IHNlbmRzIHNlbCB0byBhbnkg
c3VpdGFibGUKKy8vIGRvYyB2aWV3cywgb3IgaWYgc2VsPT0wIHdlIGRvIG5vdGhpbmcgdG8gdGhl
bS4gIEZvciBkb2Mgdmlld3MgdGhhdCB0cmFjayBvdXIgc2l6ZSBmYWN0b3IsIHRoZXkgYXJlCisv
LyBzdWl0YWJsZSBpZiBkb1RyYWNraW5nVmlld3M9PVlFUyAod2hpY2ggaXMgcHJhY3RpY2UgbWVh
bnMgdGhhdCBvdXIgc2l6ZSBmYWN0b3IgaXNuJ3QgYXQgaXRzIG1heCBvcgorLy8gbWluKS4gIEZv
ciBkb2Mgdmlld3MgdGhhdCBkb24ndCB0cmFjayBpdCwgd2Ugc2VuZCB0aGVtIHRlc3RTZWwgdG8g
ZGV0ZXJtaW5lIHN1aXRhYmxpbGl0eS4KKy0gKEJPT0wpX3BlcmZvcm1UZXh0U2l6aW5nU2VsZWN0
b3I6KFNFTClzZWwgd2l0aE9iamVjdDooaWQpYXJnIG9uVHJhY2tpbmdEb2NzOihCT09MKWRvVHJh
Y2tpbmdWaWV3cyBzZWxGb3JOb25UcmFja2luZ0RvY3M6KFNFTCl0ZXN0U2VsCiB7CiAgICAgaWYg
KFtbc2VsZiBtYWluRnJhbWVdIGRhdGFTb3VyY2VdID09IG5pbCkgewogICAgICAgICByZXR1cm4g
Tk87CiAgICAgfQotICAgIC8vIEZJWE1FOiBUaGlzIHdpbGwgcHJldmVudCB0ZXh0IHNpemluZyBp
biBzdWJmcmFtZXMgaWYgdGhlIG1haW4gZnJhbWUgZG9lc24ndCBzdXBwb3J0IGl0Ci0gICAgaWYg
KCFbW1tbc2VsZiBtYWluRnJhbWVdIGZyYW1lVmlld10gZG9jdW1lbnRWaWV3XSBjb25mb3Jtc1Rv
UHJvdG9jb2w6QHByb3RvY29sKF93ZWJfV2ViRG9jdW1lbnRUZXh0U2l6aW5nKV0pIHsKLSAgICAg
ICAgcmV0dXJuIE5POwotICAgIH0KLSAgICBpZiAoW3NlbGYgdGV4dFNpemVNdWx0aXBsaWVyXS9U
ZXh0U2l6ZU11bHRpcGxpZXJSYXRpbyA8IE1pbmltdW1UZXh0U2l6ZU11bHRpcGxpZXIpIHsKLSAg
ICAgICAgcmV0dXJuIE5POworICAgIAorICAgIEJPT0wgZm91bmRTb21lID0gTk87CisgICAgTlNB
cnJheSAqZG9jVmlld3MgPSBbW3NlbGYgbWFpbkZyYW1lXSBfZG9jdW1lbnRWaWV3c107CisgICAg
aW50IGk7CisgICAgZm9yIChpID0gW2RvY1ZpZXdzIGNvdW50XS0xOyBpID49IDA7IGktLSkgewor
ICAgICAgICBpZCBkb2NWaWV3ID0gW2RvY1ZpZXdzIG9iamVjdEF0SW5kZXg6aV07CisgICAgICAg
IGlmIChbZG9jVmlldyBjb25mb3Jtc1RvUHJvdG9jb2w6QHByb3RvY29sKF9XZWJEb2N1bWVudFRl
eHRTaXppbmcpXSkgeworICAgICAgICAgICAgaWQgPF9XZWJEb2N1bWVudFRleHRTaXppbmc+IHNp
emluZ0RvY1ZpZXcgPSAoaWQgPF9XZWJEb2N1bWVudFRleHRTaXppbmc+KWRvY1ZpZXc7CisgICAg
ICAgICAgICBCT09MIGlzU3VpdGFibGU7CisgICAgICAgICAgICBpZiAoW3NpemluZ0RvY1ZpZXcg
X3RyYWNrc0NvbW1vblNpemVGYWN0b3JdKSB7CisgICAgICAgICAgICAgICAgaXNTdWl0YWJsZSA9
IGRvVHJhY2tpbmdWaWV3czsKKyAgICAgICAgICAgIH0gZWxzZSB7CisgICAgICAgICAgICAgICAg
Ly8gSW5jYXJuYXRpb24gdG8gcGVyZm9ybSBhIHNlbGVjdG9yIHJldHVybmluZyBhIEJPT0wgZnJv
bSBvYmpjL29iamMtcnVudGltZS5oCisgICAgICAgICAgICAgICAgaXNTdWl0YWJsZSA9ICgqKEJP
T0woKikoaWQsIFNFTCwgLi4uKSlvYmpjX21zZ1NlbmQpKHNpemluZ0RvY1ZpZXcsIHRlc3RTZWwp
OworICAgICAgICAgICAgfQorCisgICAgICAgICAgICBpZiAoaXNTdWl0YWJsZSkgeworICAgICAg
ICAgICAgICAgIGlmIChzZWwgIT0gMCkgeworICAgICAgICAgICAgICAgICAgICBmb3VuZFNvbWUg
PSBZRVM7CisgICAgICAgICAgICAgICAgICAgIFtzaXppbmdEb2NWaWV3IHBlcmZvcm1TZWxlY3Rv
cjpzZWwgd2l0aE9iamVjdDphcmddOworICAgICAgICAgICAgICAgIH0gZWxzZSB7CisgICAgICAg
ICAgICAgICAgICAgIC8vIGlmIHdlJ3JlIGp1c3QgY2FsbGVkIGZvciB0aGUgYmVuZWZpdCBvZiB0
aGUgcmV0dXJuIHZhbHVlLCB3ZSBjYW4gcmV0dXJuIGF0IGZpcnN0IG1hdGNoCisgICAgICAgICAg
ICAgICAgICAgIHJldHVybiBZRVM7CisgICAgICAgICAgICAgICAgfQorICAgICAgICAgICAgfQor
ICAgICAgICB9CiAgICAgfQotICAgIHJldHVybiBZRVM7CisgICAgCisgICAgcmV0dXJuIGZvdW5k
U29tZTsKK30KKworLSAoQk9PTCljYW5NYWtlVGV4dFNtYWxsZXIKK3sKKyAgICBCT09MIGNhblNo
cmlua01vcmUgPSBfcHJpdmF0ZS0+dGV4dFNpemVNdWx0aXBsaWVyL1RleHRTaXplTXVsdGlwbGll
clJhdGlvID4gTWluaW11bVRleHRTaXplTXVsdGlwbGllcjsKKyAgICByZXR1cm4gW3NlbGYgX3Bl
cmZvcm1UZXh0U2l6aW5nU2VsZWN0b3I6KFNFTCkwIHdpdGhPYmplY3Q6bmlsIG9uVHJhY2tpbmdE
b2NzOmNhblNocmlua01vcmUgc2VsRm9yTm9uVHJhY2tpbmdEb2NzOkBzZWxlY3RvcihfY2FuTWFr
ZVRleHRTbWFsbGVyKV07CiB9CiAKIC0gKEJPT0wpY2FuTWFrZVRleHRMYXJnZXIKIHsKLSAgICBp
ZiAoW1tzZWxmIG1haW5GcmFtZV0gZGF0YVNvdXJjZV0gPT0gbmlsKSB7Ci0gICAgICAgIHJldHVy
biBOTzsKLSAgICB9Ci0gICAgLy8gRklYTUU6IFRoaXMgd2lsbCBwcmV2ZW50IHRleHQgc2l6aW5n
IGluIHN1YmZyYW1lcyBpZiB0aGUgbWFpbiBmcmFtZSBkb2Vzbid0IHN1cHBvcnQgaXQKLSAgICBp
ZiAoIVtbW1tzZWxmIG1haW5GcmFtZV0gZnJhbWVWaWV3XSBkb2N1bWVudFZpZXddIGNvbmZvcm1z
VG9Qcm90b2NvbDpAcHJvdG9jb2woX3dlYl9XZWJEb2N1bWVudFRleHRTaXppbmcpXSkgewotICAg
ICAgICByZXR1cm4gTk87Ci0gICAgfQotICAgIGlmIChbc2VsZiB0ZXh0U2l6ZU11bHRpcGxpZXJd
KlRleHRTaXplTXVsdGlwbGllclJhdGlvID4gTWF4aW11bVRleHRTaXplTXVsdGlwbGllcikgewot
ICAgICAgICByZXR1cm4gTk87Ci0gICAgfQotICAgIHJldHVybiBZRVM7CisgICAgQk9PTCBjYW5H
cm93TW9yZSA9IF9wcml2YXRlLT50ZXh0U2l6ZU11bHRpcGxpZXIqVGV4dFNpemVNdWx0aXBsaWVy
UmF0aW8gPCBNYXhpbXVtVGV4dFNpemVNdWx0aXBsaWVyOworICAgIHJldHVybiBbc2VsZiBfcGVy
Zm9ybVRleHRTaXppbmdTZWxlY3RvcjooU0VMKTAgd2l0aE9iamVjdDpuaWwgb25UcmFja2luZ0Rv
Y3M6Y2FuR3Jvd01vcmUgc2VsRm9yTm9uVHJhY2tpbmdEb2NzOkBzZWxlY3RvcihfY2FuTWFrZVRl
eHRMYXJnZXIpXTsKIH0KIAogLSAoSUJBY3Rpb24pbWFrZVRleHRTbWFsbGVyOihpZClzZW5kZXIK
IHsKLSAgICBpZiAoIVtzZWxmIGNhbk1ha2VUZXh0U21hbGxlcl0pIHsKLSAgICAgICAgcmV0dXJu
OworICAgIEJPT0wgY2FuU2hyaW5rTW9yZSA9IF9wcml2YXRlLT50ZXh0U2l6ZU11bHRpcGxpZXIv
VGV4dFNpemVNdWx0aXBsaWVyUmF0aW8gPiBNaW5pbXVtVGV4dFNpemVNdWx0aXBsaWVyOworICAg
IGlmIChjYW5TaHJpbmtNb3JlKSB7CisgICAgICAgIFtzZWxmIHNldFRleHRTaXplTXVsdGlwbGll
cjpfcHJpdmF0ZS0+dGV4dFNpemVNdWx0aXBsaWVyL1RleHRTaXplTXVsdGlwbGllclJhdGlvXTsK
ICAgICB9Ci0gICAgW3NlbGYgc2V0VGV4dFNpemVNdWx0aXBsaWVyOltzZWxmIHRleHRTaXplTXVs
dGlwbGllcl0vVGV4dFNpemVNdWx0aXBsaWVyUmF0aW9dOworICAgIFtzZWxmIF9wZXJmb3JtVGV4
dFNpemluZ1NlbGVjdG9yOkBzZWxlY3RvcihfbWFrZVRleHRTbWFsbGVyOikgd2l0aE9iamVjdDpz
ZW5kZXIgb25UcmFja2luZ0RvY3M6Y2FuU2hyaW5rTW9yZSBzZWxGb3JOb25UcmFja2luZ0RvY3M6
QHNlbGVjdG9yKF9jYW5NYWtlVGV4dFNtYWxsZXIpXTsKIH0KIAogLSAoSUJBY3Rpb24pbWFrZVRl
eHRMYXJnZXI6KGlkKXNlbmRlcgogewotICAgIGlmICghW3NlbGYgY2FuTWFrZVRleHRMYXJnZXJd
KSB7Ci0gICAgICAgIHJldHVybjsKKyAgICBCT09MIGNhbkdyb3dNb3JlID0gX3ByaXZhdGUtPnRl
eHRTaXplTXVsdGlwbGllcipUZXh0U2l6ZU11bHRpcGxpZXJSYXRpbyA8IE1heGltdW1UZXh0U2l6
ZU11bHRpcGxpZXI7CisgICAgaWYgKGNhbkdyb3dNb3JlKSB7CisgICAgICAgIFtzZWxmIHNldFRl
eHRTaXplTXVsdGlwbGllcjpfcHJpdmF0ZS0+dGV4dFNpemVNdWx0aXBsaWVyKlRleHRTaXplTXVs
dGlwbGllclJhdGlvXTsKICAgICB9Ci0gICAgW3NlbGYgc2V0VGV4dFNpemVNdWx0aXBsaWVyOltz
ZWxmIHRleHRTaXplTXVsdGlwbGllcl0qVGV4dFNpemVNdWx0aXBsaWVyUmF0aW9dOworICAgIFtz
ZWxmIF9wZXJmb3JtVGV4dFNpemluZ1NlbGVjdG9yOkBzZWxlY3RvcihfbWFrZVRleHRMYXJnZXI6
KSB3aXRoT2JqZWN0OnNlbmRlciBvblRyYWNraW5nRG9jczpjYW5Hcm93TW9yZSBzZWxGb3JOb25U
cmFja2luZ0RvY3M6QHNlbGVjdG9yKF9jYW5NYWtlVGV4dExhcmdlcildOwogfQogCiAtIChCT09M
KV9yZXNwb25kZXJWYWxpZGF0ZVVzZXJJbnRlcmZhY2VJdGVtOihpZCA8TlNWYWxpZGF0ZWRVc2Vy
SW50ZXJmYWNlSXRlbT4paXRlbQpAQCAtMjUyMSwyNyArMjU0Niw2IEBAIHN0YXRpYyBXZWJGcmFt
ZSAqaW5jcmVtZW50RnJhbWUoV2ViRnJhbWUKICAgICB9CiB9CiAKLS0gKEJPT0wpY2FuTWFrZVRl
eHRTdGFuZGFyZFNpemUKLXsKLSAgICBpZiAoW1tzZWxmIG1haW5GcmFtZV0gZGF0YVNvdXJjZV0g
PT0gbmlsKSB7Ci0gICAgICAgIHJldHVybiBOTzsKLSAgICB9Ci0gICAgLy8gRklYTUU6IFRoaXMg
d2lsbCBwcmV2ZW50IHRleHQgc2l6aW5nIGluIHN1YmZyYW1lcyBpZiB0aGUgbWFpbiBmcmFtZSBk
b2Vzbid0IHN1cHBvcnQgaXQKLSAgICBpZiAoIVtbW1tzZWxmIG1haW5GcmFtZV0gZnJhbWVWaWV3
XSBkb2N1bWVudFZpZXddIGNvbmZvcm1zVG9Qcm90b2NvbDpAcHJvdG9jb2woX3dlYl9XZWJEb2N1
bWVudFRleHRTaXppbmcpXSkgewotICAgICAgICByZXR1cm4gTk87Ci0gICAgfQotICAgIAotICAg
IHJldHVybiBbc2VsZiB0ZXh0U2l6ZU11bHRpcGxpZXJdICE9IDE7Ci19Ci0KLS0gKElCQWN0aW9u
KW1ha2VUZXh0U3RhbmRhcmRTaXplOihpZClzZW5kZXIKLXsKLSAgICBpZiAoIVtzZWxmIGNhbk1h
a2VUZXh0U3RhbmRhcmRTaXplXSkgewotICAgICAgICByZXR1cm47Ci0gICAgfQotICAgIFtzZWxm
IHNldFRleHRTaXplTXVsdGlwbGllcjoxXTsKLX0KLQogLSAoQk9PTCltYWludGFpbnNJbmFjdGl2
ZVNlbGVjdGlvbgogewogICAgIHJldHVybiBbc2VsZiBpc0VkaXRhYmxlXTsKQEAgLTI1NzksNiAr
MjU4MywyMCBAQCBzdGF0aWMgV2ViRnJhbWUgKmluY3JlbWVudEZyYW1lKFdlYkZyYW1lCiAgICAg
cmV0dXJuIG5pbDsKIH0KIAorLSAoQk9PTCljYW5NYWtlVGV4dFN0YW5kYXJkU2l6ZQoreworICAg
IEJPT0wgbm90QWxyZWFkeVN0YW5kYXJkID0gX3ByaXZhdGUtPnRleHRTaXplTXVsdGlwbGllciAh
PSAxLjA7CisgICAgcmV0dXJuIFtzZWxmIF9wZXJmb3JtVGV4dFNpemluZ1NlbGVjdG9yOihTRUwp
MCB3aXRoT2JqZWN0Om5pbCBvblRyYWNraW5nRG9jczpub3RBbHJlYWR5U3RhbmRhcmQgc2VsRm9y
Tm9uVHJhY2tpbmdEb2NzOkBzZWxlY3RvcihfY2FuTWFrZVRleHRTdGFuZGFyZFNpemUpXTsKK30K
KworLSAoSUJBY3Rpb24pbWFrZVRleHRTdGFuZGFyZFNpemU6KGlkKXNlbmRlcgoreworICAgIEJP
T0wgbm90QWxyZWFkeVN0YW5kYXJkID0gX3ByaXZhdGUtPnRleHRTaXplTXVsdGlwbGllciAhPSAx
LjA7CisgICAgaWYgKG5vdEFscmVhZHlTdGFuZGFyZCkgeworICAgICAgICBbc2VsZiBzZXRUZXh0
U2l6ZU11bHRpcGxpZXI6MS4wXTsKKyAgICB9CisgICAgW3NlbGYgX3BlcmZvcm1UZXh0U2l6aW5n
U2VsZWN0b3I6QHNlbGVjdG9yKF9tYWtlVGV4dFN0YW5kYXJkU2l6ZTopIHdpdGhPYmplY3Q6c2Vu
ZGVyIG9uVHJhY2tpbmdEb2NzOm5vdEFscmVhZHlTdGFuZGFyZCBzZWxGb3JOb25UcmFja2luZ0Rv
Y3M6QHNlbGVjdG9yKF9jYW5NYWtlVGV4dFN0YW5kYXJkU2l6ZSldOworfQogCiBAZW5kCiAK
</data>

          </attachment>
          <attachment
              isobsolete="0"
              ispatch="1"
              isprivate="0"
          >
            <attachid>3117</attachid>
            <date>2005-07-27 13:47:06 -0700</date>
            <delta_ts>2005-07-27 14:07:16 -0700</delta_ts>
            <desc>patch #3 - in response to comments just fixing typos, one method rename</desc>
            <filename>4015-4091.patch</filename>
            <type>text/plain</type>
            <size>41399</size>
            <attacher name="Trey Matteson">trey</attacher>
            
              <data encoding="base64">SW5kZXg6IENoYW5nZUxvZwo9PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09ClJDUyBmaWxlOiAvY3ZzL3Jvb3QvV2ViS2l0L0No
YW5nZUxvZyx2CnJldHJpZXZpbmcgcmV2aXNpb24gMS4zMjYxCmRpZmYgLXAgLXUgLXIxLjMyNjEg
Q2hhbmdlTG9nCi0tLSBDaGFuZ2VMb2cJMjcgSnVsIDIwMDUgMDI6MDE6MDAgLTAwMDAJMS4zMjYx
CisrKyBDaGFuZ2VMb2cJMjcgSnVsIDIwMDUgMjA6NDM6MTMgLTAwMDAKQEAgLTEsMyArMSw4MSBA
QAorMjAwNS0wNy0yNyAgVHJleSBNYXR0ZXNvbiAgPHRyZXlAdXNhLm5ldD4KKworICAgICAgICBS
ZXZpZXdlZCBieSBKb2huIFN1bGxpdmFuLgorCisgICAgICAgIEZpeGVkIGh0dHA6Ly9idWd6aWxs
YS5vcGVuZGFyd2luLm9yZy9zaG93X2J1Zy5jZ2k/aWQ9NDAxNQorICAgICAgICAgIFBERiB2aWV3
cyBzaG91bGQgcmVtZW1iZXIgdmlld2luZyBtb2RlLCBzY3JvbGwgcG9zaXRpb24gYWNyb3NzIGJh
Y2svZm9yd2FyZAorICAgICAgICAgIE5vdGUgdGhpcyBkb2Vzbid0IHdvcmsgd2l0aGluIGZyYW1l
cyBiZWNhdXNlIG9mIGEgUERGS2l0IGJ1ZyAtIHNlZSA0MTY0CisgICAgICAgIEZpeGVkIGh0dHA6
Ly9idWd6aWxsYS5vcGVuZGFyd2luLm9yZy9zaG93X2J1Zy5jZ2k/aWQ9NDA5MQorICAgICAgICAg
IFBERiB2aWV3cyBzaG91bGQga2VlcCBhIHNlcGFyYXRlIHNjYWxpbmcgZmFjdG9yIGZyb20gc2hh
cmVkIHRleHQgc2NhbGluZyBmYWN0b3IKKworICAgICAgICBCYXNpYyBpZGVhICMxIGlzIHRoYXQg
d2Ugbm93IGhhdmUgYSBnZW5lcmFsIG1lY2hhbmlzbSBmb3IgYSBXZWJEb2NWaWV3IHRvIHNhdmUv
cmVzdG9yZSBzb21lIFVJCisgICAgICAgIHN0YXRlIHRvIHRoZSBXZWJIaXN0b3J5SXRlbS4KKyAg
ICAgICAgQmFzaWMgaWRlYSAjMiBpcyB0aGF0IF9XZWJEb2N1bWVudFRleHRTaXppbmcgaXMgZXhw
YW5kZWQgdG8gYWxsb3cgZm9yIHRoZSBjYXNlIG9mIGEgV2ViRG9jVmlldworICAgICAgICBrZWVw
aW5nIGl0cyBvd24gbm90aW9uIG9mIGEgc2NhbGluZyBmYWN0b3IuICBXZWJQREZWaWV3J3MgLV90
cmFja3NDb21tb25TaXplRmFjdG9yIGhhcyBqdXN0aWZpY2F0aW9uLgorCisgICAgICAgICogSGlz
dG9yeS5zdWJwcm9qL1dlYkhpc3RvcnlJdGVtLm06CisgICAgICAgICgtW1dlYkhpc3RvcnlJdGVt
IHNldFZpZXdTdGF0ZTpdKTogIE5ldyBtZXRob2RzIHRvIGhvbGQgUExpc3Qgb2YgYXJiaXRyYXJ5
IFdlYlZpZXcgc3RhdGUKKyAgICAgICAgKC1bV2ViSGlzdG9yeUl0ZW0gdmlld1N0YXRlXSk6Cisg
ICAgICAgICogSGlzdG9yeS5zdWJwcm9qL1dlYkhpc3RvcnlJdGVtUHJpdmF0ZS5oOgorICAgICAg
ICAqIFdlYktpdC54Y29kZXByb2ovcHJvamVjdC5wYnhwcm9qOiAgQWRkIFF1YXJ0eiB0byBmcmFt
ZXdvcmsgcGF0aCBzbyB3ZSBjYW4gaW1wb3J0IFBERktpdCBmaWxlcworICAgICAgICAqIFdlYlZp
ZXcuc3VicHJvai9XZWJEb2N1bWVudEludGVybmFsLmg6ICBOZXcgbWV0aG9kcyBhZGRlZCB0byBf
V2ViRG9jdW1lbnRUZXh0U2l6aW5nLgorICAgICAgICAgIEFsc28gdGhlIF8gcHJlZml4IGlzIHN1
ZmZpY2llbnQgaW5zdGVhZCBvZiBfd2ViX1dlYkRvY3VtZW50VGV4dFNpemluZy4KKyAgICAgICAg
ICBBZGRlZCBfV2ViRG9jdW1lbnRWaWV3U3RhdGUgcHJvdG9jb2wuCisgICAgICAgICogV2ViVmll
dy5zdWJwcm9qL1dlYkZyYW1lLm06CisgICAgICAgICgtW1dlYkZyYW1lIF9jcmVhdGVJdGVtVHJl
ZVdpdGhUYXJnZXRGcmFtZTpjbGlwcGVkQXRUYXJnZXQ6XSk6ICBSZW5hbWUgb2Ygc2F2ZS9yZXN0
b3JlIG1ldGhvZHMuCisgICAgICAgICgtW1dlYkZyYW1lIF9kZXRhY2hGcm9tUGFyZW50XSk6ICBE
aXR0bworICAgICAgICAoLVtXZWJGcmFtZSBfdHJhbnNpdGlvblRvQ29tbWl0dGVkOl0pOiAgRGl0
dG8KKyAgICAgICAgKC1bV2ViRnJhbWUgX2NoZWNrTG9hZENvbXBsZXRlRm9yVGhpc0ZyYW1lXSk6
ICBEaXR0bworICAgICAgICAoLVtXZWJGcmFtZSBfbG9hZEl0ZW06d2l0aExvYWRUeXBlOl0pOiAg
RGl0dG8KKyAgICAgICAgKC1bV2ViRnJhbWUgX3JlY3Vyc2l2ZUdvVG9JdGVtOmZyb21JdGVtOndp
dGhMb2FkVHlwZTpdKTogIERpdHRvCisgICAgICAgICgtW1dlYkZyYW1lIF9zYXZlVmlld1N0YXRl
VG9JdGVtOl0pOiAgQ2FsbCBkb2MgdmlldyB0byByZXRyaWV2ZSB2aWV3IHN0YXRlLgorICAgICAg
ICAoLVtXZWJGcmFtZSBfcmVzdG9yZVZpZXdTdGF0ZV0pOiAgQ2FsbCBkb2MgdmlldyB0byBzZXQg
dmlldyBzdGF0ZS4KKyAgICAgICAgKC1bV2ViRnJhbWUgX3Njcm9sbFRvVG9wXSk6ICBOdWtlZCBk
ZWFkIGNvZGUuCisgICAgICAgICgtW1dlYkZyYW1lIF90ZXh0U2l6ZU11bHRpcGxpZXJDaGFuZ2Vk
XSk6ICBUaGlzIHdvcmsgbm93IGFwcGVhcnMgaW4gV2ViVmlldy4KKyAgICAgICAgKC1bV2ViRnJh
bWUgX3NhdmVEb2N1bWVudEFuZFNjcm9sbFN0YXRlXSk6ICBTYW1lIHJlbmFtZSwgb25lIGNvZGUg
Y2xlYW51cC4KKyAgICAgICAgKC1bV2ViRnJhbWUgX2FjY3VtdWxhdGVEb2N1bWVudFZpZXdzOl0p
OiBBZGQgb3VyIGRvY3ZpZXcgdG8gdGhlIGFycmF5LCBjYWxsIGtpZHMuCisgICAgICAgICgtW1dl
YkZyYW1lIF9kb2N1bWVudFZpZXdzXSk6ICBOZXcgaGVscGVyIHRvIHJldHVybiBhbGwgZG9jdmll
d3MuCisgICAgICAgICgtW1dlYkZyYW1lIF9kaWRGaXJzdExheW91dF0pOiAgU2FtZSBuYW1lIGNo
YW5nZS4KKyAgICAgICAgKiBXZWJWaWV3LnN1YnByb2ovV2ViRnJhbWVJbnRlcm5hbC5oOgorICAg
ICAgICAqIFdlYlZpZXcuc3VicHJvai9XZWJGcmFtZVByaXZhdGUuaDoKKyAgICAgICAgKiBXZWJW
aWV3LnN1YnByb2ovV2ViSFRNTFZpZXcubTogIFJlbW92ZWQgcmVkdW5kYW50IGNhdGVnb3J5IGRl
Y2wuCisgICAgICAgICgtW1dlYkhUTUxWaWV3IF9tYWtlVGV4dFNtYWxsZXI6XSk6ICBJbXBsZW1l
bnQgbmV3IHByb3RvY29sLgorICAgICAgICAoLVtXZWJIVE1MVmlldyBfbWFrZVRleHRMYXJnZXI6
XSk6CisgICAgICAgICgtW1dlYkhUTUxWaWV3IF9tYWtlVGV4dFN0YW5kYXJkU2l6ZTpdKToKKyAg
ICAgICAgKC1bV2ViSFRNTFZpZXcgX3RyYWNrc0NvbW1vblNpemVGYWN0b3JdKToKKyAgICAgICAg
KiBXZWJWaWV3LnN1YnByb2ovV2ViUERGUmVwcmVzZW50YXRpb24ubTogIFR3ZWFrICNpbXBvcnRz
LgorICAgICAgICAqIFdlYlZpZXcuc3VicHJvai9XZWJQREZWaWV3Lmg6CisgICAgICAgICogV2Vi
Vmlldy5zdWJwcm9qL1dlYlBERlZpZXcubToKKyAgICAgICAgKC1bV2ViUERGVmlldyBfbWVudUl0
ZW1zRnJvbVBERktpdEZvckV2ZW50Ol0pOiAgTm8gbG9uZ2VyIGludGVyY2VwdCBjb250ZXh0IG1l
bnUgdGV4dCBzaXppbmcgaXRlbXMuCisgICAgICAgICgtW1dlYlBERlZpZXcgc2V0RGF0YVNvdXJj
ZTpdKTogIE5vIGxvbmdlciB0cmFjayB0aGUgV2ViVmlldydzIHNjYWxpbmcgZmFjdG9yLgorICAg
ICAgICAoLVtXZWJQREZWaWV3IHNjcm9sbFBvaW50XSk6ICBEaWcgdGhyb3VnaCBQREZLaXQgdmll
dyB0cmVlIHRvIGdldCByZWFsIHNjcm9sbCBwb3NpdGlvbgorICAgICAgICAoLVtXZWJQREZWaWV3
IHNldFNjcm9sbFBvaW50Ol0pOiAgRGl0dG8KKyAgICAgICAgKC1bV2ViUERGVmlldyB2aWV3U3Rh
dGVdKTogIFJldHVybiBidW5kbGUgb2Ygdmlld2luZyBwYXJhbXMKKyAgICAgICAgKC1bV2ViUERG
VmlldyBzZXRWaWV3U3RhdGU6XSk6ICBSZXN0b3JlIGJ1bmRsZSBvZiB2aWV3aW5nIHBhcmFtcwor
ICAgICAgICAoLVtXZWJQREZWaWV3IF9tYWtlVGV4dFNtYWxsZXI6XSk6ICBJbXBsZW1lbnQgbmV3
IHRleHQgc2l6aW5nIHByb3RvY29sCisgICAgICAgICgtW1dlYlBERlZpZXcgX21ha2VUZXh0TGFy
Z2VyOl0pOgorICAgICAgICAoLVtXZWJQREZWaWV3IF9tYWtlVGV4dFN0YW5kYXJkU2l6ZTpdKToK
KyAgICAgICAgKC1bV2ViUERGVmlldyBfdHJhY2tzQ29tbW9uU2l6ZUZhY3Rvcl0pOgorICAgICAg
ICAoLVtXZWJQREZWaWV3IF9jYW5NYWtlVGV4dFNtYWxsZXJdKToKKyAgICAgICAgKC1bV2ViUERG
VmlldyBfY2FuTWFrZVRleHRMYXJnZXJdKToKKyAgICAgICAgKC1bV2ViUERGVmlldyBfY2FuTWFr
ZVRleHRTdGFuZGFyZFNpemVdKToKKyAgICAgICAgKiBXZWJWaWV3LnN1YnByb2ovV2ViVGV4dFZp
ZXcubToKKyAgICAgICAgKC1bV2ViVGV4dFZpZXcgX21ha2VUZXh0U21hbGxlcjpdKTogIEltcGxl
bWVudCBuZXcgdGV4dCBzaXppbmcgcHJvdG9jb2wKKyAgICAgICAgKC1bV2ViVGV4dFZpZXcgX21h
a2VUZXh0TGFyZ2VyOl0pOgorICAgICAgICAoLVtXZWJUZXh0VmlldyBfbWFrZVRleHRTdGFuZGFy
ZFNpemU6XSk6CisgICAgICAgICgtW1dlYlRleHRWaWV3IF90cmFja3NDb21tb25TaXplRmFjdG9y
XSk6CisgICAgICAgICogV2ViVmlldy5zdWJwcm9qL1dlYlZpZXcubToKKyAgICAgICAgKC1bV2Vi
VmlldyBzZXRUZXh0U2l6ZU11bHRpcGxpZXI6XSk6ICBDYWxsaW5nIGRvY1ZpZXdzIGlzIG5vdyBt
b3JlIGNvbXBsaWNhdGVzIHRoYW4ganVzdCBwb3N0aW5nCisgICAgICAgICAgIGEgbm90aWZpY2F0
aW9uIHRvIHRoZSBmcmFtZS4KKyAgICAgICAgKC1bV2ViVmlldyBfcGVyZm9ybVRleHRTaXppbmdT
ZWxlY3Rvcjp3aXRoT2JqZWN0Om9uVHJhY2tpbmdEb2NzOnNlbEZvck5vblRyYWNraW5nRG9jczpd
KTogIFdvcmtob3JzZQorICAgICAgICAgICB0aGF0IHNlbmRzIHRoZSB0ZXh0IHNpemluZyBtZXRo
b2QgdG8gdGhlIHJpZ2h0IGRvYyB2aWV3cy4KKyAgICAgICAgKC1bV2ViVmlldyBjYW5NYWtlVGV4
dFNtYWxsZXJdKTogIENhbGwgd29ya2hvcnNlLgorICAgICAgICAoLVtXZWJWaWV3IGNhbk1ha2VU
ZXh0TGFyZ2VyXSk6ICBEaXR0bworICAgICAgICAoLVtXZWJWaWV3IG1ha2VUZXh0U21hbGxlcjpd
KTogIERpdHRvCisgICAgICAgICgtW1dlYlZpZXcgbWFrZVRleHRMYXJnZXI6XSk6ICBEaXR0bwor
ICAgICAgICAoLVtXZWJWaWV3IGNhbk1ha2VUZXh0U3RhbmRhcmRTaXplXSk6ICBEaXR0bworICAg
ICAgICAoLVtXZWJWaWV3IG1ha2VUZXh0U3RhbmRhcmRTaXplOl0pOiAgRGl0dG8KKwogMjAwNS0w
Ny0yNiAgSnVzdGluIEdhcmNpYSAgPGp1c3Rpbi5nYXJjaWFAYXBwbGUuY29tPgogCiAgICAgICAg
IFBhdGNoIGJ5IFRyZXkgTWF0dGVzb24gPHRyZXlAdXNhLm5ldD4KSW5kZXg6IC4vSGlzdG9yeS5z
dWJwcm9qL1dlYkhpc3RvcnlJdGVtLm0KPT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PQpSQ1MgZmlsZTogL2N2cy9yb290L1dl
YktpdC9IaXN0b3J5LnN1YnByb2ovV2ViSGlzdG9yeUl0ZW0ubSx2CnJldHJpZXZpbmcgcmV2aXNp
b24gMS45MQpkaWZmIC1wIC11IC1yMS45MSAuL0hpc3Rvcnkuc3VicHJvai9XZWJIaXN0b3J5SXRl
bS5tCi0tLSAuL0hpc3Rvcnkuc3VicHJvai9XZWJIaXN0b3J5SXRlbS5tCTE0IEp1bCAyMDA1IDAy
OjQzOjUxIC0wMDAwCTEuOTEKKysrIC4vSGlzdG9yeS5zdWJwcm9qL1dlYkhpc3RvcnlJdGVtLm0J
MjcgSnVsIDIwMDUgMjA6NDM6MTYgLTAwMDAKQEAgLTc5LDYgKzc5LDcgQEAgTlNTdHJpbmcgKldl
Ykhpc3RvcnlJdGVtQ2hhbmdlZE5vdGlmaWNhdAogICAgIE5TU3RyaW5nICpmb3JtUmVmZXJyZXI7
CiAgICAgLy8gaW5mbyB1c2VkIHRvIHN1cHBvcnQgUlNTIGZlZWRzCiAgICAgTlNTdHJpbmcgKlJT
U0ZlZWRSZWZlcnJlcjsKKyAgICBpZCB2aWV3U3RhdGU7CiB9CiBAZW5kCiAKQEAgLTQzMCw2ICs0
MzEsMTggQEAgTlNTdHJpbmcgKldlYkhpc3RvcnlJdGVtQ2hhbmdlZE5vdGlmaWNhdAogICAgIF9w
cml2YXRlLT5zY3JvbGxQb2ludCA9IHNjcm9sbFBvaW50OwogfQogCistICh2b2lkKXNldFZpZXdT
dGF0ZTooaWQpc3RhdGVQTGlzdDsKK3sKKyAgICBpZCBjb3B5ID0gW3N0YXRlUExpc3QgY29weV07
CisgICAgW19wcml2YXRlLT52aWV3U3RhdGUgcmVsZWFzZV07CisgICAgX3ByaXZhdGUtPnZpZXdT
dGF0ZSA9IGNvcHk7Cit9CisKKy0gKGlkKXZpZXdTdGF0ZQoreworICAgIHJldHVybiBfcHJpdmF0
ZS0+dmlld1N0YXRlOworfQorCiAtIChCT09MKWlzVGFyZ2V0SXRlbQogewogICAgIHJldHVybiBf
cHJpdmF0ZS0+aXNUYXJnZXRJdGVtOwpJbmRleDogLi9IaXN0b3J5LnN1YnByb2ovV2ViSGlzdG9y
eUl0ZW1Qcml2YXRlLmgKPT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PQpSQ1MgZmlsZTogL2N2cy9yb290L1dlYktpdC9IaXN0
b3J5LnN1YnByb2ovV2ViSGlzdG9yeUl0ZW1Qcml2YXRlLmgsdgpyZXRyaWV2aW5nIHJldmlzaW9u
IDEuMTQKZGlmZiAtcCAtdSAtcjEuMTQgLi9IaXN0b3J5LnN1YnByb2ovV2ViSGlzdG9yeUl0ZW1Q
cml2YXRlLmgKLS0tIC4vSGlzdG9yeS5zdWJwcm9qL1dlYkhpc3RvcnlJdGVtUHJpdmF0ZS5oCTUg
SnVuIDIwMDUgMTc6NTQ6MjMgLTAwMDAJMS4xNAorKysgLi9IaXN0b3J5LnN1YnByb2ovV2ViSGlz
dG9yeUl0ZW1Qcml2YXRlLmgJMjcgSnVsIDIwMDUgMjA6NDM6MTYgLTAwMDAKQEAgLTU3LDYgKzU3
LDcgQEAKIC0gKE5TU3RyaW5nICopZm9ybVJlZmVycmVyOwogLSAoTlNTdHJpbmcgKilSU1NGZWVk
UmVmZXJyZXI7CiAtIChpbnQpdmlzaXRDb3VudDsKKy0gKGlkKXZpZXdTdGF0ZTsKIAogLSAodm9p
ZClfbWVyZ2VBdXRvQ29tcGxldGVIaW50czooV2ViSGlzdG9yeUl0ZW0gKilvdGhlckl0ZW07CiAK
QEAgLTcyLDYgKzczLDcgQEAKIC0gKHZvaWQpX3NldEZvcm1JbmZvRnJvbVJlcXVlc3Q6KE5TVVJM
UmVxdWVzdCAqKXJlcXVlc3Q7CiAtICh2b2lkKXNldFJTU0ZlZWRSZWZlcnJlcjooTlNTdHJpbmcg
KilyZWZlcnJlcjsKIC0gKHZvaWQpc2V0VmlzaXRDb3VudDooaW50KWNvdW50OworLSAodm9pZClz
ZXRWaWV3U3RhdGU6KGlkKXN0YXRlUExpc3Q7CiAKIC0gKE5TQXJyYXkgKiljaGlsZHJlbjsKIC0g
KHZvaWQpYWRkQ2hpbGRJdGVtOihXZWJIaXN0b3J5SXRlbSAqKWl0ZW07CkluZGV4OiAuL1dlYktp
dC54Y29kZXByb2ovcHJvamVjdC5wYnhwcm9qCj09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT0KUkNTIGZpbGU6IC9jdnMvcm9v
dC9XZWJLaXQvV2ViS2l0Lnhjb2RlcHJvai9wcm9qZWN0LnBieHByb2osdgpyZXRyaWV2aW5nIHJl
dmlzaW9uIDEuMQpkaWZmIC1wIC11IC1yMS4xIC4vV2ViS2l0Lnhjb2RlcHJvai9wcm9qZWN0LnBi
eHByb2oKLS0tIC4vV2ViS2l0Lnhjb2RlcHJvai9wcm9qZWN0LnBieHByb2oJMjEgSnVsIDIwMDUg
MjA6MjQ6MzcgLTAwMDAJMS4xCisrKyAuL1dlYktpdC54Y29kZXByb2ovcHJvamVjdC5wYnhwcm9q
CTI3IEp1bCAyMDA1IDIwOjQzOjI0IC0wMDAwCkBAIC0xODQ3LDYgKzE4NDcsNyBAQAogCQkJCQkv
U3lzdGVtL0xpYnJhcnkvRnJhbWV3b3Jrcy9XZWJLaXQuZnJhbWV3b3JrL0ZyYW1ld29ya3MsCiAJ
CQkJCS9TeXN0ZW0vTGlicmFyeS9GcmFtZXdvcmtzL0FwcGxpY2F0aW9uU2VydmljZXMuZnJhbWV3
b3JrL0ZyYW1ld29ya3MsCiAJCQkJCSIkKFNZU1RFTV9MSUJSQVJZX0RJUikvRnJhbWV3b3Jrcy9D
YXJib24uZnJhbWV3b3JrL0ZyYW1ld29ya3MiLAorCQkJCQkvU3lzdGVtL0xpYnJhcnkvRnJhbWV3
b3Jrcy9RdWFydHouZnJhbWV3b3JrL0ZyYW1ld29ya3MsCiAJCQkJCS9TeXN0ZW0vTGlicmFyeS9Q
cml2YXRlRnJhbWV3b3JrcywKIAkJCQkpOwogCQkJCUdDQ19FTkFCTEVfT0JKQ19HQyA9IFlFUzsK
QEAgLTE5MDksNiArMTkxMCw3IEBACiAJCQkJCS9TeXN0ZW0vTGlicmFyeS9GcmFtZXdvcmtzL1dl
YktpdC5mcmFtZXdvcmsvRnJhbWV3b3JrcywKIAkJCQkJL1N5c3RlbS9MaWJyYXJ5L0ZyYW1ld29y
a3MvQXBwbGljYXRpb25TZXJ2aWNlcy5mcmFtZXdvcmsvRnJhbWV3b3JrcywKIAkJCQkJIiQoU1lT
VEVNX0xJQlJBUllfRElSKS9GcmFtZXdvcmtzL0NhcmJvbi5mcmFtZXdvcmsvRnJhbWV3b3JrcyIs
CisJCQkJCS9TeXN0ZW0vTGlicmFyeS9GcmFtZXdvcmtzL1F1YXJ0ei5mcmFtZXdvcmsvRnJhbWV3
b3JrcywKIAkJCQkJL1N5c3RlbS9MaWJyYXJ5L1ByaXZhdGVGcmFtZXdvcmtzLAogCQkJCSk7CiAJ
CQkJR0NDX0VOQUJMRV9PQkpDX0dDID0gWUVTOwpAQCAtMTk3MCw2ICsxOTcyLDcgQEAKIAkJCQkJ
L1N5c3RlbS9MaWJyYXJ5L0ZyYW1ld29ya3MvV2ViS2l0LmZyYW1ld29yay9GcmFtZXdvcmtzLAog
CQkJCQkvU3lzdGVtL0xpYnJhcnkvRnJhbWV3b3Jrcy9BcHBsaWNhdGlvblNlcnZpY2VzLmZyYW1l
d29yay9GcmFtZXdvcmtzLAogCQkJCQkiJChTWVNURU1fTElCUkFSWV9ESVIpL0ZyYW1ld29ya3Mv
Q2FyYm9uLmZyYW1ld29yay9GcmFtZXdvcmtzIiwKKwkJCQkJL1N5c3RlbS9MaWJyYXJ5L0ZyYW1l
d29ya3MvUXVhcnR6LmZyYW1ld29yay9GcmFtZXdvcmtzLAogCQkJCQkvU3lzdGVtL0xpYnJhcnkv
UHJpdmF0ZUZyYW1ld29ya3MsCiAJCQkJKTsKIAkJCQlHQ0NfRU5BQkxFX09CSkNfR0MgPSBZRVM7
CkBAIC0yMDMyLDYgKzIwMzUsNyBAQAogCQkJCQkvU3lzdGVtL0xpYnJhcnkvRnJhbWV3b3Jrcy9X
ZWJLaXQuZnJhbWV3b3JrL0ZyYW1ld29ya3MsCiAJCQkJCS9TeXN0ZW0vTGlicmFyeS9GcmFtZXdv
cmtzL0FwcGxpY2F0aW9uU2VydmljZXMuZnJhbWV3b3JrL0ZyYW1ld29ya3MsCiAJCQkJCSIkKFNZ
U1RFTV9MSUJSQVJZX0RJUikvRnJhbWV3b3Jrcy9DYXJib24uZnJhbWV3b3JrL0ZyYW1ld29ya3Mi
LAorCQkJCQkvU3lzdGVtL0xpYnJhcnkvRnJhbWV3b3Jrcy9RdWFydHouZnJhbWV3b3JrL0ZyYW1l
d29ya3MsCiAJCQkJCS9TeXN0ZW0vTGlicmFyeS9Qcml2YXRlRnJhbWV3b3JrcywKIAkJCQkpOwog
CQkJCUdDQ19FTkFCTEVfT0JKQ19HQyA9IFlFUzsKSW5kZXg6IC4vV2ViVmlldy5zdWJwcm9qL1dl
YkRvY3VtZW50SW50ZXJuYWwuaAo9PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09ClJDUyBmaWxlOiAvY3ZzL3Jvb3QvV2ViS2l0
L1dlYlZpZXcuc3VicHJvai9XZWJEb2N1bWVudEludGVybmFsLmgsdgpyZXRyaWV2aW5nIHJldmlz
aW9uIDEuOQpkaWZmIC1wIC11IC1yMS45IC4vV2ViVmlldy5zdWJwcm9qL1dlYkRvY3VtZW50SW50
ZXJuYWwuaAotLS0gLi9XZWJWaWV3LnN1YnByb2ovV2ViRG9jdW1lbnRJbnRlcm5hbC5oCTE4IEp1
bCAyMDA1IDE4OjAyOjIxIC0wMDAwCTEuOQorKysgLi9XZWJWaWV3LnN1YnByb2ovV2ViRG9jdW1l
bnRJbnRlcm5hbC5oCTI3IEp1bCAyMDA1IDIwOjQzOjI1IC0wMDAwCkBAIC0yOSwxNiArMjksMjcg
QEAKICNpbXBvcnQgPFdlYktpdC9XZWJEb2N1bWVudFByaXZhdGUuaD4KIAogLyohCi1AcHJvdG9j
b2wgX3dlYl9XZWJEb2N1bWVudFRleHRTaXppbmcKLUBkaXNjdXNzaW9uIE9wdGlvbmFsIHByb3Rv
Y29sIGZvciBtYWtpbmcgdGV4dCBsYXJnZXIgYW5kIHNtYWxsZXIgCitAcHJvdG9jb2wgX1dlYkRv
Y3VtZW50VGV4dFNpemluZworQGRpc2N1c3Npb24gT3B0aW9uYWwgcHJvdG9jb2wgZm9yIG1ha2lu
ZyB0ZXh0IGxhcmdlciBhbmQgc21hbGxlci4KICovCi1AcHJvdG9jb2wgX3dlYl9XZWJEb2N1bWVu
dFRleHRTaXppbmcgPE5TT2JqZWN0PgorQHByb3RvY29sIF9XZWJEb2N1bWVudFRleHRTaXppbmcg
PE5TT2JqZWN0PgorCisvLyBNZXRob2RzIHRvIHBlcmZvcm0gdGhlIGFjdHVhbCBjb21tYW5kcwor
LSAoSUJBY3Rpb24pX21ha2VUZXh0U21hbGxlcjooaWQpc2VuZGVyOworLSAoSUJBY3Rpb24pX21h
a2VUZXh0TGFyZ2VyOihpZClzZW5kZXI7CistIChJQkFjdGlvbilfbWFrZVRleHRTdGFuZGFyZFNp
emU6KGlkKXNlbmRlcjsKKworLy8gVmlld3MgdGhhdCBkbyB0ZXh0IHNpemluZyBjb21lIGluIHR3
byBmbGF2b3JzLiAgU29tZSB3aWxsIHRyYWNrIHRoZSBjb21tb24gdGV4dFNpemVNdWx0aXBsaWVy
IGZhY3RvciBzdG9yZWQKKy8vIGluIHRoZSBXZWJWaWV3LiAgT3RoZXJzIChzZWUgUERGVmlldykg
a2VlcCB0aGVpciBvd24gc2NhbGluZyBmYWN0b3IsIGJ1dCBzdGlsbCB3YW50IHRvIHBsYXkgYWxv
bmcgbG9vc2VseQorLy8gd2l0aCB0aGUgc21hbGxlci9sYXJnZXIgY29tbWFuZHMsIHdoaWNoIGlu
IHRoZSB1c2VyIG1vZGVsIG9wZXJhdGUgYWNyb3NzIGFsbCBmcmFtZXMgb2YgdGhlIFdlYlZpZXcu
CistIChCT09MKV90cmFja3NDb21tb25TaXplRmFjdG9yOworCisvLyBWaWV3cyB0aGF0IGRvIG5v
dCB0cmFjayB0aGUgY29tbW9uIHNpemUgZmFjdG9yIG11c3QgYW5zd2VyIGZvciB0aGVtc2VsdmVz
IGlmIHRoZXkgYXJlIGFibGUgdG8gem9vbSBpbgorLy8gb3Igb3V0LiAgVmlld3MgdGhhdCBkbyB0
cmFjayBpdCBhcmUgbm90IHNlbnQgdGhlc2UgbWVzc2FnZXMuCistIChCT09MKV9jYW5NYWtlVGV4
dFNtYWxsZXI7CistIChCT09MKV9jYW5NYWtlVGV4dExhcmdlcjsKKy0gKEJPT0wpX2Nhbk1ha2VU
ZXh0U3RhbmRhcmRTaXplOwogCi0vKiEKLUBtZXRob2QgX3dlYl90ZXh0U2l6ZU11bHRpcGxpZXJD
aGFuZ2VkCi1AYWJzdHJhY3QgQ2FsbGVkIHdoZW4gdGhlIHRleHQgc2l6ZSBtdWx0aXBsaWVyIGhh
cyBiZWVuIGNoYW5nZWQuIC1bV2ViVmlldyB0ZXh0U2l6ZU11bHRpcGxpZXJdIHJldHVybnMgdGhl
IGN1cnJlbnQgdmFsdWUuCi0qLwotLSAodm9pZClfd2ViX3RleHRTaXplTXVsdGlwbGllckNoYW5n
ZWQ7CiBAZW5kCiAKIEBwcm90b2NvbCBXZWJEb2N1bWVudERyYWdnaW5nIDxOU09iamVjdD4KQEAg
LTUwLDMgKzYxLDExIEBACiBAcHJvdG9jb2wgV2ViRG9jdW1lbnRFbGVtZW50IDxOU09iamVjdD4K
IC0gKE5TRGljdGlvbmFyeSAqKWVsZW1lbnRBdFBvaW50OihOU1BvaW50KXBvaW50OwogQGVuZAor
CisvKiBVc2VkIHRvIHNhdmUgYW5kIHJlc3RvcmUgc3RhdGUgaW4gdGhlIHZpZXcsIHR5cGljYWxs
eSB3aGVuIGdvaW5nIGJhY2svZm9yd2FyZCAqLworQHByb3RvY29sIF9XZWJEb2N1bWVudFZpZXdT
dGF0ZSA8TlNPYmplY3Q+CistIChOU1BvaW50KXNjcm9sbFBvaW50OworLSAodm9pZClzZXRTY3Jv
bGxQb2ludDooTlNQb2ludClwOworLSAoaWQpdmlld1N0YXRlOworLSAodm9pZClzZXRWaWV3U3Rh
dGU6KGlkKXN0YXRlUExpc3Q7CitAZW5kCkluZGV4OiAuL1dlYlZpZXcuc3VicHJvai9XZWJGcmFt
ZS5tCj09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT0KUkNTIGZpbGU6IC9jdnMvcm9vdC9XZWJLaXQvV2ViVmlldy5zdWJwcm9q
L1dlYkZyYW1lLm0sdgpyZXRyaWV2aW5nIHJldmlzaW9uIDEuMjQ1CmRpZmYgLXAgLXUgLXIxLjI0
NSAuL1dlYlZpZXcuc3VicHJvai9XZWJGcmFtZS5tCi0tLSAuL1dlYlZpZXcuc3VicHJvai9XZWJG
cmFtZS5tCTI3IEp1bCAyMDA1IDAyOjAxOjAzIC0wMDAwCTEuMjQ1CisrKyAuL1dlYlZpZXcuc3Vi
cHJvai9XZWJGcmFtZS5tCTI3IEp1bCAyMDA1IDIwOjQzOjI4IC0wMDAwCkBAIC0xNzYsOCArMTc2
LDggQEAgTlNTdHJpbmcgKldlYlBhZ2VDYWNoZURvY3VtZW50Vmlld0tleSA9IAogLSAodm9pZClf
bG9hZEhUTUxTdHJpbmc6KE5TU3RyaW5nICopc3RyaW5nIGJhc2VVUkw6KE5TVVJMICopVVJMIHVu
cmVhY2hhYmxlVVJMOihOU1VSTCAqKXVucmVhY2hhYmxlVVJMOwogLSAoTlNEaWN0aW9uYXJ5ICop
X2FjdGlvbkluZm9ybWF0aW9uRm9yTG9hZFR5cGU6KFdlYkZyYW1lTG9hZFR5cGUpbG9hZFR5cGUg
aXNGb3JtU3VibWlzc2lvbjooQk9PTClpc0Zvcm1TdWJtaXNzaW9uIGV2ZW50OihOU0V2ZW50ICop
ZXZlbnQgb3JpZ2luYWxVUkw6KE5TVVJMICopVVJMOwogCi0tICh2b2lkKV9zYXZlU2Nyb2xsUG9z
aXRpb25Ub0l0ZW06KFdlYkhpc3RvcnlJdGVtICopaXRlbTsKLS0gKHZvaWQpX3Jlc3RvcmVTY3Jv
bGxQb3NpdGlvbjsKKy0gKHZvaWQpX3NhdmVTY3JvbGxQb3NpdGlvbkFuZFZpZXdTdGF0ZVRvSXRl
bTooV2ViSGlzdG9yeUl0ZW0gKilpdGVtOworLSAodm9pZClfcmVzdG9yZVNjcm9sbFBvc2l0aW9u
QW5kVmlld1N0YXRlOwogCiAtIChXZWJIaXN0b3J5SXRlbSAqKV9jcmVhdGVJdGVtOiAoQk9PTCl1
c2VPcmlnaW5hbDsKIC0gKFdlYkhpc3RvcnlJdGVtICopX2NyZWF0ZUl0ZW1UcmVlV2l0aFRhcmdl
dEZyYW1lOihXZWJGcmFtZSAqKXRhcmdldEZyYW1lIGNsaXBwZWRBdFRhcmdldDooQk9PTClkb0Ns
aXA7CkBAIC00NDMsNyArNDQzLDcgQEAgTlNTdHJpbmcgKldlYlBhZ2VDYWNoZURvY3VtZW50Vmll
d0tleSA9IAogewogICAgIFdlYkhpc3RvcnlJdGVtICpiZkl0ZW0gPSBbc2VsZiBfY3JlYXRlSXRl
bTogW3NlbGYgcGFyZW50RnJhbWVdP1lFUzpOT107CiAKLSAgICBbc2VsZiBfc2F2ZVNjcm9sbFBv
c2l0aW9uVG9JdGVtOltfcHJpdmF0ZSBwcmV2aW91c0l0ZW1dXTsKKyAgICBbc2VsZiBfc2F2ZVNj
cm9sbFBvc2l0aW9uQW5kVmlld1N0YXRlVG9JdGVtOltfcHJpdmF0ZSBwcmV2aW91c0l0ZW1dXTsK
ICAgICBpZiAoIShkb0NsaXAgJiYgc2VsZiA9PSB0YXJnZXRGcmFtZSkpIHsKICAgICAgICAgLy8g
c2F2ZSBmcmFtZSBzdGF0ZSBmb3IgaXRlbXMgdGhhdCBhcmVuJ3QgbG9hZGluZyAoa2h0bWwgZG9l
c24ndCBzYXZlIHRob3NlKQogICAgICAgICBbX3ByaXZhdGUtPmJyaWRnZSBzYXZlRG9jdW1lbnRT
dGF0ZV07CkBAIC02MDksNyArNjA5LDcgQEAgTlNTdHJpbmcgKldlYlBhZ2VDYWNoZURvY3VtZW50
Vmlld0tleSA9IAogICAgIF9wcml2YXRlLT5icmlkZ2UgPSBuaWw7CiAKICAgICBbc2VsZiBzdG9w
TG9hZGluZ107Ci0gICAgW3NlbGYgX3NhdmVTY3JvbGxQb3NpdGlvblRvSXRlbTpbX3ByaXZhdGUg
Y3VycmVudEl0ZW1dXTsKKyAgICBbc2VsZiBfc2F2ZVNjcm9sbFBvc2l0aW9uQW5kVmlld1N0YXRl
VG9JdGVtOltfcHJpdmF0ZSBjdXJyZW50SXRlbV1dOwogCiAgICAgW2JyaWRnZSBjbG9zZVVSTF07
CiAKQEAgLTc4MSw3ICs3ODEsNyBAQCBOU1N0cmluZyAqV2ViUGFnZUNhY2hlRG9jdW1lbnRWaWV3
S2V5ID0gCiAgICAgICAgICAgICBjYXNlIFdlYkZyYW1lTG9hZFR5cGVJbmRleGVkQmFja0Zvcndh
cmQ6CiAgICAgICAgICAgICAgICAgaWYgKFtbc2VsZiB3ZWJWaWV3XSBiYWNrRm9yd2FyZExpc3Rd
KSB7CiAgICAgICAgICAgICAgICAgICAgIC8vIE11c3QgZ3JhYiB0aGUgY3VycmVudCBzY3JvbGwg
cG9zaXRpb24gYmVmb3JlIGRpc3R1cmJpbmcgaXQKLSAgICAgICAgICAgICAgICAgICAgW3NlbGYg
X3NhdmVTY3JvbGxQb3NpdGlvblRvSXRlbTpbX3ByaXZhdGUgcHJldmlvdXNJdGVtXV07CisgICAg
ICAgICAgICAgICAgICAgIFtzZWxmIF9zYXZlU2Nyb2xsUG9zaXRpb25BbmRWaWV3U3RhdGVUb0l0
ZW06W19wcml2YXRlIHByZXZpb3VzSXRlbV1dOwogICAgICAgICAgICAgICAgICAgICAKICAgICAg
ICAgICAgICAgICAgICAgLy8gQ3JlYXRlIGEgZG9jdW1lbnQgdmlldyBmb3IgdGhpcyBkb2N1bWVu
dCwgb3IgdXNlZCB0aGUgY2FjaGVkIHZpZXcuCiAgICAgICAgICAgICAgICAgICAgIGlmIChwYWdl
Q2FjaGUpewpAQCAtODAyLDcgKzgwMiw3IEBAIE5TU3RyaW5nICpXZWJQYWdlQ2FjaGVEb2N1bWVu
dFZpZXdLZXkgPSAKICAgICAgICAgICAgICAgICAvLyBGSVhNRTogcmp3IHNleiB0aGlzIGNhY2hl
IGNsZWFyaW5nIGlzIG5vIGxvbmdlciBuZWVkZWQKICAgICAgICAgICAgICAgICBbY3Vyckl0ZW0g
c2V0SGFzUGFnZUNhY2hlOk5PXTsKICAgICAgICAgICAgICAgICBpZiAobG9hZFR5cGUgPT0gV2Vi
RnJhbWVMb2FkVHlwZVJlbG9hZCkgewotICAgICAgICAgICAgICAgICAgICBbc2VsZiBfc2F2ZVNj
cm9sbFBvc2l0aW9uVG9JdGVtOmN1cnJJdGVtXTsKKyAgICAgICAgICAgICAgICAgICAgW3NlbGYg
X3NhdmVTY3JvbGxQb3NpdGlvbkFuZFZpZXdTdGF0ZVRvSXRlbTpjdXJySXRlbV07CiAgICAgICAg
ICAgICAgICAgfQogICAgICAgICAgICAgICAgIE5TVVJMUmVxdWVzdCAqcmVxdWVzdCA9IFtkcyBy
ZXF1ZXN0XTsKICAgICAgICAgICAgICAgICBpZiAoW3JlcXVlc3QgX3dlYkRhdGFSZXF1ZXN0VW5y
ZWFjaGFibGVVUkxdID09IG5pbCkgewpAQCAtMTE4MSw3ICsxMTgxLDcgQEAgc3RhdGljIENGQWJz
b2x1dGVUaW1lIF90aW1lT2ZMYXN0Q29tcGxldAogICAgICAgICAgICAgICAgICAgICBjYXNlIFdl
YkZyYW1lTG9hZFR5cGVCYWNrOgogICAgICAgICAgICAgICAgICAgICBjYXNlIFdlYkZyYW1lTG9h
ZFR5cGVJbmRleGVkQmFja0ZvcndhcmQ6CiAgICAgICAgICAgICAgICAgICAgIGNhc2UgV2ViRnJh
bWVMb2FkVHlwZVJlbG9hZDoKLSAgICAgICAgICAgICAgICAgICAgICAgIFtzZWxmIF9yZXN0b3Jl
U2Nyb2xsUG9zaXRpb25dOworICAgICAgICAgICAgICAgICAgICAgICAgW3NlbGYgX3Jlc3RvcmVT
Y3JvbGxQb3NpdGlvbkFuZFZpZXdTdGF0ZV07CiAgICAgICAgICAgICAgICAgICAgICAgICBicmVh
azsKIAogICAgICAgICAgICAgICAgICAgICBjYXNlIFdlYkZyYW1lTG9hZFR5cGVTdGFuZGFyZDoK
QEAgLTEzNDUsNyArMTM0NSw3IEBAIHN0YXRpYyBDRkFic29sdXRlVGltZSBfdGltZU9mTGFzdENv
bXBsZXQKICAgICAgICAgW3NlbGYgX2xvYWRVUkw6aXRlbVVSTCByZWZlcnJlcjpbW1tzZWxmIGRh
dGFTb3VyY2VdIHJlcXVlc3RdIEhUVFBSZWZlcnJlcl0gbG9hZFR5cGU6bG9hZFR5cGUgdGFyZ2V0
Om5pbCB0cmlnZ2VyaW5nRXZlbnQ6bmlsIGZvcm06bmlsIGZvcm1WYWx1ZXM6bmlsXTsKICNlbmRp
ZgogICAgICAgICAvLyBtdXN0IGRvIHRoaXMgbWFpbnRlbmFuY2UgaGVyZSwgc2luY2Ugd2UgZG9u
J3QgZ28gdGhyb3VnaCBhIHJlYWwgcGFnZSByZWxvYWQKLSAgICAgICAgW3NlbGYgX3NhdmVTY3Jv
bGxQb3NpdGlvblRvSXRlbTpbX3ByaXZhdGUgY3VycmVudEl0ZW1dXTsKKyAgICAgICAgW3NlbGYg
X3NhdmVTY3JvbGxQb3NpdGlvbkFuZFZpZXdTdGF0ZVRvSXRlbTpbX3ByaXZhdGUgY3VycmVudEl0
ZW1dXTsKICAgICAgICAgLy8gRklYTUU6IGZvcm0gc3RhdGUgbWlnaHQgd2FudCB0byBiZSBzYXZl
ZCBoZXJlIHRvbwogCiAgICAgICAgIC8vIEZJWE1FOiBQZXJoYXBzIHdlIGNhbiB1c2Ugc2Nyb2xs
VG9BbmNob3JXaXRoVVJMIGhlcmUgaW5zdGVhZCBhbmQgcmVtb3ZlIHRoZSBvbGRlciBzY3JvbGxU
b0FuY2hvcjo/CkBAIC0xMzU1LDcgKzEzNTUsNyBAQCBzdGF0aWMgQ0ZBYnNvbHV0ZVRpbWUgX3Rp
bWVPZkxhc3RDb21wbGV0CiAgICAgCiAgICAgICAgIC8vIG11c3QgZG8gdGhpcyBtYWludGVuYW5j
ZSBoZXJlLCBzaW5jZSB3ZSBkb24ndCBnbyB0aHJvdWdoIGEgcmVhbCBwYWdlIHJlbG9hZAogICAg
ICAgICBbX3ByaXZhdGUgc2V0Q3VycmVudEl0ZW06aXRlbV07Ci0gICAgICAgIFtzZWxmIF9yZXN0
b3JlU2Nyb2xsUG9zaXRpb25dOworICAgICAgICBbc2VsZiBfcmVzdG9yZVNjcm9sbFBvc2l0aW9u
QW5kVmlld1N0YXRlXTsKIAogICAgICAgICAvLyBGYWtlIHRoZSBVUkwgY2hhbmdlIGJ5IHVwZGF0
aW5nIHRoZSBkYXRhc291cmNlJ3MgcmVxdWVzdC4gIFRoaXMgd2lsbCBubyBsb25nZXIKICAgICAg
ICAgLy8gYmUgbmVjZXNzYXJ5IGlmIHdlIGRvIHRoZSBiZXR0ZXIgZml4IGRlc2NyaWJlZCBhYm92
ZS4KQEAgLTE0ODAsMTQgKzE0ODAsMTQgQEAgc3RhdGljIENGQWJzb2x1dGVUaW1lIF90aW1lT2ZM
YXN0Q29tcGxldAogICAgICAgICAvLyBTYXZlIGZvcm0gc3RhdGUgKHdvcmtzIGZyb20gY3VycmVu
dEl0ZW0sIHNpbmNlIHByZXZJdGVtIGlzIG5pbCkKICAgICAgICAgQVNTRVJUKCFbX3ByaXZhdGUg
cHJldmlvdXNJdGVtXSk7CiAgICAgICAgIFtfcHJpdmF0ZS0+YnJpZGdlIHNhdmVEb2N1bWVudFN0
YXRlXTsKLSAgICAgICAgW3NlbGYgX3NhdmVTY3JvbGxQb3NpdGlvblRvSXRlbTpbX3ByaXZhdGUg
Y3VycmVudEl0ZW1dXTsKKyAgICAgICAgW3NlbGYgX3NhdmVTY3JvbGxQb3NpdGlvbkFuZFZpZXdT
dGF0ZVRvSXRlbTpbX3ByaXZhdGUgY3VycmVudEl0ZW1dXTsKICAgICAgICAgCiAgICAgICAgIFtf
cHJpdmF0ZSBzZXRDdXJyZW50SXRlbTppdGVtXTsKIAogICAgICAgICAvLyBSZXN0b3JlIGZvcm0g
c3RhdGUgKHdvcmtzIGZyb20gY3VycmVudEl0ZW0pCiAgICAgICAgIFtfcHJpdmF0ZS0+YnJpZGdl
IHJlc3RvcmVEb2N1bWVudFN0YXRlXTsKICAgICAgICAgLy8gUmVzdG9yZSB0aGUgc2Nyb2xsIHBv
c2l0aW9uICh0YWtlbiBpbiBmYXZvciBvZiBnb2luZyBiYWNrIHRvIHRoZSBhbmNob3IpCi0gICAg
ICAgIFtzZWxmIF9yZXN0b3JlU2Nyb2xsUG9zaXRpb25dOworICAgICAgICBbc2VsZiBfcmVzdG9y
ZVNjcm9sbFBvc2l0aW9uQW5kVmlld1N0YXRlXTsKICAgICAgICAgCiAgICAgICAgIE5TQXJyYXkg
KmNoaWxkSXRlbXMgPSBbaXRlbSBjaGlsZHJlbl07CiAgICAgICAgIGludCBudW1DaGlsZEl0ZW1z
ID0gY2hpbGRJdGVtcyA/IFtjaGlsZEl0ZW1zIGNvdW50XSA6IDA7CkBAIC0yMDc4LDE0ICsyMDc4
LDI2IEBAIHN0YXRpYyBDRkFic29sdXRlVGltZSBfdGltZU9mTGFzdENvbXBsZXQKICAgICBbW19w
cml2YXRlIGN1cnJlbnRJdGVtXSBzZXRUaXRsZTp0aXRsZV07CiB9CiAKLS0gKHZvaWQpX3NhdmVT
Y3JvbGxQb3NpdGlvblRvSXRlbTooV2ViSGlzdG9yeUl0ZW0gKilpdGVtCistICh2b2lkKV9zYXZl
U2Nyb2xsUG9zaXRpb25BbmRWaWV3U3RhdGVUb0l0ZW06KFdlYkhpc3RvcnlJdGVtICopaXRlbQog
ewogICAgIGlmIChpdGVtKSB7Ci0gICAgICAgIE5TVmlldyAqY2xpcFZpZXcgPSBbW1tzZWxmIGZy
YW1lVmlld10gZG9jdW1lbnRWaWV3XSBzdXBlcnZpZXddOworICAgICAgICBOU1ZpZXcgPFdlYkRv
Y3VtZW50Vmlldz4gKmRvY1ZpZXcgPSBbW3NlbGYgZnJhbWVWaWV3XSBkb2N1bWVudFZpZXddOwor
ICAgICAgICBOU1ZpZXcgKnBhcmVudCA9IFtkb2NWaWV3IHN1cGVydmlld107CiAgICAgICAgIC8v
IHdlIG1pZ2h0IGFscmVhZHkgYmUgZGV0YWNoZWQgd2hlbiB0aGlzIGlzIGNhbGxlZCBmcm9tIGRl
dGFjaEZyb21QYXJlbnQsIGluIHdoaWNoCiAgICAgICAgIC8vIGNhc2Ugd2UgZG9uJ3Qgd2FudCB0
byBvdmVycmlkZSByZWFsIGRhdGEgZWFybGllciBnYXRoZXJlZCB3aXRoICgwLDApCi0gICAgICAg
IGlmIChjbGlwVmlldykgewotICAgICAgICAgICAgW2l0ZW0gc2V0U2Nyb2xsUG9pbnQ6W2NsaXBW
aWV3IGJvdW5kc10ub3JpZ2luXTsKKyAgICAgICAgaWYgKHBhcmVudCkgeworICAgICAgICAgICAg
TlNQb2ludCBwb2ludDsKKyAgICAgICAgICAgIGlmIChbZG9jVmlldyBjb25mb3Jtc1RvUHJvdG9j
b2w6QHByb3RvY29sKF9XZWJEb2N1bWVudFZpZXdTdGF0ZSldKSB7CisgICAgICAgICAgICAgICAg
Ly8gVGhlIHZpZXcgaGFzIGl0J3Mgb3duIGlkZWEgb2Ygd2hlcmUgaXQgaXMgc2Nyb2xsZWQgdG8s
IHBlcmhhcHMgYmVjYXVzZSBpdCBjb250YWlucyBpdHMgb3duCisgICAgICAgICAgICAgICAgLy8g
U2Nyb2xsVmlldyBpbnN0ZWFkIG9mIHVzaW5nIHRoZSBvbmUgcHJvdmlkZWQgYnkgdGhlIFdlYkZy
YW1lCisgICAgICAgICAgICAgICAgcG9pbnQgPSBbKGlkIDxfV2ViRG9jdW1lbnRWaWV3U3RhdGU+
KWRvY1ZpZXcgc2Nyb2xsUG9pbnRdOworICAgICAgICAgICAgICAgIFtpdGVtIHNldFZpZXdTdGF0
ZTpbKGlkIDxfV2ViRG9jdW1lbnRWaWV3U3RhdGU+KWRvY1ZpZXcgdmlld1N0YXRlXV07CisgICAg
ICAgICAgICB9IGVsc2UgeworICAgICAgICAgICAgICAgIC8vIFBhcmVudCBpcyB0aGUgY2xpcHZp
ZXcgb2YgdGhlIER5bmFtaWNTY3JvbGxWaWV3IHRoZSBXZWJGcmFtZSBpbnN0YWxscworICAgICAg
ICAgICAgICAgIEFTU0VSVChbcGFyZW50IGlzS2luZE9mQ2xhc3M6W05TQ2xpcFZpZXcgY2xhc3Nd
XSk7CisgICAgICAgICAgICAgICAgcG9pbnQgPSBbcGFyZW50IGJvdW5kc10ub3JpZ2luOworICAg
ICAgICAgICAgfQorICAgICAgICAgICAgW2l0ZW0gc2V0U2Nyb2xsUG9pbnQ6cG9pbnRdOwogICAg
ICAgICB9CiAgICAgfQogfQpAQCAtMjEwMiwyNyArMjExNCwyMSBAQCBzdGF0aWMgQ0ZBYnNvbHV0
ZVRpbWUgX3RpbWVPZkxhc3RDb21wbGV0CiAgICAgICAgZmFpbHMuICBXZSB0aGVuIHN1Y2Nlc3Nm
dWxseSByZXN0b3JlIGl0IHdoZW4gdGhlIGxheW91dCBoYXBwZW5zLgogICovCiAKLS0gKHZvaWQp
X3Jlc3RvcmVTY3JvbGxQb3NpdGlvbgorLSAodm9pZClfcmVzdG9yZVNjcm9sbFBvc2l0aW9uQW5k
Vmlld1N0YXRlCiB7CiAgICAgQVNTRVJUKFtfcHJpdmF0ZSBjdXJyZW50SXRlbV0pOwotICAgIFtb
W3NlbGYgZnJhbWVWaWV3XSBkb2N1bWVudFZpZXddIHNjcm9sbFBvaW50OltbX3ByaXZhdGUgY3Vy
cmVudEl0ZW1dIHNjcm9sbFBvaW50XV07Ci19Ci0KLS0gKHZvaWQpX3Njcm9sbFRvVG9wCi17Ci0g
ICAgW1tbc2VsZiBmcmFtZVZpZXddIGRvY3VtZW50Vmlld10gc2Nyb2xsUG9pbnQ6IE5TWmVyb1Bv
aW50XTsKLX0KLQotLSAodm9pZClfdGV4dFNpemVNdWx0aXBsaWVyQ2hhbmdlZAotewotICAgIE5T
VmlldyA8V2ViRG9jdW1lbnRWaWV3PiAqdmlldyA9IFtbc2VsZiBmcmFtZVZpZXddIGRvY3VtZW50
Vmlld107Ci0gICAgaWYgKFt2aWV3IGNvbmZvcm1zVG9Qcm90b2NvbDpAcHJvdG9jb2woX3dlYl9X
ZWJEb2N1bWVudFRleHRTaXppbmcpXSkgewotICAgICAgICBbKE5TVmlldyA8X3dlYl9XZWJEb2N1
bWVudFRleHRTaXppbmc+ICopdmlldyBfd2ViX3RleHRTaXplTXVsdGlwbGllckNoYW5nZWRdOwor
ICAgIE5TVmlldyA8V2ViRG9jdW1lbnRWaWV3PiAqZG9jVmlldyA9IFtbc2VsZiBmcmFtZVZpZXdd
IGRvY3VtZW50Vmlld107CisgICAgTlNQb2ludCBwb2ludCA9IFtbX3ByaXZhdGUgY3VycmVudEl0
ZW1dIHNjcm9sbFBvaW50XTsKKyAgICBpZiAoW2RvY1ZpZXcgY29uZm9ybXNUb1Byb3RvY29sOkBw
cm90b2NvbChfV2ViRG9jdW1lbnRWaWV3U3RhdGUpXSkgeyAgICAgICAgCisgICAgICAgIGlkIHN0
YXRlID0gW1tfcHJpdmF0ZSBjdXJyZW50SXRlbV0gdmlld1N0YXRlXTsKKyAgICAgICAgaWYgKHN0
YXRlKSB7CisgICAgICAgICAgICBbKGlkIDxfV2ViRG9jdW1lbnRWaWV3U3RhdGU+KWRvY1ZpZXcg
c2V0Vmlld1N0YXRlOnN0YXRlXTsKKyAgICAgICAgfQorICAgICAgICAKKyAgICAgICAgWyhpZCA8
X1dlYkRvY3VtZW50Vmlld1N0YXRlPilkb2NWaWV3IHNldFNjcm9sbFBvaW50OnBvaW50XTsKKyAg
ICB9IGVsc2UgeworICAgICAgICBbZG9jVmlldyBzY3JvbGxQb2ludDpwb2ludF07CiAgICAgfQot
Ci0gICAgLy8gSXQncyBPSyB0byB1c2UgdGhlIGludGVybmFsIHZlcnNpb24gYmVjYXVzZSB0aGlz
IG1ldGhvZCBpcwotICAgIC8vIGd1YXJhbnRlZWQgbm90IHRvIGNoYW5nZSB0aGUgc2V0IG9mIGZy
YW1lcy4KLSAgICBbW3NlbGYgX2ludGVybmFsQ2hpbGRGcmFtZXNdIG1ha2VPYmplY3RzUGVyZm9y
bVNlbGVjdG9yOkBzZWxlY3RvcihfdGV4dFNpemVNdWx0aXBsaWVyQ2hhbmdlZCldOwogfQogCiAt
ICh2b2lkKV9kZWZlcnNDYWxsYmFja3NDaGFuZ2VkCkBAIC0yMzA5LDE2ICsyMzE1LDExIEBAIHN0
YXRpYyBDRkFic29sdXRlVGltZSBfdGltZU9mTGFzdENvbXBsZXQKIC0gKHZvaWQpX3NhdmVEb2N1
bWVudEFuZFNjcm9sbFN0YXRlCiB7CiAgICAgW19wcml2YXRlLT5icmlkZ2Ugc2F2ZURvY3VtZW50
U3RhdGVdOwotICAgIFtzZWxmIF9zYXZlU2Nyb2xsUG9zaXRpb25Ub0l0ZW06W19wcml2YXRlIGN1
cnJlbnRJdGVtXV07CisgICAgW3NlbGYgX3NhdmVTY3JvbGxQb3NpdGlvbkFuZFZpZXdTdGF0ZVRv
SXRlbTpbX3ByaXZhdGUgY3VycmVudEl0ZW1dXTsKIAogICAgIC8vIEl0J3MgT0sgdG8gdXNlIHRo
ZSBpbnRlcm5hbCB2ZXJzaW9uIGJlY2F1c2UgdGhpcyBtZXRob2QgaXMKICAgICAvLyBndWFyYW50
ZWVkIG5vdCB0byBjaGFuZ2UgdGhlIHNldCBvZiBmcmFtZXMuCi0gICAgTlNBcnJheSAqZnJhbWVz
ID0gW3NlbGYgX2ludGVybmFsQ2hpbGRGcmFtZXNdOwotICAgIGludCBjb3VudCA9IFtmcmFtZXMg
Y291bnRdOwotICAgIGludCBpOwotICAgIGZvciAoaSA9IDA7IGkgPCBjb3VudDsgaSsrKSB7Ci0g
ICAgICAgIFtbZnJhbWVzIG9iamVjdEF0SW5kZXg6aV0gX3NhdmVEb2N1bWVudEFuZFNjcm9sbFN0
YXRlXTsKLSAgICB9CisgICAgW1tzZWxmIF9pbnRlcm5hbENoaWxkRnJhbWVzXSBtYWtlT2JqZWN0
c1BlcmZvcm1TZWxlY3RvcjpAc2VsZWN0b3IoX3NhdmVEb2N1bWVudEFuZFNjcm9sbFN0YXRlKV07
CiB9CiAKIC8vIENhbGxlZCBhZnRlciB0aGUgRm9ybXNEZWxlZ2F0ZSBpcyBkb25lIHByb2Nlc3Np
bmcgd2lsbFN1Ym1pdEZvcm06CkBAIC0yNTg1LDYgKzI1ODYsMjIgQEAgc3RhdGljIENGQWJzb2x1
dGVUaW1lIF90aW1lT2ZMYXN0Q29tcGxldAogCiBAaW1wbGVtZW50YXRpb24gV2ViRnJhbWUgKFdl
YkludGVybmFsKQogCistICh2b2lkKV9hY2N1bXVsYXRlRG9jdW1lbnRWaWV3czooTlNNdXRhYmxl
QXJyYXkgKilyZXN1bHQKK3sKKyAgICBpZCBkb2NWaWV3ID0gW1tzZWxmIGZyYW1lVmlld10gZG9j
dW1lbnRWaWV3XTsKKyAgICBpZiAoZG9jVmlldykgeworICAgICAgICBbcmVzdWx0IGFkZE9iamVj
dDpkb2NWaWV3XTsKKyAgICB9CisgICAgW19wcml2YXRlLT5jaGlsZHJlbiBtYWtlT2JqZWN0c1Bl
cmZvcm1TZWxlY3RvcjpAc2VsZWN0b3IoX2FjY3VtdWxhdGVEb2N1bWVudFZpZXdzOikgd2l0aE9i
amVjdDpyZXN1bHRdOworfQorCistIChOU0FycmF5ICopX2RvY3VtZW50Vmlld3MKK3sKKyAgICBO
U011dGFibGVBcnJheSAqcmVzdWx0ID0gW05TTXV0YWJsZUFycmF5IGFycmF5XTsKKyAgICBbc2Vs
ZiBfYWNjdW11bGF0ZURvY3VtZW50Vmlld3M6cmVzdWx0XTsKKyAgICByZXR1cm4gcmVzdWx0Owor
fQorCiAtICh2b2lkKV91cGRhdGVEcmF3c0JhY2tncm91bmQKIHsKICAgICBCT09MIGRyYXdzQmFj
a2dyb3VuZCA9IFtbc2VsZiB3ZWJWaWV3XSBkcmF3c0JhY2tncm91bmRdOwpAQCAtMjcxOSw3ICsy
NzM2LDcgQEAgc3RhdGljIENGQWJzb2x1dGVUaW1lIF90aW1lT2ZMYXN0Q29tcGxldAogICAgICAg
ICAgICAgbG9hZFR5cGUgPT0gV2ViRnJhbWVMb2FkVHlwZUJhY2sgfHwKICAgICAgICAgICAgIGxv
YWRUeXBlID09IFdlYkZyYW1lTG9hZFR5cGVJbmRleGVkQmFja0ZvcndhcmQpCiAgICAgICAgIHsK
LSAgICAgICAgICAgIFtzZWxmIF9yZXN0b3JlU2Nyb2xsUG9zaXRpb25dOworICAgICAgICAgICAg
W3NlbGYgX3Jlc3RvcmVTY3JvbGxQb3NpdGlvbkFuZFZpZXdTdGF0ZV07CiAgICAgICAgIH0KICAg
ICB9CiB9CkluZGV4OiAuL1dlYlZpZXcuc3VicHJvai9XZWJGcmFtZUludGVybmFsLmgKPT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PQpSQ1MgZmlsZTogL2N2cy9yb290L1dlYktpdC9XZWJWaWV3LnN1YnByb2ovV2ViRnJhbWVJ
bnRlcm5hbC5oLHYKcmV0cmlldmluZyByZXZpc2lvbiAxLjEyCmRpZmYgLXAgLXUgLXIxLjEyIC4v
V2ViVmlldy5zdWJwcm9qL1dlYkZyYW1lSW50ZXJuYWwuaAotLS0gLi9XZWJWaWV3LnN1YnByb2ov
V2ViRnJhbWVJbnRlcm5hbC5oCTE5IEp1bCAyMDA1IDE3OjExOjU2IC0wMDAwCTEuMTIKKysrIC4v
V2ViVmlldy5zdWJwcm9qL1dlYkZyYW1lSW50ZXJuYWwuaAkyNyBKdWwgMjAwNSAyMDo0MzoyOCAt
MDAwMApAQCAtMzcsNiArMzcsOCBAQAogLSAoaWQpX2ludGVybmFsTG9hZERlbGVnYXRlOwogLSAo
dm9pZClfdW5tYXJrQWxsTWlzc3BlbGxpbmdzOwogLSAodm9pZClfZGlkRmlyc3RMYXlvdXQ7Cisv
LyBOb3RlIHRoYXQgY2FsbGVycyBzaG91bGQgbm90IHBlcmZvcm0gYW55IG9wcyBvbiB0aGVzZSB2
aWV3cyB0aGF0IGNvdWxkIGNoYW5nZSB0aGUgc2V0IG9mIGZyYW1lcworLSAoTlNBcnJheSAqKV9k
b2N1bWVudFZpZXdzOwogCiAtIChOU1VSTFJlcXVlc3QgKilfcmVxdWVzdEZyb21EZWxlZ2F0ZUZv
clJlcXVlc3Q6KE5TVVJMUmVxdWVzdCAqKXJlcXVlc3QgaWRlbnRpZmllcjooaWQgKilpZGVudGlm
aWVyIGVycm9yOihOU0Vycm9yICoqKWVycm9yOwogLSAodm9pZClfc2VuZFJlbWFpbmluZ0RlbGVn
YXRlTWVzc2FnZXNXaXRoSWRlbnRpZmllcjooaWQpaWRlbnRpZmllciByZXNwb25zZTooTlNVUkxS
ZXNwb25zZSAqKXJlc3BvbnNlIGxlbmd0aDoodW5zaWduZWQpbGVuZ3RoIGVycm9yOihOU0Vycm9y
ICopZXJyb3I7CkluZGV4OiAuL1dlYlZpZXcuc3VicHJvai9XZWJGcmFtZVByaXZhdGUuaAo9PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09ClJDUyBmaWxlOiAvY3ZzL3Jvb3QvV2ViS2l0L1dlYlZpZXcuc3VicHJvai9XZWJGcmFt
ZVByaXZhdGUuaCx2CnJldHJpZXZpbmcgcmV2aXNpb24gMS4xNTYKZGlmZiAtcCAtdSAtcjEuMTU2
IC4vV2ViVmlldy5zdWJwcm9qL1dlYkZyYW1lUHJpdmF0ZS5oCi0tLSAuL1dlYlZpZXcuc3VicHJv
ai9XZWJGcmFtZVByaXZhdGUuaAkyNCBKdWwgMjAwNSAyMjo1ODoyMyAtMDAwMAkxLjE1NgorKysg
Li9XZWJWaWV3LnN1YnByb2ovV2ViRnJhbWVQcml2YXRlLmgJMjcgSnVsIDIwMDUgMjA6NDM6Mjgg
LTAwMDAKQEAgLTE4MCw4ICsxODAsNiBAQCBleHRlcm4gTlNTdHJpbmcgKldlYlBhZ2VDYWNoZURv
Y3VtZW50VmllCiAtICh2b2lkKV9jbGllbnRSZWRpcmVjdGVkVG86KE5TVVJMICopVVJMIGRlbGF5
OihOU1RpbWVJbnRlcnZhbClzZWNvbmRzIGZpcmVEYXRlOihOU0RhdGUgKilkYXRlIGxvY2tIaXN0
b3J5OihCT09MKWxvY2tIaXN0b3J5IGlzSmF2YVNjcmlwdEZvcm1BY3Rpb246KEJPT0wpaXNKYXZh
U2NyaXB0Rm9ybUFjdGlvbjsKIC0gKHZvaWQpX2NsaWVudFJlZGlyZWN0Q2FuY2VsbGVkOihCT09M
KWNhbmNlbFdpdGhMb2FkSW5Qcm9ncmVzczsKIAotLSAodm9pZClfdGV4dFNpemVNdWx0aXBsaWVy
Q2hhbmdlZDsKLQogLSAodm9pZClfZGVmZXJzQ2FsbGJhY2tzQ2hhbmdlZDsKIAogLSAodm9pZClf
dmlld1dpbGxNb3ZlVG9Ib3N0V2luZG93OihOU1dpbmRvdyAqKWhvc3RXaW5kb3c7CkluZGV4OiAu
L1dlYlZpZXcuc3VicHJvai9XZWJIVE1MVmlldy5tCj09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT0KUkNTIGZpbGU6IC9jdnMv
cm9vdC9XZWJLaXQvV2ViVmlldy5zdWJwcm9qL1dlYkhUTUxWaWV3Lm0sdgpyZXRyaWV2aW5nIHJl
dmlzaW9uIDEuNDYxCmRpZmYgLXAgLXUgLXIxLjQ2MSAuL1dlYlZpZXcuc3VicHJvai9XZWJIVE1M
Vmlldy5tCi0tLSAuL1dlYlZpZXcuc3VicHJvai9XZWJIVE1MVmlldy5tCTI2IEp1bCAyMDA1IDIw
OjI5OjA2IC0wMDAwCTEuNDYxCisrKyAuL1dlYlZpZXcuc3VicHJvai9XZWJIVE1MVmlldy5tCTI3
IEp1bCAyMDA1IDIwOjQzOjMzIC0wMDAwCkBAIC0xNjksNyArMTY5LDcgQEAgdm9pZCAqX05TU29m
dExpbmtpbmdHZXRGcmFtZXdvcmtGdW5jUHRyKAogICAgICAgICAgICAgICAgICAgICAgICAgICAg
ICAgICAgICAgICAgIGNvbnN0IHN0cnVjdCBtYWNoX2hlYWRlciAqKmlvQ2FjaGVkRnJhbWV3b3Jr
SW1hZ2VIZWFkZXJQdHIpOwogCiAKLUBpbnRlcmZhY2UgV2ViSFRNTFZpZXcgKFdlYlRleHRTaXpp
bmcpIDxfd2ViX1dlYkRvY3VtZW50VGV4dFNpemluZz4KK0BpbnRlcmZhY2UgV2ViSFRNTFZpZXcg
KFdlYlRleHRTaXppbmcpIDxfV2ViRG9jdW1lbnRUZXh0U2l6aW5nPgogQGVuZAogCiBAaW50ZXJm
YWNlIFdlYkhUTUxWaWV3IChXZWJIVE1MVmlld0ZpbGVJbnRlcm5hbCkKQEAgLTE2ODgsMTAgKzE2
ODgsNiBAQCBzdGF0aWMgV2ViSFRNTFZpZXcgKmxhc3RIaXRWaWV3ID0gbmlsOwogCiBAZW5kCiAK
LQotQGludGVyZmFjZSBXZWJIVE1MVmlldyAoVGV4dFNpemluZykgPF93ZWJfV2ViRG9jdW1lbnRU
ZXh0U2l6aW5nPgotQGVuZAotCiBAaW50ZXJmYWNlIE5TQXJyYXkgKFdlYkhUTUxWaWV3KQogLSAo
dm9pZClfd2ViX21ha2VQbHVnaW5WaWV3c1BlcmZvcm1TZWxlY3RvcjooU0VMKXNlbGVjdG9yIHdp
dGhPYmplY3Q6KGlkKW9iamVjdDsKIEBlbmQKQEAgLTQ3NzMsMTEgKzQ3NjksMzEgQEAgc3RhdGlj
IERPTVJhbmdlICp1bmlvbkRPTVJhbmdlcyhET01SYW5nZQogCiBAaW1wbGVtZW50YXRpb24gV2Vi
SFRNTFZpZXcgKFdlYlRleHRTaXppbmcpCiAKLS0gKHZvaWQpX3dlYl90ZXh0U2l6ZU11bHRpcGxp
ZXJDaGFuZ2VkCistIChJQkFjdGlvbilfbWFrZVRleHRTbWFsbGVyOihpZClzZW5kZXIKK3sKKyAg
ICBbc2VsZiBfdXBkYXRlVGV4dFNpemVNdWx0aXBsaWVyXTsKK30KKworLSAoSUJBY3Rpb24pX21h
a2VUZXh0TGFyZ2VyOihpZClzZW5kZXIKK3sKKyAgICBbc2VsZiBfdXBkYXRlVGV4dFNpemVNdWx0
aXBsaWVyXTsKK30KKworLSAoSUJBY3Rpb24pX21ha2VUZXh0U3RhbmRhcmRTaXplOihpZClzZW5k
ZXIKIHsKICAgICBbc2VsZiBfdXBkYXRlVGV4dFNpemVNdWx0aXBsaWVyXTsKIH0KIAorLSAoQk9P
TClfdHJhY2tzQ29tbW9uU2l6ZUZhY3RvcgoreworICAgIHJldHVybiBZRVM7Cit9CisKKy8vIG5l
dmVyIHNlbnQgYmVjYXVzZSB3ZSB0cmFjayB0aGUgY29tbW9uIHNpemUgZmFjdG9yCistIChCT09M
KV9jYW5NYWtlVGV4dFNtYWxsZXIgICAgICAgICAgeyAgIEFTU0VSVF9OT1RfUkVBQ0hFRCgpOyBy
ZXR1cm4gTk87ICAgIH0KKy0gKEJPT0wpX2Nhbk1ha2VUZXh0TGFyZ2VyICAgICAgICAgICB7ICAg
QVNTRVJUX05PVF9SRUFDSEVEKCk7IHJldHVybiBOTzsgICAgfQorLSAoQk9PTClfY2FuTWFrZVRl
eHRTdGFuZGFyZFNpemUgICAgIHsgICBBU1NFUlRfTk9UX1JFQUNIRUQoKTsgcmV0dXJuIE5POyAg
ICB9CisKIEBlbmQKIAogQGltcGxlbWVudGF0aW9uIE5TQXJyYXkgKFdlYkhUTUxWaWV3KQpJbmRl
eDogLi9XZWJWaWV3LnN1YnByb2ovV2ViUERGUmVwcmVzZW50YXRpb24ubQo9PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09ClJD
UyBmaWxlOiAvY3ZzL3Jvb3QvV2ViS2l0L1dlYlZpZXcuc3VicHJvai9XZWJQREZSZXByZXNlbnRh
dGlvbi5tLHYKcmV0cmlldmluZyByZXZpc2lvbiAxLjQKZGlmZiAtcCAtdSAtcjEuNCAuL1dlYlZp
ZXcuc3VicHJvai9XZWJQREZSZXByZXNlbnRhdGlvbi5tCi0tLSAuL1dlYlZpZXcuc3VicHJvai9X
ZWJQREZSZXByZXNlbnRhdGlvbi5tCTUgSnVuIDIwMDUgMTc6NTQ6NDggLTAwMDAJMS40CisrKyAu
L1dlYlZpZXcuc3VicHJvai9XZWJQREZSZXByZXNlbnRhdGlvbi5tCTI3IEp1bCAyMDA1IDIwOjQz
OjMzIC0wMDAwCkBAIC0zNSw3ICszNSw4IEBACiAjaW1wb3J0IDxXZWJLaXQvV2ViUERGUmVwcmVz
ZW50YXRpb24uaD4KICNpbXBvcnQgPFdlYktpdC9XZWJQREZWaWV3Lmg+CiAKLSNpbXBvcnQgPFF1
YXJ0ei9RdWFydHouaD4KKyNpbXBvcnQgPFBERktpdC9QREZEb2N1bWVudC5oPgorI2ltcG9ydCA8
UERGS2l0L1BERlZpZXcuaD4KIAogQGltcGxlbWVudGF0aW9uIFdlYlBERlJlcHJlc2VudGF0aW9u
CiAKSW5kZXg6IC4vV2ViVmlldy5zdWJwcm9qL1dlYlBERlZpZXcuaAo9PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09ClJDUyBm
aWxlOiAvY3ZzL3Jvb3QvV2ViS2l0L1dlYlZpZXcuc3VicHJvai9XZWJQREZWaWV3LmgsdgpyZXRy
aWV2aW5nIHJldmlzaW9uIDEuMTAKZGlmZiAtcCAtdSAtcjEuMTAgLi9XZWJWaWV3LnN1YnByb2ov
V2ViUERGVmlldy5oCi0tLSAuL1dlYlZpZXcuc3VicHJvai9XZWJQREZWaWV3LmgJMTggSnVsIDIw
MDUgMjM6MTg6MjIgLTAwMDAJMS4xMAorKysgLi9XZWJWaWV3LnN1YnByb2ovV2ViUERGVmlldy5o
CTI3IEp1bCAyMDA1IDIwOjQzOjMzIC0wMDAwCkBAIC0zMSwxMSArMzEsMTIgQEAKIEBjbGFzcyBQ
REZWaWV3OwogQGNsYXNzIFdlYkRhdGFTb3VyY2U7CiAKLUBwcm90b2NvbCBfd2ViX1dlYkRvY3Vt
ZW50VGV4dFNpemluZzsKK0Bwcm90b2NvbCBfV2ViRG9jdW1lbnRUZXh0U2l6aW5nOworQHByb3Rv
Y29sIF9XZWJEb2N1bWVudFZpZXdTdGF0ZTsKIEBwcm90b2NvbCBXZWJEb2N1bWVudFNlbGVjdGlv
bjsKIEBwcm90b2NvbCBXZWJEb2N1bWVudEVsZW1lbnQ7CiAKLUBpbnRlcmZhY2UgV2ViUERGVmll
dyA6IE5TVmlldyA8V2ViRG9jdW1lbnRWaWV3LCBXZWJEb2N1bWVudFNlYXJjaGluZywgV2ViRG9j
dW1lbnRUZXh0LCBfd2ViX1dlYkRvY3VtZW50VGV4dFNpemluZywgV2ViRG9jdW1lbnRTZWxlY3Rp
b24sIFdlYkRvY3VtZW50RWxlbWVudD4KK0BpbnRlcmZhY2UgV2ViUERGVmlldyA6IE5TVmlldyA8
V2ViRG9jdW1lbnRWaWV3LCBXZWJEb2N1bWVudFNlYXJjaGluZywgV2ViRG9jdW1lbnRUZXh0LCBX
ZWJEb2N1bWVudFNlbGVjdGlvbiwgV2ViRG9jdW1lbnRFbGVtZW50LCBfV2ViRG9jdW1lbnRWaWV3
U3RhdGUsIF9XZWJEb2N1bWVudFRleHRTaXppbmc+CiB7CiAgICAgUERGVmlldyAqUERGU3Vidmll
dzsKICAgICBXZWJEYXRhU291cmNlICpkYXRhU291cmNlOwpJbmRleDogLi9XZWJWaWV3LnN1YnBy
b2ovV2ViUERGVmlldy5tCj09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT0KUkNTIGZpbGU6IC9jdnMvcm9vdC9XZWJLaXQvV2Vi
Vmlldy5zdWJwcm9qL1dlYlBERlZpZXcubSx2CnJldHJpZXZpbmcgcmV2aXNpb24gMS4yMgpkaWZm
IC1wIC11IC1yMS4yMiAuL1dlYlZpZXcuc3VicHJvai9XZWJQREZWaWV3Lm0KLS0tIC4vV2ViVmll
dy5zdWJwcm9qL1dlYlBERlZpZXcubQkxOCBKdWwgMjAwNSAyMzoxODoyMiAtMDAwMAkxLjIyCisr
KyAuL1dlYlZpZXcuc3VicHJvai9XZWJQREZWaWV3Lm0JMjcgSnVsIDIwMDUgMjA6NDM6MzQgLTAw
MDAKQEAgLTQ1LDcgKzQ1LDcgQEAKICNpbXBvcnQgPFdlYktpdC9XZWJWaWV3UHJpdmF0ZS5oPgog
CiAjaW1wb3J0IDxXZWJLaXRTeXN0ZW1JbnRlcmZhY2UuaD4KLSNpbXBvcnQgPFF1YXJ0ei9RdWFy
dHouaD4KKyNpbXBvcnQgPFBERktpdC9QREZLaXQuaD4KIAogLy8gUXVhcnR6UHJpdmF0ZS5oIGRv
ZXNuJ3QgaW5jbHVkZSB0aGUgUERGS2l0IHByaXZhdGUgaGVhZGVycywgc28gd2UgY2FuJ3QgZ2V0
IGF0IFBERlZpZXdQcml2LmguICgzOTU3OTcxKQogLy8gRXZlbiBpZiB0aGF0IHdhcyBmaXhlZCwg
d2UnZCBoYXZlIHRvIHR3ZWFrIGNvbXBpbGUgb3B0aW9ucyB0byBpbmNsdWRlIFF1YXJ0elByaXZh
dGUuaC4gKDM5NTc4MzkpCkBAIC0yNDYsMjYgKzI0Niw2IEBAIHN0YXRpYyB2b2lkIGFwcGxpY2F0
aW9uSW5mb0Zvck1JTUVUeXBlKE4KICAgICAgICAgfSBlbHNlIHsKICAgICAgICAgICAgIEVSUk9S
KCJQREYgY29udGV4dCBtZW51IGl0ZW0gJUAgY2FtZSB3aXRoIHRhZyAlZCwgc28gbm8gV2ViS2l0
IHRhZyB3YXMgYXBwbGllZC4gVGhpcyBjb3VsZCBtZWFuIHRoYXQgdGhlIGl0ZW0gZG9lc24ndCBh
cHBlYXIgaW4gY2xpZW50cyBzdWNoIGFzIFNhZmFyaS4iLCBbaXRlbUNvcHkgdGl0bGVdLCBbaXRl
bUNvcHkgdGFnXSk7CiAgICAgICAgIH0KLSAgICAgICAgCi0gICAgICAgIC8vIEludGVyY2VwdCBz
b21lIG9mIHRoZXNlIG1lbnUgaXRlbXMgZm9yIGJldHRlciBXZWJLaXQgaW50ZWdyYXRpb24uCi0g
ICAgICAgIHN3aXRjaCAodGFnKSB7Ci0gICAgICAgICAgICAvLyBDb252ZXJ0IHRoZSBzY2FsZS1m
YWN0b3ItcmVsYXRlZCBpdGVtcyB0byB1c2UgV2ViS2l0J3MgdGV4dCBzaXppbmcgQVBJIGluc3Rl
YWQsIHNvIHRoZXkgbWF0Y2ggb3RoZXIKLSAgICAgICAgICAgIC8vIFVJIHRoYXQgdXNlcyB0aGUg
dGV4dCBzaXppbmcgQVBJIChzdWNoIGFzIE1ha2UgVGV4dCBMYXJnZXIvU21hbGxlciBtZW51IGl0
ZW1zIGluIFNhZmFyaSkuCi0gICAgICAgICAgICBjYXNlIFdlYk1lbnVJdGVtUERGQWN0dWFsU2l6
ZToKLSAgICAgICAgICAgICAgICBbaXRlbUNvcHkgc2V0VGFyZ2V0OltbZGF0YVNvdXJjZSB3ZWJG
cmFtZV0gd2ViVmlld11dOwotICAgICAgICAgICAgICAgIFtpdGVtQ29weSBzZXRBY3Rpb246QHNl
bGVjdG9yKG1ha2VUZXh0U3RhbmRhcmRTaXplOildOwotICAgICAgICAgICAgICAgIGJyZWFrOwot
ICAgICAgICAgICAgY2FzZSBXZWJNZW51SXRlbVBERlpvb21JbjoKLSAgICAgICAgICAgICAgICBb
aXRlbUNvcHkgc2V0VGFyZ2V0OltbZGF0YVNvdXJjZSB3ZWJGcmFtZV0gd2ViVmlld11dOwotICAg
ICAgICAgICAgICAgIFtpdGVtQ29weSBzZXRBY3Rpb246QHNlbGVjdG9yKG1ha2VUZXh0TGFyZ2Vy
OildOwotICAgICAgICAgICAgICAgIGJyZWFrOwotICAgICAgICAgICAgY2FzZSBXZWJNZW51SXRl
bVBERlpvb21PdXQ6Ci0gICAgICAgICAgICAgICAgW2l0ZW1Db3B5IHNldFRhcmdldDpbW2RhdGFT
b3VyY2Ugd2ViRnJhbWVdIHdlYlZpZXddXTsKLSAgICAgICAgICAgICAgICBbaXRlbUNvcHkgc2V0
QWN0aW9uOkBzZWxlY3RvcihtYWtlVGV4dFNtYWxsZXI6KV07Ci0gICAgICAgICAgICAgICAgYnJl
YWs7Ci0gICAgICAgICAgICBkZWZhdWx0OgotICAgICAgICAgICAgICAgIGJyZWFrOwotICAgICAg
ICB9CiAgICAgfQogICAgIAogICAgIFthY3Rpb25zVG9UYWdzIHJlbGVhc2VdOwpAQCAtMzQ3LDIy
ICszMjcsMTAgQEAgc3RhdGljIHZvaWQgYXBwbGljYXRpb25JbmZvRm9yTUlNRVR5cGUoTgogICAg
IHJldHVybiBtZW51OwogfQogCi0tICh2b2lkKV91cGRhdGVTY2FsaW5nVG9SZWZsZWN0VGV4dFNp
emUKLXsKLSAgICBXZWJWaWV3ICp2aWV3ID0gW1tkYXRhU291cmNlIHdlYkZyYW1lXSB3ZWJWaWV3
XTsKLSAgICAKLSAgICAvLyBUaGUgc2NhbGUgZmFjdG9yIGFuZCB0ZXh0IHNpemUgbXVsdGlwbGll
ciBjb252ZW5pZW50bHkgdXNlIHRoZSBzYW1lIHVuaXRzLCBzbyB3ZSBjYW4ganVzdAotICAgIC8v
IHRyZWF0IHRoZSB2YWx1ZXMgYXMgaW50ZXJjaGFuZ2VhYmxlLgotICAgIGlmICh2aWV3ICE9IG5p
bCkgewotICAgICAgICBbUERGU3VidmlldyBzZXRTY2FsZUZhY3RvcjpbdmlldyB0ZXh0U2l6ZU11
bHRpcGxpZXJdXTsJCQotICAgIH0JCi19Ci0KIC0gKHZvaWQpc2V0RGF0YVNvdXJjZTooV2ViRGF0
YVNvdXJjZSAqKWRzCiB7CiAgICAgZGF0YVNvdXJjZSA9IGRzOwogICAgIFtzZWxmIHNldEZyYW1l
Oltbc2VsZiBzdXBlcnZpZXddIGZyYW1lXV07Ci0gICAgW3NlbGYgX3VwZGF0ZVNjYWxpbmdUb1Jl
ZmxlY3RUZXh0U2l6ZV07CiB9CiAKIC0gKHZvaWQpZGF0YVNvdXJjZVVwZGF0ZWQ6KFdlYkRhdGFT
b3VyY2UgKilkYXRhU291cmNlCkBAIC00MDIsMTEgKzM3MCw2IEBAIHN0YXRpYyB2b2lkIGFwcGxp
Y2F0aW9uSW5mb0Zvck1JTUVUeXBlKE4KICAgICB9CiB9CiAKLS0gKHZvaWQpX3dlYl90ZXh0U2l6
ZU11bHRpcGxpZXJDaGFuZ2VkCi17Ci0gICAgW3NlbGYgX3VwZGF0ZVNjYWxpbmdUb1JlZmxlY3RU
ZXh0U2l6ZV07Ci19Ci0KIC8vIEZJWE1FIDQxODI4NzY6IFdlIGNhbiBlbGltaW5hdGUgdGhpcyBm
dW5jdGlvbiBpbiBmYXZvciBpZiAtaXNFcXVhbDogaWYgW1BERlNlbGVjdGlvbiBpc0VxdWFsOl0g
aXMgb3ZlcnJpZGRlbgogLy8gdG8gY29tcGFyZSBjb250ZW50cy4KIHN0YXRpYyBCT09MIFBERlNl
bGVjdGlvbnNBcmVFcXVhbChQREZTZWxlY3Rpb24gKnNlbGVjdGlvbkEsIFBERlNlbGVjdGlvbiAq
c2VsZWN0aW9uQikKQEAgLTU3MCw2ICs1MzMsMTA3IEBAIHN0YXRpYyBCT09MIFBERlNlbGVjdGlv
bnNBcmVFcXVhbChQREZTZWwKICAgICBbUERGU3VidmlldyBjbGVhclNlbGVjdGlvbl07CiB9CiAK
Ky8qKiogV2ViRG9jdW1lbnRWaWV3U3RhdGUgcHJvdG9jb2wgaW1wbGVtZW50YXRpb24gKioqLwor
CisvLyBFdmVuIHRob3VnaCB0byBXZWJLaXQgd2UgYXJlIHRoZSAiZG9jVmlldyIsIGluIHJlYWxp
dHkgYSBQREZWaWV3IGNvbnRhaW5zIGl0cyBvd24gc2Nyb2xsdmlldyBhbmQgZG9jVmlldy4KKy8v
IEFuZCBpdCBldmVuIHR1cm5zIG91dCB0aGVyZSBpcyBhbm90aGVyIFBERktpdCB2aWV3IGJldHdl
ZW4gdGhlIGRvY1ZpZXcgYW5kIGl0cyBlbmNsb3NpbmcgU2Nyb2xsVmlldywgc28KKy8vIHdlIGhh
dmUgdG8gYmUgc3VyZSB0byBkbyBvdXIgY2FsY3VsYXRpb25zIGJhc2VkIG9uIHRoYXQgdmlldywg
aW1tZWRpYXRlbHkgaW5zaWRlIHRoZSBDbGlwVmlldy4gIFdlIHRyeQorLy8gdG8gbWFrZSBhcyBm
ZXcgYXNzdW1wdGlvbnMgYWJvdXQgdGhlIFBERktpdCB2aWV3IGhpZXJhcmNoeSBhcyBwb3NzaWJs
ZS4KKworLSAoTlNQb2ludClzY3JvbGxQb2ludAoreworICAgIE5TVmlldyAqcmVhbERvY1ZpZXcg
PSBbUERGU3VidmlldyBkb2N1bWVudFZpZXddOworICAgIE5TQ2xpcFZpZXcgKmNsaXBWaWV3ID0g
W1tyZWFsRG9jVmlldyBlbmNsb3NpbmdTY3JvbGxWaWV3XSBjb250ZW50Vmlld107CisgICAgcmV0
dXJuIFtjbGlwVmlldyBib3VuZHNdLm9yaWdpbjsKK30KKworLSAodm9pZClzZXRTY3JvbGxQb2lu
dDooTlNQb2ludClwCit7CisgICAgV2ViRnJhbWUgKmZyYW1lID0gW2RhdGFTb3VyY2Ugd2ViRnJh
bWVdOworICAgIC8vRklYTUU6ICBXZSBvbmx5IHJlc3RvcmUgc2Nyb2xsIHN0YXRlIGluIHRoZSBu
b24tZnJhbWVzIGNhc2UgYmVjYXVzZSBvdGhlcndpc2Ugd2UgZ2V0IGEgY3Jhc2ggZHVlIHRvCisg
ICAgLy8gUERGS2l0IGNhbGxpbmcgZGlzcGxheSBmcm9tIHdpdGhpbiBpdHMgZHJhd1JlY3Q6LiBT
ZWUgYnVnemlsbGEgNDE2NC4KKyAgICBpZiAoIVtmcmFtZSBwYXJlbnRGcmFtZV0pIHsKKyAgICAg
ICAgTlNWaWV3ICpyZWFsRG9jVmlldyA9IFtQREZTdWJ2aWV3IGRvY3VtZW50Vmlld107CisgICAg
ICAgIFtbW3JlYWxEb2NWaWV3IGVuY2xvc2luZ1Njcm9sbFZpZXddIGRvY3VtZW50Vmlld10gc2Ny
b2xsUG9pbnQ6cF07CisgICAgfQorfQorCistIChpZCl2aWV3U3RhdGUKK3sKKyAgICBOU011dGFi
bGVBcnJheSAqc3RhdGUgPSBbTlNNdXRhYmxlQXJyYXkgYXJyYXlXaXRoQ2FwYWNpdHk6NF07Cisg
ICAgUERGRGlzcGxheU1vZGUgbW9kZSA9IFtQREZTdWJ2aWV3IGRpc3BsYXlNb2RlXTsKKyAgICBb
c3RhdGUgYWRkT2JqZWN0OltOU051bWJlciBudW1iZXJXaXRoSW50Om1vZGVdXTsKKyAgICBpZiAo
bW9kZSA9PSBrUERGRGlzcGxheVNpbmdsZVBhZ2UgfHwgbW9kZSA9PSBrUERGRGlzcGxheVR3b1Vw
KSB7CisgICAgICAgIHVuc2lnbmVkIGludCBwYWdlSW5kZXggPSBbW1BERlN1YnZpZXcgZG9jdW1l
bnRdIGluZGV4Rm9yUGFnZTpbUERGU3VidmlldyBjdXJyZW50UGFnZV1dOworICAgICAgICBbc3Rh
dGUgYWRkT2JqZWN0OltOU051bWJlciBudW1iZXJXaXRoVW5zaWduZWRJbnQ6cGFnZUluZGV4XV07
CisgICAgfSAgLy8gZWxzZSBpbiBjb250aW51b3VzIG1vZGVzLCBzY3JvbGwgcG9zaXRpb24gZ2V0
cyB1cyB0byB0aGUgcmlnaHQgcGFnZQorICAgIEJPT0wgYXV0b1NjYWxlRmxhZyA9IFtQREZTdWJ2
aWV3IGF1dG9TY2FsZXNdOworICAgIFtzdGF0ZSBhZGRPYmplY3Q6W05TTnVtYmVyIG51bWJlcldp
dGhCb29sOmF1dG9TY2FsZUZsYWddXTsKKyAgICBpZiAoIWF1dG9TY2FsZUZsYWcpIHsKKyAgICAg
ICAgW3N0YXRlIGFkZE9iamVjdDpbTlNOdW1iZXIgbnVtYmVyV2l0aEZsb2F0OltQREZTdWJ2aWV3
IHNjYWxlRmFjdG9yXV1dOworICAgIH0KKyAgICByZXR1cm4gc3RhdGU7Cit9CisKKy0gKHZvaWQp
c2V0Vmlld1N0YXRlOihpZClzdGF0ZVBMaXN0Cit7CisgICAgQVNTRVJUKFtzdGF0ZVBMaXN0IGlz
S2luZE9mQ2xhc3M6W05TQXJyYXkgY2xhc3NdXSk7CisgICAgTlNBcnJheSAqc3RhdGUgPSBzdGF0
ZVBMaXN0OworICAgIGludCBpID0gMDsKKyAgICBQREZEaXNwbGF5TW9kZSBtb2RlID0gW1tzdGF0
ZSBvYmplY3RBdEluZGV4OmkrK10gaW50VmFsdWVdOworICAgIFtQREZTdWJ2aWV3IHNldERpc3Bs
YXlNb2RlOm1vZGVdOworICAgIGlmIChtb2RlID09IGtQREZEaXNwbGF5U2luZ2xlUGFnZSB8fCBt
b2RlID09IGtQREZEaXNwbGF5VHdvVXApIHsKKyAgICAgICAgdW5zaWduZWQgaW50IHBhZ2VJbmRl
eCA9IFtbc3RhdGUgb2JqZWN0QXRJbmRleDppKytdIHVuc2lnbmVkSW50VmFsdWVdOworICAgICAg
ICBbUERGU3VidmlldyBnb1RvUGFnZTpbW1BERlN1YnZpZXcgZG9jdW1lbnRdIHBhZ2VBdEluZGV4
OnBhZ2VJbmRleF1dOworICAgIH0gIC8vIGVsc2UgaW4gY29udGludW91cyBtb2Rlcywgc2Nyb2xs
IHBvc2l0aW9uIGdldHMgdXMgdG8gdGhlIHJpZ2h0IHBhZ2UKKyAgICBCT09MIGF1dG9TY2FsZUZs
YWcgPSBbW3N0YXRlIG9iamVjdEF0SW5kZXg6aSsrXSBib29sVmFsdWVdOworICAgIFtQREZTdWJ2
aWV3IHNldEF1dG9TY2FsZXM6YXV0b1NjYWxlRmxhZ107CisgICAgaWYgKCFhdXRvU2NhbGVGbGFn
KSB7CisgICAgICAgIFtQREZTdWJ2aWV3IHNldFNjYWxlRmFjdG9yOltbc3RhdGUgb2JqZWN0QXRJ
bmRleDppKytdIGZsb2F0VmFsdWVdXTsKKyAgICB9Cit9CisKKy8qKiogX1dlYkRvY3VtZW50VGV4
dFNpemluZyBwcm90b2NvbCBpbXBsZW1lbnRhdGlvbiAqKiovCisKKy0gKElCQWN0aW9uKV9tYWtl
VGV4dFNtYWxsZXI6KGlkKXNlbmRlcgoreworICAgIFtQREZTdWJ2aWV3IHpvb21PdXQ6c2VuZGVy
XTsKK30KKworLSAoSUJBY3Rpb24pX21ha2VUZXh0TGFyZ2VyOihpZClzZW5kZXIKK3sKKyAgICBb
UERGU3VidmlldyB6b29tSW46c2VuZGVyXTsKK30KKworLSAoSUJBY3Rpb24pX21ha2VUZXh0U3Rh
bmRhcmRTaXplOihpZClzZW5kZXIKK3sKKyAgICBbUERGU3VidmlldyBzZXRTY2FsZUZhY3Rvcjox
LjBdOworfQorCistIChCT09MKV90cmFja3NDb21tb25TaXplRmFjdG9yCit7CisgICAgLy8gV2Ug
a2VlcCBvdXIgb3duIHNjYWxlIGZhY3RvciBpbnN0ZWFkIG9mIHRyYWNraW5nIHRoZSBjb21tb24g
b25lIGluIHRoZSBXZWJWaWV3IGZvciBhIGNvdXBsZSByZWFzb25zLgorICAgIC8vIEZpcnN0LCBQ
REZzIHRlbmQgdG8gaGF2ZSB2aXN1YWxseSBzbWFsbGVyIHRleHQgYmVjYXVzZSB0aGV5IGFyZSBs
YWlkIG91dCBmb3IgYSBwcmludGVkIHBhZ2UgaW5zdGVhZCBvZgorICAgIC8vIHRoZSBzY3JlZW4u
ICBTZWNvbmQsIHRoZSBQREZWaWV3IGZlYXR1cmUgb2YgQXV0b1NjYWxpbmcgbWVhbnMgb3VyIHNj
YWxpbmcgZmFjdG9yIGNhbiBiZSBxdWlldCB2YXJpYWJsZS4KKyAgICByZXR1cm4gTk87Cit9CisK
Ky0gKEJPT0wpX2Nhbk1ha2VUZXh0U21hbGxlcgoreworICAgIHJldHVybiBbUERGU3VidmlldyBj
YW5ab29tT3V0XTsKK30KKworLSAoQk9PTClfY2FuTWFrZVRleHRMYXJnZXIKK3sKKyAgICByZXR1
cm4gW1BERlN1YnZpZXcgY2FuWm9vbUluXTsKK30KKworLSAoQk9PTClfY2FuTWFrZVRleHRTdGFu
ZGFyZFNpemUKK3sKKyAgICByZXR1cm4gW1BERlN1YnZpZXcgc2NhbGVGYWN0b3JdICE9IDEuMDsK
K30KKworCiAtIChOU1JlY3Qpc2VsZWN0aW9uUmVjdAogewogICAgIE5TUmVjdCByZXN1bHQgPSBO
U1plcm9SZWN0OwpJbmRleDogLi9XZWJWaWV3LnN1YnByb2ovV2ViVGV4dFZpZXcubQo9PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09ClJDUyBmaWxlOiAvY3ZzL3Jvb3QvV2ViS2l0L1dlYlZpZXcuc3VicHJvai9XZWJUZXh0Vmll
dy5tLHYKcmV0cmlldmluZyByZXZpc2lvbiAxLjU5CmRpZmYgLXAgLXUgLXIxLjU5IC4vV2ViVmll
dy5zdWJwcm9qL1dlYlRleHRWaWV3Lm0KLS0tIC4vV2ViVmlldy5zdWJwcm9qL1dlYlRleHRWaWV3
Lm0JMjAgSnVsIDIwMDUgMDA6NTA6MjMgLTAwMDAJMS41OQorKysgLi9XZWJWaWV3LnN1YnByb2ov
V2ViVGV4dFZpZXcubQkyNyBKdWwgMjAwNSAyMDo0MzozNCAtMDAwMApAQCAtNTMsNyArNTMsNyBA
QAogLSAodm9pZClfdXBkYXRlVGV4dFNpemVNdWx0aXBsaWVyOwogQGVuZAogCi1AaW50ZXJmYWNl
IFdlYlRleHRWaWV3IChUZXh0U2l6aW5nKSA8X3dlYl9XZWJEb2N1bWVudFRleHRTaXppbmc+CitA
aW50ZXJmYWNlIFdlYlRleHRWaWV3IChUZXh0U2l6aW5nKSA8X1dlYkRvY3VtZW50VGV4dFNpemlu
Zz4KIEBlbmQKIAogQGltcGxlbWVudGF0aW9uIFdlYlRleHRWaWV3CkBAIC0zODYsOSArMzg2LDI5
IEBACiAKIEBpbXBsZW1lbnRhdGlvbiBXZWJUZXh0VmlldyAoVGV4dFNpemluZykKIAotLSAodm9p
ZClfd2ViX3RleHRTaXplTXVsdGlwbGllckNoYW5nZWQKKy0gKElCQWN0aW9uKV9tYWtlVGV4dFNt
YWxsZXI6KGlkKXNlbmRlcgogewogICAgIFtzZWxmIF91cGRhdGVUZXh0U2l6ZU11bHRpcGxpZXJd
OwogfQogCistIChJQkFjdGlvbilfbWFrZVRleHRMYXJnZXI6KGlkKXNlbmRlcgoreworICAgIFtz
ZWxmIF91cGRhdGVUZXh0U2l6ZU11bHRpcGxpZXJdOworfQorCistIChJQkFjdGlvbilfbWFrZVRl
eHRTdGFuZGFyZFNpemU6KGlkKXNlbmRlcgoreworICAgIFtzZWxmIF91cGRhdGVUZXh0U2l6ZU11
bHRpcGxpZXJdOworfQorCistIChCT09MKV90cmFja3NDb21tb25TaXplRmFjdG9yCit7CisgICAg
cmV0dXJuIFlFUzsKK30KKworLy8gbmV2ZXIgc2VudCBiZWNhdXNlIHdlIHRyYWNrIHRoZSBjb21t
b24gc2l6ZSBmYWN0b3IKKy0gKEJPT0wpX2Nhbk1ha2VUZXh0U21hbGxlciAgICAgICAgICB7ICAg
QVNTRVJUX05PVF9SRUFDSEVEKCk7IHJldHVybiBOTzsgICAgfQorLSAoQk9PTClfY2FuTWFrZVRl
eHRMYXJnZXIgICAgICAgICAgIHsgICBBU1NFUlRfTk9UX1JFQUNIRUQoKTsgcmV0dXJuIE5POyAg
ICB9CistIChCT09MKV9jYW5NYWtlVGV4dFN0YW5kYXJkU2l6ZSAgICAgeyAgIEFTU0VSVF9OT1Rf
UkVBQ0hFRCgpOyByZXR1cm4gTk87ICAgIH0KKwogQGVuZApJbmRleDogLi9XZWJWaWV3LnN1YnBy
b2ovV2ViVmlldy5tCj09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT0KUkNTIGZpbGU6IC9jdnMvcm9vdC9XZWJLaXQvV2ViVmll
dy5zdWJwcm9qL1dlYlZpZXcubSx2CnJldHJpZXZpbmcgcmV2aXNpb24gMS4yOTcKZGlmZiAtcCAt
dSAtcjEuMjk3IC4vV2ViVmlldy5zdWJwcm9qL1dlYlZpZXcubQotLS0gLi9XZWJWaWV3LnN1YnBy
b2ovV2ViVmlldy5tCTI2IEp1bCAyMDA1IDAwOjExOjMzIC0wMDAwCTEuMjk3CisrKyAuL1dlYlZp
ZXcuc3VicHJvai9XZWJWaWV3Lm0JMjcgSnVsIDIwMDUgMjA6NDM6MzcgLTAwMDAKQEAgLTg2LDYg
Kzg2LDcgQEAKICNpbXBvcnQgPFdlYkNvcmUvV2ViQ29yZVZpZXcuaD4KIAogI2ltcG9ydCA8Rm91
bmRhdGlvbi9OU1VSTENvbm5lY3Rpb24uaD4KKyNpbXBvcnQgPG9iamMvb2JqYy1ydW50aW1lLmg+
CiAKICNpZiBfX3BwY19fCiAjZGVmaW5lIFBST0NFU1NPUiAiUFBDIgpAQCAtMTg0MCw3ICsxODQx
LDYgQEAgTlNfRU5ESEFORExFUgogICAgICAgICByZXR1cm47CiAgICAgfQogICAgIF9wcml2YXRl
LT50ZXh0U2l6ZU11bHRpcGxpZXIgPSBtOwotICAgIFtbc2VsZiBtYWluRnJhbWVdIF90ZXh0U2l6
ZU11bHRpcGxpZXJDaGFuZ2VkXTsKIH0KIAogLSAoZmxvYXQpdGV4dFNpemVNdWx0aXBsaWVyCkBA
IC0yMzYyLDUwICsyMzYyLDc1IEBAIHN0YXRpYyBXZWJGcmFtZSAqaW5jcmVtZW50RnJhbWUoV2Vi
RnJhbWUKICNkZWZpbmUgTWF4aW11bVRleHRTaXplTXVsdGlwbGllcgkzLjAKICNkZWZpbmUgVGV4
dFNpemVNdWx0aXBsaWVyUmF0aW8JCTEuMgogCi0tIChCT09MKWNhbk1ha2VUZXh0U21hbGxlcgor
Ly8gU2xpZ2h0bHkgZnVua3kgbWV0aG9kIHRoYXQgbGV0cyB1cyBoYXZlIG9uZSBjb3B5IG9mIHRo
ZSBsb2dpYyBmb3IgZmluZGluZyBkb2NWaWV3cyB0aGF0IGNhbiBkbworLy8gdGV4dCBzaXppbmcu
ICBJdCByZXR1cm5zIHdoZXRoZXIgaXQgZm91bmQgYW55ICJzdWl0YWJsZSIgZG9jIHZpZXdzLiAg
SXQgc2VuZHMgc2VsIHRvIGFueSBzdWl0YWJsZQorLy8gZG9jIHZpZXdzLCBvciBpZiBzZWw9PTAg
d2UgZG8gbm90aGluZyB0byB0aGVtLiAgRm9yIGRvYyB2aWV3cyB0aGF0IHRyYWNrIG91ciBzaXpl
IGZhY3RvciwgdGhleSBhcmUKKy8vIHN1aXRhYmxlIGlmIGRvVHJhY2tpbmdWaWV3cz09WUVTICh3
aGljaCBpbiBwcmFjdGljZSBtZWFucyB0aGF0IG91ciBzaXplIGZhY3RvciBpc24ndCBhdCBpdHMg
bWF4IG9yCisvLyBtaW4pLiAgRm9yIGRvYyB2aWV3cyB0aGF0IGRvbid0IHRyYWNrIGl0LCB3ZSBz
ZW5kIHRoZW0gdGVzdFNlbCB0byBkZXRlcm1pbmUgc3VpdGFibGlsaXR5LgorLSAoQk9PTClfcGVy
Zm9ybVRleHRTaXppbmdTZWxlY3RvcjooU0VMKXNlbCB3aXRoT2JqZWN0OihpZClhcmcgb25UcmFj
a2luZ0RvY3M6KEJPT0wpZG9UcmFja2luZ1ZpZXdzIHNlbEZvck5vblRyYWNraW5nRG9jczooU0VM
KXRlc3RTZWwKIHsKICAgICBpZiAoW1tzZWxmIG1haW5GcmFtZV0gZGF0YVNvdXJjZV0gPT0gbmls
KSB7CiAgICAgICAgIHJldHVybiBOTzsKICAgICB9Ci0gICAgLy8gRklYTUU6IFRoaXMgd2lsbCBw
cmV2ZW50IHRleHQgc2l6aW5nIGluIHN1YmZyYW1lcyBpZiB0aGUgbWFpbiBmcmFtZSBkb2Vzbid0
IHN1cHBvcnQgaXQKLSAgICBpZiAoIVtbW1tzZWxmIG1haW5GcmFtZV0gZnJhbWVWaWV3XSBkb2N1
bWVudFZpZXddIGNvbmZvcm1zVG9Qcm90b2NvbDpAcHJvdG9jb2woX3dlYl9XZWJEb2N1bWVudFRl
eHRTaXppbmcpXSkgewotICAgICAgICByZXR1cm4gTk87Ci0gICAgfQotICAgIGlmIChbc2VsZiB0
ZXh0U2l6ZU11bHRpcGxpZXJdL1RleHRTaXplTXVsdGlwbGllclJhdGlvIDwgTWluaW11bVRleHRT
aXplTXVsdGlwbGllcikgewotICAgICAgICByZXR1cm4gTk87CisgICAgCisgICAgQk9PTCBmb3Vu
ZFNvbWUgPSBOTzsKKyAgICBOU0FycmF5ICpkb2NWaWV3cyA9IFtbc2VsZiBtYWluRnJhbWVdIF9k
b2N1bWVudFZpZXdzXTsKKyAgICBpbnQgaTsKKyAgICBmb3IgKGkgPSBbZG9jVmlld3MgY291bnRd
LTE7IGkgPj0gMDsgaS0tKSB7CisgICAgICAgIGlkIGRvY1ZpZXcgPSBbZG9jVmlld3Mgb2JqZWN0
QXRJbmRleDppXTsKKyAgICAgICAgaWYgKFtkb2NWaWV3IGNvbmZvcm1zVG9Qcm90b2NvbDpAcHJv
dG9jb2woX1dlYkRvY3VtZW50VGV4dFNpemluZyldKSB7CisgICAgICAgICAgICBpZCA8X1dlYkRv
Y3VtZW50VGV4dFNpemluZz4gc2l6aW5nRG9jVmlldyA9IChpZCA8X1dlYkRvY3VtZW50VGV4dFNp
emluZz4pZG9jVmlldzsKKyAgICAgICAgICAgIEJPT0wgaXNTdWl0YWJsZTsKKyAgICAgICAgICAg
IGlmIChbc2l6aW5nRG9jVmlldyBfdHJhY2tzQ29tbW9uU2l6ZUZhY3Rvcl0pIHsKKyAgICAgICAg
ICAgICAgICBpc1N1aXRhYmxlID0gZG9UcmFja2luZ1ZpZXdzOworICAgICAgICAgICAgfSBlbHNl
IHsKKyAgICAgICAgICAgICAgICAvLyBJbmNhcm5hdGlvbiB0byBwZXJmb3JtIGEgc2VsZWN0b3Ig
cmV0dXJuaW5nIGEgQk9PTCBmcm9tIG9iamMvb2JqYy1ydW50aW1lLmgKKyAgICAgICAgICAgICAg
ICBpc1N1aXRhYmxlID0gKCooQk9PTCgqKShpZCwgU0VMLCAuLi4pKW9iamNfbXNnU2VuZCkoc2l6
aW5nRG9jVmlldywgdGVzdFNlbCk7CisgICAgICAgICAgICB9CisKKyAgICAgICAgICAgIGlmIChp
c1N1aXRhYmxlKSB7CisgICAgICAgICAgICAgICAgaWYgKHNlbCAhPSAwKSB7CisgICAgICAgICAg
ICAgICAgICAgIGZvdW5kU29tZSA9IFlFUzsKKyAgICAgICAgICAgICAgICAgICAgW3NpemluZ0Rv
Y1ZpZXcgcGVyZm9ybVNlbGVjdG9yOnNlbCB3aXRoT2JqZWN0OmFyZ107CisgICAgICAgICAgICAg
ICAgfSBlbHNlIHsKKyAgICAgICAgICAgICAgICAgICAgLy8gaWYgd2UncmUganVzdCBjYWxsZWQg
Zm9yIHRoZSBiZW5lZml0IG9mIHRoZSByZXR1cm4gdmFsdWUsIHdlIGNhbiByZXR1cm4gYXQgZmly
c3QgbWF0Y2gKKyAgICAgICAgICAgICAgICAgICAgcmV0dXJuIFlFUzsKKyAgICAgICAgICAgICAg
ICB9CisgICAgICAgICAgICB9CisgICAgICAgIH0KICAgICB9Ci0gICAgcmV0dXJuIFlFUzsKKyAg
ICAKKyAgICByZXR1cm4gZm91bmRTb21lOworfQorCistIChCT09MKWNhbk1ha2VUZXh0U21hbGxl
cgoreworICAgIEJPT0wgY2FuU2hyaW5rTW9yZSA9IF9wcml2YXRlLT50ZXh0U2l6ZU11bHRpcGxp
ZXIvVGV4dFNpemVNdWx0aXBsaWVyUmF0aW8gPiBNaW5pbXVtVGV4dFNpemVNdWx0aXBsaWVyOwor
ICAgIHJldHVybiBbc2VsZiBfcGVyZm9ybVRleHRTaXppbmdTZWxlY3RvcjooU0VMKTAgd2l0aE9i
amVjdDpuaWwgb25UcmFja2luZ0RvY3M6Y2FuU2hyaW5rTW9yZSBzZWxGb3JOb25UcmFja2luZ0Rv
Y3M6QHNlbGVjdG9yKF9jYW5NYWtlVGV4dFNtYWxsZXIpXTsKIH0KIAogLSAoQk9PTCljYW5NYWtl
VGV4dExhcmdlcgogewotICAgIGlmIChbW3NlbGYgbWFpbkZyYW1lXSBkYXRhU291cmNlXSA9PSBu
aWwpIHsKLSAgICAgICAgcmV0dXJuIE5POwotICAgIH0KLSAgICAvLyBGSVhNRTogVGhpcyB3aWxs
IHByZXZlbnQgdGV4dCBzaXppbmcgaW4gc3ViZnJhbWVzIGlmIHRoZSBtYWluIGZyYW1lIGRvZXNu
J3Qgc3VwcG9ydCBpdAotICAgIGlmICghW1tbW3NlbGYgbWFpbkZyYW1lXSBmcmFtZVZpZXddIGRv
Y3VtZW50Vmlld10gY29uZm9ybXNUb1Byb3RvY29sOkBwcm90b2NvbChfd2ViX1dlYkRvY3VtZW50
VGV4dFNpemluZyldKSB7Ci0gICAgICAgIHJldHVybiBOTzsKLSAgICB9Ci0gICAgaWYgKFtzZWxm
IHRleHRTaXplTXVsdGlwbGllcl0qVGV4dFNpemVNdWx0aXBsaWVyUmF0aW8gPiBNYXhpbXVtVGV4
dFNpemVNdWx0aXBsaWVyKSB7Ci0gICAgICAgIHJldHVybiBOTzsKLSAgICB9Ci0gICAgcmV0dXJu
IFlFUzsKKyAgICBCT09MIGNhbkdyb3dNb3JlID0gX3ByaXZhdGUtPnRleHRTaXplTXVsdGlwbGll
cipUZXh0U2l6ZU11bHRpcGxpZXJSYXRpbyA8IE1heGltdW1UZXh0U2l6ZU11bHRpcGxpZXI7Cisg
ICAgcmV0dXJuIFtzZWxmIF9wZXJmb3JtVGV4dFNpemluZ1NlbGVjdG9yOihTRUwpMCB3aXRoT2Jq
ZWN0Om5pbCBvblRyYWNraW5nRG9jczpjYW5Hcm93TW9yZSBzZWxGb3JOb25UcmFja2luZ0RvY3M6
QHNlbGVjdG9yKF9jYW5NYWtlVGV4dExhcmdlcildOwogfQogCiAtIChJQkFjdGlvbiltYWtlVGV4
dFNtYWxsZXI6KGlkKXNlbmRlcgogewotICAgIGlmICghW3NlbGYgY2FuTWFrZVRleHRTbWFsbGVy
XSkgewotICAgICAgICByZXR1cm47CisgICAgQk9PTCBjYW5TaHJpbmtNb3JlID0gX3ByaXZhdGUt
PnRleHRTaXplTXVsdGlwbGllci9UZXh0U2l6ZU11bHRpcGxpZXJSYXRpbyA+IE1pbmltdW1UZXh0
U2l6ZU11bHRpcGxpZXI7CisgICAgaWYgKGNhblNocmlua01vcmUpIHsKKyAgICAgICAgW3NlbGYg
c2V0VGV4dFNpemVNdWx0aXBsaWVyOl9wcml2YXRlLT50ZXh0U2l6ZU11bHRpcGxpZXIvVGV4dFNp
emVNdWx0aXBsaWVyUmF0aW9dOwogICAgIH0KLSAgICBbc2VsZiBzZXRUZXh0U2l6ZU11bHRpcGxp
ZXI6W3NlbGYgdGV4dFNpemVNdWx0aXBsaWVyXS9UZXh0U2l6ZU11bHRpcGxpZXJSYXRpb107Cisg
ICAgW3NlbGYgX3BlcmZvcm1UZXh0U2l6aW5nU2VsZWN0b3I6QHNlbGVjdG9yKF9tYWtlVGV4dFNt
YWxsZXI6KSB3aXRoT2JqZWN0OnNlbmRlciBvblRyYWNraW5nRG9jczpjYW5TaHJpbmtNb3JlIHNl
bEZvck5vblRyYWNraW5nRG9jczpAc2VsZWN0b3IoX2Nhbk1ha2VUZXh0U21hbGxlcildOwogfQog
CiAtIChJQkFjdGlvbiltYWtlVGV4dExhcmdlcjooaWQpc2VuZGVyCiB7Ci0gICAgaWYgKCFbc2Vs
ZiBjYW5NYWtlVGV4dExhcmdlcl0pIHsKLSAgICAgICAgcmV0dXJuOworICAgIEJPT0wgY2FuR3Jv
d01vcmUgPSBfcHJpdmF0ZS0+dGV4dFNpemVNdWx0aXBsaWVyKlRleHRTaXplTXVsdGlwbGllclJh
dGlvIDwgTWF4aW11bVRleHRTaXplTXVsdGlwbGllcjsKKyAgICBpZiAoY2FuR3Jvd01vcmUpIHsK
KyAgICAgICAgW3NlbGYgc2V0VGV4dFNpemVNdWx0aXBsaWVyOl9wcml2YXRlLT50ZXh0U2l6ZU11
bHRpcGxpZXIqVGV4dFNpemVNdWx0aXBsaWVyUmF0aW9dOwogICAgIH0KLSAgICBbc2VsZiBzZXRU
ZXh0U2l6ZU11bHRpcGxpZXI6W3NlbGYgdGV4dFNpemVNdWx0aXBsaWVyXSpUZXh0U2l6ZU11bHRp
cGxpZXJSYXRpb107CisgICAgW3NlbGYgX3BlcmZvcm1UZXh0U2l6aW5nU2VsZWN0b3I6QHNlbGVj
dG9yKF9tYWtlVGV4dExhcmdlcjopIHdpdGhPYmplY3Q6c2VuZGVyIG9uVHJhY2tpbmdEb2NzOmNh
bkdyb3dNb3JlIHNlbEZvck5vblRyYWNraW5nRG9jczpAc2VsZWN0b3IoX2Nhbk1ha2VUZXh0TGFy
Z2VyKV07CiB9CiAKIC0gKEJPT0wpX3Jlc3BvbmRlclZhbGlkYXRlVXNlckludGVyZmFjZUl0ZW06
KGlkIDxOU1ZhbGlkYXRlZFVzZXJJbnRlcmZhY2VJdGVtPilpdGVtCkBAIC0yNTIxLDI3ICsyNTQ2
LDYgQEAgc3RhdGljIFdlYkZyYW1lICppbmNyZW1lbnRGcmFtZShXZWJGcmFtZQogICAgIH0KIH0K
IAotLSAoQk9PTCljYW5NYWtlVGV4dFN0YW5kYXJkU2l6ZQotewotICAgIGlmIChbW3NlbGYgbWFp
bkZyYW1lXSBkYXRhU291cmNlXSA9PSBuaWwpIHsKLSAgICAgICAgcmV0dXJuIE5POwotICAgIH0K
LSAgICAvLyBGSVhNRTogVGhpcyB3aWxsIHByZXZlbnQgdGV4dCBzaXppbmcgaW4gc3ViZnJhbWVz
IGlmIHRoZSBtYWluIGZyYW1lIGRvZXNuJ3Qgc3VwcG9ydCBpdAotICAgIGlmICghW1tbW3NlbGYg
bWFpbkZyYW1lXSBmcmFtZVZpZXddIGRvY3VtZW50Vmlld10gY29uZm9ybXNUb1Byb3RvY29sOkBw
cm90b2NvbChfd2ViX1dlYkRvY3VtZW50VGV4dFNpemluZyldKSB7Ci0gICAgICAgIHJldHVybiBO
TzsKLSAgICB9Ci0gICAgCi0gICAgcmV0dXJuIFtzZWxmIHRleHRTaXplTXVsdGlwbGllcl0gIT0g
MTsKLX0KLQotLSAoSUJBY3Rpb24pbWFrZVRleHRTdGFuZGFyZFNpemU6KGlkKXNlbmRlcgotewot
ICAgIGlmICghW3NlbGYgY2FuTWFrZVRleHRTdGFuZGFyZFNpemVdKSB7Ci0gICAgICAgIHJldHVy
bjsKLSAgICB9Ci0gICAgW3NlbGYgc2V0VGV4dFNpemVNdWx0aXBsaWVyOjFdOwotfQotCiAtIChC
T09MKW1haW50YWluc0luYWN0aXZlU2VsZWN0aW9uCiB7CiAgICAgcmV0dXJuIFtzZWxmIGlzRWRp
dGFibGVdOwpAQCAtMjU3OSw2ICsyNTgzLDIwIEBAIHN0YXRpYyBXZWJGcmFtZSAqaW5jcmVtZW50
RnJhbWUoV2ViRnJhbWUKICAgICByZXR1cm4gbmlsOwogfQogCistIChCT09MKWNhbk1ha2VUZXh0
U3RhbmRhcmRTaXplCit7CisgICAgQk9PTCBub3RBbHJlYWR5U3RhbmRhcmQgPSBfcHJpdmF0ZS0+
dGV4dFNpemVNdWx0aXBsaWVyICE9IDEuMDsKKyAgICByZXR1cm4gW3NlbGYgX3BlcmZvcm1UZXh0
U2l6aW5nU2VsZWN0b3I6KFNFTCkwIHdpdGhPYmplY3Q6bmlsIG9uVHJhY2tpbmdEb2NzOm5vdEFs
cmVhZHlTdGFuZGFyZCBzZWxGb3JOb25UcmFja2luZ0RvY3M6QHNlbGVjdG9yKF9jYW5NYWtlVGV4
dFN0YW5kYXJkU2l6ZSldOworfQorCistIChJQkFjdGlvbiltYWtlVGV4dFN0YW5kYXJkU2l6ZToo
aWQpc2VuZGVyCit7CisgICAgQk9PTCBub3RBbHJlYWR5U3RhbmRhcmQgPSBfcHJpdmF0ZS0+dGV4
dFNpemVNdWx0aXBsaWVyICE9IDEuMDsKKyAgICBpZiAobm90QWxyZWFkeVN0YW5kYXJkKSB7Cisg
ICAgICAgIFtzZWxmIHNldFRleHRTaXplTXVsdGlwbGllcjoxLjBdOworICAgIH0KKyAgICBbc2Vs
ZiBfcGVyZm9ybVRleHRTaXppbmdTZWxlY3RvcjpAc2VsZWN0b3IoX21ha2VUZXh0U3RhbmRhcmRT
aXplOikgd2l0aE9iamVjdDpzZW5kZXIgb25UcmFja2luZ0RvY3M6bm90QWxyZWFkeVN0YW5kYXJk
IHNlbEZvck5vblRyYWNraW5nRG9jczpAc2VsZWN0b3IoX2Nhbk1ha2VUZXh0U3RhbmRhcmRTaXpl
KV07Cit9CiAKIEBlbmQKIAo=
</data>
<flag name="review"
          id="281"
          type_id="1"
          status="+"
          setter="sullivan"
    />
          </attachment>
      

    </bug>

</bugzilla>