<?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>198243</bug_id>
          
          <creation_ts>2019-05-24 22:30:43 -0700</creation_ts>
          <short_desc>[iOS] Dropped text, attachments, and images should animate into place</short_desc>
          <delta_ts>2019-05-28 09:21:21 -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>HTML Editing</component>
          <version>WebKit Nightly Build</version>
          <rep_platform>Unspecified</rep_platform>
          <op_sys>Unspecified</op_sys>
          <bug_status>RESOLVED</bug_status>
          <resolution>FIXED</resolution>
          
          
          <bug_file_loc></bug_file_loc>
          <status_whiteboard></status_whiteboard>
          <keywords>InRadar</keywords>
          <priority>P2</priority>
          <bug_severity>Normal</bug_severity>
          <target_milestone>---</target_milestone>
          <dependson>198242</dependson>
          
          <everconfirmed>1</everconfirmed>
          <reporter name="Wenson Hsieh">wenson_hsieh</reporter>
          <assigned_to name="Wenson Hsieh">wenson_hsieh</assigned_to>
          <cc>achristensen</cc>
    
    <cc>bdakin</cc>
    
    <cc>commit-queue</cc>
    
    <cc>darin</cc>
    
    <cc>dino</cc>
    
    <cc>sabouhallawa</cc>
    
    <cc>simon.fraser</cc>
    
    <cc>thorton</cc>
    
    <cc>webkit-bug-importer</cc>
    
    <cc>wenson_hsieh</cc>
    
    <cc>zalan</cc>
          

      

      

      

          <comment_sort_order>oldest_to_newest</comment_sort_order>  
          <long_desc isprivate="0" >
    <commentid>1539163</commentid>
    <comment_count>0</comment_count>
    <who name="Wenson Hsieh">wenson_hsieh</who>
    <bug_when>2019-05-24 22:30:43 -0700</bug_when>
    <thetext>&lt;rdar://problem/35205373&gt;</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>1539252</commentid>
    <comment_count>1</comment_count>
      <attachid>370645</attachid>
    <who name="Wenson Hsieh">wenson_hsieh</who>
    <bug_when>2019-05-26 01:13:59 -0700</bug_when>
    <thetext>Created attachment 370645
Patch</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>1539253</commentid>
    <comment_count>2</comment_count>
      <attachid>370646</attachid>
    <who name="Wenson Hsieh">wenson_hsieh</who>
    <bug_when>2019-05-26 01:16:25 -0700</bug_when>
    <thetext>Created attachment 370646
Patch</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>1539254</commentid>
    <comment_count>3</comment_count>
      <attachid>370646</attachid>
    <who name="Tim Horton">thorton</who>
    <bug_when>2019-05-26 02:06:21 -0700</bug_when>
    <thetext>Comment on attachment 370646
Patch

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

&gt; Source/WebKit/UIProcess/ios/DragDropInteractionState.mm:200
&gt; +    UITargetedDragPreview *preview = createTargetedDragPreview(textIndicatorImage.get(), contentView, previewContainer, indicator.textBoundingRectInRootViewCoordinates, indicator.textRectsInBoundingRectCoordinates, [UIColor colorWithCGColor:cachedCGColor(indicator.estimatedBackgroundColor)], nil);

A -create method that doesn&apos;t return a smart pointer? Weird.

&gt; Source/WebKit/WebProcess/WebPage/ios/WebPageIOS.mm:844
&gt; +        for (TextIterator iterator(range.get()); !iterator.atEnd(); iterator.advance()) {

Why TextIterator? I think just one of the nice DOM child traversal things would be fine, no?</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>1539255</commentid>
    <comment_count>4</comment_count>
      <attachid>370646</attachid>
    <who name="Wenson Hsieh">wenson_hsieh</who>
    <bug_when>2019-05-26 02:39:09 -0700</bug_when>
    <thetext>Comment on attachment 370646
Patch

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

Thanks for taking a look!

It seems this patch breaks the windows build, so I&apos;ll fix that as well.

&gt;&gt; Source/WebKit/UIProcess/ios/DragDropInteractionState.mm:200
&gt;&gt; +    UITargetedDragPreview *preview = createTargetedDragPreview(textIndicatorImage.get(), contentView, previewContainer, indicator.textBoundingRectInRootViewCoordinates, indicator.textRectsInBoundingRectCoordinates, [UIColor colorWithCGColor:cachedCGColor(indicator.estimatedBackgroundColor)], nil);
&gt; 
&gt; A -create method that doesn&apos;t return a smart pointer? Weird.

Weird indeed! Changed to return a RetainPtr.

&gt;&gt; Source/WebKit/WebProcess/WebPage/ios/WebPageIOS.mm:844
&gt;&gt; +        for (TextIterator iterator(range.get()); !iterator.atEnd(); iterator.advance()) {
&gt; 
&gt; Why TextIterator? I think just one of the nice DOM child traversal things would be fine, no?

Ah, I chose TextIterator so that it would (1) skip image elements that are hidden/not displayed, and (2) it was easier to extract just elements inside the range, whereas the child traversal helpers (AFAIK) only operate on whole nodes, rather than start/end positions.</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>1539257</commentid>
    <comment_count>5</comment_count>
      <attachid>370647</attachid>
    <who name="Wenson Hsieh">wenson_hsieh</who>
    <bug_when>2019-05-26 02:56:59 -0700</bug_when>
    <thetext>Created attachment 370647
Fix Win build/review comment</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>1539259</commentid>
    <comment_count>6</comment_count>
      <attachid>370647</attachid>
    <who name="Wenson Hsieh">wenson_hsieh</who>
    <bug_when>2019-05-26 03:47:59 -0700</bug_when>
    <thetext>Comment on attachment 370647
Fix Win build/review comment

Oops, this breaks watchOS builds.</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>1539260</commentid>
    <comment_count>7</comment_count>
      <attachid>370648</attachid>
    <who name="Wenson Hsieh">wenson_hsieh</who>
    <bug_when>2019-05-26 03:52:17 -0700</bug_when>
    <thetext>Created attachment 370648
Fix watchOS too</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>1539261</commentid>
    <comment_count>8</comment_count>
      <attachid>370648</attachid>
    <who name="WebKit Commit Bot">commit-queue</who>
    <bug_when>2019-05-26 04:31:56 -0700</bug_when>
    <thetext>Comment on attachment 370648
Fix watchOS too

Clearing flags on attachment: 370648

Committed r245778: &lt;https://trac.webkit.org/changeset/245778&gt;</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>1539262</commentid>
    <comment_count>9</comment_count>
    <who name="WebKit Commit Bot">commit-queue</who>
    <bug_when>2019-05-26 04:31:57 -0700</bug_when>
    <thetext>All reviewed patches have been landed.  Closing bug.</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>1539600</commentid>
    <comment_count>10</comment_count>
      <attachid>370648</attachid>
    <who name="Darin Adler">darin</who>
    <bug_when>2019-05-28 09:12:09 -0700</bug_when>
    <thetext>Comment on attachment 370648
Fix watchOS too

Seems unfortunate to have special casing for the image elements. It’s possible for other elements to be used entirely for the purpose of displaying an image, for example with CSS as a background image or content of an image. Typically we want to have code that waits for images to be loaded to use some more abstract question rather than &quot;is this an HTMLImageElement&quot;.</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>1539605</commentid>
    <comment_count>11</comment_count>
    <who name="Wenson Hsieh">wenson_hsieh</who>
    <bug_when>2019-05-28 09:21:21 -0700</bug_when>
    <thetext>(In reply to Darin Adler from comment #10)
&gt; Comment on attachment 370648 [details]
&gt; Fix watchOS too
&gt; 
&gt; Seems unfortunate to have special casing for the image elements. It’s
&gt; possible for other elements to be used entirely for the purpose of
&gt; displaying an image, for example with CSS as a background image or content
&gt; of an image. Typically we want to have code that waits for images to be
&gt; loaded to use some more abstract question rather than &quot;is this an
&gt; HTMLImageElement&quot;.

Yes, that&apos;s true.

What we could do instead is make WebPage a CachedImageClient (or have WebPage hold onto a CachedImageClient), and add the CachedImageClient to all cached images in the dropped content range that should load before we try and take a snapshot.

I filed &lt;https://bugs.webkit.org/show_bug.cgi?id=198297&gt; to track this.</thetext>
  </long_desc>
      
          <attachment
              isobsolete="1"
              ispatch="1"
              isprivate="0"
          >
            <attachid>370645</attachid>
            <date>2019-05-26 01:13:59 -0700</date>
            <delta_ts>2019-05-26 01:16:24 -0700</delta_ts>
            <desc>Patch</desc>
            <filename>bug-198243-20190526011358.patch</filename>
            <type>text/plain</type>
            <size>73597</size>
            <attacher name="Wenson Hsieh">wenson_hsieh</attacher>
            
              <data encoding="base64">U3VidmVyc2lvbiBSZXZpc2lvbjogMjQ1NzUxCmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9D
aGFuZ2VMb2cgYi9Tb3VyY2UvV2ViQ29yZS9DaGFuZ2VMb2cKaW5kZXggNTcyYjgxZjdlNmU3ZTE3
YzUyYzcxZThiYTljMzhmZTdkNzYzNjMwZS4uMDY0YzkyYmJlOTA3ODA4MGY3MjQxNTUxM2VkNmE5
YTZjMDA3NDIzOSAxMDA2NDQKLS0tIGEvU291cmNlL1dlYkNvcmUvQ2hhbmdlTG9nCisrKyBiL1Nv
dXJjZS9XZWJDb3JlL0NoYW5nZUxvZwpAQCAtMSwzICsxLDY1IEBACisyMDE5LTA1LTI1ICBXZW5z
b24gSHNpZWggIDx3ZW5zb25faHNpZWhAYXBwbGUuY29tPgorCisgICAgICAgIFtpT1NdIERyb3Bw
ZWQgdGV4dCwgYXR0YWNobWVudHMsIGFuZCBpbWFnZXMgc2hvdWxkIGFuaW1hdGUgaW50byBwbGFj
ZQorICAgICAgICBodHRwczovL2J1Z3Mud2Via2l0Lm9yZy9zaG93X2J1Zy5jZ2k/aWQ9MTk4MjQz
CisgICAgICAgIDxyZGFyOi8vcHJvYmxlbS8zNTIwNTM3Mz4KKworICAgICAgICBSZXZpZXdlZCBi
eSBOT0JPRFkgKE9PUFMhKS4KKworICAgICAgICBBZGQgc29tZSBob29rcyB0byBub3RpZnkgdGhl
IGNocm9tZSBjbGllbnQgd2hlbiBhbiBIVE1MSW1hZ2VFbGVtZW50J3MgaW1hZ2UgaXMgZmluaXNo
ZWQgbG9hZGluZy4gU2VlIFdlYktpdAorICAgICAgICBjaGFuZ2Vsb2cgZm9yIG1vcmUgZGV0YWls
LgorCisgICAgICAgIFRlc3Q6IERyYWdBbmREcm9wVGVzdHMuRHJvcFByZXZpZXdGb3JJbWFnZUlu
RWRpdGFibGVBcmVhCisKKyAgICAgICAgKiBsb2FkZXIvRW1wdHlDbGllbnRzLmg6CisgICAgICAg
ICogcGFnZS9DaHJvbWVDbGllbnQuaDoKKyAgICAgICAgKiBwYWdlL1BhZ2UuY3BwOgorICAgICAg
ICAoV2ViQ29yZTo6UGFnZTo6ZGlkRmluaXNoTG9hZGluZ0ltYWdlRm9yRWxlbWVudCk6CisgICAg
ICAgICogcGFnZS9QYWdlLmg6CisgICAgICAgICogcmVuZGVyaW5nL1JlbmRlckltYWdlLmNwcDoK
KyAgICAgICAgKFdlYkNvcmU6OlJlbmRlckltYWdlOjpub3RpZnlGaW5pc2hlZCk6CisKKzIwMTkt
MDUtMjQgIFdlbnNvbiBIc2llaCAgPHdlbnNvbl9oc2llaEBhcHBsZS5jb20+CisKKyAgICAgICAg
W2lPU10gUmVzcGVjdCAtW05TSXRlbVByb3ZpZGVyIHByZWZlcnJlZFByZXNlbnRhdGlvblNpemVd
IHdoZW4gZHJvcHBpbmcgaW1hZ2VzCisgICAgICAgIGh0dHBzOi8vYnVncy53ZWJraXQub3JnL3No
b3dfYnVnLmNnaT9pZD0xOTgyNDIKKworICAgICAgICBSZXZpZXdlZCBieSBOT0JPRFkgKE9PUFMh
KS4KKworICAgICAgICBUZWFjaCB0aGUgd2ViIGNvbnRlbnQgcmVhZGVyIHRvIHJlc3BlY3QgdGhl
IC1wcmVmZXJyZWRQcmVzZW50YXRpb25TaXplIHdoZW4gY3JlYXRpbmcgYXR0YWNobWVudC1iYWNr
ZWQgaW1hZ2UKKyAgICAgICAgZWxlbWVudHMuIFNlZSBiZWxvdyBmb3IgbW9yZSBkZXRhaWxzLgor
CisgICAgICAgIFRlc3Q6IFdLQXR0YWNobWVudFRlc3RzSU9TLkluc2VydERyb3BwZWRJbWFnZVdp
dGhQcmVmZXJyZWRQcmVzZW50YXRpb25TaXplCisKKyAgICAgICAgKiBlZGl0aW5nL1dlYkNvbnRl
bnRSZWFkZXIuaDoKKyAgICAgICAgKiBlZGl0aW5nL2NvY29hL1dlYkNvbnRlbnRSZWFkZXJDb2Nv
YS5tbToKKyAgICAgICAgKFdlYkNvcmU6OmF0dGFjaG1lbnRGb3JGaWxlUGF0aCk6CisgICAgICAg
IChXZWJDb3JlOjphdHRhY2htZW50Rm9yRGF0YSk6CisKKyAgICAgICAgV2hlbiBjcmVhdGluZyBh
dHRhY2htZW50LWJhY2tlZCBpbWFnZSBlbGVtZW50cywgYWRkaXRpb25hbGx5IHNldCB3aWR0aCBh
bmQgaGVpZ2h0IGF0dHJpYnV0ZXMgZnJvbSB0aGUgcHJlZmVycmVkCisgICAgICAgIHByZXNlbnRh
dGlvbiBzaXplLCBpZiBzcGVjaWZpZWQuCisKKyAgICAgICAgKFdlYkNvcmU6OldlYkNvbnRlbnRS
ZWFkZXI6OnJlYWRGaWxlUGF0aCk6CisKKyAgICAgICAgQWRkIGEgdmVyc2lvbiBvZiByZWFkRmls
ZVBhdGggdGhhdCB0YWtlcyBhIHNpbmdsZSBmaWxlIHBhdGgsIGFuZCBhbiBvcHRpb25hbCBwcmVm
ZXJyZWQgcHJlc2VudGF0aW9uIHNpemUuCisKKyAgICAgICAgKFdlYkNvcmU6OldlYkNvbnRlbnRS
ZWFkZXI6OnJlYWRGaWxlUGF0aHMpOgorCisgICAgICAgIFJlaW1wbGVtZW50IHJlYWRGaWxlUGF0
aHMgaW4gdGVybXMgb2YgcmVhZEZpbGVQYXRoLgorCisgICAgICAgIChXZWJDb3JlOjpXZWJDb250
ZW50UmVhZGVyOjpyZWFkRGF0YUJ1ZmZlcik6CisKKyAgICAgICAgQWRkIG1vcmUgcGx1bWJpbmcg
Zm9yIHByZWZlcnJlZFByZXNlbnRhdGlvblNpemUuCisKKyAgICAgICAgKiBwbGF0Zm9ybS9QYXN0
ZWJvYXJkLmg6CisgICAgICAgIChXZWJDb3JlOjpQYXN0ZWJvYXJkV2ViQ29udGVudFJlYWRlcjo6
cmVhZEZpbGVQYXRoKToKKyAgICAgICAgKFdlYkNvcmU6OlBhc3RlYm9hcmRXZWJDb250ZW50UmVh
ZGVyOjpyZWFkRGF0YUJ1ZmZlcik6CisgICAgICAgICogcGxhdGZvcm0vaW9zL1Bhc3RlYm9hcmRJ
T1MubW06CisgICAgICAgIChXZWJDb3JlOjpQYXN0ZWJvYXJkOjpyZWFkKToKKyAgICAgICAgKFdl
YkNvcmU6OlBhc3RlYm9hcmQ6OnJlYWRSZXNwZWN0aW5nVVRJRmlkZWxpdGllcyk6CisKKyAgICAg
ICAgRm9yd2FyZCBQYXN0ZWJvYXJkSXRlbUluZm8ncyBwcmVmZXJyZWRQcmVzZW50YXRpb25TaXpl
IHRvIHRoZSB3ZWIgY29udGVudCByZWFkZXIuCisKIDIwMTktMDUtMjQgIFlvdWVubiBGYWJsZXQg
IDx5b3Vlbm5AYXBwbGUuY29tPgogCiAgICAgICAgIE1ha2Ugc3VyZSBjb21wbGV0aW9uIGhhbmRs
ZXIgaXMgYWx3YXlzIGNhbGxlZCBpbiBTV1NlcnZlcjo6c3RhcnRTdXNwZW5zaW9uCmRpZmYgLS1n
aXQgYS9Tb3VyY2UvV2ViS2l0L0NoYW5nZUxvZyBiL1NvdXJjZS9XZWJLaXQvQ2hhbmdlTG9nCmlu
ZGV4IDNkYmI1YzJhN2RiN2RhNzJjNDIwMDMyYjIzYTVhYTE4MWUwNGNkYTUuLmQyMTQzOTVjMmYx
ZWRmYTAyYjhjZDk1NzgwOWViMzQyNGNkZjYzYzUgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJLaXQv
Q2hhbmdlTG9nCisrKyBiL1NvdXJjZS9XZWJLaXQvQ2hhbmdlTG9nCkBAIC0xLDMgKzEsMTQ0IEBA
CisyMDE5LTA1LTI1ICBXZW5zb24gSHNpZWggIDx3ZW5zb25faHNpZWhAYXBwbGUuY29tPgorCisg
ICAgICAgIFtpT1NdIERyb3BwZWQgdGV4dCwgYXR0YWNobWVudHMsIGFuZCBpbWFnZXMgc2hvdWxk
IGFuaW1hdGUgaW50byBwbGFjZQorICAgICAgICBodHRwczovL2J1Z3Mud2Via2l0Lm9yZy9zaG93
X2J1Zy5jZ2k/aWQ9MTk4MjQzCisgICAgICAgIDxyZGFyOi8vcHJvYmxlbS8zNTIwNTM3Mz4KKwor
ICAgICAgICBSZXZpZXdlZCBieSBOT0JPRFkgKE9PUFMhKS4KKworICAgICAgICBBZGRzIHN1cHBv
cnQgZm9yIHRhcmdldGVkIGRyb3AgYW5pbWF0aW9ucyBvbiBpT1MgaW4gbW9kZXJuIFdlYktpdCBi
eSBhZG9wdGluZyBVSUtpdCBTUEkgaW50cm9kdWNlZCBpbgorICAgICAgICA8cmRhcjovL3Byb2Js
ZW0vMzEwNzUwMDU+IHRvIGFsbG93IHVwZGF0aW5nIHRoZSBkcm9wIHByZXZpZXcgbWlkLWZsaWdo
dC4gVG8gZ2V0IHRoZSBhbmltYXRpb24gcmlnaHQsIHdlIHJlZmFjdG9yCisgICAgICAgIGFuZCBh
dWdtZW50IGV4aXN0aW5nIGxvZ2ljIGZvciB0YWtpbmcgc25hcHNob3RzIGFmdGVyIHBlcmZvcm1p
bmcgYSBkcm9wIGluIGFuIGVkaXRhYmxlIGNvbnRlbnQuCisKKyAgICAgICAgQ3VycmVudGx5LCB1
cG9uIGRyb3BwaW5nIGluIGVkaXRhYmxlIGNvbnRlbnQsIHdlIGZpcnN0IHNuYXBzaG90IHRoZSB3
ZWIgdmlldyBhbmQgdGVtcG9yYXJpbHkgY292ZXIgdGhlIHJlYWwgd2ViCisgICAgICAgIHZpZXcg
d2l0aCB0aGlzIHNuYXBzaG90LiBXaGVuIHRoZSBUZXh0SW5kaWNhdG9yIGRhdGEgYXJyaXZlcyB0
aGF0IGNvbnRhaW5zICgxKSBhIHNuYXBzaG90IG9mIHRoZSB2aXNpYmxlIHBhcnQgb2YKKyAgICAg
ICAgdGhlIHdlYiB2aWV3IGlnbm9yaW5nIHRoZSBzZWxlY3Rpb24sIGFuZCAoMikgYSBzbmFwc2hv
dCBvZiBqdXN0IHRoZSBzZWxlY3RlZCBjb250ZW50cyBhZnRlciBkcm9wLCB3ZSBjcm9zc2ZhZGUK
KyAgICAgICAgZnJvbSB0aGUgd2ViIHZpZXcgc25hcHNob3QgdG8gdGhlIHNuYXBzaG90IGluICgx
KSB1c2luZyBhIGhhcmQtY29kZWQgdGltZSBkZWxheSAofjUwMG1zKSwgYW5kIHRhcmdldCB0aGUg
ZHJvcAorICAgICAgICBwcmV2aWV3IHRvIHRoZSBkcmFnIGNhcmV0IHJlY3QuIER1cmluZyB0aGlz
IHByb2Nlc3MsIHNuYXBzaG90ICgyKSBpcyBjb21wbGV0ZWx5IGlnbm9yZWQuCisKKyAgICAgICAg
VGhpcyB3YXMgZWZmZWN0aXZlbHkgYSBoYWxmd2F5IGltcGxlbWVudGlvbiBvZiB0aGUgZGVzaXJl
ZCBlZmZlY3Qgb2YgYW5pbWF0aW5nIHRoZSBkcm9wcGVkIGNvbnRlbnQgaW50byBwbGFjZQorICAg
ICAgICBhbmQgY3Jvc3NmYWRpbmcgdG8gdGhlIGZpbmFsIGNvbnRlbnQ7IGJlZm9yZSBVSUtpdCBp
bXBsZW1lbnRlZCB1cGRhdGVhYmxlIGRyYWcgcHJldmlld3MsIHRoZSBmdWxsIGltcGxlbWVudGF0
aW9uCisgICAgICAgIHdhcyBub3QgcG9zc2libGUgaW4gbW9kZXJuIFdlYktpdCAod2l0aG91dCB1
c2luZyBzeW5jaHJvbm91cyBJUEMpLgorCisgICAgICAgIE5vdyB0aGF0IHdlJ3JlIGFibGUgdG8g
dXBkYXRlIHRoZSBkcmFnIHByZXZpZXcgaW4gdGhlIG1pZGRsZSBvZiB0aGUgZHJvcCBhbmltYXRp
b24sIHdlIGNhbiBub3cgdXRpbGl6ZSBzbmFwc2hvdAorICAgICAgICAoMikgYWJvdmUgYW5kIGNs
ZWFuIHVwIHNvbWUgcGFydHMgb2YgdGhlIGRyb3AgYW5pbWF0aW9uIGluIGVkaXRhYmxlIGNvbnRl
bnQuIFNlZSBiZWxvdyBmb3IgbW9yZSBkZXRhaWxzLgorCisgICAgICAgICogVUlQcm9jZXNzL0FQ
SS9Db2NvYS9XS1dlYlZpZXcubW06CisgICAgICAgICgtW1dLV2ViVmlldyBfZG9BZnRlclJlY2Vp
dmluZ0VkaXREcmFnU25hcHNob3RGb3JUZXN0aW5nOl0pOgorCisgICAgICAgIEFkZCBhIHRlc3Rp
bmcgaG9vayB0byBwZXJmb3JtIHRoZSBnaXZlbiBibG9jayBhZnRlciBhbnkgcGVuZGluZyBlZGl0
IGRyYWcgc25hcHNob3QgaGFzIGJlZW4gcmVjZWl2ZWQuIFNlZQorICAgICAgICBUZXN0V2ViS2l0
QVBJIGNoYW5nZXMgZm9yIG1vcmUgZGV0YWlsLgorCisgICAgICAgICogVUlQcm9jZXNzL0FQSS9D
b2NvYS9XS1dlYlZpZXdQcml2YXRlLmg6CisgICAgICAgICogVUlQcm9jZXNzL1BhZ2VDbGllbnQu
aDoKKyAgICAgICAgKiBVSVByb2Nlc3MvV2ViUGFnZVByb3h5Lmg6CisgICAgICAgICogVUlQcm9j
ZXNzL1dlYlBhZ2VQcm94eS5tZXNzYWdlcy5pbjoKKworICAgICAgICBTcGxpdCB1cCB0aGUgZXhp
c3RpbmcgRGlkQ29uY2x1ZGVFZGl0RHJhZyBJUEMgbWVzc2FnZSBpbnRvIHR3byBtZXNzYWdlczog
V2lsbFJlY2VpdmVFZGl0RHJhZ1NuYXBzaG90IGFuZAorICAgICAgICBEaWRSZWNlaXZlRWRpdERy
YWdTbmFwc2hvdC4gVGhpcyBhbGxvd3MgdXMgdG8gZGVmZXIgY2xlYW5pbmcgdXAgdGhlIGRyYWcg
c2Vzc2lvbiBzdGF0ZSBkdXJpbmcgYW4gZWRpdCBkcm9wLAorICAgICAgICB1bnRpbCBhZnRlciB0
aGUgZmluYWwgZWRpdCBkcmFnIHNuYXBzaG90IGhhcyBiZWVuIHJlY2VpdmVkLgorCisgICAgICAg
ICogVUlQcm9jZXNzL2lvcy9EcmFnRHJvcEludGVyYWN0aW9uU3RhdGUuaDoKKworICAgICAgICBB
ZGQgc29tZSBuZXcgbWV0aG9kcyB0byBoZWxwIG1hbmFnZSB0aGUgbGlmZWN5Y2xlIG9mIGRyb3Ag
cHJldmlldyBwcm92aWRlciBibG9ja3MuCisKKyAgICAgICAgKiBVSVByb2Nlc3MvaW9zL0RyYWdE
cm9wSW50ZXJhY3Rpb25TdGF0ZS5tbToKKyAgICAgICAgKFdlYktpdDo6RHJhZ0Ryb3BJbnRlcmFj
dGlvblN0YXRlOjpwcmVwYXJlRm9yRGVsYXllZERyb3BQcmV2aWV3KToKKworICAgICAgICBTdG9y
ZXMgYSBnaXZlbiBkcm9wIHByZXZpZXcgcHJvdmlkZXIsIGdpdmVuIHRvIHVzIGJ5IFVJS2l0Lgor
CisgICAgICAgIChXZWJLaXQ6OkRyYWdEcm9wSW50ZXJhY3Rpb25TdGF0ZTo6ZGVsaXZlckRlbGF5
ZWREcm9wUHJldmlldyk6CisKKyAgICAgICAgSW52b2tlcyB0aGUgc3RvcmVkIGRyb3AgcHJldmll
dyBwcm92aWRlcnMgd2l0aCBnaXZlbiB0ZXh0IGluZGljYXRvciBkYXRhLiBUaGlzIGlzIGludm9r
ZWQgYWZ0ZXIgc25hcHNob3RzIGFyZQorICAgICAgICB0YWtlbiBmb2xsb3dpbmcgYW4gZWRpdCBk
cmFnICh0aGlzIGlzIGFkZGl0aW9uYWxseSBhZnRlciBhbGwgaW1hZ2VzIGluIHRoZSBpbnNlcnRl
ZCBmcmFnbWVudCBoYXZlIGZpbmlzaGVkCisgICAgICAgIGxvYWRpbmcpLgorCisgICAgICAgIChX
ZWJLaXQ6OkRyYWdEcm9wSW50ZXJhY3Rpb25TdGF0ZTo6Y2xlYXJBbGxEZWxheWVkSXRlbVByZXZp
ZXdQcm92aWRlcnMpOgorCisgICAgICAgIEludm9rZXMgYWxsIHN0b3JlZCBkcm9wIHByZXZpZXcg
cHJvdmlkZXJzIHdpdGggYSBuaWwgcHJldmlldy4gVGhpcyBpcyBpbnZva2VkIGluIGFueSBjYXNl
IHdoZXJlIGRyYWcgc2Vzc2lvbgorICAgICAgICBjbGVhbnVwIG9jY3VycyBlYXJsaWVyIHRoYW4g
bm9ybWFsIChlLmcuLCBpZiB0aGUgd2ViIHByb2Nlc3MgY3Jhc2hlcyBkdXJpbmcgZHJvcCksIGFu
ZCBlbnN1cmVzIHRoYXQgdGhlIGhhbmRsZXJzCisgICAgICAgIGFyZSBhbHdheXMgaW52b2tlZCB3
aGVuIGNsZWFuaW5nIHVwIHRoZSBkcmFnIHNlc3Npb24uCisKKyAgICAgICAgKFdlYktpdDo6RHJh
Z0Ryb3BJbnRlcmFjdGlvblN0YXRlOjpkcmFnQW5kRHJvcFNlc3Npb25zRGlkRW5kKToKKworICAg
ICAgICBDYWxsIGNsZWFyQWxsRGVsYXllZEl0ZW1QcmV2aWV3UHJvdmlkZXJzLgorCisgICAgICAg
ICogVUlQcm9jZXNzL2lvcy9QYWdlQ2xpZW50SW1wbElPUy5oOgorICAgICAgICAqIFVJUHJvY2Vz
cy9pb3MvUGFnZUNsaWVudEltcGxJT1MubW06CisgICAgICAgIChXZWJLaXQ6OlBhZ2VDbGllbnRJ
bXBsOjp3aWxsUmVjZWl2ZUVkaXREcmFnU25hcHNob3QpOgorICAgICAgICAoV2ViS2l0OjpQYWdl
Q2xpZW50SW1wbDo6ZGlkUmVjZWl2ZUVkaXREcmFnU25hcHNob3QpOgorICAgICAgICAoV2ViS2l0
OjpQYWdlQ2xpZW50SW1wbDo6ZGlkQ29uY2x1ZGVFZGl0RHJhZyk6IERlbGV0ZWQuCisKKyAgICAg
ICAgTW9yZSBwbHVtYmluZyAoc2VlIGNoYW5nZXMgdG8gRGlkQ29uY2x1ZGVFZGl0RHJhZyBhYm92
ZSkuCisKKyAgICAgICAgKiBVSVByb2Nlc3MvaW9zL1dLQ29udGVudFZpZXdJbnRlcmFjdGlvbi5o
OgorICAgICAgICAqIFVJUHJvY2Vzcy9pb3MvV0tDb250ZW50Vmlld0ludGVyYWN0aW9uLm1tOgor
ICAgICAgICAoLVtXS0NvbnRlbnRWaWV3IGNsZWFudXBJbnRlcmFjdGlvbl0pOgorICAgICAgICAo
LVtXS0NvbnRlbnRWaWV3IGNsZWFuVXBEcmFnU291cmNlU2Vzc2lvblN0YXRlXSk6CisgICAgICAg
ICgtW1dLQ29udGVudFZpZXcgX3dpbGxSZWNlaXZlRWRpdERyYWdTbmFwc2hvdF0pOgorICAgICAg
ICAoLVtXS0NvbnRlbnRWaWV3IF9kaWRSZWNlaXZlRWRpdERyYWdTbmFwc2hvdDpdKToKKworICAg
ICAgICBTZXQgX3dhaXRpbmdGb3JFZGl0RHJhZ1NuYXBzaG90IHRvIFlFUyBpbiB0aGUgZ2FwIGJl
dHdlZW4gd2hlbiAtX3dpbGxSZWNlaXZlRWRpdERyYWdTbmFwc2hvdCBpcyBpbnZva2VkLCBhbmQK
KyAgICAgICAgd2hlbiAtX2RpZFJlY2VpdmVFZGl0RHJhZ1NuYXBzaG90IGlzIGludm9rZWQuIElm
IF93YWl0aW5nRm9yRWRpdERyYWdTbmFwc2hvdCBpcyBZRVMsIHdlIGJhaWwgb3V0IG9mCisgICAg
ICAgIC1jbGVhblVwRHJhZ1NvdXJjZVNlc3Npb25TdGF0ZSwgYW5kIGluc3RlYWQgY2xlYW4gdXAg
ZHJhZyBzZXNzaW9uIHN0YXRlIGFmdGVyIHRoZSBlZGl0IGRyYWcgc25hcHNob3QgaXMKKyAgICAg
ICAgcmVjZWl2ZWQuCisKKyAgICAgICAgKC1bV0tDb250ZW50VmlldyBfZGVsaXZlckRlbGF5ZWRE
cm9wUHJldmlld0lmUG9zc2libGU6XSk6CisgICAgICAgICgtW1dLQ29udGVudFZpZXcgX2RpZFBl
cmZvcm1EcmFnT3BlcmF0aW9uOl0pOgorICAgICAgICAoLVtXS0NvbnRlbnRWaWV3IHRleHRFZmZl
Y3RzV2luZG93XSk6CisKKyAgICAgICAgRHJpdmUtYnkgZml4IHRvIHJlbW92ZSBhIHdvcmthcm91
bmQgZm9yIGEgZGVwcmVjYXRpb24gd2FybmluZy4KKworICAgICAgICAoLVtXS0NvbnRlbnRWaWV3
IGRyb3BJbnRlcmFjdGlvbjppdGVtOndpbGxBbmltYXRlRHJvcFdpdGhBbmltYXRvcjpdKToKKyAg
ICAgICAgKC1bV0tDb250ZW50VmlldyBkcm9wSW50ZXJhY3Rpb246Y29uY2x1ZGVEcm9wOl0pOgor
CisgICAgICAgIEltcGxlbWVudCB0aGlzIGhvb2sgdG8gZW5zdXJlIHRoYXQgdGhlIHVuc2VsZWN0
ZWQgY29udGVudCBzbmFwc2hvdCB2aWV3IGFuZCB2aXNpYmxlIGNvbnRlbnQgc25hcHNob3Qgdmll
dyBhcmUKKyAgICAgICAgZ3VhcmFudGVlZCB0byBiZSByZW1vdmVkIGZyb20gdGhlIHZpZXcgYWZ0
ZXIgYSBkcm9wIGluIGVkaXRhYmxlIGNvbnRlbnQsIGV2ZW4gaWYgdGhlIGRyYWcgZWRpdCBzbmFw
c2hvdCBhcnJpdmVzCisgICAgICAgIGFmdGVyIHRoZSBkcm9wIGlzIGNvbmNsdWRlZC4KKworICAg
ICAgICAoLVtXS0NvbnRlbnRWaWV3IGRyb3BJbnRlcmFjdGlvbjpwcmV2aWV3Rm9yRHJvcHBpbmdJ
dGVtOndpdGhEZWZhdWx0Ol0pOgorICAgICAgICAoLVtXS0NvbnRlbnRWaWV3IF9kcm9wSW50ZXJh
Y3Rpb246ZGVsYXllZFByZXZpZXdQcm92aWRlckZvckRyb3BwaW5nSXRlbTpwcmV2aWV3UHJvdmlk
ZXI6XSk6CisKKyAgICAgICAgSW1wbGVtZW50IHRoZSBuZXcgVUlLaXQgU1BJIGhlcmUuIFVJS2l0
IGhhbmRzIHVzIGEgcHJldmlldyBwcm92aWRlciBoZXJlLCB3aGljaCB3ZSBjYW4gaW52b2tlIGF0
IGEgbGF0ZXIgdGltZQorICAgICAgICB0byB1cGRhdGUgdGhlIGRyb3AgcHJldmlldy4gV2UgZG8g
dGhpcyBpbiBfZGlkUmVjZWl2ZUVkaXREcmFnU25hcHNob3QuCisKKyAgICAgICAgKC1bV0tDb250
ZW50VmlldyBfZG9BZnRlclJlY2VpdmluZ0VkaXREcmFnU25hcHNob3RGb3JUZXN0aW5nOl0pOgor
ICAgICAgICAoLVtXS0NvbnRlbnRWaWV3IF9kaWRDb25jbHVkZUVkaXREcmFnOl0pOiBEZWxldGVk
LgorICAgICAgICAqIFVJUHJvY2Vzcy9pb3MvV2ViUGFnZVByb3h5SU9TLm1tOgorICAgICAgICAo
V2ViS2l0OjpXZWJQYWdlUHJveHk6OndpbGxSZWNlaXZlRWRpdERyYWdTbmFwc2hvdCk6CisgICAg
ICAgIChXZWJLaXQ6OldlYlBhZ2VQcm94eTo6ZGlkUmVjZWl2ZUVkaXREcmFnU25hcHNob3QpOgor
ICAgICAgICAoV2ViS2l0OjpXZWJQYWdlUHJveHk6OmRpZENvbmNsdWRlRHJvcCk6CisgICAgICAg
IChXZWJLaXQ6OldlYlBhZ2VQcm94eTo6ZGlkQ29uY2x1ZGVFZGl0RHJhZyk6IERlbGV0ZWQuCisg
ICAgICAgICogV2ViUHJvY2Vzcy9XZWJDb3JlU3VwcG9ydC9XZWJDaHJvbWVDbGllbnQuY3BwOgor
ICAgICAgICAoV2ViS2l0OjpXZWJDaHJvbWVDbGllbnQ6OmRpZEZpbmlzaExvYWRpbmdJbWFnZUZv
ckVsZW1lbnQpOgorICAgICAgICAqIFdlYlByb2Nlc3MvV2ViQ29yZVN1cHBvcnQvV2ViQ2hyb21l
Q2xpZW50Lmg6CisgICAgICAgICogV2ViUHJvY2Vzcy9XZWJQYWdlL1dlYlBhZ2UuY3BwOgorICAg
ICAgICAoV2ViS2l0OjpXZWJQYWdlOjpkaWRGaW5pc2hMb2FkaW5nSW1hZ2VGb3JFbGVtZW50KToK
KyAgICAgICAgKiBXZWJQcm9jZXNzL1dlYlBhZ2UvV2ViUGFnZS5oOgorICAgICAgICAqIFdlYlBy
b2Nlc3MvV2ViUGFnZS9XZWJQYWdlLm1lc3NhZ2VzLmluOgorICAgICAgICAqIFdlYlByb2Nlc3Mv
V2ViUGFnZS9pb3MvV2ViUGFnZUlPUy5tbToKKyAgICAgICAgKFdlYktpdDo6V2ViUGFnZTo6ZGlk
Q29uY2x1ZGVEcm9wKToKKworICAgICAgICBJZiBhbiBlZGl0IGRyYWcgaGFzIGJlZW4gY29uY2x1
ZGVkLCB0aGVyZSdzIG5vIG5lZWQgdG8gaGFuZyBvbiB0byBwZW5kaW5nIGRyb3BwZWQgaW1hZ2Ug
ZWxlbWVudHMgYW55bW9yZTsgY2xlYXIKKyAgICAgICAgb3V0IHRoZSBzZXQgaGVyZS4KKworICAg
ICAgICAoV2ViS2l0OjpXZWJQYWdlOjpkaWRDb25jbHVkZUVkaXREcmFnKToKKworICAgICAgICBB
ZnRlciBjb25jbHVkaW5nIGFuIGVkaXQgZHJhZywgd2UgdHJ5IHRvIGRlbGl2ZXIgdHdvIHdlYiBj
b250ZW50IHNuYXBzaG90cyB0byB0aGUgVUkgcHJvY2Vzcywgc28gdGhhdCB0aGUgVUkKKyAgICAg
ICAgcHJvY2VzcyBjYW4gYXNzZW1ibGUgYSB0YXJnZXRlZCBkcm9wIHByZXZpZXcgZm9yIFVJS2l0
LiBPbmUgc25hcHNob3QgaXMgb2YgdGhlIHZpc2libGUgY29udGVudCBhcmVhLCBub3QKKyAgICAg
ICAgaW5jbHVkaW5nIGFueSBzZWxlY3RlZCBjb250ZW50LiBUaGUgb3RoZXIgc25hcHNob3QgaXMg
b2YgdGhlIHNlbGVjdGVkIGNvbnRlbnQgb25seS4gSG93ZXZlciwgd2hlbiBkcm9wcGluZworICAg
ICAgICBpbWFnZXMgKG9yIGEgdGV4dCBzZWxlY3Rpb24gY29udGFpbmluZyBpbWFnZXMpLCB0aGVz
ZSBpbWFnZXMgbWF5IG5vdCB5ZXQgaGF2ZSBiZWVuIGxvYWRlZC4gSWYgdGhhdCBpcyB0aGUgY2Fz
ZSwKKyAgICAgICAgdGhlc2UgaW1hZ2VzIHdpbGwgYXBwZWFyIHRvIGJlIG1pc3NpbmcgZnJvbSB0
aGVzZSBzbmFwc2hvdHMuCisKKyAgICAgICAgVG8gZW5zdXJlIHRoYXQgd2UgZG9uJ3QgdGFrZSB0
aGlzIHNuYXBzaG90IHRvbyBlYXJseSwgZGVmZXIgaXQgdW50aWwgYWxsIGltYWdlIGVsZW1lbnRz
IGluIHRoZSBkcm9wcGVkIGNvbnRlbnQKKyAgICAgICAgcmFuZ2UgaGF2ZSBmaW5pc2hlZCBsb2Fk
aW5nLiBXZSBjYW4gdGVsbCB0aGF0IGFsbCBkcm9wcGVkIGltYWdlcyBoYXZlIGZpbmlzaGVkIGxv
YWRpbmcgYnkgdXNpbmcgYSBuZXcgY2xpZW50CisgICAgICAgIGhvb2sgdGhhdCBpcyBpbnZva2Vk
IHdoZW4gYW4gaW1hZ2UgaGFzIGZpbmlzaGVkIGxvYWRpbmcuCisKKyAgICAgICAgKFdlYktpdDo6
V2ViUGFnZTo6ZGlkRmluaXNoTG9hZGluZ0ltYWdlRm9yRWxlbWVudCk6CisgICAgICAgIChXZWJL
aXQ6OldlYlBhZ2U6OmNvbXB1dGVBbmRTZW5kRWRpdERyYWdTbmFwc2hvdCk6CisKKyAgICAgICAg
U25hcHNob3QgdGhlIHNlbGVjdGVkIGNvbnRlbnQgYW5kIHNlbmQgaXQgdG8gdGhlIFVJIHByb2Nl
c3MuCisKIDIwMTktMDUtMjQgIFlvdWVubiBGYWJsZXQgIDx5b3Vlbm5AYXBwbGUuY29tPgogCiAg
ICAgICAgIFVwZGF0ZSBtZXNzYWdlc191bml0dGVzdC5weSBhZnRlciByMjQ1NzE1CmRpZmYgLS1n
aXQgYS9Tb3VyY2UvV2ViS2l0TGVnYWN5L21hYy9DaGFuZ2VMb2cgYi9Tb3VyY2UvV2ViS2l0TGVn
YWN5L21hYy9DaGFuZ2VMb2cKaW5kZXggZjk3MDBmMzFmY2RmODdhMWIxMmYwMWMxZTJhNzRmNTA2
Nzg3MWZhYi4uYzJhMDJmYTQwNWU0YTY0ZjRiZmQxNGI3ZmI3OWIwZWQ3N2Y4ODEyZSAxMDA2NDQK
LS0tIGEvU291cmNlL1dlYktpdExlZ2FjeS9tYWMvQ2hhbmdlTG9nCisrKyBiL1NvdXJjZS9XZWJL
aXRMZWdhY3kvbWFjL0NoYW5nZUxvZwpAQCAtMSwzICsxLDE3IEBACisyMDE5LTA1LTI1ICBXZW5z
b24gSHNpZWggIDx3ZW5zb25faHNpZWhAYXBwbGUuY29tPgorCisgICAgICAgIFtpT1NdIERyb3Bw
ZWQgdGV4dCwgYXR0YWNobWVudHMsIGFuZCBpbWFnZXMgc2hvdWxkIGFuaW1hdGUgaW50byBwbGFj
ZQorICAgICAgICBodHRwczovL2J1Z3Mud2Via2l0Lm9yZy9zaG93X2J1Zy5jZ2k/aWQ9MTk4MjQz
CisgICAgICAgIDxyZGFyOi8vcHJvYmxlbS8zNTIwNTM3Mz4KKworICAgICAgICBSZXZpZXdlZCBi
eSBOT0JPRFkgKE9PUFMhKS4KKworICAgICAgICBBZGQgYSBuZXcgY2hyb21lIGNsaWVudCBtZXRo
b2QuIFNlZSBvdGhlciBjaGFuZ2Vsb2dzIGZvciBtb3JlIGRldGFpbC4KKworICAgICAgICAqIFdl
YkNvcmVTdXBwb3J0L1dlYkNocm9tZUNsaWVudC5oOgorICAgICAgICAqIFdlYkNvcmVTdXBwb3J0
L1dlYkNocm9tZUNsaWVudC5tbToKKyAgICAgICAgKFdlYkNocm9tZUNsaWVudDo6ZGlkRmluaXNo
TG9hZGluZ0ltYWdlRm9yRWxlbWVudCk6CisKIDIwMTktMDUtMjEgIEFsZXggQ2hyaXN0ZW5zZW4g
IDxhY2hyaXN0ZW5zZW5Ad2Via2l0Lm9yZz4KIAogICAgICAgICBGaXggSU9TTUFDIGJ1aWxkCmRp
ZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9lZGl0aW5nL1dlYkNvbnRlbnRSZWFkZXIuaCBiL1Nv
dXJjZS9XZWJDb3JlL2VkaXRpbmcvV2ViQ29udGVudFJlYWRlci5oCmluZGV4IDMwYzA4Y2U0M2Mx
YWJjMDIyNDc3YjJhZTliMzM3MGQ0MTI1M2Y2NGEuLjljOTY0MTAyOWQ2MTIzNDQ1Y2ZlNThlNmU1
NzBlMjgzNzA5NjI1MDEgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJDb3JlL2VkaXRpbmcvV2ViQ29u
dGVudFJlYWRlci5oCisrKyBiL1NvdXJjZS9XZWJDb3JlL2VkaXRpbmcvV2ViQ29udGVudFJlYWRl
ci5oCkBAIC03MSwxMyArNzEsMTQgQEAgcHVibGljOgogcHJpdmF0ZToKICNpZiBQTEFURk9STShD
T0NPQSkKICAgICBib29sIHJlYWRXZWJBcmNoaXZlKFNoYXJlZEJ1ZmZlciYpIG92ZXJyaWRlOwor
ICAgIGJvb2wgcmVhZEZpbGVQYXRoKGNvbnN0IFN0cmluZyYsIE9wdGlvbmFsPEZsb2F0U2l6ZT4g
cHJlZmVycmVkUHJlc2VudGF0aW9uU2l6ZSA9IHsgfSkgb3ZlcnJpZGU7CiAgICAgYm9vbCByZWFk
RmlsZVBhdGhzKGNvbnN0IFZlY3RvcjxTdHJpbmc+Jikgb3ZlcnJpZGU7CiAgICAgYm9vbCByZWFk
SFRNTChjb25zdCBTdHJpbmcmKSBvdmVycmlkZTsKICAgICBib29sIHJlYWRSVEZEKFNoYXJlZEJ1
ZmZlciYpIG92ZXJyaWRlOwogICAgIGJvb2wgcmVhZFJURihTaGFyZWRCdWZmZXImKSBvdmVycmlk
ZTsKICAgICBib29sIHJlYWRJbWFnZShSZWY8U2hhcmVkQnVmZmVyPiYmLCBjb25zdCBTdHJpbmcm
IHR5cGUsIE9wdGlvbmFsPEZsb2F0U2l6ZT4gcHJlZmVycmVkUHJlc2VudGF0aW9uU2l6ZSA9IHsg
fSkgb3ZlcnJpZGU7CiAgICAgYm9vbCByZWFkVVJMKGNvbnN0IFVSTCYsIGNvbnN0IFN0cmluZyYg
dGl0bGUpIG92ZXJyaWRlOwotICAgIGJvb2wgcmVhZERhdGFCdWZmZXIoU2hhcmVkQnVmZmVyJiwg
Y29uc3QgU3RyaW5nJiB0eXBlLCBjb25zdCBTdHJpbmcmIG5hbWUpIG92ZXJyaWRlOworICAgIGJv
b2wgcmVhZERhdGFCdWZmZXIoU2hhcmVkQnVmZmVyJiwgY29uc3QgU3RyaW5nJiB0eXBlLCBjb25z
dCBTdHJpbmcmIG5hbWUsIE9wdGlvbmFsPEZsb2F0U2l6ZT4gcHJlZmVycmVkUHJlc2VudGF0aW9u
U2l6ZSA9IHsgfSkgb3ZlcnJpZGU7CiAjZW5kaWYKICAgICBib29sIHJlYWRQbGFpblRleHQoY29u
c3QgU3RyaW5nJikgb3ZlcnJpZGU7CiB9OwpAQCAtOTQsMTMgKzk1LDE0IEBAIHB1YmxpYzoKIHBy
aXZhdGU6CiAjaWYgUExBVEZPUk0oQ09DT0EpCiAgICAgYm9vbCByZWFkV2ViQXJjaGl2ZShTaGFy
ZWRCdWZmZXImKSBvdmVycmlkZTsKKyAgICBib29sIHJlYWRGaWxlUGF0aChjb25zdCBTdHJpbmcm
LCBPcHRpb25hbDxGbG9hdFNpemU+ID0geyB9KSBvdmVycmlkZSB7IHJldHVybiBmYWxzZTsgfQog
ICAgIGJvb2wgcmVhZEZpbGVQYXRocyhjb25zdCBWZWN0b3I8U3RyaW5nPiYpIG92ZXJyaWRlIHsg
cmV0dXJuIGZhbHNlOyB9CiAgICAgYm9vbCByZWFkSFRNTChjb25zdCBTdHJpbmcmKSBvdmVycmlk
ZTsKICAgICBib29sIHJlYWRSVEZEKFNoYXJlZEJ1ZmZlciYpIG92ZXJyaWRlOwogICAgIGJvb2wg
cmVhZFJURihTaGFyZWRCdWZmZXImKSBvdmVycmlkZTsKICAgICBib29sIHJlYWRJbWFnZShSZWY8
U2hhcmVkQnVmZmVyPiYmLCBjb25zdCBTdHJpbmcmLCBPcHRpb25hbDxGbG9hdFNpemU+ID0geyB9
KSBvdmVycmlkZSB7IHJldHVybiBmYWxzZTsgfQogICAgIGJvb2wgcmVhZFVSTChjb25zdCBVUkwm
LCBjb25zdCBTdHJpbmcmKSBvdmVycmlkZSB7IHJldHVybiBmYWxzZTsgfQotICAgIGJvb2wgcmVh
ZERhdGFCdWZmZXIoU2hhcmVkQnVmZmVyJiwgY29uc3QgU3RyaW5nJiwgY29uc3QgU3RyaW5nJikg
b3ZlcnJpZGUgeyByZXR1cm4gZmFsc2U7IH0KKyAgICBib29sIHJlYWREYXRhQnVmZmVyKFNoYXJl
ZEJ1ZmZlciYsIGNvbnN0IFN0cmluZyYsIGNvbnN0IFN0cmluZyYsIE9wdGlvbmFsPEZsb2F0U2l6
ZT4gPSB7IH0pIG92ZXJyaWRlIHsgcmV0dXJuIGZhbHNlOyB9CiAjZW5kaWYKICAgICBib29sIHJl
YWRQbGFpblRleHQoY29uc3QgU3RyaW5nJikgb3ZlcnJpZGUgeyByZXR1cm4gZmFsc2U7IH0KIH07
CmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9lZGl0aW5nL2NvY29hL1dlYkNvbnRlbnRSZWFk
ZXJDb2NvYS5tbSBiL1NvdXJjZS9XZWJDb3JlL2VkaXRpbmcvY29jb2EvV2ViQ29udGVudFJlYWRl
ckNvY29hLm1tCmluZGV4IGE3MDU4OWU5OWYzZjc0MTA4MGI2MjU1NDE3ZWU5YzJhZTI4YmVmYWEu
LjUzMmE4NGE5YzQ1ZTFmMjQ0NjBkYTI1NzU4OTM5ODE1YjA4YTgyNTIgMTAwNjQ0Ci0tLSBhL1Nv
dXJjZS9XZWJDb3JlL2VkaXRpbmcvY29jb2EvV2ViQ29udGVudFJlYWRlckNvY29hLm1tCisrKyBi
L1NvdXJjZS9XZWJDb3JlL2VkaXRpbmcvY29jb2EvV2ViQ29udGVudFJlYWRlckNvY29hLm1tCkBA
IC02OTUsNyArNjk1LDcgQEAgYm9vbCBXZWJDb250ZW50UmVhZGVyOjpyZWFkSW1hZ2UoUmVmPFNo
YXJlZEJ1ZmZlcj4mJiBidWZmZXIsIGNvbnN0IFN0cmluZyYgdHlwZSwKIAogI2lmIEVOQUJMRShB
VFRBQ0hNRU5UX0VMRU1FTlQpCiAKLXN0YXRpYyBSZWY8SFRNTEVsZW1lbnQ+IGF0dGFjaG1lbnRG
b3JGaWxlUGF0aChGcmFtZSYgZnJhbWUsIGNvbnN0IFN0cmluZyYgcGF0aCkKK3N0YXRpYyBSZWY8
SFRNTEVsZW1lbnQ+IGF0dGFjaG1lbnRGb3JGaWxlUGF0aChGcmFtZSYgZnJhbWUsIGNvbnN0IFN0
cmluZyYgcGF0aCwgT3B0aW9uYWw8RmxvYXRTaXplPiBwcmVmZXJyZWRTaXplKQogewogICAgIGF1
dG8gZG9jdW1lbnQgPSBtYWtlUmVmKCpmcmFtZS5kb2N1bWVudCgpKTsKICAgICBhdXRvIGF0dGFj
aG1lbnQgPSBIVE1MQXR0YWNobWVudEVsZW1lbnQ6OmNyZWF0ZShIVE1MTmFtZXM6OmF0dGFjaG1l
bnRUYWcsIGRvY3VtZW50KTsKQEAgLTcyMyw2ICs3MjMsMTAgQEAgc3RhdGljIFJlZjxIVE1MRWxl
bWVudD4gYXR0YWNobWVudEZvckZpbGVQYXRoKEZyYW1lJiBmcmFtZSwgY29uc3QgU3RyaW5nJiBw
YXRoKQogICAgICAgICBhdXRvIGltYWdlID0gSFRNTEltYWdlRWxlbWVudDo6Y3JlYXRlKGRvY3Vt
ZW50KTsKICAgICAgICAgaW1hZ2UtPnNldEF0dHJpYnV0ZVdpdGhvdXRTeW5jaHJvbml6YXRpb24o
SFRNTE5hbWVzOjpzcmNBdHRyLCBET01VUkw6OmNyZWF0ZU9iamVjdFVSTChkb2N1bWVudCwgRmls
ZTo6Y3JlYXRlKHBhdGgpKSk7CiAgICAgICAgIGltYWdlLT5zZXRBdHRhY2htZW50RWxlbWVudChX
VEZNb3ZlKGF0dGFjaG1lbnQpKTsKKyAgICAgICAgaWYgKHByZWZlcnJlZFNpemUpIHsKKyAgICAg
ICAgICAgIGltYWdlLT5zZXRBdHRyaWJ1dGVXaXRob3V0U3luY2hyb25pemF0aW9uKEhUTUxOYW1l
czo6d2lkdGhBdHRyLCBBdG9taWNTdHJpbmc6Om51bWJlcihwcmVmZXJyZWRTaXplLT53aWR0aCgp
KSk7CisgICAgICAgICAgICBpbWFnZS0+c2V0QXR0cmlidXRlV2l0aG91dFN5bmNocm9uaXphdGlv
bihIVE1MTmFtZXM6OmhlaWdodEF0dHIsIEF0b21pY1N0cmluZzo6bnVtYmVyKHByZWZlcnJlZFNp
emUtPmhlaWdodCgpKSk7CisgICAgICAgIH0KICAgICAgICAgcmV0dXJuIGltYWdlOwogICAgIH0K
IApAQCAtNzMwLDcgKzczNCw3IEBAIHN0YXRpYyBSZWY8SFRNTEVsZW1lbnQ+IGF0dGFjaG1lbnRG
b3JGaWxlUGF0aChGcmFtZSYgZnJhbWUsIGNvbnN0IFN0cmluZyYgcGF0aCkKICAgICByZXR1cm4g
YXR0YWNobWVudDsKIH0KIAotc3RhdGljIFJlZjxIVE1MRWxlbWVudD4gYXR0YWNobWVudEZvckRh
dGEoRnJhbWUmIGZyYW1lLCBTaGFyZWRCdWZmZXImIGJ1ZmZlciwgY29uc3QgU3RyaW5nJiBjb250
ZW50VHlwZSwgY29uc3QgU3RyaW5nJiBuYW1lKQorc3RhdGljIFJlZjxIVE1MRWxlbWVudD4gYXR0
YWNobWVudEZvckRhdGEoRnJhbWUmIGZyYW1lLCBTaGFyZWRCdWZmZXImIGJ1ZmZlciwgY29uc3Qg
U3RyaW5nJiBjb250ZW50VHlwZSwgY29uc3QgU3RyaW5nJiBuYW1lLCBPcHRpb25hbDxGbG9hdFNp
emU+IHByZWZlcnJlZFNpemUpCiB7CiAgICAgYXV0byBkb2N1bWVudCA9IG1ha2VSZWYoKmZyYW1l
LmRvY3VtZW50KCkpOwogICAgIGF1dG8gYXR0YWNobWVudCA9IEhUTUxBdHRhY2htZW50RWxlbWVu
dDo6Y3JlYXRlKEhUTUxOYW1lczo6YXR0YWNobWVudFRhZywgZG9jdW1lbnQpOwpAQCAtNzU3LDYg
Kzc2MSwxMCBAQCBzdGF0aWMgUmVmPEhUTUxFbGVtZW50PiBhdHRhY2htZW50Rm9yRGF0YShGcmFt
ZSYgZnJhbWUsIFNoYXJlZEJ1ZmZlciYgYnVmZmVyLCBjbwogICAgICAgICBhdXRvIGltYWdlID0g
SFRNTEltYWdlRWxlbWVudDo6Y3JlYXRlKGRvY3VtZW50KTsKICAgICAgICAgaW1hZ2UtPnNldEF0
dHJpYnV0ZVdpdGhvdXRTeW5jaHJvbml6YXRpb24oSFRNTE5hbWVzOjpzcmNBdHRyLCBET01VUkw6
OmNyZWF0ZU9iamVjdFVSTChkb2N1bWVudCwgRmlsZTo6Y3JlYXRlKEJsb2I6OmNyZWF0ZShidWZm
ZXIsIFdURk1vdmUodHlwZUZvckF0dGFjaG1lbnRFbGVtZW50KSksIFdURk1vdmUoZmlsZU5hbWUp
KSkpOwogICAgICAgICBpbWFnZS0+c2V0QXR0YWNobWVudEVsZW1lbnQoV1RGTW92ZShhdHRhY2ht
ZW50KSk7CisgICAgICAgIGlmIChwcmVmZXJyZWRTaXplKSB7CisgICAgICAgICAgICBpbWFnZS0+
c2V0QXR0cmlidXRlV2l0aG91dFN5bmNocm9uaXphdGlvbihIVE1MTmFtZXM6OndpZHRoQXR0ciwg
QXRvbWljU3RyaW5nOjpudW1iZXIocHJlZmVycmVkU2l6ZS0+d2lkdGgoKSkpOworICAgICAgICAg
ICAgaW1hZ2UtPnNldEF0dHJpYnV0ZVdpdGhvdXRTeW5jaHJvbml6YXRpb24oSFRNTE5hbWVzOjpo
ZWlnaHRBdHRyLCBBdG9taWNTdHJpbmc6Om51bWJlcihwcmVmZXJyZWRTaXplLT5oZWlnaHQoKSkp
OworICAgICAgICB9CiAgICAgICAgIHJldHVybiBpbWFnZTsKICAgICB9CiAKQEAgLTc2Niw5ICs3
NzQsOSBAQCBzdGF0aWMgUmVmPEhUTUxFbGVtZW50PiBhdHRhY2htZW50Rm9yRGF0YShGcmFtZSYg
ZnJhbWUsIFNoYXJlZEJ1ZmZlciYgYnVmZmVyLCBjbwogCiAjZW5kaWYgLy8gRU5BQkxFKEFUVEFD
SE1FTlRfRUxFTUVOVCkKIAotYm9vbCBXZWJDb250ZW50UmVhZGVyOjpyZWFkRmlsZVBhdGhzKGNv
bnN0IFZlY3RvcjxTdHJpbmc+JiBwYXRocykKK2Jvb2wgV2ViQ29udGVudFJlYWRlcjo6cmVhZEZp
bGVQYXRoKGNvbnN0IFN0cmluZyYgcGF0aCwgT3B0aW9uYWw8RmxvYXRTaXplPiBwcmVmZXJyZWRQ
cmVzZW50YXRpb25TaXplKQogewotICAgIGlmIChwYXRocy5pc0VtcHR5KCkgfHwgIWZyYW1lLmRv
Y3VtZW50KCkpCisgICAgaWYgKHBhdGguaXNFbXB0eSgpIHx8ICFmcmFtZS5kb2N1bWVudCgpKQog
ICAgICAgICByZXR1cm4gZmFsc2U7CiAKICAgICBhdXRvJiBkb2N1bWVudCA9ICpmcmFtZS5kb2N1
bWVudCgpOwpAQCAtNzc2LDE1ICs3ODQsMjQgQEAgYm9vbCBXZWJDb250ZW50UmVhZGVyOjpyZWFk
RmlsZVBhdGhzKGNvbnN0IFZlY3RvcjxTdHJpbmc+JiBwYXRocykKICAgICAgICAgZnJhZ21lbnQg
PSBkb2N1bWVudC5jcmVhdGVEb2N1bWVudEZyYWdtZW50KCk7CiAKICNpZiBFTkFCTEUoQVRUQUNI
TUVOVF9FTEVNRU5UKQotICAgIGlmIChSdW50aW1lRW5hYmxlZEZlYXR1cmVzOjpzaGFyZWRGZWF0
dXJlcygpLmF0dGFjaG1lbnRFbGVtZW50RW5hYmxlZCgpKSB7Ci0gICAgICAgIGZvciAoYXV0byYg
cGF0aCA6IHBhdGhzKQotICAgICAgICAgICAgZnJhZ21lbnQtPmFwcGVuZENoaWxkKGF0dGFjaG1l
bnRGb3JGaWxlUGF0aChmcmFtZSwgcGF0aCkpOwotICAgIH0KKyAgICBpZiAoUnVudGltZUVuYWJs
ZWRGZWF0dXJlczo6c2hhcmVkRmVhdHVyZXMoKS5hdHRhY2htZW50RWxlbWVudEVuYWJsZWQoKSkK
KyAgICAgICAgZnJhZ21lbnQtPmFwcGVuZENoaWxkKGF0dGFjaG1lbnRGb3JGaWxlUGF0aChmcmFt
ZSwgcGF0aCwgcHJlZmVycmVkUHJlc2VudGF0aW9uU2l6ZSkpOwogI2VuZGlmCiAKICAgICByZXR1
cm4gdHJ1ZTsKIH0KIAorYm9vbCBXZWJDb250ZW50UmVhZGVyOjpyZWFkRmlsZVBhdGhzKGNvbnN0
IFZlY3RvcjxTdHJpbmc+JiBwYXRocykKK3sKKyAgICBpZiAocGF0aHMuaXNFbXB0eSgpIHx8ICFm
cmFtZS5kb2N1bWVudCgpKQorICAgICAgICByZXR1cm4gZmFsc2U7CisKKyAgICBmb3IgKGF1dG8m
IHBhdGggOiBwYXRocykKKyAgICAgICAgcmVhZEZpbGVQYXRoKHBhdGgpOworCisgICAgcmV0dXJu
IHRydWU7Cit9CisKIGJvb2wgV2ViQ29udGVudFJlYWRlcjo6cmVhZFVSTChjb25zdCBVUkwmIHVy
bCwgY29uc3QgU3RyaW5nJiB0aXRsZSkKIHsKICAgICBpZiAodXJsLmlzRW1wdHkoKSkKQEAgLTgx
Niw3ICs4MzMsNyBAQCBib29sIFdlYkNvbnRlbnRSZWFkZXI6OnJlYWRVUkwoY29uc3QgVVJMJiB1
cmwsIGNvbnN0IFN0cmluZyYgdGl0bGUpCiAgICAgcmV0dXJuIHRydWU7CiB9CiAKLWJvb2wgV2Vi
Q29udGVudFJlYWRlcjo6cmVhZERhdGFCdWZmZXIoU2hhcmVkQnVmZmVyJiBidWZmZXIsIGNvbnN0
IFN0cmluZyYgdHlwZSwgY29uc3QgU3RyaW5nJiBuYW1lKQorYm9vbCBXZWJDb250ZW50UmVhZGVy
OjpyZWFkRGF0YUJ1ZmZlcihTaGFyZWRCdWZmZXImIGJ1ZmZlciwgY29uc3QgU3RyaW5nJiB0eXBl
LCBjb25zdCBTdHJpbmcmIG5hbWUsIE9wdGlvbmFsPEZsb2F0U2l6ZT4gcHJlZmVycmVkUHJlc2Vu
dGF0aW9uU2l6ZSkKIHsKICAgICBpZiAoYnVmZmVyLmlzRW1wdHkoKSkKICAgICAgICAgcmV0dXJu
IGZhbHNlOwpAQCAtODMyLDcgKzg0OSw3IEBAIGJvb2wgV2ViQ29udGVudFJlYWRlcjo6cmVhZERh
dGFCdWZmZXIoU2hhcmVkQnVmZmVyJiBidWZmZXIsIGNvbnN0IFN0cmluZyYgdHlwZSwKICAgICAg
ICAgZnJhZ21lbnQgPSBkb2N1bWVudC0+Y3JlYXRlRG9jdW1lbnRGcmFnbWVudCgpOwogCiAjaWYg
RU5BQkxFKEFUVEFDSE1FTlRfRUxFTUVOVCkKLSAgICBmcmFnbWVudC0+YXBwZW5kQ2hpbGQoYXR0
YWNobWVudEZvckRhdGEoZnJhbWUsIGJ1ZmZlciwgdHlwZSwgbmFtZSkpOworICAgIGZyYWdtZW50
LT5hcHBlbmRDaGlsZChhdHRhY2htZW50Rm9yRGF0YShmcmFtZSwgYnVmZmVyLCB0eXBlLCBuYW1l
LCBwcmVmZXJyZWRQcmVzZW50YXRpb25TaXplKSk7CiAjZWxzZQogICAgIFVOVVNFRF9QQVJBTSh0
eXBlKTsKICAgICBVTlVTRURfUEFSQU0obmFtZSk7CmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29y
ZS9sb2FkZXIvRW1wdHlDbGllbnRzLmggYi9Tb3VyY2UvV2ViQ29yZS9sb2FkZXIvRW1wdHlDbGll
bnRzLmgKaW5kZXggZDQ1MjI4ZWVkMjBlYjk5NWY1ZGYyYTQ2MmZiNGUzNGI3M2I5OGYzNS4uYjY5
YjkzMDZmMTliNDNhYWM0ZDI1MGZhNzMwYmU4NDVkOWRmZWU0OSAxMDA2NDQKLS0tIGEvU291cmNl
L1dlYkNvcmUvbG9hZGVyL0VtcHR5Q2xpZW50cy5oCisrKyBiL1NvdXJjZS9XZWJDb3JlL2xvYWRl
ci9FbXB0eUNsaWVudHMuaApAQCAtNDAsNiArNDAsNyBAQCBuYW1lc3BhY2UgV2ViQ29yZSB7CiAK
IGNsYXNzIERpYWdub3N0aWNMb2dnaW5nQ2xpZW50OwogY2xhc3MgRWRpdG9yQ2xpZW50OworY2xh
c3MgSFRNTEltYWdlRWxlbWVudDsKIGNsYXNzIFBhZ2VDb25maWd1cmF0aW9uOwogCiBjbGFzcyBF
bXB0eUNocm9tZUNsaWVudCA6IHB1YmxpYyBDaHJvbWVDbGllbnQgewpAQCAtMTExLDYgKzExMiw4
IEBAIGNsYXNzIEVtcHR5Q2hyb21lQ2xpZW50IDogcHVibGljIENocm9tZUNsaWVudCB7CiAgICAg
SW50UG9pbnQgYWNjZXNzaWJpbGl0eVNjcmVlblRvUm9vdFZpZXcoY29uc3QgSW50UG9pbnQmIHAp
IGNvbnN0IGZpbmFsIHsgcmV0dXJuIHA7IH07CiAgICAgSW50UmVjdCByb290Vmlld1RvQWNjZXNz
aWJpbGl0eVNjcmVlbihjb25zdCBJbnRSZWN0JiByKSBjb25zdCBmaW5hbCB7IHJldHVybiByOyB9
OwogCisgICAgdm9pZCBkaWRGaW5pc2hMb2FkaW5nSW1hZ2VGb3JFbGVtZW50KEhUTUxJbWFnZUVs
ZW1lbnQmKSBmaW5hbCB7IH0KKwogICAgIFBsYXRmb3JtUGFnZUNsaWVudCBwbGF0Zm9ybVBhZ2VD
bGllbnQoKSBjb25zdCBmaW5hbCB7IHJldHVybiAwOyB9CiAgICAgdm9pZCBjb250ZW50c1NpemVD
aGFuZ2VkKEZyYW1lJiwgY29uc3QgSW50U2l6ZSYpIGNvbnN0IGZpbmFsIHsgfQogICAgIHZvaWQg
aW50cmluc2ljQ29udGVudHNTaXplQ2hhbmdlZChjb25zdCBJbnRTaXplJikgY29uc3QgZmluYWwg
eyB9CmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9wYWdlL0Nocm9tZUNsaWVudC5oIGIvU291
cmNlL1dlYkNvcmUvcGFnZS9DaHJvbWVDbGllbnQuaAppbmRleCBmMzUzOTBjOGMzYWUyNzlmOWQz
Njk1ZmE2ZGUyZTdmNzk3NjljN2VmLi4xNmQzZjljMWFlZDVhNzVhMGE0OWY4NDVmZTQ0MTAzMDJk
YjRlMTdmIDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViQ29yZS9wYWdlL0Nocm9tZUNsaWVudC5oCisr
KyBiL1NvdXJjZS9XZWJDb3JlL3BhZ2UvQ2hyb21lQ2xpZW50LmgKQEAgLTg3LDYgKzg3LDcgQEAg
Y2xhc3MgRnJhbWVMb2FkUmVxdWVzdDsKIGNsYXNzIEdlb2xvY2F0aW9uOwogY2xhc3MgR3JhcGhp
Y3NMYXllcjsKIGNsYXNzIEdyYXBoaWNzTGF5ZXJGYWN0b3J5OworY2xhc3MgSFRNTEltYWdlRWxl
bWVudDsKIGNsYXNzIEhUTUxJbnB1dEVsZW1lbnQ7CiBjbGFzcyBIVE1MTWVkaWFFbGVtZW50Owog
Y2xhc3MgSFRNTFZpZGVvRWxlbWVudDsKQEAgLTE4Miw2ICsxODMsOCBAQCBwdWJsaWM6CiAgICAg
dmlydHVhbCBJbnRQb2ludCBhY2Nlc3NpYmlsaXR5U2NyZWVuVG9Sb290Vmlldyhjb25zdCBJbnRQ
b2ludCYpIGNvbnN0ID0gMDsKICAgICB2aXJ0dWFsIEludFJlY3Qgcm9vdFZpZXdUb0FjY2Vzc2li
aWxpdHlTY3JlZW4oY29uc3QgSW50UmVjdCYpIGNvbnN0ID0gMDsKIAorICAgIHZpcnR1YWwgdm9p
ZCBkaWRGaW5pc2hMb2FkaW5nSW1hZ2VGb3JFbGVtZW50KEhUTUxJbWFnZUVsZW1lbnQmKSA9IDA7
CisKICAgICB2aXJ0dWFsIFBsYXRmb3JtUGFnZUNsaWVudCBwbGF0Zm9ybVBhZ2VDbGllbnQoKSBj
b25zdCA9IDA7CiAKICNpZiBFTkFCTEUoQ1VSU09SX1NVUFBPUlQpCmRpZmYgLS1naXQgYS9Tb3Vy
Y2UvV2ViQ29yZS9wYWdlL1BhZ2UuY3BwIGIvU291cmNlL1dlYkNvcmUvcGFnZS9QYWdlLmNwcApp
bmRleCBhYTAxM2JmNzYzM2VjZTAzNmRlOTBiZmU3NDViYTQzN2RmMjU4MDVkLi4yOTkzMmJhOTM2
NzE0ZjI3OWIwMDYxMzY5ZjRlNTAzNzQxNjEyNDlmIDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViQ29y
ZS9wYWdlL1BhZ2UuY3BwCisrKyBiL1NvdXJjZS9XZWJDb3JlL3BhZ2UvUGFnZS5jcHAKQEAgLTI5
OTYsNCArMjk5Niw5IEBAIHZvaWQgUGFnZTo6Y29uZmlndXJlTG9nZ2luZ0NoYW5uZWwoY29uc3Qg
U3RyaW5nJiBjaGFubmVsTmFtZSwgV1RGTG9nQ2hhbm5lbFN0YXRlCiAjZW5kaWYKIH0KIAordm9p
ZCBQYWdlOjpkaWRGaW5pc2hMb2FkaW5nSW1hZ2VGb3JFbGVtZW50KEhUTUxJbWFnZUVsZW1lbnQm
IGVsZW1lbnQpCit7CisgICAgY2hyb21lKCkuY2xpZW50KCkuZGlkRmluaXNoTG9hZGluZ0ltYWdl
Rm9yRWxlbWVudChlbGVtZW50KTsKK30KKwogfSAvLyBuYW1lc3BhY2UgV2ViQ29yZQpkaWZmIC0t
Z2l0IGEvU291cmNlL1dlYkNvcmUvcGFnZS9QYWdlLmggYi9Tb3VyY2UvV2ViQ29yZS9wYWdlL1Bh
Z2UuaAppbmRleCBlYzNmNTNjODI4ODI2NWJmOGU2ZmNmOWQxYjFjZTk5MTFkYzZkZDQ1Li5lN2Ex
ZWFlNjJmZjdjZDI1NTFmYTQwZjY5MDk0MGJmYWZhMjdhYTQ0IDEwMDY0NAotLS0gYS9Tb3VyY2Uv
V2ViQ29yZS9wYWdlL1BhZ2UuaAorKysgYi9Tb3VyY2UvV2ViQ29yZS9wYWdlL1BhZ2UuaApAQCAt
NTI3LDYgKzUyNyw4IEBAIHB1YmxpYzoKICAgICBXRUJDT1JFX0VYUE9SVCBWaXNpYmlsaXR5U3Rh
dGUgdmlzaWJpbGl0eVN0YXRlKCkgY29uc3Q7CiAgICAgV0VCQ09SRV9FWFBPUlQgdm9pZCByZXN1
bWVBbmltYXRpbmdJbWFnZXMoKTsKIAorICAgIHZvaWQgZGlkRmluaXNoTG9hZGluZ0ltYWdlRm9y
RWxlbWVudChIVE1MSW1hZ2VFbGVtZW50Jik7CisKICAgICBXRUJDT1JFX0VYUE9SVCB2b2lkIGFk
ZExheW91dE1pbGVzdG9uZXMoT3B0aW9uU2V0PExheW91dE1pbGVzdG9uZT4pOwogICAgIFdFQkNP
UkVfRVhQT1JUIHZvaWQgcmVtb3ZlTGF5b3V0TWlsZXN0b25lcyhPcHRpb25TZXQ8TGF5b3V0TWls
ZXN0b25lPik7CiAgICAgT3B0aW9uU2V0PExheW91dE1pbGVzdG9uZT4gcmVxdWVzdGVkTGF5b3V0
TWlsZXN0b25lcygpIGNvbnN0IHsgcmV0dXJuIG1fcmVxdWVzdGVkTGF5b3V0TWlsZXN0b25lczsg
fQpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vUGFzdGVib2FyZC5oIGIvU291
cmNlL1dlYkNvcmUvcGxhdGZvcm0vUGFzdGVib2FyZC5oCmluZGV4IDJjMTc0MTVlODg5YjMzNGI4
M2NmOWI5MzY3MzdiNjExMTQ4YjkwM2EuLjY0N2RjNWZjNGE5YmIwZDliNDM1ZWMxODFjNGU1MjM2
ZmNjMWRjMTAgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL1Bhc3RlYm9hcmQu
aAorKysgYi9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9QYXN0ZWJvYXJkLmgKQEAgLTEzNiwxMyAr
MTM2LDE0IEBAIHB1YmxpYzoKIAogI2lmIFBMQVRGT1JNKENPQ09BKQogICAgIHZpcnR1YWwgYm9v
bCByZWFkV2ViQXJjaGl2ZShTaGFyZWRCdWZmZXImKSA9IDA7CisgICAgdmlydHVhbCBib29sIHJl
YWRGaWxlUGF0aChjb25zdCBTdHJpbmcmLCBPcHRpb25hbDxGbG9hdFNpemU+IHByZWZlcnJlZFBy
ZXNlbnRhdGlvblNpemUgPSB7IH0pID0gMDsKICAgICB2aXJ0dWFsIGJvb2wgcmVhZEZpbGVQYXRo
cyhjb25zdCBWZWN0b3I8U3RyaW5nPiYpID0gMDsKICAgICB2aXJ0dWFsIGJvb2wgcmVhZEhUTUwo
Y29uc3QgU3RyaW5nJikgPSAwOwogICAgIHZpcnR1YWwgYm9vbCByZWFkUlRGRChTaGFyZWRCdWZm
ZXImKSA9IDA7CiAgICAgdmlydHVhbCBib29sIHJlYWRSVEYoU2hhcmVkQnVmZmVyJikgPSAwOwog
ICAgIHZpcnR1YWwgYm9vbCByZWFkSW1hZ2UoUmVmPFNoYXJlZEJ1ZmZlcj4mJiwgY29uc3QgU3Ry
aW5nJiB0eXBlLCBPcHRpb25hbDxGbG9hdFNpemU+IHByZWZlcnJlZFByZXNlbnRhdGlvblNpemUg
PSB7IH0pID0gMDsKICAgICB2aXJ0dWFsIGJvb2wgcmVhZFVSTChjb25zdCBVUkwmLCBjb25zdCBT
dHJpbmcmIHRpdGxlKSA9IDA7Ci0gICAgdmlydHVhbCBib29sIHJlYWREYXRhQnVmZmVyKFNoYXJl
ZEJ1ZmZlciYsIGNvbnN0IFN0cmluZyYgdHlwZSwgY29uc3QgU3RyaW5nJiBuYW1lKSA9IDA7Cisg
ICAgdmlydHVhbCBib29sIHJlYWREYXRhQnVmZmVyKFNoYXJlZEJ1ZmZlciYsIGNvbnN0IFN0cmlu
ZyYgdHlwZSwgY29uc3QgU3RyaW5nJiBuYW1lLCBPcHRpb25hbDxGbG9hdFNpemU+IHByZWZlcnJl
ZFByZXNlbnRhdGlvblNpemUgPSB7IH0pID0gMDsKICNlbmRpZgogICAgIHZpcnR1YWwgYm9vbCBy
ZWFkUGxhaW5UZXh0KGNvbnN0IFN0cmluZyYpID0gMDsKIH07CmRpZmYgLS1naXQgYS9Tb3VyY2Uv
V2ViQ29yZS9wbGF0Zm9ybS9pb3MvUGFzdGVib2FyZElPUy5tbSBiL1NvdXJjZS9XZWJDb3JlL3Bs
YXRmb3JtL2lvcy9QYXN0ZWJvYXJkSU9TLm1tCmluZGV4IDZmZTIzZDlkODdkM2Q1NmJmYWU4ZmY4
MjNlNmI1MDUyM2MwZWZhNDMuLjQxNjI5NTY3N2Y3YWVmMmQzYjhkYWIxZWQ2ZTQ3NzdmOTcyZDNl
YTUgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL2lvcy9QYXN0ZWJvYXJkSU9T
Lm1tCisrKyBiL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL2lvcy9QYXN0ZWJvYXJkSU9TLm1tCkBA
IC0zMDcsNyArMzA3LDcgQEAgdm9pZCBQYXN0ZWJvYXJkOjpyZWFkKFBhc3RlYm9hcmRXZWJDb250
ZW50UmVhZGVyJiByZWFkZXIsIFdlYkNvbnRlbnRSZWFkaW5nUG9saWMKICAgICAgICAgICAgIGF1
dG8gdHlwZUZvckZpbGVVcGxvYWQgPSBpbmZvLmNvbnRlbnRUeXBlRm9ySGlnaGVzdEZpZGVsaXR5
SXRlbSgpOwogICAgICAgICAgICAgaWYgKGF1dG8gYnVmZmVyID0gc3RyYXRlZ3kucmVhZEJ1ZmZl
ckZyb21QYXN0ZWJvYXJkKGksIHR5cGVGb3JGaWxlVXBsb2FkLCBtX3Bhc3RlYm9hcmROYW1lKSkg
ewogICAgICAgICAgICAgICAgIHJlYWRVUkxBbG9uZ3NpZGVBdHRhY2htZW50SWZOZWNlc3Nhcnko
cmVhZGVyLCBzdHJhdGVneSwgdHlwZUZvckZpbGVVcGxvYWQsIG1fcGFzdGVib2FyZE5hbWUsIGkp
OwotICAgICAgICAgICAgICAgIHJlYWRlci5yZWFkRGF0YUJ1ZmZlcigqYnVmZmVyLCB0eXBlRm9y
RmlsZVVwbG9hZCwgaW5mby5zdWdnZXN0ZWRGaWxlTmFtZSk7CisgICAgICAgICAgICAgICAgcmVh
ZGVyLnJlYWREYXRhQnVmZmVyKCpidWZmZXIsIHR5cGVGb3JGaWxlVXBsb2FkLCBpbmZvLnN1Z2dl
c3RlZEZpbGVOYW1lLCBpbmZvLnByZWZlcnJlZFByZXNlbnRhdGlvblNpemUpOwogICAgICAgICAg
ICAgICAgIGNvbnRpbnVlOwogICAgICAgICAgICAgfQogICAgICAgICB9CkBAIC0zNDcsNyArMzQ3
LDcgQEAgdm9pZCBQYXN0ZWJvYXJkOjpyZWFkUmVzcGVjdGluZ1VUSUZpZGVsaXRpZXMoUGFzdGVi
b2FyZFdlYkNvbnRlbnRSZWFkZXImIHJlYWRlciwKICAgICAgICAgYm9vbCBjYW5SZWFkQXR0YWNo
bWVudCA9IHBvbGljeSA9PSBXZWJDb250ZW50UmVhZGluZ1BvbGljeTo6QW55VHlwZSAmJiBSdW50
aW1lRW5hYmxlZEZlYXR1cmVzOjpzaGFyZWRGZWF0dXJlcygpLmF0dGFjaG1lbnRFbGVtZW50RW5h
YmxlZCgpICYmICFhdHRhY2htZW50RmlsZVBhdGguaXNFbXB0eSgpOwogICAgICAgICBpZiAoY2Fu
UmVhZEF0dGFjaG1lbnQgJiYgcHJlZmVyc0F0dGFjaG1lbnRSZXByZXNlbnRhdGlvbihpbmZvKSkg
ewogICAgICAgICAgICAgcmVhZFVSTEFsb25nc2lkZUF0dGFjaG1lbnRJZk5lY2Vzc2FyeShyZWFk
ZXIsIHN0cmF0ZWd5LCBpbmZvLmNvbnRlbnRUeXBlRm9ySGlnaGVzdEZpZGVsaXR5SXRlbSgpLCBt
X3Bhc3RlYm9hcmROYW1lLCBpbmRleCk7Ci0gICAgICAgICAgICByZWFkZXIucmVhZEZpbGVQYXRo
cyh7IFdURk1vdmUoYXR0YWNobWVudEZpbGVQYXRoKSB9KTsKKyAgICAgICAgICAgIHJlYWRlci5y
ZWFkRmlsZVBhdGgoV1RGTW92ZShhdHRhY2htZW50RmlsZVBhdGgpLCBpbmZvLnByZWZlcnJlZFBy
ZXNlbnRhdGlvblNpemUpOwogICAgICAgICAgICAgY29udGludWU7CiAgICAgICAgIH0KICNlbmRp
ZgpAQCAtMzY2LDcgKzM2Niw3IEBAIHZvaWQgUGFzdGVib2FyZDo6cmVhZFJlc3BlY3RpbmdVVElG
aWRlbGl0aWVzKFBhc3RlYm9hcmRXZWJDb250ZW50UmVhZGVyJiByZWFkZXIsCiAgICAgICAgIH0K
ICNpZiBFTkFCTEUoQVRUQUNITUVOVF9FTEVNRU5UKQogICAgICAgICBpZiAoY2FuUmVhZEF0dGFj
aG1lbnQgJiYgcmVzdWx0ID09IFJlYWRlclJlc3VsdDo6RGlkTm90UmVhZFR5cGUpCi0gICAgICAg
ICAgICByZWFkZXIucmVhZEZpbGVQYXRocyh7IFdURk1vdmUoYXR0YWNobWVudEZpbGVQYXRoKSB9
KTsKKyAgICAgICAgICAgIHJlYWRlci5yZWFkRmlsZVBhdGgoV1RGTW92ZShhdHRhY2htZW50Rmls
ZVBhdGgpLCBpbmZvLnByZWZlcnJlZFByZXNlbnRhdGlvblNpemUpOwogI2VuZGlmCiAgICAgfQog
fQpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYkNvcmUvcmVuZGVyaW5nL1JlbmRlckltYWdlLmNwcCBi
L1NvdXJjZS9XZWJDb3JlL3JlbmRlcmluZy9SZW5kZXJJbWFnZS5jcHAKaW5kZXggOGU4NDAwMjM1
YWUxNzJlYzgyZjQwYWJkNGUwOTQ1MTllNGY4NmQxZC4uNGQ2YWE3NTdlYWEzODFjZTBjYWNmOGZl
NWZkMTNiOGIwODQ0ZDJmMCAxMDA2NDQKLS0tIGEvU291cmNlL1dlYkNvcmUvcmVuZGVyaW5nL1Jl
bmRlckltYWdlLmNwcAorKysgYi9Tb3VyY2UvV2ViQ29yZS9yZW5kZXJpbmcvUmVuZGVySW1hZ2Uu
Y3BwCkBAIC0zNzgsNiArMzc4LDkgQEAgdm9pZCBSZW5kZXJJbWFnZTo6bm90aWZ5RmluaXNoZWQo
Q2FjaGVkUmVzb3VyY2UmIG5ld0ltYWdlKQogICAgICAgICAvLyB0aGF0IHRoZSBpbWFnZSBpcyBk
b25lIGFuZCB0aGV5IGNhbiByZWZlcmVuY2UgaXQgZGlyZWN0bHkuCiAgICAgICAgIGNvbnRlbnRD
aGFuZ2VkKEltYWdlQ2hhbmdlZCk7CiAgICAgfQorCisgICAgaWYgKGlzPEhUTUxJbWFnZUVsZW1l
bnQ+KGVsZW1lbnQoKSkpCisgICAgICAgIHBhZ2UoKS5kaWRGaW5pc2hMb2FkaW5nSW1hZ2VGb3JF
bGVtZW50KGRvd25jYXN0PEhUTUxJbWFnZUVsZW1lbnQ+KCplbGVtZW50KCkpKTsKIH0KIAogYm9v
bCBSZW5kZXJJbWFnZTo6aXNTaG93aW5nTWlzc2luZ09ySW1hZ2VFcnJvcigpIGNvbnN0CmRpZmYg
LS1naXQgYS9Tb3VyY2UvV2ViS2l0L1VJUHJvY2Vzcy9BUEkvQ29jb2EvV0tXZWJWaWV3Lm1tIGIv
U291cmNlL1dlYktpdC9VSVByb2Nlc3MvQVBJL0NvY29hL1dLV2ViVmlldy5tbQppbmRleCBmNmE3
ODY1ZGI3M2IxMWNkNzYzODQ5ZWNmM2JhNzQ3YmNhMDU4NDEzLi5kODczZDE0ODFhNzBiYWQ1MzIy
MmU2ZWU5OGY5ZTg0NzY5MjQ3NDBlIDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViS2l0L1VJUHJvY2Vz
cy9BUEkvQ29jb2EvV0tXZWJWaWV3Lm1tCisrKyBiL1NvdXJjZS9XZWJLaXQvVUlQcm9jZXNzL0FQ
SS9Db2NvYS9XS1dlYlZpZXcubW0KQEAgLTY4ODksNiArNjg4OSwxMSBAQCAtIChOU0RpY3Rpb25h
cnkgKilfcHJvcGVydGllc09mTGF5ZXJXaXRoSUQ6KHVuc2lnbmVkIGxvbmcgbG9uZylsYXllcklE
CiAgICAgfTsKIH0KIAorLSAodm9pZClfZG9BZnRlclJlY2VpdmluZ0VkaXREcmFnU25hcHNob3RG
b3JUZXN0aW5nOihkaXNwYXRjaF9ibG9ja190KWFjdGlvbgoreworICAgIFtfY29udGVudFZpZXcg
X2RvQWZ0ZXJSZWNlaXZpbmdFZGl0RHJhZ1NuYXBzaG90Rm9yVGVzdGluZzphY3Rpb25dOworfQor
CiAjZW5kaWYgLy8gUExBVEZPUk0oSU9TX0ZBTUlMWSkKIAogI2lmIFBMQVRGT1JNKE1BQykKZGlm
ZiAtLWdpdCBhL1NvdXJjZS9XZWJLaXQvVUlQcm9jZXNzL0FQSS9Db2NvYS9XS1dlYlZpZXdQcml2
YXRlLmggYi9Tb3VyY2UvV2ViS2l0L1VJUHJvY2Vzcy9BUEkvQ29jb2EvV0tXZWJWaWV3UHJpdmF0
ZS5oCmluZGV4IDBmMTc4YzA5ODNjN2VmMGY1YjRiZWQxYzRiN2Q3MTgxNTgxNjcwYjMuLmM2NzVi
ZmZmMjY2YjU3NDhhNTY2ZDI3NDBiZDZkNzMxZWRlNjQ5MDkgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9X
ZWJLaXQvVUlQcm9jZXNzL0FQSS9Db2NvYS9XS1dlYlZpZXdQcml2YXRlLmgKKysrIGIvU291cmNl
L1dlYktpdC9VSVByb2Nlc3MvQVBJL0NvY29hL1dLV2ViVmlld1ByaXZhdGUuaApAQCAtNDg5LDYg
KzQ4OSw4IEBAIHR5cGVkZWYgTlNfT1BUSU9OUyhOU1VJbnRlZ2VyLCBfV0tSZWN0RWRnZSkgewog
CiBAcHJvcGVydHkgKG5vbmF0b21pYywgcmVhZG9ubHkpIENHUmVjdCBfZHJhZ0NhcmV0UmVjdCBX
S19BUElfQVZBSUxBQkxFKGlvcygxMS4wKSk7CiAKKy0gKHZvaWQpX2RvQWZ0ZXJSZWNlaXZpbmdF
ZGl0RHJhZ1NuYXBzaG90Rm9yVGVzdGluZzooZGlzcGF0Y2hfYmxvY2tfdClhY3Rpb24gV0tfQVBJ
X0FWQUlMQUJMRShpb3MoV0tfSU9TX1RCQSkpOworCiAtICh2b2lkKV9yZXF1ZXN0QWN0aXZhdGVk
RWxlbWVudEF0UG9zaXRpb246KENHUG9pbnQpcG9zaXRpb24gY29tcGxldGlvbkJsb2NrOih2b2lk
ICheKShfV0tBY3RpdmF0ZWRFbGVtZW50SW5mbyAqKSlibG9jayBXS19BUElfQVZBSUxBQkxFKGlv
cygxMS4wKSk7CiAtICh2b2lkKV9hY2Nlc3NpYmlsaXR5UmV0cmlldmVSZWN0c0F0U2VsZWN0aW9u
T2Zmc2V0OihOU0ludGVnZXIpb2Zmc2V0IHdpdGhUZXh0OihOU1N0cmluZyAqKXRleHQgY29tcGxl
dGlvbkhhbmRsZXI6KHZvaWQgKF4pKE5TQXJyYXk8TlNWYWx1ZSAqPiAqcmVjdHMpKWNvbXBsZXRp
b25IYW5kbGVyIFdLX0FQSV9BVkFJTEFCTEUoaW9zKDExLjMpKTsKIC0gKHZvaWQpX2FjY2Vzc2li
aWxpdHlTdG9yZVNlbGVjdGlvbiBXS19BUElfQVZBSUxBQkxFKGlvcygxMS4zKSk7CmRpZmYgLS1n
aXQgYS9Tb3VyY2UvV2ViS2l0L1VJUHJvY2Vzcy9QYWdlQ2xpZW50LmggYi9Tb3VyY2UvV2ViS2l0
L1VJUHJvY2Vzcy9QYWdlQ2xpZW50LmgKaW5kZXggYWZjOTRjZTkwMmRmZDkxM2U4NGViN2Q5NjU4
ZDBkNzUzYWIwOWJkMS4uNjY5YzFkYTZkYmI5OGY2Njk1Y2NhZGVkMjJiNzQ3YWQwZWZjZDlhMSAx
MDA2NDQKLS0tIGEvU291cmNlL1dlYktpdC9VSVByb2Nlc3MvUGFnZUNsaWVudC5oCisrKyBiL1Nv
dXJjZS9XZWJLaXQvVUlQcm9jZXNzL1BhZ2VDbGllbnQuaApAQCAtNDc5LDcgKzQ3OSw4IEBAIHB1
YmxpYzoKICNpZiBFTkFCTEUoREFUQV9JTlRFUkFDVElPTikKICAgICB2aXJ0dWFsIHZvaWQgZGlk
SGFuZGxlRHJhZ1N0YXJ0UmVxdWVzdChib29sIHN0YXJ0ZWQpID0gMDsKICAgICB2aXJ0dWFsIHZv
aWQgZGlkSGFuZGxlQWRkaXRpb25hbERyYWdJdGVtc1JlcXVlc3QoYm9vbCBhZGRlZCkgPSAwOwot
ICAgIHZpcnR1YWwgdm9pZCBkaWRDb25jbHVkZUVkaXREcmFnKE9wdGlvbmFsPFdlYkNvcmU6OlRl
eHRJbmRpY2F0b3JEYXRhPikgPSAwOworICAgIHZpcnR1YWwgdm9pZCB3aWxsUmVjZWl2ZUVkaXRE
cmFnU25hcHNob3QoKSA9IDA7CisgICAgdmlydHVhbCB2b2lkIGRpZFJlY2VpdmVFZGl0RHJhZ1Nu
YXBzaG90KE9wdGlvbmFsPFdlYkNvcmU6OlRleHRJbmRpY2F0b3JEYXRhPikgPSAwOwogICAgIHZp
cnR1YWwgdm9pZCBkaWRDaGFuZ2VEcmFnQ2FyZXRSZWN0KGNvbnN0IFdlYkNvcmU6OkludFJlY3Qm
IHByZXZpb3VzQ2FyZXRSZWN0LCBjb25zdCBXZWJDb3JlOjpJbnRSZWN0JiBjYXJldFJlY3QpID0g
MDsKICNlbmRpZgogCmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViS2l0L1VJUHJvY2Vzcy9XZWJQYWdl
UHJveHkuaCBiL1NvdXJjZS9XZWJLaXQvVUlQcm9jZXNzL1dlYlBhZ2VQcm94eS5oCmluZGV4IDZj
NWFkNjI1ZDEyMDRjN2MwZDgzOTY5OWU3ZTJmNjVhNWJhNjRlMDMuLjYzMWE4ZmU1NDA5NzNhN2Jl
ZmEzMmM3ZjBiMmY5ZGY3YzhmNGZmMDMgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJLaXQvVUlQcm9j
ZXNzL1dlYlBhZ2VQcm94eS5oCisrKyBiL1NvdXJjZS9XZWJLaXQvVUlQcm9jZXNzL1dlYlBhZ2VQ
cm94eS5oCkBAIC03MjYsMTIgKzcyNiwxNCBAQCBwdWJsaWM6CiAgICAgdm9pZCB1cGRhdGVTZWxl
Y3Rpb25XaXRoRGVsdGEoaW50NjRfdCBsb2NhdGlvbkRlbHRhLCBpbnQ2NF90IGxlbmd0aERlbHRh
LCBDb21wbGV0aW9uSGFuZGxlcjx2b2lkKCk+JiYpOwogICAgIHZvaWQgcmVxdWVzdERvY3VtZW50
RWRpdGluZ0NvbnRleHQoV2ViS2l0OjpEb2N1bWVudEVkaXRpbmdDb250ZXh0UmVxdWVzdCwgQ29t
cGxldGlvbkhhbmRsZXI8dm9pZChXZWJLaXQ6OkRvY3VtZW50RWRpdGluZ0NvbnRleHQpPiYmKTsK
ICAgICB2b2lkIGdlbmVyYXRlU3ludGhldGljRWRpdGluZ0NvbW1hbmQoU3ludGhldGljRWRpdGlu
Z0NvbW1hbmRUeXBlKTsKLSNpZiBFTkFCTEUoREFUQV9JTlRFUkFDVElPTikKKyNpZiBFTkFCTEUo
RFJBR19TVVBQT1JUKQogICAgIHZvaWQgZGlkSGFuZGxlRHJhZ1N0YXJ0UmVxdWVzdChib29sIHN0
YXJ0ZWQpOwogICAgIHZvaWQgZGlkSGFuZGxlQWRkaXRpb25hbERyYWdJdGVtc1JlcXVlc3QoYm9v
bCBhZGRlZCk7CiAgICAgdm9pZCByZXF1ZXN0RHJhZ1N0YXJ0KGNvbnN0IFdlYkNvcmU6OkludFBv
aW50JiBjbGllbnRQb3NpdGlvbiwgY29uc3QgV2ViQ29yZTo6SW50UG9pbnQmIGdsb2JhbFBvc2l0
aW9uLCBXZWJDb3JlOjpEcmFnU291cmNlQWN0aW9uIGFsbG93ZWRBY3Rpb25zKTsKICAgICB2b2lk
IHJlcXVlc3RBZGRpdGlvbmFsSXRlbXNGb3JEcmFnU2Vzc2lvbihjb25zdCBXZWJDb3JlOjpJbnRQ
b2ludCYgY2xpZW50UG9zaXRpb24sIGNvbnN0IFdlYkNvcmU6OkludFBvaW50JiBnbG9iYWxQb3Np
dGlvbiwgV2ViQ29yZTo6RHJhZ1NvdXJjZUFjdGlvbiBhbGxvd2VkQWN0aW9ucyk7Ci0gICAgdm9p
ZCBkaWRDb25jbHVkZUVkaXREcmFnKE9wdGlvbmFsPFdlYkNvcmU6OlRleHRJbmRpY2F0b3JEYXRh
Pik7CisgICAgdm9pZCB3aWxsUmVjZWl2ZUVkaXREcmFnU25hcHNob3QoKTsKKyAgICB2b2lkIGRp
ZFJlY2VpdmVFZGl0RHJhZ1NuYXBzaG90KE9wdGlvbmFsPFdlYkNvcmU6OlRleHRJbmRpY2F0b3JE
YXRhPik7CisgICAgdm9pZCBkaWRDb25jbHVkZURyb3AoKTsKICNlbmRpZgogI2VuZGlmIC8vIFBM
QVRGT1JNKElPU19GQU1JTFkpCiAjaWYgRU5BQkxFKERBVEFfREVURUNUSU9OKQpkaWZmIC0tZ2l0
IGEvU291cmNlL1dlYktpdC9VSVByb2Nlc3MvV2ViUGFnZVByb3h5Lm1lc3NhZ2VzLmluIGIvU291
cmNlL1dlYktpdC9VSVByb2Nlc3MvV2ViUGFnZVByb3h5Lm1lc3NhZ2VzLmluCmluZGV4IDZmY2Vj
ZGM2YjY1ZDg4YzljOTg1ODUzOTVhYjU5ZTdkODEyNmJhMDYuLjQwNDZlMmUyYjI0NjIyOTNlMjlm
YTQ1ODBmMDcxNGE5MGMzOTk4MzMgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJLaXQvVUlQcm9jZXNz
L1dlYlBhZ2VQcm94eS5tZXNzYWdlcy5pbgorKysgYi9Tb3VyY2UvV2ViS2l0L1VJUHJvY2Vzcy9X
ZWJQYWdlUHJveHkubWVzc2FnZXMuaW4KQEAgLTMzMyw3ICszMzMsOCBAQCBtZXNzYWdlcyAtPiBX
ZWJQYWdlUHJveHkgewogI2lmIEVOQUJMRShEQVRBX0lOVEVSQUNUSU9OKQogICAgIERpZEhhbmRs
ZURyYWdTdGFydFJlcXVlc3QoYm9vbCBzdGFydGVkKQogICAgIERpZEhhbmRsZUFkZGl0aW9uYWxE
cmFnSXRlbXNSZXF1ZXN0KGJvb2wgYWRkZWQpCi0gICAgRGlkQ29uY2x1ZGVFZGl0RHJhZyhPcHRp
b25hbDxXZWJDb3JlOjpUZXh0SW5kaWNhdG9yRGF0YT4gdGV4dEluZGljYXRvcikKKyAgICBXaWxs
UmVjZWl2ZUVkaXREcmFnU25hcHNob3QoKQorICAgIERpZFJlY2VpdmVFZGl0RHJhZ1NuYXBzaG90
KE9wdGlvbmFsPFdlYkNvcmU6OlRleHRJbmRpY2F0b3JEYXRhPiB0ZXh0SW5kaWNhdG9yKQogI2Vu
ZGlmCiAKICNpZiBQTEFURk9STShDT0NPQSkKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJLaXQvVUlQ
cm9jZXNzL2lvcy9EcmFnRHJvcEludGVyYWN0aW9uU3RhdGUuaCBiL1NvdXJjZS9XZWJLaXQvVUlQ
cm9jZXNzL2lvcy9EcmFnRHJvcEludGVyYWN0aW9uU3RhdGUuaAppbmRleCBmMTg0OWEyNTJjZDk5
NzJjNmUwMmI3OGJmZDkxY2M3OWEzODBlMTdmLi5mNTdkYjlmMDllMTVkYmM0ZTNiZGMwYjk0MDk1
YjUwODE3ZTgxNDg5IDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViS2l0L1VJUHJvY2Vzcy9pb3MvRHJh
Z0Ryb3BJbnRlcmFjdGlvblN0YXRlLmgKKysrIGIvU291cmNlL1dlYktpdC9VSVByb2Nlc3MvaW9z
L0RyYWdEcm9wSW50ZXJhY3Rpb25TdGF0ZS5oCkBAIC00MCw2ICs0MCw3IEBACiAKIG5hbWVzcGFj
ZSBXZWJDb3JlIHsKIHN0cnVjdCBEcmFnSXRlbTsKK3N0cnVjdCBUZXh0SW5kaWNhdG9yRGF0YTsK
IH0KIAogbmFtZXNwYWNlIFdlYktpdCB7CkBAIC01OCw2ICs1OSwxMSBAQCBzdHJ1Y3QgRHJhZ1Nv
dXJjZVN0YXRlIHsKICAgICBOU0ludGVnZXIgaXRlbUlkZW50aWZpZXIgeyAwIH07CiB9OwogCitz
dHJ1Y3QgSXRlbUFuZFByZXZpZXdQcm92aWRlciB7CisgICAgUmV0YWluUHRyPFVJRHJhZ0l0ZW0+
IGl0ZW07CisgICAgQmxvY2tQdHI8dm9pZChVSVRhcmdldGVkRHJhZ1ByZXZpZXcgKik+IHByb3Zp
ZGVyOworfTsKKwogY2xhc3MgRHJhZ0Ryb3BJbnRlcmFjdGlvblN0YXRlIHsKIHB1YmxpYzoKICAg
ICBib29sIGFueUFjdGl2ZURyYWdTb3VyY2VJcyhXZWJDb3JlOjpEcmFnU291cmNlQWN0aW9uKSBj
b25zdDsKQEAgLTkyLDYgKzk4LDEwIEBAIHB1YmxpYzoKICAgICBCbG9ja1B0cjx2b2lkKCk+IHRh
a2VEcmFnQ2FuY2VsU2V0RG93bkJsb2NrKCkgeyByZXR1cm4gV1RGTW92ZShtX2RyYWdDYW5jZWxT
ZXREb3duQmxvY2spOyB9CiAgICAgQmxvY2tQdHI8dm9pZChOU0FycmF5PFVJRHJhZ0l0ZW0gKj4g
Kik+IHRha2VBZGREcmFnSXRlbUNvbXBsZXRpb25CbG9jaygpIHsgcmV0dXJuIFdURk1vdmUobV9h
ZGREcmFnSXRlbUNvbXBsZXRpb25CbG9jayk7IH0KIAorICAgIHZvaWQgcHJlcGFyZUZvckRlbGF5
ZWREcm9wUHJldmlldyhVSURyYWdJdGVtICosIHZvaWQoXnByb3ZpZGVyKShVSVRhcmdldGVkRHJh
Z1ByZXZpZXcgKnByZXZpZXcpKTsKKyAgICB2b2lkIGRlbGl2ZXJEZWxheWVkRHJvcFByZXZpZXco
VUlWaWV3ICpjb250ZW50VmlldywgVUlWaWV3ICpwcmV2aWV3Q29udGFpbmVyLCBjb25zdCBXZWJD
b3JlOjpUZXh0SW5kaWNhdG9yRGF0YSYpOworICAgIHZvaWQgY2xlYXJBbGxEZWxheWVkSXRlbVBy
ZXZpZXdQcm92aWRlcnMoKTsKKwogcHJpdmF0ZToKICAgICB2b2lkIHVwZGF0ZVByZXZpZXdzRm9y
QWN0aXZlRHJhZ1NvdXJjZXMoKTsKICAgICBPcHRpb25hbDxEcmFnU291cmNlU3RhdGU+IGFjdGl2
ZURyYWdTb3VyY2VGb3JJdGVtKFVJRHJhZ0l0ZW0gKikgY29uc3Q7CkBAIC0xMDgsNiArMTE4LDcg
QEAgcHJpdmF0ZToKIAogICAgIE9wdGlvbmFsPERyYWdTb3VyY2VTdGF0ZT4gbV9zdGFnZWREcmFn
U291cmNlOwogICAgIFZlY3RvcjxEcmFnU291cmNlU3RhdGU+IG1fYWN0aXZlRHJhZ1NvdXJjZXM7
CisgICAgVmVjdG9yPEl0ZW1BbmRQcmV2aWV3UHJvdmlkZXI+IG1fZGVsYXllZEl0ZW1QcmV2aWV3
UHJvdmlkZXJzOwogfTsKIAogfSAvLyBuYW1lc3BhY2UgV2ViS2l0CmRpZmYgLS1naXQgYS9Tb3Vy
Y2UvV2ViS2l0L1VJUHJvY2Vzcy9pb3MvRHJhZ0Ryb3BJbnRlcmFjdGlvblN0YXRlLm1tIGIvU291
cmNlL1dlYktpdC9VSVByb2Nlc3MvaW9zL0RyYWdEcm9wSW50ZXJhY3Rpb25TdGF0ZS5tbQppbmRl
eCAwNjcwYzQ1OWM2YTg1MWM0MDdiYzliMjc2ODExYmE4ZGRlYzY4MTU2Li4wZDNiZDBjYmJhNjE1
MWQ1OGJhNjM5ZjQ2NzlmOWY5YWVkODk5ZjU1IDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViS2l0L1VJ
UHJvY2Vzcy9pb3MvRHJhZ0Ryb3BJbnRlcmFjdGlvblN0YXRlLm1tCisrKyBiL1NvdXJjZS9XZWJL
aXQvVUlQcm9jZXNzL2lvcy9EcmFnRHJvcEludGVyYWN0aW9uU3RhdGUubW0KQEAgLTE4Niw2ICsx
ODYsMzAgQEAgdm9pZCBEcmFnRHJvcEludGVyYWN0aW9uU3RhdGU6OmRyYWdTZXNzaW9uV2lsbEJl
Z2luKCkKICAgICB1cGRhdGVQcmV2aWV3c0ZvckFjdGl2ZURyYWdTb3VyY2VzKCk7CiB9CiAKK3Zv
aWQgRHJhZ0Ryb3BJbnRlcmFjdGlvblN0YXRlOjpwcmVwYXJlRm9yRGVsYXllZERyb3BQcmV2aWV3
KFVJRHJhZ0l0ZW0gKml0ZW0sIHZvaWQoXnByb3ZpZGVyKShVSVRhcmdldGVkRHJhZ1ByZXZpZXcg
KnByZXZpZXcpKQoreworICAgIG1fZGVsYXllZEl0ZW1QcmV2aWV3UHJvdmlkZXJzLmFwcGVuZCh7
IGl0ZW0sIHByb3ZpZGVyIH0pOworfQorCit2b2lkIERyYWdEcm9wSW50ZXJhY3Rpb25TdGF0ZTo6
ZGVsaXZlckRlbGF5ZWREcm9wUHJldmlldyhVSVZpZXcgKmNvbnRlbnRWaWV3LCBVSVZpZXcgKnBy
ZXZpZXdDb250YWluZXIsIGNvbnN0IFdlYkNvcmU6OlRleHRJbmRpY2F0b3JEYXRhJiBpbmRpY2F0
b3IpCit7CisgICAgaWYgKG1fZGVsYXllZEl0ZW1QcmV2aWV3UHJvdmlkZXJzLmlzRW1wdHkoKSkK
KyAgICAgICAgcmV0dXJuOworCisgICAgYXV0byB0ZXh0SW5kaWNhdG9ySW1hZ2UgPSB1aUltYWdl
Rm9ySW1hZ2UoaW5kaWNhdG9yLmNvbnRlbnRJbWFnZS5nZXQoKSk7CisgICAgVUlUYXJnZXRlZERy
YWdQcmV2aWV3ICpwcmV2aWV3ID0gY3JlYXRlVGFyZ2V0ZWREcmFnUHJldmlldyh0ZXh0SW5kaWNh
dG9ySW1hZ2UuZ2V0KCksIGNvbnRlbnRWaWV3LCBwcmV2aWV3Q29udGFpbmVyLCBpbmRpY2F0b3Iu
dGV4dEJvdW5kaW5nUmVjdEluUm9vdFZpZXdDb29yZGluYXRlcywgaW5kaWNhdG9yLnRleHRSZWN0
c0luQm91bmRpbmdSZWN0Q29vcmRpbmF0ZXMsIFtVSUNvbG9yIGNvbG9yV2l0aENHQ29sb3I6Y2Fj
aGVkQ0dDb2xvcihpbmRpY2F0b3IuZXN0aW1hdGVkQmFja2dyb3VuZENvbG9yKV0sIG5pbCk7Cisg
ICAgZm9yIChhdXRvJiBpdGVtQW5kUHJldmlld1Byb3ZpZGVyIDogbV9kZWxheWVkSXRlbVByZXZp
ZXdQcm92aWRlcnMpCisgICAgICAgIGl0ZW1BbmRQcmV2aWV3UHJvdmlkZXIucHJvdmlkZXIocHJl
dmlldyk7CisgICAgbV9kZWxheWVkSXRlbVByZXZpZXdQcm92aWRlcnMuY2xlYXIoKTsKK30KKwor
dm9pZCBEcmFnRHJvcEludGVyYWN0aW9uU3RhdGU6OmNsZWFyQWxsRGVsYXllZEl0ZW1QcmV2aWV3
UHJvdmlkZXJzKCkKK3sKKyAgICBmb3IgKGF1dG8mIGl0ZW1BbmRQcmV2aWV3UHJvdmlkZXIgOiBt
X2RlbGF5ZWRJdGVtUHJldmlld1Byb3ZpZGVycykKKyAgICAgICAgaXRlbUFuZFByZXZpZXdQcm92
aWRlci5wcm92aWRlcihuaWwpOworICAgIG1fZGVsYXllZEl0ZW1QcmV2aWV3UHJvdmlkZXJzLmNs
ZWFyKCk7Cit9CisKIFVJVGFyZ2V0ZWREcmFnUHJldmlldyAqRHJhZ0Ryb3BJbnRlcmFjdGlvblN0
YXRlOjpwcmV2aWV3Rm9yRHJhZ0l0ZW0oVUlEcmFnSXRlbSAqaXRlbSwgVUlWaWV3ICpjb250ZW50
VmlldywgVUlWaWV3ICpwcmV2aWV3Q29udGFpbmVyKSBjb25zdAogewogICAgIGF1dG8gZm91bmRT
b3VyY2UgPSBhY3RpdmVEcmFnU291cmNlRm9ySXRlbShpdGVtKTsKQEAgLTI2Niw2ICsyOTAsOCBA
QCB2b2lkIERyYWdEcm9wSW50ZXJhY3Rpb25TdGF0ZTo6Y2xlYXJTdGFnZWREcmFnU291cmNlKERp
ZEJlY29tZUFjdGl2ZSBkaWRCZWNvbWVBYwogCiB2b2lkIERyYWdEcm9wSW50ZXJhY3Rpb25TdGF0
ZTo6ZHJhZ0FuZERyb3BTZXNzaW9uc0RpZEVuZCgpCiB7CisgICAgY2xlYXJBbGxEZWxheWVkSXRl
bVByZXZpZXdQcm92aWRlcnMoKTsKKwogICAgIC8vIElmIGFueSBvZiBVSUtpdCdzIGNvbXBsZXRp
b24gYmxvY2tzIGFyZSBzdGlsbCBpbi1mbGlnaHQgd2hlbiB0aGUgZHJhZyBpbnRlcmFjdGlvbiBl
bmRzLCB3ZSBuZWVkIHRvIGVuc3VyZSB0aGF0IHRoZXkgYXJlIHN0aWxsIGludm9rZWQKICAgICAv
LyB0byBwcmV2ZW50IFVJS2l0IGZyb20gZ2V0dGluZyBpbnRvIGFuIGluY29uc2lzdGVudCBzdGF0
ZS4KICAgICBpZiAoYXV0byBjb21wbGV0aW9uQmxvY2sgPSB0YWtlRHJhZ0NhbmNlbFNldERvd25C
bG9jaygpKQpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYktpdC9VSVByb2Nlc3MvaW9zL1BhZ2VDbGll
bnRJbXBsSU9TLmggYi9Tb3VyY2UvV2ViS2l0L1VJUHJvY2Vzcy9pb3MvUGFnZUNsaWVudEltcGxJ
T1MuaAppbmRleCA4NzZhYzkxMDgwOGQyZTk3ZDAxOGVjNjJlZWQ3OWQzYzcwNTA3OTFiLi40MTNj
OTNiM2FjMDVlNmM1ZjY1MzdkNDlmNTEyODIzNWVmNWM0YTBmIDEwMDY0NAotLS0gYS9Tb3VyY2Uv
V2ViS2l0L1VJUHJvY2Vzcy9pb3MvUGFnZUNsaWVudEltcGxJT1MuaAorKysgYi9Tb3VyY2UvV2Vi
S2l0L1VJUHJvY2Vzcy9pb3MvUGFnZUNsaWVudEltcGxJT1MuaApAQCAtMjM3LDcgKzIzNyw4IEBA
IHByaXZhdGU6CiAgICAgdm9pZCBkaWRIYW5kbGVEcmFnU3RhcnRSZXF1ZXN0KGJvb2wgc3RhcnRl
ZCkgb3ZlcnJpZGU7CiAgICAgdm9pZCBkaWRIYW5kbGVBZGRpdGlvbmFsRHJhZ0l0ZW1zUmVxdWVz
dChib29sIGFkZGVkKSBvdmVycmlkZTsKICAgICB2b2lkIHN0YXJ0RHJhZyhjb25zdCBXZWJDb3Jl
OjpEcmFnSXRlbSYsIGNvbnN0IFNoYXJlYWJsZUJpdG1hcDo6SGFuZGxlJiBpbWFnZSkgb3ZlcnJp
ZGU7Ci0gICAgdm9pZCBkaWRDb25jbHVkZUVkaXREcmFnKE9wdGlvbmFsPFdlYkNvcmU6OlRleHRJ
bmRpY2F0b3JEYXRhPikgb3ZlcnJpZGU7CisgICAgdm9pZCB3aWxsUmVjZWl2ZUVkaXREcmFnU25h
cHNob3QoKSBvdmVycmlkZTsKKyAgICB2b2lkIGRpZFJlY2VpdmVFZGl0RHJhZ1NuYXBzaG90KE9w
dGlvbmFsPFdlYkNvcmU6OlRleHRJbmRpY2F0b3JEYXRhPikgb3ZlcnJpZGU7CiAgICAgdm9pZCBk
aWRDaGFuZ2VEcmFnQ2FyZXRSZWN0KGNvbnN0IFdlYkNvcmU6OkludFJlY3QmIHByZXZpb3VzQ2Fy
ZXRSZWN0LCBjb25zdCBXZWJDb3JlOjpJbnRSZWN0JiBjYXJldFJlY3QpIG92ZXJyaWRlOwogI2Vu
ZGlmCiAKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJLaXQvVUlQcm9jZXNzL2lvcy9QYWdlQ2xpZW50
SW1wbElPUy5tbSBiL1NvdXJjZS9XZWJLaXQvVUlQcm9jZXNzL2lvcy9QYWdlQ2xpZW50SW1wbElP
Uy5tbQppbmRleCAwOTUzMmZmMjdlOTlmNGU5Yzg5M2FkYzgxOGRmOTBkMjRmYTE2MjFhLi4yNjdi
ZDQzYmRkMTAxY2RhOTQ2Zjg0ODhhMTc1MzMzMzQ2Y2RkMTEwIDEwMDY0NAotLS0gYS9Tb3VyY2Uv
V2ViS2l0L1VJUHJvY2Vzcy9pb3MvUGFnZUNsaWVudEltcGxJT1MubW0KKysrIGIvU291cmNlL1dl
YktpdC9VSVByb2Nlc3MvaW9zL1BhZ2VDbGllbnRJbXBsSU9TLm1tCkBAIC04MjAsOSArODIwLDE0
IEBAIHZvaWQgUGFnZUNsaWVudEltcGw6OnN0YXJ0RHJhZyhjb25zdCBEcmFnSXRlbSYgaXRlbSwg
Y29uc3QgU2hhcmVhYmxlQml0bWFwOjpIYW5kCiAgICAgW21fY29udGVudFZpZXcgX3N0YXJ0RHJh
ZzpTaGFyZWFibGVCaXRtYXA6OmNyZWF0ZShpbWFnZSktPm1ha2VDR0ltYWdlQ29weSgpIGl0ZW06
aXRlbV07CiB9CiAKLXZvaWQgUGFnZUNsaWVudEltcGw6OmRpZENvbmNsdWRlRWRpdERyYWcoT3B0
aW9uYWw8VGV4dEluZGljYXRvckRhdGE+IGRhdGEpCit2b2lkIFBhZ2VDbGllbnRJbXBsOjp3aWxs
UmVjZWl2ZUVkaXREcmFnU25hcHNob3QoKQogewotICAgIFttX2NvbnRlbnRWaWV3IF9kaWRDb25j
bHVkZUVkaXREcmFnOmRhdGFdOworICAgIFttX2NvbnRlbnRWaWV3IF93aWxsUmVjZWl2ZUVkaXRE
cmFnU25hcHNob3RdOworfQorCit2b2lkIFBhZ2VDbGllbnRJbXBsOjpkaWRSZWNlaXZlRWRpdERy
YWdTbmFwc2hvdChPcHRpb25hbDxUZXh0SW5kaWNhdG9yRGF0YT4gZGF0YSkKK3sKKyAgICBbbV9j
b250ZW50VmlldyBfZGlkUmVjZWl2ZUVkaXREcmFnU25hcHNob3Q6ZGF0YV07CiB9CiAKIHZvaWQg
UGFnZUNsaWVudEltcGw6OmRpZENoYW5nZURyYWdDYXJldFJlY3QoY29uc3QgSW50UmVjdCYgcHJl
dmlvdXNDYXJldFJlY3QsIGNvbnN0IEludFJlY3QmIGNhcmV0UmVjdCkKZGlmZiAtLWdpdCBhL1Nv
dXJjZS9XZWJLaXQvVUlQcm9jZXNzL2lvcy9XS0NvbnRlbnRWaWV3SW50ZXJhY3Rpb24uaCBiL1Nv
dXJjZS9XZWJLaXQvVUlQcm9jZXNzL2lvcy9XS0NvbnRlbnRWaWV3SW50ZXJhY3Rpb24uaAppbmRl
eCBjOTJiM2Y5ZDIyMDg3MjBhY2IzMWFiOTg5NGNkNzQyZjliZGY5NWVmLi4wOGI2NGQyYjFmYzUw
NWM5ZDQxYzAyZjM5MzcyZDQwYzI4YjYwM2E3IDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViS2l0L1VJ
UHJvY2Vzcy9pb3MvV0tDb250ZW50Vmlld0ludGVyYWN0aW9uLmgKKysrIGIvU291cmNlL1dlYktp
dC9VSVByb2Nlc3MvaW9zL1dLQ29udGVudFZpZXdJbnRlcmFjdGlvbi5oCkBAIC0zMzQsNiArMzM0
LDcgQEAgc3RydWN0IFdLQXV0b0NvcnJlY3Rpb25EYXRhIHsKICAgICBCT09MIF9pc0JsdXJyaW5n
Rm9jdXNlZEVsZW1lbnQ7CiAKICAgICBCT09MIF9mb2N1c1JlcXVpcmVzU3Ryb25nUGFzc3dvcmRB
c3Npc3RhbmNlOworICAgIEJPT0wgX3dhaXRpbmdGb3JFZGl0RHJhZ1NuYXBzaG90OwogCiAgICAg
Qk9PTCBfaGFzU2V0VXBJbnRlcmFjdGlvbnM7CiAgICAgTlNVSW50ZWdlciBfaWdub3JlU2VsZWN0
aW9uQ29tbWFuZEZhZGVDb3VudDsKQEAgLTM0NSw5ICszNDYsMTAgQEAgc3RydWN0IFdLQXV0b0Nv
cnJlY3Rpb25EYXRhIHsKICAgICBSZXRhaW5QdHI8VUlEcmFnSW50ZXJhY3Rpb24+IF9kcmFnSW50
ZXJhY3Rpb247CiAgICAgUmV0YWluUHRyPFVJRHJvcEludGVyYWN0aW9uPiBfZHJvcEludGVyYWN0
aW9uOwogICAgIEJPT0wgX3Nob3VsZFJlc3RvcmVDYWxsb3V0QmFyQWZ0ZXJEcm9wOwotICAgIEJP
T0wgX2lzQW5pbWF0aW5nQ29uY2x1ZGVFZGl0RHJhZzsKICAgICBSZXRhaW5QdHI8VUlWaWV3PiBf
dmlzaWJsZUNvbnRlbnRWaWV3U25hcHNob3Q7CisgICAgUmV0YWluUHRyPFVJVmlldz4gX3Vuc2Vs
ZWN0ZWRDb250ZW50U25hcHNob3Q7CiAgICAgUmV0YWluUHRyPF9VSVRleHREcmFnQ2FyZXRWaWV3
PiBfZWRpdERyb3BDYXJldFZpZXc7CisgICAgQmxvY2tQdHI8dm9pZCgpPiBfYWN0aW9uVG9QZXJm
b3JtQWZ0ZXJSZWNlaXZpbmdFZGl0RHJhZ1NuYXBzaG90OwogI2VuZGlmCiAKICNpZiBQTEFURk9S
TShXQVRDSE9TKQpAQCAtNDkwLDcgKzQ5Miw4IEBAIEZPUl9FQUNIX1BSSVZBVEVfV0tDT05URU5U
VklFV19BQ1RJT04oREVDTEFSRV9XS0NPTlRFTlRWSUVXX0FDVElPTl9GT1JfV0VCX1ZJRVcpCiAt
ICh2b2lkKV9kaWRIYW5kbGVEcmFnU3RhcnRSZXF1ZXN0OihCT09MKXN0YXJ0ZWQ7CiAtICh2b2lk
KV9kaWRIYW5kbGVBZGRpdGlvbmFsRHJhZ0l0ZW1zUmVxdWVzdDooQk9PTClhZGRlZDsKIC0gKHZv
aWQpX3N0YXJ0RHJhZzooUmV0YWluUHRyPENHSW1hZ2VSZWY+KWltYWdlIGl0ZW06KGNvbnN0IFdl
YkNvcmU6OkRyYWdJdGVtJilpdGVtOwotLSAodm9pZClfZGlkQ29uY2x1ZGVFZGl0RHJhZzooT3B0
aW9uYWw8V2ViQ29yZTo6VGV4dEluZGljYXRvckRhdGE+KWRhdGE7CistICh2b2lkKV93aWxsUmVj
ZWl2ZUVkaXREcmFnU25hcHNob3Q7CistICh2b2lkKV9kaWRSZWNlaXZlRWRpdERyYWdTbmFwc2hv
dDooT3B0aW9uYWw8V2ViQ29yZTo6VGV4dEluZGljYXRvckRhdGE+KWRhdGE7CiAtICh2b2lkKV9k
aWRDaGFuZ2VEcmFnQ2FyZXRSZWN0OihDR1JlY3QpcHJldmlvdXNSZWN0IGN1cnJlbnRSZWN0OihD
R1JlY3QpcmVjdDsKICNlbmRpZgogCkBAIC01MTcsNiArNTIwLDcgQEAgRk9SX0VBQ0hfUFJJVkFU
RV9XS0NPTlRFTlRWSUVXX0FDVElPTihERUNMQVJFX1dLQ09OVEVOVFZJRVdfQUNUSU9OX0ZPUl9X
RUJfVklFVykKIC0gKHZvaWQpc2VsZWN0Rm9ybUFjY2Vzc29yeVBpY2tlclJvdzooTlNJbnRlZ2Vy
KXJvd0luZGV4OwogLSAodm9pZClzZXRUaW1lUGlja2VyVmFsdWVUb0hvdXI6KE5TSW50ZWdlcilo
b3VyIG1pbnV0ZTooTlNJbnRlZ2VyKW1pbnV0ZTsKIC0gKE5TRGljdGlvbmFyeSAqKV9jb250ZW50
c09mVXNlckludGVyZmFjZUl0ZW06KE5TU3RyaW5nICopdXNlckludGVyZmFjZUl0ZW07CistICh2
b2lkKV9kb0FmdGVyUmVjZWl2aW5nRWRpdERyYWdTbmFwc2hvdEZvclRlc3Rpbmc6KGRpc3BhdGNo
X2Jsb2NrX3QpYWN0aW9uOwogCiBAcHJvcGVydHkgKG5vbmF0b21pYywgcmVhZG9ubHkpIE5TU3Ry
aW5nICp0ZXh0Q29udGVudFR5cGVGb3JUZXN0aW5nOwogQHByb3BlcnR5IChub25hdG9taWMsIHJl
YWRvbmx5KSBOU1N0cmluZyAqc2VsZWN0Rm9ybVBvcG92ZXJUaXRsZTsKZGlmZiAtLWdpdCBhL1Nv
dXJjZS9XZWJLaXQvVUlQcm9jZXNzL2lvcy9XS0NvbnRlbnRWaWV3SW50ZXJhY3Rpb24ubW0gYi9T
b3VyY2UvV2ViS2l0L1VJUHJvY2Vzcy9pb3MvV0tDb250ZW50Vmlld0ludGVyYWN0aW9uLm1tCmlu
ZGV4IDI0MDc3ZGFmOTM4N2UxZWVkZDNjMzdlNDYyMGIyYmY5YWI4NmJmMzQuLjM2MzY3YTNmOGRm
OTIyZWQ0N2VjMWJiYmI3MWJlYmNhNWNhMGYyNDUgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJLaXQv
VUlQcm9jZXNzL2lvcy9XS0NvbnRlbnRWaWV3SW50ZXJhY3Rpb24ubW0KKysrIGIvU291cmNlL1dl
YktpdC9VSVByb2Nlc3MvaW9zL1dLQ29udGVudFZpZXdJbnRlcmFjdGlvbi5tbQpAQCAtODQxLDYg
Kzg0MSw3IEBAIC0gKHZvaWQpY2xlYW51cEludGVyYWN0aW9uCiAgICAgX291dHN0YW5kaW5nUG9z
aXRpb25JbmZvcm1hdGlvblJlcXVlc3QgPSBXVEY6Om51bGxvcHQ7CiAKICAgICBfZm9jdXNSZXF1
aXJlc1N0cm9uZ1Bhc3N3b3JkQXNzaXN0YW5jZSA9IE5POworICAgIF93YWl0aW5nRm9yRWRpdERy
YWdTbmFwc2hvdCA9IE5POwogCiAjaWYgVVNFKFVJS0lUX0tFWUJPQVJEX0FERElUSU9OUykKICAg
ICBfY2FuZGlkYXRlVmlld05lZWRzVXBkYXRlID0gTk87CkBAIC02MjY5LDYgKzYyNzAsOSBAQCAt
IChXZWJDb3JlOjpEcmFnRGF0YSlkcmFnRGF0YUZvckRyb3BTZXNzaW9uOihpZCA8VUlEcm9wU2Vz
c2lvbj4pc2Vzc2lvbiBkcmFnRGVzdAogCiAtICh2b2lkKWNsZWFuVXBEcmFnU291cmNlU2Vzc2lv
blN0YXRlCiB7CisgICAgaWYgKF93YWl0aW5nRm9yRWRpdERyYWdTbmFwc2hvdCkKKyAgICAgICAg
cmV0dXJuOworCiAgICAgaWYgKF9kcmFnRHJvcEludGVyYWN0aW9uU3RhdGUuZHJhZ1Nlc3Npb24o
KSB8fCBfZHJhZ0Ryb3BJbnRlcmFjdGlvblN0YXRlLmlzUGVyZm9ybWluZ0Ryb3AoKSkKICAgICAg
ICAgUkVMRUFTRV9MT0coRHJhZ0FuZERyb3AsICJDbGVhbmluZyB1cCBkcmFnZ2luZyBzdGF0ZSAo
aGFzIHBlbmRpbmcgb3BlcmF0aW9uOiAlZCkiLCBbW1dlYkl0ZW1Qcm92aWRlclBhc3RlYm9hcmQg
c2hhcmVkSW5zdGFuY2VdIGhhc1BlbmRpbmdPcGVyYXRpb25dKTsKIApAQCAtNjI4MSwxMSArNjI4
NSw5IEBAIC0gKHZvaWQpY2xlYW5VcERyYWdTb3VyY2VTZXNzaW9uU3RhdGUKICAgICBbW1dlYkl0
ZW1Qcm92aWRlclBhc3RlYm9hcmQgc2hhcmVkSW5zdGFuY2VdIHN0YWdlUmVnaXN0cmF0aW9uTGlz
dDpuaWxdOwogICAgIFtzZWxmIF9yZXN0b3JlQ2FsbG91dEJhcklmTmVlZGVkXTsKIAotICAgIFtf
dmlzaWJsZUNvbnRlbnRWaWV3U25hcHNob3QgcmVtb3ZlRnJvbVN1cGVydmlld107Ci0gICAgX3Zp
c2libGVDb250ZW50Vmlld1NuYXBzaG90ID0gbmlsOworICAgIFtzdGQ6OmV4Y2hhbmdlKF92aXNp
YmxlQ29udGVudFZpZXdTbmFwc2hvdCwgbmlsKSByZW1vdmVGcm9tU3VwZXJ2aWV3XTsKICAgICBb
X2VkaXREcm9wQ2FyZXRWaWV3IHJlbW92ZV07CiAgICAgX2VkaXREcm9wQ2FyZXRWaWV3ID0gbmls
OwotICAgIF9pc0FuaW1hdGluZ0NvbmNsdWRlRWRpdERyYWcgPSBOTzsKICAgICBfc2hvdWxkUmVz
dG9yZUNhbGxvdXRCYXJBZnRlckRyb3AgPSBOTzsKIAogICAgIF9kcmFnRHJvcEludGVyYWN0aW9u
U3RhdGUuZHJhZ0FuZERyb3BTZXNzaW9uc0RpZEVuZCgpOwpAQCAtNjMwNywxMSArNjMwOSwzMyBA
QCBzdGF0aWMgTlNBcnJheTxOU0l0ZW1Qcm92aWRlciAqPiAqZXh0cmFjdEl0ZW1Qcm92aWRlcnNG
cm9tRHJvcFNlc3Npb24oaWQgPFVJRHJvcAogICAgIHJldHVybiBleHRyYWN0SXRlbVByb3ZpZGVy
c0Zyb21EcmFnSXRlbXMoc2Vzc2lvbi5pdGVtcyk7CiB9CiAKLS0gKHZvaWQpX2RpZENvbmNsdWRl
RWRpdERyYWc6KE9wdGlvbmFsPFdlYkNvcmU6OlRleHRJbmRpY2F0b3JEYXRhPilkYXRhCistICh2
b2lkKV93aWxsUmVjZWl2ZUVkaXREcmFnU25hcHNob3QKK3sKKyAgICBfd2FpdGluZ0ZvckVkaXRE
cmFnU25hcHNob3QgPSBZRVM7Cit9CisKKy0gKHZvaWQpX2RpZFJlY2VpdmVFZGl0RHJhZ1NuYXBz
aG90OihPcHRpb25hbDxXZWJDb3JlOjpUZXh0SW5kaWNhdG9yRGF0YT4pZGF0YQoreworICAgIF93
YWl0aW5nRm9yRWRpdERyYWdTbmFwc2hvdCA9IE5POworCisgICAgW3NlbGYgX2RlbGl2ZXJEZWxh
eWVkRHJvcFByZXZpZXdJZlBvc3NpYmxlOmRhdGFdOworICAgIFtzZWxmIGNsZWFuVXBEcmFnU291
cmNlU2Vzc2lvblN0YXRlXTsKKworICAgIGlmIChhdXRvIGFjdGlvbiA9IFdURk1vdmUoX2FjdGlv
blRvUGVyZm9ybUFmdGVyUmVjZWl2aW5nRWRpdERyYWdTbmFwc2hvdCkpCisgICAgICAgIGFjdGlv
bigpOworfQorCistICh2b2lkKV9kZWxpdmVyRGVsYXllZERyb3BQcmV2aWV3SWZQb3NzaWJsZToo
T3B0aW9uYWw8V2ViQ29yZTo6VGV4dEluZGljYXRvckRhdGE+KWRhdGEKIHsKKyAgICBpZiAoIV92
aXNpYmxlQ29udGVudFZpZXdTbmFwc2hvdCkKKyAgICAgICAgcmV0dXJuOworCiAgICAgaWYgKCFk
YXRhKQogICAgICAgICByZXR1cm47CiAKKyAgICBpZiAoIWRhdGEtPmNvbnRlbnRJbWFnZSkKKyAg
ICAgICAgcmV0dXJuOworCiAgICAgYXV0byBzbmFwc2hvdFdpdGhvdXRTZWxlY3Rpb24gPSBkYXRh
LT5jb250ZW50SW1hZ2VXaXRob3V0U2VsZWN0aW9uOwogICAgIGlmICghc25hcHNob3RXaXRob3V0
U2VsZWN0aW9uKQogICAgICAgICByZXR1cm47CkBAIC02MzIxLDI1ICs2MzQ1LDExIEBAIC0gKHZv
aWQpX2RpZENvbmNsdWRlRWRpdERyYWc6KE9wdGlvbmFsPFdlYkNvcmU6OlRleHRJbmRpY2F0b3JE
YXRhPilkYXRhCiAgICAgICAgIHJldHVybjsKIAogICAgIGF1dG8gdW5zZWxlY3RlZENvbnRlbnRJ
bWFnZUZvckVkaXREcmFnID0gYWRvcHROUyhbW1VJSW1hZ2UgYWxsb2NdIGluaXRXaXRoQ0dJbWFn
ZTp1bnNlbGVjdGVkU25hcHNob3RJbWFnZS5nZXQoKSBzY2FsZTpfcGFnZS0+ZGV2aWNlU2NhbGVG
YWN0b3IoKSBvcmllbnRhdGlvbjpVSUltYWdlT3JpZW50YXRpb25VcF0pOwotICAgIGF1dG8gdW5z
ZWxlY3RlZENvbnRlbnRTbmFwc2hvdCA9IGFkb3B0TlMoW1tVSUltYWdlVmlldyBhbGxvY10gaW5p
dFdpdGhJbWFnZTp1bnNlbGVjdGVkQ29udGVudEltYWdlRm9yRWRpdERyYWcuZ2V0KCldKTsKLSAg
ICBbdW5zZWxlY3RlZENvbnRlbnRTbmFwc2hvdCBzZXRGcmFtZTpkYXRhLT5jb250ZW50SW1hZ2VX
aXRob3V0U2VsZWN0aW9uUmVjdEluUm9vdFZpZXdDb29yZGluYXRlc107Ci0KLSAgICBhdXRvIHBy
b3RlY3RlZFNlbGYgPSByZXRhaW5QdHIoc2VsZik7Ci0gICAgYXV0byB2aXNpYmxlQ29udGVudFZp
ZXdTbmFwc2hvdCA9IGFkb3B0TlMoX3Zpc2libGVDb250ZW50Vmlld1NuYXBzaG90LmxlYWtSZWYo
KSk7Ci0KLSAgICBfaXNBbmltYXRpbmdDb25jbHVkZUVkaXREcmFnID0gWUVTOwotICAgIFtzZWxm
IGluc2VydFN1YnZpZXc6dW5zZWxlY3RlZENvbnRlbnRTbmFwc2hvdC5nZXQoKSBiZWxvd1N1YnZp
ZXc6dmlzaWJsZUNvbnRlbnRWaWV3U25hcHNob3QuZ2V0KCldOwotICAgIFtVSVZpZXcgYW5pbWF0
ZVdpdGhEdXJhdGlvbjowLjI1IGFuaW1hdGlvbnM6XigpIHsKLSAgICAgICAgW3Zpc2libGVDb250
ZW50Vmlld1NuYXBzaG90IHNldEFscGhhOjBdOwotICAgIH0gY29tcGxldGlvbjpeKEJPT0wgY29t
cGxldGVkKSB7Ci0gICAgICAgIFt2aXNpYmxlQ29udGVudFZpZXdTbmFwc2hvdCByZW1vdmVGcm9t
U3VwZXJ2aWV3XTsKLSAgICAgICAgW1VJVmlldyBhbmltYXRlV2l0aER1cmF0aW9uOjAuMjUgYW5p
bWF0aW9uczpeKCkgewotICAgICAgICAgICAgW3Byb3RlY3RlZFNlbGYgX3N0b3BTdXBwcmVzc2lu
Z1NlbGVjdGlvbkFzc2lzdGFudEZvclJlYXNvbjpXZWJLaXQ6OkRyb3BBbmltYXRpb25Jc1J1bm5p
bmddOwotICAgICAgICAgICAgW3Vuc2VsZWN0ZWRDb250ZW50U25hcHNob3Qgc2V0QWxwaGE6MF07
Ci0gICAgICAgIH0gY29tcGxldGlvbjpeKEJPT0wgY29tcGxldGVkKSB7Ci0gICAgICAgICAgICBb
dW5zZWxlY3RlZENvbnRlbnRTbmFwc2hvdCByZW1vdmVGcm9tU3VwZXJ2aWV3XTsKLSAgICAgICAg
fV07Ci0gICAgfV07CisgICAgX3Vuc2VsZWN0ZWRDb250ZW50U25hcHNob3QgPSBhZG9wdE5TKFtb
VUlJbWFnZVZpZXcgYWxsb2NdIGluaXRXaXRoSW1hZ2U6dW5zZWxlY3RlZENvbnRlbnRJbWFnZUZv
ckVkaXREcmFnLmdldCgpXSk7CisgICAgW191bnNlbGVjdGVkQ29udGVudFNuYXBzaG90IHNldEZy
YW1lOmRhdGEtPmNvbnRlbnRJbWFnZVdpdGhvdXRTZWxlY3Rpb25SZWN0SW5Sb290Vmlld0Nvb3Jk
aW5hdGVzXTsKKworICAgIFtzZWxmIGluc2VydFN1YnZpZXc6X3Vuc2VsZWN0ZWRDb250ZW50U25h
cHNob3QuZ2V0KCkgYmVsb3dTdWJ2aWV3Ol92aXNpYmxlQ29udGVudFZpZXdTbmFwc2hvdC5nZXQo
KV07CisgICAgX2RyYWdEcm9wSW50ZXJhY3Rpb25TdGF0ZS5kZWxpdmVyRGVsYXllZERyb3BQcmV2
aWV3KHNlbGYsIHNlbGYudW5zY2FsZWRWaWV3LCBkYXRhLnZhbHVlKCkpOwogfQogCiAtICh2b2lk
KV9kaWRQZXJmb3JtRHJhZ09wZXJhdGlvbjooQk9PTCloYW5kbGVkCkBAIC02MzUwLDkgKzYzNjAs
NiBAQCAtICh2b2lkKV9kaWRQZXJmb3JtRHJhZ09wZXJhdGlvbjooQk9PTCloYW5kbGVkCiAgICAg
aWYgKFtzZWxmLndlYlZpZXdVSURlbGVnYXRlIHJlc3BvbmRzVG9TZWxlY3RvcjpAc2VsZWN0b3Io
X3dlYlZpZXc6ZGF0YUludGVyYWN0aW9uT3BlcmF0aW9uV2FzSGFuZGxlZDpmb3JTZXNzaW9uOml0
ZW1Qcm92aWRlcnM6KV0pCiAgICAgICAgIFtzZWxmLndlYlZpZXdVSURlbGVnYXRlIF93ZWJWaWV3
Ol93ZWJWaWV3IGRhdGFJbnRlcmFjdGlvbk9wZXJhdGlvbldhc0hhbmRsZWQ6aGFuZGxlZCBmb3JT
ZXNzaW9uOmRyb3BTZXNzaW9uIGl0ZW1Qcm92aWRlcnM6W1dlYkl0ZW1Qcm92aWRlclBhc3RlYm9h
cmQgc2hhcmVkSW5zdGFuY2VdLml0ZW1Qcm92aWRlcnNdOwogCi0gICAgaWYgKCFfaXNBbmltYXRp
bmdDb25jbHVkZUVkaXREcmFnKQotICAgICAgICBbc2VsZiBfc3RvcFN1cHByZXNzaW5nU2VsZWN0
aW9uQXNzaXN0YW50Rm9yUmVhc29uOldlYktpdDo6RHJvcEFuaW1hdGlvbklzUnVubmluZ107Ci0K
ICAgICBDR1BvaW50IGdsb2JhbDsKICAgICBDR1BvaW50IGNsaWVudDsKICAgICBbc2VsZiBjb21w
dXRlQ2xpZW50QW5kR2xvYmFsUG9pbnRzRm9yRHJvcFNlc3Npb246ZHJvcFNlc3Npb24gb3V0Q2xp
ZW50UG9pbnQ6JmNsaWVudCBvdXRHbG9iYWxQb2ludDomZ2xvYmFsXTsKQEAgLTY1MDksNiArNjUx
NiwxNSBAQCAtIChOU0FycmF5PFVJRHJhZ0l0ZW0gKj4gKilfaXRlbXNGb3JCZWdpbm5pbmdPckFk
ZGluZ1RvU2Vzc2lvbldpdGhSZWdpc3RyYXRpb25MaQogICAgIHJldHVybiBkcmFnSXRlbXM7CiB9
CiAKKy0gKFVJVmlldyAqKXRleHRFZmZlY3RzV2luZG93Cit7CisjaWYgSEFWRShVSVNDRU5FKQor
ICAgIHJldHVybiBbVUlUZXh0RWZmZWN0c1dpbmRvdyBzaGFyZWRUZXh0RWZmZWN0c1dpbmRvd0Zv
cldpbmRvd1NjZW5lOnNlbGYud2luZG93LndpbmRvd1NjZW5lXTsKKyNlbHNlCisgICAgcmV0dXJu
IFtVSVRleHRFZmZlY3RzV2luZG93IHNoYXJlZFRleHRFZmZlY3RzV2luZG93XTsKKyNlbmRpZgor
fQorCiAtIChOU0RpY3Rpb25hcnkgKilfYXV0b2ZpbGxDb250ZXh0CiB7CiAgICAgQk9PTCBwcm92
aWRlU3Ryb25nUGFzc3dvcmRBc3Npc3RhbmNlID0gX2ZvY3VzUmVxdWlyZXNTdHJvbmdQYXNzd29y
ZEFzc2lzdGFuY2UgJiYgX2ZvY3VzZWRFbGVtZW50SW5mb3JtYXRpb24uZWxlbWVudFR5cGUgPT0g
V2ViS2l0OjpJbnB1dFR5cGU6OlBhc3N3b3JkOwpAQCAtNjg5MCwyMyArNjkwNiw0MiBAQCAtICh2
b2lkKWRyb3BJbnRlcmFjdGlvbjooVUlEcm9wSW50ZXJhY3Rpb24gKilpbnRlcmFjdGlvbiBwZXJm
b3JtRHJvcDooaWQgPFVJRHJvcAogICAgIH1dOwogfQogCistICh2b2lkKWRyb3BJbnRlcmFjdGlv
bjooVUlEcm9wSW50ZXJhY3Rpb24gKilpbnRlcmFjdGlvbiBpdGVtOihVSURyYWdJdGVtICopaXRl
bSB3aWxsQW5pbWF0ZURyb3BXaXRoQW5pbWF0b3I6KGlkIDxVSURyYWdBbmltYXRpbmc+KWFuaW1h
dG9yCit7CisgICAgW2FuaW1hdG9yIGFkZENvbXBsZXRpb246W3N0cm9uZ1NlbGYgPSByZXRhaW5Q
dHIoc2VsZildIChVSVZpZXdBbmltYXRpbmdQb3NpdGlvbikgeworICAgICAgICBbc3RkOjpleGNo
YW5nZShzdHJvbmdTZWxmLT5fdW5zZWxlY3RlZENvbnRlbnRTbmFwc2hvdCwgbmlsKSByZW1vdmVG
cm9tU3VwZXJ2aWV3XTsKKyAgICB9XTsKK30KKworLSAodm9pZClkcm9wSW50ZXJhY3Rpb246KFVJ
RHJvcEludGVyYWN0aW9uICopaW50ZXJhY3Rpb24gY29uY2x1ZGVEcm9wOihpZCA8VUlEcm9wU2Vz
c2lvbj4pc2Vzc2lvbgoreworICAgIFtzZWxmIF9zdG9wU3VwcHJlc3NpbmdTZWxlY3Rpb25Bc3Np
c3RhbnRGb3JSZWFzb246V2ViS2l0OjpEcm9wQW5pbWF0aW9uSXNSdW5uaW5nXTsKKyAgICBbc3Rk
OjpleGNoYW5nZShfdmlzaWJsZUNvbnRlbnRWaWV3U25hcHNob3QsIG5pbCkgcmVtb3ZlRnJvbVN1
cGVydmlld107CisgICAgW3N0ZDo6ZXhjaGFuZ2UoX3Vuc2VsZWN0ZWRDb250ZW50U25hcHNob3Qs
IG5pbCkgcmVtb3ZlRnJvbVN1cGVydmlld107CisgICAgX2RyYWdEcm9wSW50ZXJhY3Rpb25TdGF0
ZS5jbGVhckFsbERlbGF5ZWRJdGVtUHJldmlld1Byb3ZpZGVycygpOworICAgIF9wYWdlLT5kaWRD
b25jbHVkZURyb3AoKTsKK30KKwogLSAoVUlUYXJnZXRlZERyYWdQcmV2aWV3ICopZHJvcEludGVy
YWN0aW9uOihVSURyb3BJbnRlcmFjdGlvbiAqKWludGVyYWN0aW9uIHByZXZpZXdGb3JEcm9wcGlu
Z0l0ZW06KFVJRHJhZ0l0ZW0gKilpdGVtIHdpdGhEZWZhdWx0OihVSVRhcmdldGVkRHJhZ1ByZXZp
ZXcgKilkZWZhdWx0UHJldmlldwogewogICAgIENHUmVjdCBjYXJldFJlY3QgPSBfcGFnZS0+Y3Vy
cmVudERyYWdDYXJldFJlY3QoKTsKICAgICBpZiAoQ0dSZWN0SXNFbXB0eShjYXJldFJlY3QpKQog
ICAgICAgICByZXR1cm4gbmlsOwogCi1BTExPV19ERVBSRUNBVEVEX0RFQ0xBUkFUSU9OU19CRUdJ
TgotICAgIC8vIEZJWE1FOiA8cmRhcjovL3Byb2JsZW0vMzEwNzQzNzY+IFtXSzJdIFBlcmZvcm1p
bmcgYW4gZWRpdCBkcmFnIHNob3VsZCB0cmFuc2l0aW9uIGZyb20gdGhlIGluaXRpYWwgZHJhZyBw
cmV2aWV3IHRvIHRoZSBmaW5hbCBkcm9wIHByZXZpZXcKLSAgICAvLyBUaGlzIGlzIGJsb2NrZWQg
b24gVUlLaXQgc3VwcG9ydCwgc2luY2Ugd2UgYXJlbid0IGFibGUgdG8gdXBkYXRlIHRoZSB0ZXh0
IGNsaXBwaW5nIHJlY3RzIG9mIGEgVUlUYXJnZXRlZERyYWdQcmV2aWV3IG1pZC1mbGlnaHQuIEZv
ciBub3csCi0gICAgLy8ganVzdCB6b29tIHRvIHRoZSBjZW50ZXIgb2YgdGhlIGNhcmV0IHJlY3Qg
d2hpbGUgc2hyaW5raW5nIHRoZSBkcm9wIHByZXZpZXcuCi0gICAgYXV0byBjYXJldFJlY3RJbldp
bmRvd0Nvb3JkaW5hdGVzID0gW3NlbGYgY29udmVydFJlY3Q6Y2FyZXRSZWN0IHRvVmlldzpbVUlU
ZXh0RWZmZWN0c1dpbmRvdyBzaGFyZWRUZXh0RWZmZWN0c1dpbmRvd11dOworICAgIFVJVmlldyAq
dGV4dEVmZmVjdHNXaW5kb3cgPSBzZWxmLnRleHRFZmZlY3RzV2luZG93OworICAgIGF1dG8gY2Fy
ZXRSZWN0SW5XaW5kb3dDb29yZGluYXRlcyA9IFtzZWxmIGNvbnZlcnRSZWN0OmNhcmV0UmVjdCB0
b1ZpZXc6dGV4dEVmZmVjdHNXaW5kb3ddOwogICAgIGF1dG8gY2FyZXRDZW50ZXJJbldpbmRvd0Nv
b3JkaW5hdGVzID0gQ0dQb2ludE1ha2UoQ0dSZWN0R2V0TWlkWChjYXJldFJlY3RJbldpbmRvd0Nv
b3JkaW5hdGVzKSwgQ0dSZWN0R2V0TWlkWShjYXJldFJlY3RJbldpbmRvd0Nvb3JkaW5hdGVzKSk7
Ci0gICAgYXV0byB0YXJnZXQgPSBhZG9wdE5TKFtbVUlEcmFnUHJldmlld1RhcmdldCBhbGxvY10g
aW5pdFdpdGhDb250YWluZXI6W1VJVGV4dEVmZmVjdHNXaW5kb3cgc2hhcmVkVGV4dEVmZmVjdHNX
aW5kb3ddIGNlbnRlcjpjYXJldENlbnRlckluV2luZG93Q29vcmRpbmF0ZXMgdHJhbnNmb3JtOkNH
QWZmaW5lVHJhbnNmb3JtTWFrZVNjYWxlKDAsIDApXSk7Ci1BTExPV19ERVBSRUNBVEVEX0RFQ0xB
UkFUSU9OU19FTkQKKyAgICBhdXRvIHRhcmdldFByZXZpZXdDZW50ZXJJbldpbmRvd0Nvb3JkaW5h
dGVzID0gQ0dQb2ludE1ha2UoY2FyZXRDZW50ZXJJbldpbmRvd0Nvb3JkaW5hdGVzLnggKyBkZWZh
dWx0UHJldmlldy5zaXplLndpZHRoIC8gMiwgY2FyZXRDZW50ZXJJbldpbmRvd0Nvb3JkaW5hdGVz
LnkgKyBkZWZhdWx0UHJldmlldy5zaXplLmhlaWdodCAvIDIpOworICAgIGF1dG8gdGFyZ2V0ID0g
YWRvcHROUyhbW1VJRHJhZ1ByZXZpZXdUYXJnZXQgYWxsb2NdIGluaXRXaXRoQ29udGFpbmVyOnRl
eHRFZmZlY3RzV2luZG93IGNlbnRlcjp0YXJnZXRQcmV2aWV3Q2VudGVySW5XaW5kb3dDb29yZGlu
YXRlcyB0cmFuc2Zvcm06Q0dBZmZpbmVUcmFuc2Zvcm1JZGVudGl0eV0pOwogICAgIHJldHVybiBb
ZGVmYXVsdFByZXZpZXcgcmV0YXJnZXRlZFByZXZpZXdXaXRoVGFyZ2V0OnRhcmdldC5nZXQoKV07
CiB9CiAKKy0gKHZvaWQpX2Ryb3BJbnRlcmFjdGlvbjooVUlEcm9wSW50ZXJhY3Rpb24gKilpbnRl
cmFjdGlvbiBkZWxheWVkUHJldmlld1Byb3ZpZGVyRm9yRHJvcHBpbmdJdGVtOihVSURyYWdJdGVt
ICopaXRlbSBwcmV2aWV3UHJvdmlkZXI6KHZvaWQoXikoVUlUYXJnZXRlZERyYWdQcmV2aWV3ICpw
cmV2aWV3KSlwcmV2aWV3UHJvdmlkZXIKK3sKKyAgICAvLyBGSVhNRTogVGhpcyBkb2Vzbid0IGN1
cnJlbnRseSBoYW5kbGUgbXVsdGlwbGUgaXRlbXMgaW4gYSBkcm9wIHNlc3Npb24uCisgICAgX2Ry
YWdEcm9wSW50ZXJhY3Rpb25TdGF0ZS5wcmVwYXJlRm9yRGVsYXllZERyb3BQcmV2aWV3KGl0ZW0s
IHByZXZpZXdQcm92aWRlcik7Cit9CisKIC0gKHZvaWQpZHJvcEludGVyYWN0aW9uOihVSURyb3BJ
bnRlcmFjdGlvbiAqKWludGVyYWN0aW9uIHNlc3Npb25EaWRFbmQ6KGlkIDxVSURyb3BTZXNzaW9u
PilzZXNzaW9uCiB7CiAgICAgUkVMRUFTRV9MT0coRHJhZ0FuZERyb3AsICJEcm9wIHNlc3Npb24g
ZW5kZWQ6ICVwIChwZXJmb3JtaW5nIG9wZXJhdGlvbjogJWQsIGJlZ2FuIGRyYWdnaW5nOiAlZCki
LCBzZXNzaW9uLCBfZHJhZ0Ryb3BJbnRlcmFjdGlvblN0YXRlLmlzUGVyZm9ybWluZ0Ryb3AoKSwg
X2RyYWdEcm9wSW50ZXJhY3Rpb25TdGF0ZS5kaWRCZWdpbkRyYWdnaW5nKCkpOwpAQCAtNzE2Niw2
ICs3MjAxLDE1IEBAIEBlbmQKIAogQGltcGxlbWVudGF0aW9uIFdLQ29udGVudFZpZXcgKFdLVGVz
dGluZykKIAorLSAodm9pZClfZG9BZnRlclJlY2VpdmluZ0VkaXREcmFnU25hcHNob3RGb3JUZXN0
aW5nOihkaXNwYXRjaF9ibG9ja190KWFjdGlvbgoreworICAgIEFTU0VSVCghX2FjdGlvblRvUGVy
Zm9ybUFmdGVyUmVjZWl2aW5nRWRpdERyYWdTbmFwc2hvdCk7CisgICAgaWYgKF93YWl0aW5nRm9y
RWRpdERyYWdTbmFwc2hvdCkKKyAgICAgICAgX2FjdGlvblRvUGVyZm9ybUFmdGVyUmVjZWl2aW5n
RWRpdERyYWdTbmFwc2hvdCA9IGFjdGlvbjsKKyAgICBlbHNlCisgICAgICAgIGFjdGlvbigpOwor
fQorCiAtIChXS0Zvcm1JbnB1dENvbnRyb2wgKilmb3JtSW5wdXRDb250cm9sCiB7CiAgICAgaWYg
KFtfaW5wdXRQZXJpcGhlcmFsIGlzS2luZE9mQ2xhc3M6V0tGb3JtSW5wdXRDb250cm9sLmNsYXNz
XSkKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJLaXQvVUlQcm9jZXNzL2lvcy9XZWJQYWdlUHJveHlJ
T1MubW0gYi9Tb3VyY2UvV2ViS2l0L1VJUHJvY2Vzcy9pb3MvV2ViUGFnZVByb3h5SU9TLm1tCmlu
ZGV4IDAzNTg0YjU1MDM4NzNlYTAyZTE1ZGIzNzdlNTRhNmY4ZTEzZGU2ZDQuLjhlOWJlZDVlZmZk
NDNmNzdlOGFlODVlZDg1OGE5MDE1ZGQxODQ1NjAgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJLaXQv
VUlQcm9jZXNzL2lvcy9XZWJQYWdlUHJveHlJT1MubW0KKysrIGIvU291cmNlL1dlYktpdC9VSVBy
b2Nlc3MvaW9zL1dlYlBhZ2VQcm94eUlPUy5tbQpAQCAtMTIxOSw5ICsxMjE5LDE5IEBAIHZvaWQg
V2ViUGFnZVByb3h5OjpyZXF1ZXN0QWRkaXRpb25hbEl0ZW1zRm9yRHJhZ1Nlc3Npb24oY29uc3Qg
SW50UG9pbnQmIGNsaWVudFBvCiAgICAgICAgIG1fcHJvY2Vzcy0+c2VuZChNZXNzYWdlczo6V2Vi
UGFnZTo6UmVxdWVzdEFkZGl0aW9uYWxJdGVtc0ZvckRyYWdTZXNzaW9uKGNsaWVudFBvc2l0aW9u
LCBnbG9iYWxQb3NpdGlvbiwgYWxsb3dlZEFjdGlvbnMpLCBtX3BhZ2VJRCk7CiB9CiAKLXZvaWQg
V2ViUGFnZVByb3h5OjpkaWRDb25jbHVkZUVkaXREcmFnKE9wdGlvbmFsPFRleHRJbmRpY2F0b3JE
YXRhPiBkYXRhKQordm9pZCBXZWJQYWdlUHJveHk6OndpbGxSZWNlaXZlRWRpdERyYWdTbmFwc2hv
dCgpCiB7Ci0gICAgcGFnZUNsaWVudCgpLmRpZENvbmNsdWRlRWRpdERyYWcoZGF0YSk7CisgICAg
cGFnZUNsaWVudCgpLndpbGxSZWNlaXZlRWRpdERyYWdTbmFwc2hvdCgpOworfQorCit2b2lkIFdl
YlBhZ2VQcm94eTo6ZGlkUmVjZWl2ZUVkaXREcmFnU25hcHNob3QoT3B0aW9uYWw8VGV4dEluZGlj
YXRvckRhdGE+IGRhdGEpCit7CisgICAgcGFnZUNsaWVudCgpLmRpZFJlY2VpdmVFZGl0RHJhZ1Nu
YXBzaG90KGRhdGEpOworfQorCit2b2lkIFdlYlBhZ2VQcm94eTo6ZGlkQ29uY2x1ZGVEcm9wKCkK
K3sKKyAgICBtX3Byb2Nlc3MtPnNlbmQoTWVzc2FnZXM6OldlYlBhZ2U6OkRpZENvbmNsdWRlRHJv
cCgpLCBtX3BhZ2VJRCk7CiB9CiAKICNlbmRpZgpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYktpdC9X
ZWJQcm9jZXNzL1dlYkNvcmVTdXBwb3J0L1dlYkNocm9tZUNsaWVudC5jcHAgYi9Tb3VyY2UvV2Vi
S2l0L1dlYlByb2Nlc3MvV2ViQ29yZVN1cHBvcnQvV2ViQ2hyb21lQ2xpZW50LmNwcAppbmRleCA0
OTYyOTZmNmQ4ODEwNTIzOTI0NTE2MDEzMDU2NDZiYjZkNmIxY2NhLi4yNzI2YzIzZDJhNGY0ODQ1
MTBhYjAxODMyMmU3ZDkwMjc5YjE0ZjY3IDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViS2l0L1dlYlBy
b2Nlc3MvV2ViQ29yZVN1cHBvcnQvV2ViQ2hyb21lQ2xpZW50LmNwcAorKysgYi9Tb3VyY2UvV2Vi
S2l0L1dlYlByb2Nlc3MvV2ViQ29yZVN1cHBvcnQvV2ViQ2hyb21lQ2xpZW50LmNwcApAQCAtNTg3
LDYgKzU4NywxMSBAQCBJbnRSZWN0IFdlYkNocm9tZUNsaWVudDo6cm9vdFZpZXdUb0FjY2Vzc2li
aWxpdHlTY3JlZW4oY29uc3QgSW50UmVjdCYgcmVjdCkgY29ucwogICAgIHJldHVybiBtX3BhZ2Uu
cm9vdFZpZXdUb0FjY2Vzc2liaWxpdHlTY3JlZW4ocmVjdCk7CiB9CiAKK3ZvaWQgV2ViQ2hyb21l
Q2xpZW50OjpkaWRGaW5pc2hMb2FkaW5nSW1hZ2VGb3JFbGVtZW50KEhUTUxJbWFnZUVsZW1lbnQm
IGVsZW1lbnQpCit7CisgICAgbV9wYWdlLmRpZEZpbmlzaExvYWRpbmdJbWFnZUZvckVsZW1lbnQo
ZWxlbWVudCk7Cit9CisKIFBsYXRmb3JtUGFnZUNsaWVudCBXZWJDaHJvbWVDbGllbnQ6OnBsYXRm
b3JtUGFnZUNsaWVudCgpIGNvbnN0CiB7CiAgICAgbm90SW1wbGVtZW50ZWQoKTsKZGlmZiAtLWdp
dCBhL1NvdXJjZS9XZWJLaXQvV2ViUHJvY2Vzcy9XZWJDb3JlU3VwcG9ydC9XZWJDaHJvbWVDbGll
bnQuaCBiL1NvdXJjZS9XZWJLaXQvV2ViUHJvY2Vzcy9XZWJDb3JlU3VwcG9ydC9XZWJDaHJvbWVD
bGllbnQuaAppbmRleCBkZDNiMjI1NDM1ZDkyNjM0NDE1OTljODA1YzM2MzczY2YyNjI2MWNlLi5i
Mjg5ZmIyM2ZlNDFhYmJiY2ExY2UxNzJjZThhNGYyNWFjY2Q1ZWMwIDEwMDY0NAotLS0gYS9Tb3Vy
Y2UvV2ViS2l0L1dlYlByb2Nlc3MvV2ViQ29yZVN1cHBvcnQvV2ViQ2hyb21lQ2xpZW50LmgKKysr
IGIvU291cmNlL1dlYktpdC9XZWJQcm9jZXNzL1dlYkNvcmVTdXBwb3J0L1dlYkNocm9tZUNsaWVu
dC5oCkBAIC0yOSw2ICsyOSw3IEBACiAjaW5jbHVkZSA8V2ViQ29yZS9DaHJvbWVDbGllbnQuaD4K
IAogbmFtZXNwYWNlIFdlYkNvcmUgeworY2xhc3MgSFRNTEltYWdlRWxlbWVudDsKIGNsYXNzIFJl
Z2lzdHJhYmxlRG9tYWluOwogZW51bSBjbGFzcyBTdG9yYWdlQWNjZXNzUHJvbXB0V2FzU2hvd24g
OiBib29sOwogZW51bSBjbGFzcyBTdG9yYWdlQWNjZXNzV2FzR3JhbnRlZCA6IGJvb2w7CkBAIC0x
MjEsNiArMTIyLDggQEAgcHJpdmF0ZToKICAgICBXZWJDb3JlOjpJbnRQb2ludCBhY2Nlc3NpYmls
aXR5U2NyZWVuVG9Sb290Vmlldyhjb25zdCBXZWJDb3JlOjpJbnRQb2ludCYpIGNvbnN0IGZpbmFs
OwogICAgIFdlYkNvcmU6OkludFJlY3Qgcm9vdFZpZXdUb0FjY2Vzc2liaWxpdHlTY3JlZW4oY29u
c3QgV2ViQ29yZTo6SW50UmVjdCYpIGNvbnN0IGZpbmFsOwogCisgICAgdm9pZCBkaWRGaW5pc2hM
b2FkaW5nSW1hZ2VGb3JFbGVtZW50KFdlYkNvcmU6OkhUTUxJbWFnZUVsZW1lbnQmKSBmaW5hbDsK
KwogICAgIFBsYXRmb3JtUGFnZUNsaWVudCBwbGF0Zm9ybVBhZ2VDbGllbnQoKSBjb25zdCBmaW5h
bDsKICAgICB2b2lkIGNvbnRlbnRzU2l6ZUNoYW5nZWQoV2ViQ29yZTo6RnJhbWUmLCBjb25zdCBX
ZWJDb3JlOjpJbnRTaXplJikgY29uc3QgZmluYWw7CiAgICAgdm9pZCBpbnRyaW5zaWNDb250ZW50
c1NpemVDaGFuZ2VkKGNvbnN0IFdlYkNvcmU6OkludFNpemUmKSBjb25zdCBmaW5hbDsKZGlmZiAt
LWdpdCBhL1NvdXJjZS9XZWJLaXQvV2ViUHJvY2Vzcy9XZWJQYWdlL1dlYlBhZ2UuY3BwIGIvU291
cmNlL1dlYktpdC9XZWJQcm9jZXNzL1dlYlBhZ2UvV2ViUGFnZS5jcHAKaW5kZXggM2JhYWZkMTg1
NGNiYzk5NWNhNGU4OTgwM2UzYjQ0MTgyM2ViNjE2NS4uMjY2ODJmZjI0N2JiZDQ5ZmFjNDM4YWM4
ZjY2YjY1NDdmZGY2NTc0ZCAxMDA2NDQKLS0tIGEvU291cmNlL1dlYktpdC9XZWJQcm9jZXNzL1dl
YlBhZ2UvV2ViUGFnZS5jcHAKKysrIGIvU291cmNlL1dlYktpdC9XZWJQcm9jZXNzL1dlYlBhZ2Uv
V2ViUGFnZS5jcHAKQEAgLTY3NDAsNiArNjc0MCwxNCBAQCB2b2lkIFdlYlBhZ2U6OnVwZGF0ZU1v
Y2tBY2Nlc3NpYmlsaXR5RWxlbWVudEFmdGVyQ29tbWl0dGluZ0xvYWQoKQogfQogI2VuZGlmCiAK
KyNpZiAhUExBVEZPUk0oSU9TX0ZBTUlMWSkgfHwgIUVOQUJMRShEUkFHX1NVUFBPUlQpCisKK3Zv
aWQgV2ViUGFnZTo6ZGlkRmluaXNoTG9hZGluZ0ltYWdlRm9yRWxlbWVudChXZWJDb3JlOjpIVE1M
SW1hZ2VFbGVtZW50JikKK3sKK30KKworI2VuZGlmCisKIH0gLy8gbmFtZXNwYWNlIFdlYktpdAog
CiAjdW5kZWYgUkVMRUFTRV9MT0dfSUZfQUxMT1dFRApkaWZmIC0tZ2l0IGEvU291cmNlL1dlYktp
dC9XZWJQcm9jZXNzL1dlYlBhZ2UvV2ViUGFnZS5oIGIvU291cmNlL1dlYktpdC9XZWJQcm9jZXNz
L1dlYlBhZ2UvV2ViUGFnZS5oCmluZGV4IDg2OGFlOTJmMmZiMzI5MzUxMDExMGJhZWU4Y2NiNjc4
MjMxYzMzYWQuLjJhODE0NmI3NDUwNzczMDJlMjNlNDNlNmE3NjRiMTI2YzllNDFiYmUgMTAwNjQ0
Ci0tLSBhL1NvdXJjZS9XZWJLaXQvV2ViUHJvY2Vzcy9XZWJQYWdlL1dlYlBhZ2UuaAorKysgYi9T
b3VyY2UvV2ViS2l0L1dlYlByb2Nlc3MvV2ViUGFnZS9XZWJQYWdlLmgKQEAgLTE1NCw2ICsxNTQs
NyBAQCBjbGFzcyBGcmFtZTsKIGNsYXNzIEZyYW1lU2VsZWN0aW9uOwogY2xhc3MgRnJhbWVWaWV3
OwogY2xhc3MgR3JhcGhpY3NDb250ZXh0OworY2xhc3MgSFRNTEltYWdlRWxlbWVudDsKIGNsYXNz
IEhUTUxNZW51RWxlbWVudDsKIGNsYXNzIEhUTUxNZW51SXRlbUVsZW1lbnQ7CiBjbGFzcyBIVE1M
UGx1Z0luRWxlbWVudDsKQEAgLTExMTMsMTAgKzExMTQsMTMgQEAgcHVibGljOgogICAgIHZvaWQg
ZGlkR2V0TG9hZERlY2lzaW9uRm9ySWNvbihib29sIGRlY2lzaW9uLCBDYWxsYmFja0lEIGxvYWRJ
ZGVudGlmaWVyLCBPcHRpb25hbENhbGxiYWNrSUQpOwogICAgIHZvaWQgc2V0VXNlSWNvbkxvYWRp
bmdDbGllbnQoYm9vbCk7CiAKLSNpZiBFTkFCTEUoREFUQV9JTlRFUkFDVElPTikKKyNpZiBQTEFU
Rk9STShJT1NfRkFNSUxZKSAmJiBFTkFCTEUoRFJBR19TVVBQT1JUKQogICAgIHZvaWQgZGlkQ29u
Y2x1ZGVFZGl0RHJhZygpOworICAgIHZvaWQgZGlkQ29uY2x1ZGVEcm9wKCk7CiAjZW5kaWYKIAor
ICAgIHZvaWQgZGlkRmluaXNoTG9hZGluZ0ltYWdlRm9yRWxlbWVudChXZWJDb3JlOjpIVE1MSW1h
Z2VFbGVtZW50Jik7CisKICAgICBXZWJVUkxTY2hlbWVIYW5kbGVyUHJveHkqIHVybFNjaGVtZUhh
bmRsZXJGb3JTY2hlbWUoY29uc3QgU3RyaW5nJik7CiAgICAgdm9pZCBzdG9wQWxsVVJMU2NoZW1l
VGFza3MoKTsKIApAQCAtMTI1OCw2ICsxMjYyLDcgQEAgcHJpdmF0ZToKICNpZiBQTEFURk9STShJ
T1NfRkFNSUxZKSAmJiBFTkFCTEUoREFUQV9JTlRFUkFDVElPTikKICAgICB2b2lkIHJlcXVlc3RE
cmFnU3RhcnQoY29uc3QgV2ViQ29yZTo6SW50UG9pbnQmIGNsaWVudFBvc2l0aW9uLCBjb25zdCBX
ZWJDb3JlOjpJbnRQb2ludCYgZ2xvYmFsUG9zaXRpb24sIHVpbnQ2NF90IGFsbG93ZWRBY3Rpb25z
KTsKICAgICB2b2lkIHJlcXVlc3RBZGRpdGlvbmFsSXRlbXNGb3JEcmFnU2Vzc2lvbihjb25zdCBX
ZWJDb3JlOjpJbnRQb2ludCYgY2xpZW50UG9zaXRpb24sIGNvbnN0IFdlYkNvcmU6OkludFBvaW50
JiBnbG9iYWxQb3NpdGlvbiwgdWludDY0X3QgYWxsb3dlZEFjdGlvbnMpOworICAgIHZvaWQgY29t
cHV0ZUFuZFNlbmRFZGl0RHJhZ1NuYXBzaG90KCk7CiAjZW5kaWYKIAogI2lmICFQTEFURk9STShD
T0NPQSkgJiYgIVBMQVRGT1JNKFdQRSkKQEAgLTE3NzAsNiArMTc3NSwxMCBAQCBwcml2YXRlOgog
ICAgIFdlYkNvcmU6OkRyYWdTb3VyY2VBY3Rpb24gbV9hbGxvd2VkRHJhZ1NvdXJjZUFjdGlvbnMg
eyBXZWJDb3JlOjpEcmFnU291cmNlQWN0aW9uQW55IH07CiAjZW5kaWYKIAorI2lmIEVOQUJMRShE
UkFHX1NVUFBPUlQpICYmIFBMQVRGT1JNKElPU19GQU1JTFkpCisgICAgSGFzaFNldDxSZWZQdHI8
V2ViQ29yZTo6SFRNTEltYWdlRWxlbWVudD4+IG1fcGVuZGluZ0ltYWdlRWxlbWVudHNGb3JEcm9w
U25hcHNob3Q7CisjZW5kaWYKKwogICAgIGJvb2wgbV9jYWNoZWRNYWluRnJhbWVJc1Bpbm5lZFRv
TGVmdFNpZGUgeyB0cnVlIH07CiAgICAgYm9vbCBtX2NhY2hlZE1haW5GcmFtZUlzUGlubmVkVG9S
aWdodFNpZGUgeyB0cnVlIH07CiAgICAgYm9vbCBtX2NhY2hlZE1haW5GcmFtZUlzUGlubmVkVG9U
b3BTaWRlIHsgdHJ1ZSB9OwpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYktpdC9XZWJQcm9jZXNzL1dl
YlBhZ2UvV2ViUGFnZS5tZXNzYWdlcy5pbiBiL1NvdXJjZS9XZWJLaXQvV2ViUHJvY2Vzcy9XZWJQ
YWdlL1dlYlBhZ2UubWVzc2FnZXMuaW4KaW5kZXggMThmMDZmODg0ZTE5Nzc0ZmZjYTFkNzgxYjY4
ODA5ZmZlZTE3MGQwOC4uZjdmZWIzYTVhMzNkYzhjYTk3YjA2N2JmYjRmZmY5YTVhZmE0YWFjYSAx
MDA2NDQKLS0tIGEvU291cmNlL1dlYktpdC9XZWJQcm9jZXNzL1dlYlBhZ2UvV2ViUGFnZS5tZXNz
YWdlcy5pbgorKysgYi9Tb3VyY2UvV2ViS2l0L1dlYlByb2Nlc3MvV2ViUGFnZS9XZWJQYWdlLm1l
c3NhZ2VzLmluCkBAIC0zMDMsOSArMzAzLDEwIEBAIEdlbmVyYXRlU3ludGhldGljRWRpdGluZ0Nv
bW1hbmQoZW51bTp1aW50OF90IFdlYktpdDo6U3ludGhldGljRWRpdGluZ0NvbW1hbmRUeXBlCiAg
ICAgRHJhZ0NhbmNlbGxlZCgpCiAjZW5kaWYKIAotI2lmIEVOQUJMRShEQVRBX0lOVEVSQUNUSU9O
KQorI2lmIFBMQVRGT1JNKElPU19GQU1JTFkpICYmIEVOQUJMRShEUkFHX1NVUFBPUlQpCiAgICAg
UmVxdWVzdERyYWdTdGFydChXZWJDb3JlOjpJbnRQb2ludCBjbGllbnRQb3NpdGlvbiwgV2ViQ29y
ZTo6SW50UG9pbnQgZ2xvYmFsUG9zaXRpb24sIHVpbnQ2NF90IGFsbG93ZWRBY3Rpb25zKQogICAg
IFJlcXVlc3RBZGRpdGlvbmFsSXRlbXNGb3JEcmFnU2Vzc2lvbihXZWJDb3JlOjpJbnRQb2ludCBj
bGllbnRQb3NpdGlvbiwgV2ViQ29yZTo6SW50UG9pbnQgZ2xvYmFsUG9zaXRpb24sIHVpbnQ2NF90
IGFsbG93ZWRBY3Rpb25zKQorICAgIERpZENvbmNsdWRlRHJvcCgpCiAjZW5kaWYKIAogICAgICMg
UG9wdXAgbWVudS4KZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJLaXQvV2ViUHJvY2Vzcy9XZWJQYWdl
L2lvcy9XZWJQYWdlSU9TLm1tIGIvU291cmNlL1dlYktpdC9XZWJQcm9jZXNzL1dlYlBhZ2UvaW9z
L1dlYlBhZ2VJT1MubW0KaW5kZXggYzExOWQ0ZjEyNDdlZjY1YzZiODhkYWNlZGNjYjdlODFlNzFl
MmZiMC4uOWJhZTdkNDVhNDJlOWFlMWZlMGRmNzA3MzdjZmJkNGFiZDI2M2U2NyAxMDA2NDQKLS0t
IGEvU291cmNlL1dlYktpdC9XZWJQcm9jZXNzL1dlYlBhZ2UvaW9zL1dlYlBhZ2VJT1MubW0KKysr
IGIvU291cmNlL1dlYktpdC9XZWJQcm9jZXNzL1dlYlBhZ2UvaW9zL1dlYlBhZ2VJT1MubW0KQEAg
LTgyNSwxOSArODI1LDYzIEBAIHZvaWQgV2ViUGFnZTo6cmVxdWVzdEFkZGl0aW9uYWxJdGVtc0Zv
ckRyYWdTZXNzaW9uKGNvbnN0IEludFBvaW50JiBjbGllbnRQb3NpdGlvCiAgICAgc2VuZChNZXNz
YWdlczo6V2ViUGFnZVByb3h5OjpEaWRIYW5kbGVBZGRpdGlvbmFsRHJhZ0l0ZW1zUmVxdWVzdChk
aWRIYW5kbGVEcmFnKSk7CiB9CiAKK3ZvaWQgV2ViUGFnZTo6ZGlkQ29uY2x1ZGVEcm9wKCkKK3sK
KyAgICBtX3BlbmRpbmdJbWFnZUVsZW1lbnRzRm9yRHJvcFNuYXBzaG90LmNsZWFyKCk7Cit9CisK
IHZvaWQgV2ViUGFnZTo6ZGlkQ29uY2x1ZGVFZGl0RHJhZygpCiB7Ci0gICAgT3B0aW9uYWw8VGV4
dEluZGljYXRvckRhdGE+IHRleHRJbmRpY2F0b3JEYXRhOworICAgIHNlbmQoTWVzc2FnZXM6Oldl
YlBhZ2VQcm94eTo6V2lsbFJlY2VpdmVFZGl0RHJhZ1NuYXBzaG90KCkpOworCisgICAgbGF5b3V0
SWZOZWVkZWQoKTsKKworICAgIG1fcGVuZGluZ0ltYWdlRWxlbWVudHNGb3JEcm9wU25hcHNob3Qu
Y2xlYXIoKTsKIAorICAgIGJvb2wgd2FpdGluZ0ZvckFueUltYWdlVG9Mb2FkID0gZmFsc2U7Cisg
ICAgYXV0byYgZnJhbWUgPSBtX3BhZ2UtPmZvY3VzQ29udHJvbGxlcigpLmZvY3VzZWRPck1haW5G
cmFtZSgpOworICAgIGlmIChhdXRvIHJhbmdlID0gZnJhbWUuc2VsZWN0aW9uKCkuc2VsZWN0aW9u
KCkudG9Ob3JtYWxpemVkUmFuZ2UoKSkgeworICAgICAgICBmb3IgKFRleHRJdGVyYXRvciBpdGVy
YXRvcihyYW5nZS5nZXQoKSk7ICFpdGVyYXRvci5hdEVuZCgpOyBpdGVyYXRvci5hZHZhbmNlKCkp
IHsKKyAgICAgICAgICAgIGF1dG8qIG5vZGUgPSBpdGVyYXRvci5ub2RlKCk7CisgICAgICAgICAg
ICBpZiAoIWlzPEhUTUxJbWFnZUVsZW1lbnQ+KG5vZGUpKQorICAgICAgICAgICAgICAgIGNvbnRp
bnVlOworCisgICAgICAgICAgICBhdXRvJiBpbWFnZUVsZW1lbnQgPSBkb3duY2FzdDxIVE1MSW1h
Z2VFbGVtZW50Pigqbm9kZSk7CisgICAgICAgICAgICBhdXRvKiBjYWNoZWRJbWFnZSA9IGltYWdl
RWxlbWVudC5jYWNoZWRJbWFnZSgpOworICAgICAgICAgICAgaWYgKGNhY2hlZEltYWdlICYmIGNh
Y2hlZEltYWdlLT5pbWFnZSgpICYmIGNhY2hlZEltYWdlLT5pbWFnZSgpLT5pc051bGwoKSkgewor
ICAgICAgICAgICAgICAgIG1fcGVuZGluZ0ltYWdlRWxlbWVudHNGb3JEcm9wU25hcHNob3QuYWRk
KCZpbWFnZUVsZW1lbnQpOworICAgICAgICAgICAgICAgIHdhaXRpbmdGb3JBbnlJbWFnZVRvTG9h
ZCA9IHRydWU7CisgICAgICAgICAgICB9CisgICAgICAgIH0KKyAgICB9CisKKyAgICBpZiAoIXdh
aXRpbmdGb3JBbnlJbWFnZVRvTG9hZCkKKyAgICAgICAgY29tcHV0ZUFuZFNlbmRFZGl0RHJhZ1Nu
YXBzaG90KCk7Cit9CisKK3ZvaWQgV2ViUGFnZTo6ZGlkRmluaXNoTG9hZGluZ0ltYWdlRm9yRWxl
bWVudChXZWJDb3JlOjpIVE1MSW1hZ2VFbGVtZW50JiBlbGVtZW50KQoreworICAgIGlmIChtX3Bl
bmRpbmdJbWFnZUVsZW1lbnRzRm9yRHJvcFNuYXBzaG90LmlzRW1wdHkoKSkKKyAgICAgICAgcmV0
dXJuOworCisgICAgbV9wZW5kaW5nSW1hZ2VFbGVtZW50c0ZvckRyb3BTbmFwc2hvdC5yZW1vdmUo
JmVsZW1lbnQpOworCisgICAgaWYgKG1fcGVuZGluZ0ltYWdlRWxlbWVudHNGb3JEcm9wU25hcHNo
b3QuaXNFbXB0eSgpKQorICAgICAgICBjb21wdXRlQW5kU2VuZEVkaXREcmFnU25hcHNob3QoKTsK
K30KKwordm9pZCBXZWJQYWdlOjpjb21wdXRlQW5kU2VuZEVkaXREcmFnU25hcHNob3QoKQorewor
ICAgIE9wdGlvbmFsPFRleHRJbmRpY2F0b3JEYXRhPiB0ZXh0SW5kaWNhdG9yRGF0YTsKICAgICBz
dGF0aWMgYXV0byBkZWZhdWx0VGV4dEluZGljYXRvck9wdGlvbnNGb3JFZGl0RHJhZyA9IFRleHRJ
bmRpY2F0b3JPcHRpb25JbmNsdWRlU25hcHNob3RPZkFsbFZpc2libGVDb250ZW50V2l0aG91dFNl
bGVjdGlvbiB8IFRleHRJbmRpY2F0b3JPcHRpb25FeHBhbmRDbGlwQmV5b25kVmlzaWJsZVJlY3Qg
fCBUZXh0SW5kaWNhdG9yT3B0aW9uUGFpbnRBbGxDb250ZW50IHwgVGV4dEluZGljYXRvck9wdGlv
bkluY2x1ZGVNYXJnaW5JZlJhbmdlTWF0Y2hlc1NlbGVjdGlvbiB8IFRleHRJbmRpY2F0b3JPcHRp
b25QYWludEJhY2tncm91bmRzIHwgVGV4dEluZGljYXRvck9wdGlvbkNvbXB1dGVFc3RpbWF0ZWRC
YWNrZ3JvdW5kQ29sb3J8IFRleHRJbmRpY2F0b3JPcHRpb25Vc2VTZWxlY3Rpb25SZWN0Rm9yU2l6
aW5nIHwgVGV4dEluZGljYXRvck9wdGlvbkluY2x1ZGVTbmFwc2hvdFdpdGhTZWxlY3Rpb25IaWdo
bGlnaHQ7CiAgICAgYXV0byYgZnJhbWUgPSBtX3BhZ2UtPmZvY3VzQ29udHJvbGxlcigpLmZvY3Vz
ZWRPck1haW5GcmFtZSgpOwogICAgIGlmIChhdXRvIHJhbmdlID0gZnJhbWUuc2VsZWN0aW9uKCku
c2VsZWN0aW9uKCkudG9Ob3JtYWxpemVkUmFuZ2UoKSkgewotICAgICAgICBpZiAoYXV0byB0ZXh0
SW5kaWNhdG9yID0gVGV4dEluZGljYXRvcjo6Y3JlYXRlV2l0aFJhbmdlKCpyYW5nZSwgZGVmYXVs
dFRleHRJbmRpY2F0b3JPcHRpb25zRm9yRWRpdERyYWcsIFRleHRJbmRpY2F0b3JQcmVzZW50YXRp
b25UcmFuc2l0aW9uOjpOb25lLCBGbG9hdFNpemUoKSkpCisgICAgICAgIGlmIChhdXRvIHRleHRJ
bmRpY2F0b3IgPSBUZXh0SW5kaWNhdG9yOjpjcmVhdGVXaXRoUmFuZ2UoKnJhbmdlLCBkZWZhdWx0
VGV4dEluZGljYXRvck9wdGlvbnNGb3JFZGl0RHJhZywgVGV4dEluZGljYXRvclByZXNlbnRhdGlv
blRyYW5zaXRpb246Ok5vbmUsIHsgfSkpCiAgICAgICAgICAgICB0ZXh0SW5kaWNhdG9yRGF0YSA9
IHRleHRJbmRpY2F0b3ItPmRhdGEoKTsKICAgICB9Ci0KLSAgICBzZW5kKE1lc3NhZ2VzOjpXZWJQ
YWdlUHJveHk6OkRpZENvbmNsdWRlRWRpdERyYWcoV1RGTW92ZSh0ZXh0SW5kaWNhdG9yRGF0YSkp
KTsKKyAgICBzZW5kKE1lc3NhZ2VzOjpXZWJQYWdlUHJveHk6OkRpZFJlY2VpdmVFZGl0RHJhZ1Nu
YXBzaG90KFdURk1vdmUodGV4dEluZGljYXRvckRhdGEpKSk7CiB9CisKICNlbmRpZgogCiB2b2lk
IFdlYlBhZ2U6OnNlbmRUYXBIaWdobGlnaHRGb3JOb2RlSWZOZWNlc3NhcnkodWludDY0X3QgcmVx
dWVzdElELCBOb2RlKiBub2RlKQpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYktpdExlZ2FjeS9tYWMv
V2ViQ29yZVN1cHBvcnQvV2ViQ2hyb21lQ2xpZW50LmggYi9Tb3VyY2UvV2ViS2l0TGVnYWN5L21h
Yy9XZWJDb3JlU3VwcG9ydC9XZWJDaHJvbWVDbGllbnQuaAppbmRleCA2NDBmZTU4ZmQxMDQ3OTRi
M2M1ODNlNjU5YWI2MWFjZGYxN2MyZTIwLi43ZTBhNjI1OGFjMDJhODdjYTljMTBjZTRhOWY4NWNm
NDMyNzU5OTk2IDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViS2l0TGVnYWN5L21hYy9XZWJDb3JlU3Vw
cG9ydC9XZWJDaHJvbWVDbGllbnQuaAorKysgYi9Tb3VyY2UvV2ViS2l0TGVnYWN5L21hYy9XZWJD
b3JlU3VwcG9ydC9XZWJDaHJvbWVDbGllbnQuaApAQCAtMzEsNiArMzEsMTAgQEAKICNpbXBvcnQg
PFdlYkNvcmUvRm9jdXNEaXJlY3Rpb24uaD4KICNpbXBvcnQgPHd0Zi9Gb3J3YXJkLmg+CiAKK25h
bWVzcGFjZSBXZWJDb3JlIHsKK2NsYXNzIEhUTUxJbWFnZUVsZW1lbnQ7Cit9CisKIEBjbGFzcyBX
ZWJWaWV3OwogCiAvLyBGSVhNRTogVGhpcyBjbGFzcyBpcyB1c2VkIGFzIGEgY29uY3JldGUgY2xh
c3Mgb24gTWFjLCBidXQgb24gaU9TIHRoaXMgaXMgYW4gYWJzdHJhY3QKQEAgLTEwMiw2ICsxMDYs
OCBAQCBwcml2YXRlOgogICAgIFdlYkNvcmU6OkludFBvaW50IGFjY2Vzc2liaWxpdHlTY3JlZW5U
b1Jvb3RWaWV3KGNvbnN0IFdlYkNvcmU6OkludFBvaW50JikgY29uc3QgZmluYWw7CiAgICAgV2Vi
Q29yZTo6SW50UmVjdCByb290Vmlld1RvQWNjZXNzaWJpbGl0eVNjcmVlbihjb25zdCBXZWJDb3Jl
OjpJbnRSZWN0JikgY29uc3QgZmluYWw7CiAKKyAgICB2b2lkIGRpZEZpbmlzaExvYWRpbmdJbWFn
ZUZvckVsZW1lbnQoV2ViQ29yZTo6SFRNTEltYWdlRWxlbWVudCYpIGZpbmFsOworCiAgICAgUGxh
dGZvcm1QYWdlQ2xpZW50IHBsYXRmb3JtUGFnZUNsaWVudCgpIGNvbnN0IGZpbmFsOwogICAgIHZv
aWQgY29udGVudHNTaXplQ2hhbmdlZChXZWJDb3JlOjpGcmFtZSYsIGNvbnN0IFdlYkNvcmU6Oklu
dFNpemUmKSBjb25zdCBmaW5hbDsKICAgICB2b2lkIGludHJpbnNpY0NvbnRlbnRzU2l6ZUNoYW5n
ZWQoY29uc3QgV2ViQ29yZTo6SW50U2l6ZSYpIGNvbnN0IGZpbmFsIHsgfQpkaWZmIC0tZ2l0IGEv
U291cmNlL1dlYktpdExlZ2FjeS9tYWMvV2ViQ29yZVN1cHBvcnQvV2ViQ2hyb21lQ2xpZW50Lm1t
IGIvU291cmNlL1dlYktpdExlZ2FjeS9tYWMvV2ViQ29yZVN1cHBvcnQvV2ViQ2hyb21lQ2xpZW50
Lm1tCmluZGV4IGFhYzg3MTU2NjRmMmNiZTdjZTcwZGYyNzQ2M2VjNGYxNzVkODJjNzkuLmFiZTJm
YjMyOThkMTZkZTQxNGNiZjkzYzhiZWQ4YmVjMThiMjEwN2UgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9X
ZWJLaXRMZWdhY3kvbWFjL1dlYkNvcmVTdXBwb3J0L1dlYkNocm9tZUNsaWVudC5tbQorKysgYi9T
b3VyY2UvV2ViS2l0TGVnYWN5L21hYy9XZWJDb3JlU3VwcG9ydC9XZWJDaHJvbWVDbGllbnQubW0K
QEAgLTYxMCw2ICs2MTAsMTAgQEAgSW50UmVjdCBXZWJDaHJvbWVDbGllbnQ6OnJvb3RWaWV3VG9B
Y2Nlc3NpYmlsaXR5U2NyZWVuKGNvbnN0IEludFJlY3QmIHIpIGNvbnN0CiAgICAgcmV0dXJuIHJv
b3RWaWV3VG9TY3JlZW4ocik7CiB9CiAKK3ZvaWQgV2ViQ2hyb21lQ2xpZW50OjpkaWRGaW5pc2hM
b2FkaW5nSW1hZ2VGb3JFbGVtZW50KEhUTUxJbWFnZUVsZW1lbnQmKQoreworfQorCiBQbGF0Zm9y
bVBhZ2VDbGllbnQgV2ViQ2hyb21lQ2xpZW50OjpwbGF0Zm9ybVBhZ2VDbGllbnQoKSBjb25zdAog
ewogICAgIHJldHVybiAwOwpkaWZmIC0tZ2l0IGEvVG9vbHMvQ2hhbmdlTG9nIGIvVG9vbHMvQ2hh
bmdlTG9nCmluZGV4IDAxMDExZmQ1NTM3MGU0ZWVmM2M2MGNhMTc0OTE5YTRkZDY1ZDhjMDYuLjVl
M2ZiMDUyYzAxMDNkZjc4ZTBjZTE2N2I5ZDZlMmE4Zjk0ZDYyNGQgMTAwNjQ0Ci0tLSBhL1Rvb2xz
L0NoYW5nZUxvZworKysgYi9Ub29scy9DaGFuZ2VMb2cKQEAgLTEsMyArMSw1NCBAQAorMjAxOS0w
NS0yNSAgV2Vuc29uIEhzaWVoICA8d2Vuc29uX2hzaWVoQGFwcGxlLmNvbT4KKworICAgICAgICBb
aU9TXSBEcm9wcGVkIHRleHQsIGF0dGFjaG1lbnRzLCBhbmQgaW1hZ2VzIHNob3VsZCBhbmltYXRl
IGludG8gcGxhY2UKKyAgICAgICAgaHR0cHM6Ly9idWdzLndlYmtpdC5vcmcvc2hvd19idWcuY2dp
P2lkPTE5ODI0MworICAgICAgICA8cmRhcjovL3Byb2JsZW0vMzUyMDUzNzM+CisKKyAgICAgICAg
UmV2aWV3ZWQgYnkgTk9CT0RZIChPT1BTISkuCisKKyAgICAgICAgQWRqdXN0cyB0aGUgaU9TIGRy
YWdnaW5nIHNpbXVsYXRvciwgYW5kIGFkZHMgYSBuZXcgQVBJIHRlc3QuIFNlZSBiZWxvdyBmb3Ig
bW9yZSBkZXRhaWwuCisKKyAgICAgICAgKiBUZXN0V2ViS2l0QVBJL1Rlc3RzL2lvcy9EcmFnQW5k
RHJvcFRlc3RzSU9TLm1tOgorICAgICAgICAoVGVzdFdlYktpdEFQSTo6aXNDb21wbGV0ZWx5V2hp
dGUpOgorICAgICAgICAoVGVzdFdlYktpdEFQSTo6VEVTVCk6CisKKyAgICAgICAgQWRkIGEgdGVz
dCB0aGF0IGRyYWdzIGFuZCBkcm9wcyBhbiBpbWFnZSBpbnRvIGEgY29udGVudGVkaXRhYmxlIGVs
ZW1lbnQsIGFuZCB0aGVuIG9ic2VydmVzIHRoZSByZXN1bHRpbmcKKyAgICAgICAgVUlUYXJnZXRl
ZERyYWdQcmV2aWV3cyB1cG9uIGRyb3AuCisKKyAgICAgICAgKiBUZXN0V2ViS2l0QVBJL2NvY29h
L0RyYWdBbmREcm9wU2ltdWxhdG9yLmg6CisgICAgICAgICogVGVzdFdlYktpdEFQSS9pb3MvRHJh
Z0FuZERyb3BTaW11bGF0b3JJT1MubW06CisgICAgICAgICgtW0RyYWdBbmREcm9wU2ltdWxhdG9y
IF9yZXNldFNpbXVsYXRlZFN0YXRlXSk6CisgICAgICAgICgtW0RyYWdBbmREcm9wU2ltdWxhdG9y
IHJ1bkZyb206dG86YWRkaXRpb25hbEl0ZW1SZXF1ZXN0TG9jYXRpb25zOl0pOgorICAgICAgICAo
LVtEcmFnQW5kRHJvcFNpbXVsYXRvciBfY29uY2x1ZGVEcm9wQW5kUGVyZm9ybU9wZXJhdGlvbklm
TmVjZXNzYXJ5XSk6CisKKyAgICAgICAgVGVhY2ggdGhlIGlPUyB2ZXJzaW9uIG9mIERyYWdBbmRE
cm9wU2ltdWxhdG9yIHRvIGludm9rZSAtZHJvcEludGVyYWN0aW9uOmNvbmNsdWRlRHJvcDogb24g
dGhlIGRyb3AgaW50ZXJhY3Rpb24KKyAgICAgICAgZGVsZWdhdGUgd2hlbiB0aGUgZHJvcCBmaW5p
c2hlcy4gVGhpcyBhZGRpdGlvbmFsbHkgdXNlcyBfZG9BZnRlclJlY2VpdmluZ0VkaXREcmFnU25h
cHNob3RGb3JUZXN0aW5nOiB0byBkZWZlcgorICAgICAgICB0aGUgZW5kIG9mIHRoZSBzaW11bGF0
ZWQgZHJhZyBhbmQgZHJvcCB1bnRpbCBhZnRlciBkcmFnIHByZXZpZXdzIGhhdmUgYmVlbiByZWNl
aXZlZCBkdXJpbmcgYW4gZWRpdCBkcmFnLgorCisgICAgICAgICgtW0RyYWdBbmREcm9wU2ltdWxh
dG9yIGRyb3BQcmV2aWV3c10pOgorICAgICAgICAoLVtEcmFnQW5kRHJvcFNpbXVsYXRvciBkZWxh
eWVkRHJvcFByZXZpZXdzXSk6CisKKyAgICAgICAgSGF2ZSB0aGUgZHJhZyBhbmQgZHJvcCBzaW11
bGF0b3IgcmVtZW1iZXIgd2hpY2ggcHJldmlld3Mgd2VyZSByZXR1cm5lZCBieSB0aGUgZGVsZWdh
dGUgb24gZHJvcCwgYXMgd2VsbCBhcyB3aGljaAorICAgICAgICBwcmV2aWV3cyB3ZXJlIHByb3Zp
ZGVkIGFzeW5jaHJvbm91c2x5LgorCisgICAgICAgICgtW0RyYWdBbmREcm9wU2ltdWxhdG9yIF93
ZWJWaWV3OmRhdGFJbnRlcmFjdGlvbk9wZXJhdGlvbldhc0hhbmRsZWQ6Zm9yU2Vzc2lvbjppdGVt
UHJvdmlkZXJzOl0pOgorICAgICAgICAqIFRlc3RXZWJLaXRBUEkvaW9zL1VJS2l0U1BJLmg6CisK
KyAgICAgICAgU3RhZ2UgdGhlIG5ldyBwcml2YXRlIGRyb3AgaW50ZXJhY3RvbiBkZWxlZ2F0ZSBt
ZXRob2QuCisKKzIwMTktMDUtMjQgIFdlbnNvbiBIc2llaCAgPHdlbnNvbl9oc2llaEBhcHBsZS5j
b20+CisKKyAgICAgICAgW2lPU10gUmVzcGVjdCAtW05TSXRlbVByb3ZpZGVyIHByZWZlcnJlZFBy
ZXNlbnRhdGlvblNpemVdIHdoZW4gZHJvcHBpbmcgaW1hZ2VzCisgICAgICAgIGh0dHBzOi8vYnVn
cy53ZWJraXQub3JnL3Nob3dfYnVnLmNnaT9pZD0xOTgyNDIKKworICAgICAgICBSZXZpZXdlZCBi
eSBOT0JPRFkgKE9PUFMhKS4KKworICAgICAgICBBZGQgYSBuZXcgdGVzdCB0aGF0IHNpbXVsYXRl
cyBkcm9wcGluZyBhbiBpbWFnZSB3aXRoIGEgcHJlZmVycmVkIHByZXNlbnRhdGlvbiBzaXplIGlu
dG8gYW4gZWRpdGFibGUgZWxlbWVudAorICAgICAgICB3aXRoIGF0dGFjaG1lbnQgZWxlbWVudHMg
ZW5hYmxlZC4KKworICAgICAgICAqIFRlc3RXZWJLaXRBUEkvVGVzdHMvV2ViS2l0Q29jb2EvV0tB
dHRhY2htZW50VGVzdHMubW06CisgICAgICAgIChUZXN0V2ViS2l0QVBJOjpURVNUKToKKwogMjAx
OS0wNS0yNCAgWXVzdWtlIFN1enVraSAgPHlzdXp1a2lAYXBwbGUuY29tPgogCiAgICAgICAgIE1h
a2UgZGlzcGxheS1wcm9maWxlci1vdXRwdXQgd29yayB3aXRoIG5ld2VyIEhpZ2hMaW5lCmRpZmYg
LS1naXQgYS9Ub29scy9UZXN0V2ViS2l0QVBJL1Rlc3RzL1dlYktpdENvY29hL1dLQXR0YWNobWVu
dFRlc3RzLm1tIGIvVG9vbHMvVGVzdFdlYktpdEFQSS9UZXN0cy9XZWJLaXRDb2NvYS9XS0F0dGFj
aG1lbnRUZXN0cy5tbQppbmRleCAwMWMwYzI1NWQ3MGE3MzcxNjA3NzI2YjViOTY1MGE4ZTlhMDcx
YzhmLi4xMDkxMTZiYzRjNjcwMDFhMGVhMjZmNjMzZGQ0MDBkNDAzOTA2NzMxIDEwMDY0NAotLS0g
YS9Ub29scy9UZXN0V2ViS2l0QVBJL1Rlc3RzL1dlYktpdENvY29hL1dLQXR0YWNobWVudFRlc3Rz
Lm1tCisrKyBiL1Rvb2xzL1Rlc3RXZWJLaXRBUEkvVGVzdHMvV2ViS2l0Q29jb2EvV0tBdHRhY2ht
ZW50VGVzdHMubW0KQEAgLTE2MzEsNiArMTYzMSwyMSBAQCBURVNUKFdLQXR0YWNobWVudFRlc3Rz
SU9TLCBJbnNlcnREcm9wcGVkSW1hZ2VBc0F0dGFjaG1lbnQpCiAgICAgfQogfQogCitURVNUKFdL
QXR0YWNobWVudFRlc3RzSU9TLCBJbnNlcnREcm9wcGVkSW1hZ2VXaXRoUHJlZmVycmVkUHJlc2Vu
dGF0aW9uU2l6ZSkKK3sKKyAgICBhdXRvIHdlYlZpZXcgPSB3ZWJWaWV3Rm9yVGVzdGluZ0F0dGFj
aG1lbnRzKCk7CisgICAgYXV0byBkcmFnQW5kRHJvcFNpbXVsYXRvciA9IGFkb3B0TlMoW1tEcmFn
QW5kRHJvcFNpbXVsYXRvciBhbGxvY10gaW5pdFdpdGhXZWJWaWV3OndlYlZpZXcuZ2V0KCldKTsK
KyAgICBhdXRvIGl0ZW0gPSBhZG9wdE5TKFtbTlNJdGVtUHJvdmlkZXIgYWxsb2NdIGluaXRdKTsK
KyAgICBbaXRlbSByZWdpc3RlckRhdGE6dGVzdEltYWdlRGF0YSgpIHR5cGU6KF9fYnJpZGdlIE5T
U3RyaW5nICopa1VUVHlwZVBOR107CisgICAgW2l0ZW0gc2V0UHJlZmVycmVkUHJlc2VudGF0aW9u
U2l6ZTpDR1NpemVNYWtlKDIwMCwgMTAwKV07CisgICAgW2RyYWdBbmREcm9wU2ltdWxhdG9yIHNl
dEV4dGVybmFsSXRlbVByb3ZpZGVyczpAWyBpdGVtLmdldCgpIF1dOworICAgIFtkcmFnQW5kRHJv
cFNpbXVsYXRvciBydW5Gcm9tOkNHUG9pbnRaZXJvIHRvOkNHUG9pbnRNYWtlKDUwLCA1MCldOwor
CisgICAgQ0dTaXplIGltYWdlRWxlbWVudFNpemUgPSBbd2ViVmlldyBpbWFnZUVsZW1lbnRTaXpl
XTsKKyAgICBFWFBFQ1RfRVEoMjAwLCBpbWFnZUVsZW1lbnRTaXplLndpZHRoKTsKKyAgICBFWFBF
Q1RfRVEoMTAwLCBpbWFnZUVsZW1lbnRTaXplLmhlaWdodCk7Cit9CisKIFRFU1QoV0tBdHRhY2ht
ZW50VGVzdHNJT1MsIEluc2VydERyb3BwZWRBdHRyaWJ1dGVkU3RyaW5nQ29udGFpbmluZ0F0dGFj
aG1lbnQpCiB7CiAgICAgYXV0byB3ZWJWaWV3ID0gd2ViVmlld0ZvclRlc3RpbmdBdHRhY2htZW50
cygpOwpkaWZmIC0tZ2l0IGEvVG9vbHMvVGVzdFdlYktpdEFQSS9UZXN0cy9pb3MvRHJhZ0FuZERy
b3BUZXN0c0lPUy5tbSBiL1Rvb2xzL1Rlc3RXZWJLaXRBUEkvVGVzdHMvaW9zL0RyYWdBbmREcm9w
VGVzdHNJT1MubW0KaW5kZXggMjE5MzZiZDYzMDE1ZGFhZmQ4M2YwMTdiZTk0YzA5NDIyZDAyYmVh
Zi4uZjFjYzI0MGU1MzljODE3ZjM4OGMzMWFmZDFlOTgxODQ2YjNlNTM3MyAxMDA2NDQKLS0tIGEv
VG9vbHMvVGVzdFdlYktpdEFQSS9UZXN0cy9pb3MvRHJhZ0FuZERyb3BUZXN0c0lPUy5tbQorKysg
Yi9Ub29scy9UZXN0V2ViS2l0QVBJL1Rlc3RzL2lvcy9EcmFnQW5kRHJvcFRlc3RzSU9TLm1tCkBA
IC0yMTA3LDYgKzIxMDcsNDQgQEAgVEVTVChEcmFnQW5kRHJvcFRlc3RzLCBEYXRhVHJhbnNmZXJT
YW5pdGl6ZUhUTUwpCiAgICAgVGVzdFdlYktpdEFQSTo6VXRpbDo6cnVuKCZkb25lKTsKIH0KIAor
c3RhdGljIEJPT0wgaXNDb21wbGV0ZWx5V2hpdGUoVUlJbWFnZSAqaW1hZ2UpCit7CisgICAgYXV0
byBkYXRhID0gYWRvcHRDRihDR0RhdGFQcm92aWRlckNvcHlEYXRhKENHSW1hZ2VHZXREYXRhUHJv
dmlkZXIoaW1hZ2UuQ0dJbWFnZSkpKTsKKyAgICBhdXRvKiBkYXRhUHRyID0gQ0ZEYXRhR2V0Qnl0
ZVB0cihkYXRhLmdldCgpKTsKKyAgICBpbnQgaW1hZ2VXaWR0aCA9IGltYWdlLnNpemUud2lkdGg7
CisgICAgZm9yIChpbnQgcm93ID0gMDsgcm93IDwgaW1hZ2Uuc2l6ZS5oZWlnaHQ7ICsrcm93KSB7
CisgICAgICAgIGZvciAoaW50IGNvbHVtbiA9IDA7IGNvbHVtbiA8IGltYWdlV2lkdGg7ICsrY29s
dW1uKSB7CisgICAgICAgICAgICBpbnQgcGl4ZWxPZmZzZXQgPSAoKGltYWdlV2lkdGggKiByb3cp
ICsgY29sdW1uKSAqIDQ7CisgICAgICAgICAgICBpZiAoZGF0YVB0cltwaXhlbE9mZnNldF0gIT0g
MHhGRiB8fCBkYXRhUHRyW3BpeGVsT2Zmc2V0ICsgMV0gIT0gMHhGRiB8fCBkYXRhUHRyW3BpeGVs
T2Zmc2V0ICsgMl0gIT0gMHhGRikKKyAgICAgICAgICAgICAgICByZXR1cm4gTk87CisgICAgICAg
IH0KKyAgICB9CisgICAgcmV0dXJuIFlFUzsKK30KKworVEVTVChEcmFnQW5kRHJvcFRlc3RzLCBE
cm9wUHJldmlld0ZvckltYWdlSW5FZGl0YWJsZUFyZWEpCit7CisgICAgYXV0byB3ZWJWaWV3ID0g
YWRvcHROUyhbW1Rlc3RXS1dlYlZpZXcgYWxsb2NdIGluaXRXaXRoRnJhbWU6Q0dSZWN0TWFrZSgw
LCAwLCAzMjAsIDUwMCldKTsKKyAgICBbd2ViVmlldyBzeW5jaHJvbm91c2x5TG9hZFRlc3RQYWdl
TmFtZWQ6QCJpbWFnZS1hbmQtY29udGVudGVkaXRhYmxlIl07CisKKyAgICAvLyBFbnN1cmUgdGhh
dCB0aGUgcmVzdWx0aW5nIHNuYXBzaG90IG9uIGRyb3AgY29udGFpbnMgb25seSB0aGUgZHJhZ2dl
ZCBpbWFnZS4KKyAgICBbd2ViVmlldyBzdHJpbmdCeUV2YWx1YXRpbmdKYXZhU2NyaXB0OkAiZWRp
dG9yLnN0eWxlLmJvcmRlciA9ICdub25lJzsgZWRpdG9yLnN0eWxlLm91dGxpbmUgPSAnbm9uZSci
XTsKKworICAgIGF1dG8gc2ltdWxhdG9yID0gYWRvcHROUyhbW0RyYWdBbmREcm9wU2ltdWxhdG9y
IGFsbG9jXSBpbml0V2l0aFdlYlZpZXc6d2ViVmlldy5nZXQoKV0pOworICAgIFtzaW11bGF0b3Ig
cnVuRnJvbTpDR1BvaW50TWFrZSgxMDAsIDUwKSB0bzpDR1BvaW50TWFrZSgxMDAsIDMwMCldOwor
CisgICAgTlNBcnJheSAqZHJvcFByZXZpZXdzID0gW3NpbXVsYXRvciBkcm9wUHJldmlld3NdOwor
ICAgIE5TQXJyYXkgKmRlbGF5ZWREcm9wUHJldmlld3MgPSBbc2ltdWxhdG9yIGRlbGF5ZWREcm9w
UHJldmlld3NdOworICAgIEVYUEVDVF9FUSgxVSwgZHJvcFByZXZpZXdzLmNvdW50KTsKKyAgICBF
WFBFQ1RfRVEoMVUsIGRlbGF5ZWREcm9wUHJldmlld3MuY291bnQpOworICAgIEVYUEVDVF9FUShV
SVRhcmdldGVkRHJhZ1ByZXZpZXcuY2xhc3MsIFtkcm9wUHJldmlld3MuZmlyc3RPYmplY3QgY2xh
c3NdKTsKKyAgICBFWFBFQ1RfRVEoVUlUYXJnZXRlZERyYWdQcmV2aWV3LmNsYXNzLCBbZGVsYXll
ZERyb3BQcmV2aWV3cy5maXJzdE9iamVjdCBjbGFzc10pOworCisgICAgVUlUYXJnZXRlZERyYWdQ
cmV2aWV3ICpmaW5hbFByZXZpZXcgPSAoVUlUYXJnZXRlZERyYWdQcmV2aWV3ICopZGVsYXllZERy
b3BQcmV2aWV3cy5maXJzdE9iamVjdDsKKyAgICBFWFBFQ1RfRVEoVUlJbWFnZVZpZXcuY2xhc3Ms
IGZpbmFsUHJldmlldy52aWV3LmNsYXNzKTsKKyAgICBFWFBFQ1RfRkFMU0UoaXNDb21wbGV0ZWx5
V2hpdGUoWyhVSUltYWdlVmlldyAqKWZpbmFsUHJldmlldy52aWV3IGltYWdlXSkpOworfQorCiB9
IC8vIG5hbWVzcGFjZSBUZXN0V2ViS2l0QVBJCiAKICNlbmRpZiAvLyBFTkFCTEUoRFJBR19TVVBQ
T1JUKSAmJiBQTEFURk9STShJT1NfRkFNSUxZKQpkaWZmIC0tZ2l0IGEvVG9vbHMvVGVzdFdlYktp
dEFQSS9jb2NvYS9EcmFnQW5kRHJvcFNpbXVsYXRvci5oIGIvVG9vbHMvVGVzdFdlYktpdEFQSS9j
b2NvYS9EcmFnQW5kRHJvcFNpbXVsYXRvci5oCmluZGV4IDg0N2M3NzZhZGNmZTY4YTcwNDUzY2Rm
NDg3NjU3YjhmYTM2NDFmZjcuLmM1YmMwZGU3OTJmOGYzNjM5ZjNjZWIxYzFlMGQ4YWUwMGYxZDU2
MDkgMTAwNjQ0Ci0tLSBhL1Rvb2xzL1Rlc3RXZWJLaXRBUEkvY29jb2EvRHJhZ0FuZERyb3BTaW11
bGF0b3IuaAorKysgYi9Ub29scy9UZXN0V2ViS2l0QVBJL2NvY29hL0RyYWdBbmREcm9wU2ltdWxh
dG9yLmgKQEAgLTExMSw2ICsxMTEsOCBAQCB0eXBlZGVmIE5TRGljdGlvbmFyeTxOU051bWJlciAq
LCBOU1ZhbHVlICo+ICpQcm9ncmVzc1RvQ0dQb2ludFZhbHVlTWFwOwogQHByb3BlcnR5IChub25h
dG9taWMsIHJlYWRvbmx5KSBOU0FycmF5ICpmaW5hbFNlbGVjdGlvblJlY3RzOwogQHByb3BlcnR5
IChub25hdG9taWMsIHJlYWRvbmx5KSBDR1JlY3QgbGFzdEtub3duRHJhZ0NhcmV0UmVjdDsKIEBw
cm9wZXJ0eSAobm9uYXRvbWljLCByZWFkb25seSkgTlNBcnJheTxVSVRhcmdldGVkRHJhZ1ByZXZp
ZXcgKj4gKmxpZnRQcmV2aWV3czsKK0Bwcm9wZXJ0eSAobm9uYXRvbWljLCByZWFkb25seSkgTlNB
cnJheSAqZHJvcFByZXZpZXdzOworQHByb3BlcnR5IChub25hdG9taWMsIHJlYWRvbmx5KSBOU0Fy
cmF5ICpkZWxheWVkRHJvcFByZXZpZXdzOwogQHByb3BlcnR5IChub25hdG9taWMsIHJlYWRvbmx5
KSBCT09MIHN1cHByZXNzZWRTZWxlY3Rpb25Db21tYW5kc0R1cmluZ0Ryb3A7CiAKICNlbmRpZiAv
LyBQTEFURk9STShJT1NfRkFNSUxZKQpkaWZmIC0tZ2l0IGEvVG9vbHMvVGVzdFdlYktpdEFQSS9p
b3MvRHJhZ0FuZERyb3BTaW11bGF0b3JJT1MubW0gYi9Ub29scy9UZXN0V2ViS2l0QVBJL2lvcy9E
cmFnQW5kRHJvcFNpbXVsYXRvcklPUy5tbQppbmRleCBmZjAxODdkYzRlNmMwNWY1MWZjOTBhNTE1
YWZlNWQ3OGM3MDAyOTNiLi44ZWRhZThjZThhOTQ4NDM1ODUzMjcyN2U2Njg1ZjAxYTc1MGNmYTIw
IDEwMDY0NAotLS0gYS9Ub29scy9UZXN0V2ViS2l0QVBJL2lvcy9EcmFnQW5kRHJvcFNpbXVsYXRv
cklPUy5tbQorKysgYi9Ub29scy9UZXN0V2ViS2l0QVBJL2lvcy9EcmFnQW5kRHJvcFNpbXVsYXRv
cklPUy5tbQpAQCAtMzQsNiArMzQsNyBAQAogCiAjaW1wb3J0IDxVSUtpdC9VSURyYWdJbnRlcmFj
dGlvbi5oPgogI2ltcG9ydCA8VUlLaXQvVUlEcmFnSXRlbS5oPgorI2ltcG9ydCA8VUlLaXQvVUlE
cm9wSW50ZXJhY3Rpb24uaD4KICNpbXBvcnQgPFVJS2l0L1VJSW50ZXJhY3Rpb24uaD4KICNpbXBv
cnQgPFdlYktpdC9XS1dlYlZpZXdQcml2YXRlLmg+CiAjaW1wb3J0IDxXZWJLaXQvX1dLRm9jdXNl
ZEVsZW1lbnRJbmZvLmg+CkBAIC0zMTAsNiArMzExLDggQEAgQGltcGxlbWVudGF0aW9uIERyYWdB
bmREcm9wU2ltdWxhdG9yIHsKICAgICBSZXRhaW5QdHI8TlNNdXRhYmxlRGljdGlvbmFyeTxOU051
bWJlciAqLCBOU1ZhbHVlICo+Pl9yZW1haW5pbmdBZGRpdGlvbmFsSXRlbVJlcXVlc3RMb2NhdGlv
bnNCeVByb2dyZXNzOwogICAgIFJldGFpblB0cjxOU011dGFibGVBcnJheTxOU1ZhbHVlICo+Pl9x
dWV1ZWRBZGRpdGlvbmFsSXRlbVJlcXVlc3RMb2NhdGlvbnM7CiAgICAgUmV0YWluUHRyPE5TTXV0
YWJsZUFycmF5PFVJVGFyZ2V0ZWREcmFnUHJldmlldyAqPj4gX2xpZnRQcmV2aWV3czsKKyAgICBS
ZXRhaW5QdHI8TlNNdXRhYmxlQXJyYXk+IF9kcm9wUHJldmlld3M7CisgICAgUmV0YWluUHRyPE5T
TXV0YWJsZUFycmF5PiBfZGVsYXllZERyb3BQcmV2aWV3czsKIAogICAgIFJldGFpblB0cjxOU011
dGFibGVBcnJheTxfV0tBdHRhY2htZW50ICo+PiBfaW5zZXJ0ZWRBdHRhY2htZW50czsKICAgICBS
ZXRhaW5QdHI8TlNNdXRhYmxlQXJyYXk8X1dLQXR0YWNobWVudCAqPj4gX3JlbW92ZWRBdHRhY2ht
ZW50czsKQEAgLTMxNyw2ICszMjAsNyBAQCBAaW1wbGVtZW50YXRpb24gRHJhZ0FuZERyb3BTaW11
bGF0b3IgewogICAgIGJvb2wgX2hhc1N0YXJ0ZWRJbnB1dFNlc3Npb247CiAgICAgZG91YmxlIF9j
dXJyZW50UHJvZ3Jlc3M7CiAgICAgYm9vbCBfaXNEb25lV2l0aEN1cnJlbnRSdW47CisgICAgYm9v
bCBfaXNEb25lV2FpdGluZ0ZvckRlbGF5ZWREcm9wUHJldmlld3M7CiAgICAgRHJhZ0FuZERyb3BQ
aGFzZSBfcGhhc2U7CiAKICAgICBCT09MIF9zdXBwcmVzc2VkU2VsZWN0aW9uQ29tbWFuZHNEdXJp
bmdEcm9wOwpAQCAtMzczLDYgKzM3Nyw3IEBAIC0gKHZvaWQpX3Jlc2V0U2ltdWxhdGVkU3RhdGUK
ICAgICBfcGhhc2UgPSBEcmFnQW5kRHJvcFBoYXNlQmVnaW5uaW5nOwogICAgIF9jdXJyZW50UHJv
Z3Jlc3MgPSAwOwogICAgIF9pc0RvbmVXaXRoQ3VycmVudFJ1biA9IGZhbHNlOworICAgIF9pc0Rv
bmVXYWl0aW5nRm9yRGVsYXllZERyb3BQcmV2aWV3cyA9IHRydWU7CiAgICAgX29ic2VydmVkRXZl
bnROYW1lcyA9IGFkb3B0TlMoW1tOU011dGFibGVBcnJheSBhbGxvY10gaW5pdF0pOwogICAgIF9p
bnNlcnRlZEF0dGFjaG1lbnRzID0gYWRvcHROUyhbW05TTXV0YWJsZUFycmF5IGFsbG9jXSBpbml0
XSk7CiAgICAgX3JlbW92ZWRBdHRhY2htZW50cyA9IGFkb3B0TlMoW1tOU011dGFibGVBcnJheSBh
bGxvY10gaW5pdF0pOwpAQCAtMzg0LDYgKzM4OSw4IEBAIC0gKHZvaWQpX3Jlc2V0U2ltdWxhdGVk
U3RhdGUKICAgICBfcmVtYWluaW5nQWRkaXRpb25hbEl0ZW1SZXF1ZXN0TG9jYXRpb25zQnlQcm9n
cmVzcyA9IG5pbDsKICAgICBfcXVldWVkQWRkaXRpb25hbEl0ZW1SZXF1ZXN0TG9jYXRpb25zID0g
YWRvcHROUyhbW05TTXV0YWJsZUFycmF5IGFsbG9jXSBpbml0XSk7CiAgICAgX2xpZnRQcmV2aWV3
cyA9IGFkb3B0TlMoW1tOU011dGFibGVBcnJheSBhbGxvY10gaW5pdF0pOworICAgIF9kcm9wUHJl
dmlld3MgPSBhZG9wdE5TKFtbTlNNdXRhYmxlQXJyYXkgYWxsb2NdIGluaXRdKTsKKyAgICBfZGVs
YXllZERyb3BQcmV2aWV3cyA9IGFkb3B0TlMoW1tOU011dGFibGVBcnJheSBhbGxvY10gaW5pdF0p
OwogICAgIF9oYXNTdGFydGVkSW5wdXRTZXNzaW9uID0gZmFsc2U7CiB9CiAKQEAgLTQ1NCw2ICs0
NjEsNyBAQCAtICh2b2lkKXJ1bkZyb206KENHUG9pbnQpc3RhcnRMb2NhdGlvbiB0bzooQ0dQb2lu
dCllbmRMb2NhdGlvbiBhZGRpdGlvbmFsSXRlbVJlcQogICAgIH0KIAogICAgIFV0aWw6OnJ1bigm
X2lzRG9uZVdpdGhDdXJyZW50UnVuKTsKKyAgICBVdGlsOjpydW4oJl9pc0RvbmVXYWl0aW5nRm9y
RGVsYXllZERyb3BQcmV2aWV3cyk7CiAgICAgW193ZWJWaWV3IGNsZWFyTWVzc2FnZUhhbmRsZXJz
OmRyYWdBbmREcm9wRXZlbnROYW1lcygpXTsKICAgICBfZmluYWxTZWxlY3Rpb25SZWN0cyA9IFtf
d2ViVmlldyBzZWxlY3Rpb25SZWN0c0FmdGVyUHJlc2VudGF0aW9uVXBkYXRlXTsKIApAQCAtNDcw
LDExICs0NzgsMzAgQEAgLSAodm9pZClfY29uY2x1ZGVEcm9wQW5kUGVyZm9ybU9wZXJhdGlvbklm
TmVjZXNzYXJ5CiAgICAgX2xhc3RLbm93bkRyYWdDYXJldFJlY3QgPSBbX3dlYlZpZXcgX2RyYWdD
YXJldFJlY3RdOwogICAgIGF1dG8gb3BlcmF0aW9uID0gW19sYXN0S25vd25Ecm9wUHJvcG9zYWwg
b3BlcmF0aW9uXTsKICAgICBpZiAob3BlcmF0aW9uICE9IFVJRHJvcE9wZXJhdGlvbkNhbmNlbCAm
JiBvcGVyYXRpb24gIT0gVUlEcm9wT3BlcmF0aW9uRm9yYmlkZGVuKSB7CisgICAgICAgIE5TSW50
ZWdlciBkcm9wUHJldmlld0luZGV4ID0gMDsKKyAgICAgICAgX19ibG9jayBOU1VJbnRlZ2VyIG51
bWJlck9mUGVuZGluZ1ByZXZpZXdzID0gW19kcm9wU2Vzc2lvbiBpdGVtc10uY291bnQ7CisgICAg
ICAgIF9pc0RvbmVXYWl0aW5nRm9yRGVsYXllZERyb3BQcmV2aWV3cyA9ICFudW1iZXJPZlBlbmRp
bmdQcmV2aWV3czsKKyAgICAgICAgZm9yIChVSURyYWdJdGVtICppdGVtIGluIFtfZHJvcFNlc3Np
b24gaXRlbXNdKSB7CisgICAgICAgICAgICBhdXRvIGRlZmF1bHRQcmV2aWV3ID0gYWRvcHROUyhb
W1VJVGFyZ2V0ZWREcmFnUHJldmlldyBhbGxvY10gaW5pdFdpdGhWaWV3Ol93ZWJWaWV3LmdldCgp
XSk7CisgICAgICAgICAgICBpZCA8VUlEcm9wSW50ZXJhY3Rpb25EZWxlZ2F0ZV9TdGFnaW5nXzMx
MDc1MDA1PiBkZWxlZ2F0ZSA9IChpZCA8VUlEcm9wSW50ZXJhY3Rpb25EZWxlZ2F0ZV9TdGFnaW5n
XzMxMDc1MDA1PilbX3dlYlZpZXcgZHJvcEludGVyYWN0aW9uRGVsZWdhdGVdOworICAgICAgICAg
ICAgVUlEcm9wSW50ZXJhY3Rpb24gKmludGVyYWN0aW9uID0gW193ZWJWaWV3IGRyb3BJbnRlcmFj
dGlvbl07CisgICAgICAgICAgICBbX2Ryb3BQcmV2aWV3cyBhZGRPYmplY3Q6W2RlbGVnYXRlIGRy
b3BJbnRlcmFjdGlvbjppbnRlcmFjdGlvbiBwcmV2aWV3Rm9yRHJvcHBpbmdJdGVtOml0ZW0gd2l0
aERlZmF1bHQ6ZGVmYXVsdFByZXZpZXcuZ2V0KCldID86IE5TTnVsbC5udWxsXTsKKyAgICAgICAg
ICAgIFtfZGVsYXllZERyb3BQcmV2aWV3cyBhZGRPYmplY3Q6TlNOdWxsLm51bGxdOworICAgICAg
ICAgICAgW2RlbGVnYXRlIF9kcm9wSW50ZXJhY3Rpb246aW50ZXJhY3Rpb24gZGVsYXllZFByZXZp
ZXdQcm92aWRlckZvckRyb3BwaW5nSXRlbTppdGVtIHByZXZpZXdQcm92aWRlcjpeKFVJVGFyZ2V0
ZWREcmFnUHJldmlldyAqcHJldmlldykgeworICAgICAgICAgICAgICAgIGlmIChwcmV2aWV3KQor
ICAgICAgICAgICAgICAgICAgICBbX2RlbGF5ZWREcm9wUHJldmlld3Mgc2V0T2JqZWN0OnByZXZp
ZXcgYXRJbmRleGVkU3Vic2NyaXB0OmRyb3BQcmV2aWV3SW5kZXhdOworCisgICAgICAgICAgICAg
ICAgaWYgKCEtLW51bWJlck9mUGVuZGluZ1ByZXZpZXdzKQorICAgICAgICAgICAgICAgICAgICBf
aXNEb25lV2FpdGluZ0ZvckRlbGF5ZWREcm9wUHJldmlld3MgPSB0cnVlOworICAgICAgICAgICAg
fV07CisgICAgICAgICAgICArK2Ryb3BQcmV2aWV3SW5kZXg7CisgICAgICAgIH0KICAgICAgICAg
W1tfd2ViVmlldyBkcm9wSW50ZXJhY3Rpb25EZWxlZ2F0ZV0gZHJvcEludGVyYWN0aW9uOltfd2Vi
VmlldyBkcm9wSW50ZXJhY3Rpb25dIHBlcmZvcm1Ecm9wOl9kcm9wU2Vzc2lvbi5nZXQoKV07CiAg
ICAgICAgIF9waGFzZSA9IERyYWdBbmREcm9wUGhhc2VQZXJmb3JtaW5nRHJvcDsKICAgICB9IGVs
c2UgewotICAgICAgICBfaXNEb25lV2l0aEN1cnJlbnRSdW4gPSBZRVM7CisgICAgICAgIF9pc0Rv
bmVXaXRoQ3VycmVudFJ1biA9IHRydWU7CiAgICAgICAgIF9waGFzZSA9IERyYWdBbmREcm9wUGhh
c2VDYW5jZWxsZWQ7CisgICAgICAgIFtbX3dlYlZpZXcgZHJvcEludGVyYWN0aW9uRGVsZWdhdGVd
IGRyb3BJbnRlcmFjdGlvbjpbX3dlYlZpZXcgZHJvcEludGVyYWN0aW9uXSBjb25jbHVkZURyb3A6
X2Ryb3BTZXNzaW9uLmdldCgpXTsKICAgICB9CiAKICAgICBbW193ZWJWaWV3IGRyb3BJbnRlcmFj
dGlvbkRlbGVnYXRlXSBkcm9wSW50ZXJhY3Rpb246W193ZWJWaWV3IGRyb3BJbnRlcmFjdGlvbl0g
c2Vzc2lvbkRpZEVuZDpfZHJvcFNlc3Npb24uZ2V0KCldOwpAQCAtNjQ0LDYgKzY3MSwxNiBAQCAt
IChOU0FycmF5PFVJVGFyZ2V0ZWREcmFnUHJldmlldyAqPiAqKWxpZnRQcmV2aWV3cwogICAgIHJl
dHVybiBfbGlmdFByZXZpZXdzLmdldCgpOwogfQogCistIChOU0FycmF5PFVJVGFyZ2V0ZWREcmFn
UHJldmlldyAqPiAqKWRyb3BQcmV2aWV3cworeworICAgIHJldHVybiBfZHJvcFByZXZpZXdzLmdl
dCgpOworfQorCistIChOU0FycmF5PFVJVGFyZ2V0ZWREcmFnUHJldmlldyAqPiAqKWRlbGF5ZWRE
cm9wUHJldmlld3MKK3sKKyAgICByZXR1cm4gX2RlbGF5ZWREcm9wUHJldmlld3MuZ2V0KCk7Cit9
CisKIC0gKENHUmVjdClsYXN0S25vd25EcmFnQ2FyZXRSZWN0CiB7CiAgICAgcmV0dXJuIF9sYXN0
S25vd25EcmFnQ2FyZXRSZWN0OwpAQCAtNzI5LDEwICs3NjYsMTQgQEAgLSAodm9pZCheKShCT09M
LCBOU0FycmF5ICopKWRyb3BDb21wbGV0aW9uQmxvY2sKIC0gKHZvaWQpX3dlYlZpZXc6KFdLV2Vi
VmlldyAqKXdlYlZpZXcgZGF0YUludGVyYWN0aW9uT3BlcmF0aW9uV2FzSGFuZGxlZDooQk9PTClo
YW5kbGVkIGZvclNlc3Npb246KGlkKXNlc3Npb24gaXRlbVByb3ZpZGVyczooTlNBcnJheTxOU0l0
ZW1Qcm92aWRlciAqPiAqKWl0ZW1Qcm92aWRlcnMKIHsKICAgICBfc3VwcHJlc3NlZFNlbGVjdGlv
bkNvbW1hbmRzRHVyaW5nRHJvcCA9IFtfd2ViVmlldyB0ZXh0SW5wdXRDb250ZW50Vmlld10uX3No
b3VsZFN1cHByZXNzU2VsZWN0aW9uQ29tbWFuZHM7Ci0gICAgX2lzRG9uZVdpdGhDdXJyZW50UnVu
ID0gdHJ1ZTsKIAogICAgIGlmIChzZWxmLmRyb3BDb21wbGV0aW9uQmxvY2spCiAgICAgICAgIHNl
bGYuZHJvcENvbXBsZXRpb25CbG9jayhoYW5kbGVkLCBpdGVtUHJvdmlkZXJzKTsKKworICAgIFtf
d2ViVmlldyBfZG9BZnRlclJlY2VpdmluZ0VkaXREcmFnU25hcHNob3RGb3JUZXN0aW5nOl57Cisg
ICAgICAgIFtbX3dlYlZpZXcgZHJvcEludGVyYWN0aW9uRGVsZWdhdGVdIGRyb3BJbnRlcmFjdGlv
bjpbX3dlYlZpZXcgZHJvcEludGVyYWN0aW9uXSBjb25jbHVkZURyb3A6X2Ryb3BTZXNzaW9uLmdl
dCgpXTsKKyAgICAgICAgX2lzRG9uZVdpdGhDdXJyZW50UnVuID0gdHJ1ZTsKKyAgICB9XTsKIH0K
IAogLSAoVUlEcm9wUHJvcG9zYWwgKilfd2ViVmlldzooV0tXZWJWaWV3ICopd2ViVmlldyB3aWxs
VXBkYXRlRHJvcFByb3Bvc2FsVG9Qcm9wb3NhbDooVUlEcm9wUHJvcG9zYWwgKilwcm9wb3NhbCBm
b3JTZXNzaW9uOihpZCA8VUlEcm9wU2Vzc2lvbj4pc2Vzc2lvbgpkaWZmIC0tZ2l0IGEvVG9vbHMv
VGVzdFdlYktpdEFQSS9pb3MvVUlLaXRTUEkuaCBiL1Rvb2xzL1Rlc3RXZWJLaXRBUEkvaW9zL1VJ
S2l0U1BJLmgKaW5kZXggM2ZhNjY4NDM3ZDJkNjJkYmQ3M2I5ODdiMDE0N2I5MTdiNmUwM2NiNi4u
NzJlYzlmZDhjYTM5OTE1YzZlZDkzZWEyMTZmNzdkMjYwODRiMzcxYSAxMDA2NDQKLS0tIGEvVG9v
bHMvVGVzdFdlYktpdEFQSS9pb3MvVUlLaXRTUEkuaAorKysgYi9Ub29scy9UZXN0V2ViS2l0QVBJ
L2lvcy9VSUtpdFNQSS5oCkBAIC0xODMsNCArMTgzLDggQEAgdHlwZWRlZiBOU19PUFRJT05TKE5T
SW50ZWdlciwgVUlXS0RvY3VtZW50UmVxdWVzdEZsYWdzKSB7CiAtICh2b2lkKXNldE5leHRQcmV2
aW91c0l0ZW1zVmlzaWJsZTooQk9PTCl2aXNpYmxlOwogQGVuZAogCitAcHJvdG9jb2wgVUlEcm9w
SW50ZXJhY3Rpb25EZWxlZ2F0ZV9TdGFnaW5nXzMxMDc1MDA1IDxVSURyb3BJbnRlcmFjdGlvbkRl
bGVnYXRlPgorLSAodm9pZClfZHJvcEludGVyYWN0aW9uOihVSURyb3BJbnRlcmFjdGlvbiAqKWlu
dGVyYWN0aW9uIGRlbGF5ZWRQcmV2aWV3UHJvdmlkZXJGb3JEcm9wcGluZ0l0ZW06KFVJRHJhZ0l0
ZW0gKilpdGVtIHByZXZpZXdQcm92aWRlcjoodm9pZCheKShVSVRhcmdldGVkRHJhZ1ByZXZpZXcg
KnByZXZpZXcpKXByZXZpZXdQcm92aWRlcjsKK0BlbmQKKwogI2VuZGlmIC8vIFBMQVRGT1JNKElP
U19GQU1JTFkpCg==
</data>

          </attachment>
          <attachment
              isobsolete="1"
              ispatch="1"
              isprivate="0"
          >
            <attachid>370646</attachid>
            <date>2019-05-26 01:16:25 -0700</date>
            <delta_ts>2019-05-26 03:52:14 -0700</delta_ts>
            <desc>Patch</desc>
            <filename>bug-198243-20190526011625.patch</filename>
            <type>text/plain</type>
            <size>59914</size>
            <attacher name="Wenson Hsieh">wenson_hsieh</attacher>
            
              <data encoding="base64">U3VidmVyc2lvbiBSZXZpc2lvbjogMjQ1Nzc3CmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9D
aGFuZ2VMb2cgYi9Tb3VyY2UvV2ViQ29yZS9DaGFuZ2VMb2cKaW5kZXggMmU0MDUwZjEyYzc0NTM1
YzUzMzczMTc1ZWNmYjg0YTAxODQ1ZWNlOC4uOWJiZGEyMjVmYjAxN2NlM2YxM2U5Njc2MGJmN2Vi
MWZmZWI0ZTg0ZSAxMDA2NDQKLS0tIGEvU291cmNlL1dlYkNvcmUvQ2hhbmdlTG9nCisrKyBiL1Nv
dXJjZS9XZWJDb3JlL0NoYW5nZUxvZwpAQCAtMSwzICsxLDI0IEBACisyMDE5LTA1LTI1ICBXZW5z
b24gSHNpZWggIDx3ZW5zb25faHNpZWhAYXBwbGUuY29tPgorCisgICAgICAgIFtpT1NdIERyb3Bw
ZWQgdGV4dCwgYXR0YWNobWVudHMsIGFuZCBpbWFnZXMgc2hvdWxkIGFuaW1hdGUgaW50byBwbGFj
ZQorICAgICAgICBodHRwczovL2J1Z3Mud2Via2l0Lm9yZy9zaG93X2J1Zy5jZ2k/aWQ9MTk4MjQz
CisgICAgICAgIDxyZGFyOi8vcHJvYmxlbS8zNTIwNTM3Mz4KKworICAgICAgICBSZXZpZXdlZCBi
eSBOT0JPRFkgKE9PUFMhKS4KKworICAgICAgICBBZGQgc29tZSBob29rcyB0byBub3RpZnkgdGhl
IGNocm9tZSBjbGllbnQgd2hlbiBhbiBIVE1MSW1hZ2VFbGVtZW50J3MgaW1hZ2UgaXMgZmluaXNo
ZWQgbG9hZGluZy4gU2VlIFdlYktpdAorICAgICAgICBjaGFuZ2Vsb2cgZm9yIG1vcmUgZGV0YWls
LgorCisgICAgICAgIFRlc3Q6IERyYWdBbmREcm9wVGVzdHMuRHJvcFByZXZpZXdGb3JJbWFnZUlu
RWRpdGFibGVBcmVhCisKKyAgICAgICAgKiBsb2FkZXIvRW1wdHlDbGllbnRzLmg6CisgICAgICAg
ICogcGFnZS9DaHJvbWVDbGllbnQuaDoKKyAgICAgICAgKiBwYWdlL1BhZ2UuY3BwOgorICAgICAg
ICAoV2ViQ29yZTo6UGFnZTo6ZGlkRmluaXNoTG9hZGluZ0ltYWdlRm9yRWxlbWVudCk6CisgICAg
ICAgICogcGFnZS9QYWdlLmg6CisgICAgICAgICogcmVuZGVyaW5nL1JlbmRlckltYWdlLmNwcDoK
KyAgICAgICAgKFdlYkNvcmU6OlJlbmRlckltYWdlOjpub3RpZnlGaW5pc2hlZCk6CisKIDIwMTkt
MDUtMjUgIFphbGFuIEJ1anRhcyAgPHphbGFuQGFwcGxlLmNvbT4KIAogICAgICAgICBbTEZDXVtJ
RkNdIEludHJvZHVjZSBEaXNwbGF5UnVuIHRvIGRpc3BsYXkgdHJlZQpkaWZmIC0tZ2l0IGEvU291
cmNlL1dlYktpdC9DaGFuZ2VMb2cgYi9Tb3VyY2UvV2ViS2l0L0NoYW5nZUxvZwppbmRleCA4MDBi
ZGRjZWYxMzkyMGU0YmE3M2ZmZjM4YmQ3ZTY0NzdjM2VjMTVkLi4zMGVhNjQwNzQyNTE2NDkzNmRl
Y2RhYmRiZmM0M2VlMWQ0MmJlYmY5IDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViS2l0L0NoYW5nZUxv
ZworKysgYi9Tb3VyY2UvV2ViS2l0L0NoYW5nZUxvZwpAQCAtMSwzICsxLDE0NCBAQAorMjAxOS0w
NS0yNSAgV2Vuc29uIEhzaWVoICA8d2Vuc29uX2hzaWVoQGFwcGxlLmNvbT4KKworICAgICAgICBb
aU9TXSBEcm9wcGVkIHRleHQsIGF0dGFjaG1lbnRzLCBhbmQgaW1hZ2VzIHNob3VsZCBhbmltYXRl
IGludG8gcGxhY2UKKyAgICAgICAgaHR0cHM6Ly9idWdzLndlYmtpdC5vcmcvc2hvd19idWcuY2dp
P2lkPTE5ODI0MworICAgICAgICA8cmRhcjovL3Byb2JsZW0vMzUyMDUzNzM+CisKKyAgICAgICAg
UmV2aWV3ZWQgYnkgTk9CT0RZIChPT1BTISkuCisKKyAgICAgICAgQWRkcyBzdXBwb3J0IGZvciB0
YXJnZXRlZCBkcm9wIGFuaW1hdGlvbnMgb24gaU9TIGluIG1vZGVybiBXZWJLaXQgYnkgYWRvcHRp
bmcgVUlLaXQgU1BJIGludHJvZHVjZWQgaW4KKyAgICAgICAgPHJkYXI6Ly9wcm9ibGVtLzMxMDc1
MDA1PiB0byBhbGxvdyB1cGRhdGluZyB0aGUgZHJvcCBwcmV2aWV3IG1pZC1mbGlnaHQuIFRvIGdl
dCB0aGUgYW5pbWF0aW9uIHJpZ2h0LCB3ZSByZWZhY3RvcgorICAgICAgICBhbmQgYXVnbWVudCBl
eGlzdGluZyBsb2dpYyBmb3IgdGFraW5nIHNuYXBzaG90cyBhZnRlciBwZXJmb3JtaW5nIGEgZHJv
cCBpbiBhbiBlZGl0YWJsZSBjb250ZW50LgorCisgICAgICAgIEN1cnJlbnRseSwgdXBvbiBkcm9w
cGluZyBpbiBlZGl0YWJsZSBjb250ZW50LCB3ZSBmaXJzdCBzbmFwc2hvdCB0aGUgd2ViIHZpZXcg
YW5kIHRlbXBvcmFyaWx5IGNvdmVyIHRoZSByZWFsIHdlYgorICAgICAgICB2aWV3IHdpdGggdGhp
cyBzbmFwc2hvdC4gV2hlbiB0aGUgVGV4dEluZGljYXRvciBkYXRhIGFycml2ZXMgdGhhdCBjb250
YWlucyAoMSkgYSBzbmFwc2hvdCBvZiB0aGUgdmlzaWJsZSBwYXJ0IG9mCisgICAgICAgIHRoZSB3
ZWIgdmlldyBpZ25vcmluZyB0aGUgc2VsZWN0aW9uLCBhbmQgKDIpIGEgc25hcHNob3Qgb2YganVz
dCB0aGUgc2VsZWN0ZWQgY29udGVudHMgYWZ0ZXIgZHJvcCwgd2UgY3Jvc3NmYWRlCisgICAgICAg
IGZyb20gdGhlIHdlYiB2aWV3IHNuYXBzaG90IHRvIHRoZSBzbmFwc2hvdCBpbiAoMSkgdXNpbmcg
YSBoYXJkLWNvZGVkIHRpbWUgZGVsYXkgKH41MDBtcyksIGFuZCB0YXJnZXQgdGhlIGRyb3AKKyAg
ICAgICAgcHJldmlldyB0byB0aGUgZHJhZyBjYXJldCByZWN0LiBEdXJpbmcgdGhpcyBwcm9jZXNz
LCBzbmFwc2hvdCAoMikgaXMgY29tcGxldGVseSBpZ25vcmVkLgorCisgICAgICAgIFRoaXMgd2Fz
IGVmZmVjdGl2ZWx5IGEgaGFsZndheSBpbXBsZW1lbnRpb24gb2YgdGhlIGRlc2lyZWQgZWZmZWN0
IG9mIGFuaW1hdGluZyB0aGUgZHJvcHBlZCBjb250ZW50IGludG8gcGxhY2UKKyAgICAgICAgYW5k
IGNyb3NzZmFkaW5nIHRvIHRoZSBmaW5hbCBjb250ZW50OyBiZWZvcmUgVUlLaXQgaW1wbGVtZW50
ZWQgdXBkYXRlYWJsZSBkcmFnIHByZXZpZXdzLCB0aGUgZnVsbCBpbXBsZW1lbnRhdGlvbgorICAg
ICAgICB3YXMgbm90IHBvc3NpYmxlIGluIG1vZGVybiBXZWJLaXQgKHdpdGhvdXQgdXNpbmcgc3lu
Y2hyb25vdXMgSVBDKS4KKworICAgICAgICBOb3cgdGhhdCB3ZSdyZSBhYmxlIHRvIHVwZGF0ZSB0
aGUgZHJhZyBwcmV2aWV3IGluIHRoZSBtaWRkbGUgb2YgdGhlIGRyb3AgYW5pbWF0aW9uLCB3ZSBj
YW4gbm93IHV0aWxpemUgc25hcHNob3QKKyAgICAgICAgKDIpIGFib3ZlIGFuZCBjbGVhbiB1cCBz
b21lIHBhcnRzIG9mIHRoZSBkcm9wIGFuaW1hdGlvbiBpbiBlZGl0YWJsZSBjb250ZW50LiBTZWUg
YmVsb3cgZm9yIG1vcmUgZGV0YWlscy4KKworICAgICAgICAqIFVJUHJvY2Vzcy9BUEkvQ29jb2Ev
V0tXZWJWaWV3Lm1tOgorICAgICAgICAoLVtXS1dlYlZpZXcgX2RvQWZ0ZXJSZWNlaXZpbmdFZGl0
RHJhZ1NuYXBzaG90Rm9yVGVzdGluZzpdKToKKworICAgICAgICBBZGQgYSB0ZXN0aW5nIGhvb2sg
dG8gcGVyZm9ybSB0aGUgZ2l2ZW4gYmxvY2sgYWZ0ZXIgYW55IHBlbmRpbmcgZWRpdCBkcmFnIHNu
YXBzaG90IGhhcyBiZWVuIHJlY2VpdmVkLiBTZWUKKyAgICAgICAgVGVzdFdlYktpdEFQSSBjaGFu
Z2VzIGZvciBtb3JlIGRldGFpbC4KKworICAgICAgICAqIFVJUHJvY2Vzcy9BUEkvQ29jb2EvV0tX
ZWJWaWV3UHJpdmF0ZS5oOgorICAgICAgICAqIFVJUHJvY2Vzcy9QYWdlQ2xpZW50Lmg6CisgICAg
ICAgICogVUlQcm9jZXNzL1dlYlBhZ2VQcm94eS5oOgorICAgICAgICAqIFVJUHJvY2Vzcy9XZWJQ
YWdlUHJveHkubWVzc2FnZXMuaW46CisKKyAgICAgICAgU3BsaXQgdXAgdGhlIGV4aXN0aW5nIERp
ZENvbmNsdWRlRWRpdERyYWcgSVBDIG1lc3NhZ2UgaW50byB0d28gbWVzc2FnZXM6IFdpbGxSZWNl
aXZlRWRpdERyYWdTbmFwc2hvdCBhbmQKKyAgICAgICAgRGlkUmVjZWl2ZUVkaXREcmFnU25hcHNo
b3QuIFRoaXMgYWxsb3dzIHVzIHRvIGRlZmVyIGNsZWFuaW5nIHVwIHRoZSBkcmFnIHNlc3Npb24g
c3RhdGUgZHVyaW5nIGFuIGVkaXQgZHJvcCwKKyAgICAgICAgdW50aWwgYWZ0ZXIgdGhlIGZpbmFs
IGVkaXQgZHJhZyBzbmFwc2hvdCBoYXMgYmVlbiByZWNlaXZlZC4KKworICAgICAgICAqIFVJUHJv
Y2Vzcy9pb3MvRHJhZ0Ryb3BJbnRlcmFjdGlvblN0YXRlLmg6CisKKyAgICAgICAgQWRkIHNvbWUg
bmV3IG1ldGhvZHMgdG8gaGVscCBtYW5hZ2UgdGhlIGxpZmVjeWNsZSBvZiBkcm9wIHByZXZpZXcg
cHJvdmlkZXIgYmxvY2tzLgorCisgICAgICAgICogVUlQcm9jZXNzL2lvcy9EcmFnRHJvcEludGVy
YWN0aW9uU3RhdGUubW06CisgICAgICAgIChXZWJLaXQ6OkRyYWdEcm9wSW50ZXJhY3Rpb25TdGF0
ZTo6cHJlcGFyZUZvckRlbGF5ZWREcm9wUHJldmlldyk6CisKKyAgICAgICAgU3RvcmVzIGEgZ2l2
ZW4gZHJvcCBwcmV2aWV3IHByb3ZpZGVyLCBnaXZlbiB0byB1cyBieSBVSUtpdC4KKworICAgICAg
ICAoV2ViS2l0OjpEcmFnRHJvcEludGVyYWN0aW9uU3RhdGU6OmRlbGl2ZXJEZWxheWVkRHJvcFBy
ZXZpZXcpOgorCisgICAgICAgIEludm9rZXMgdGhlIHN0b3JlZCBkcm9wIHByZXZpZXcgcHJvdmlk
ZXJzIHdpdGggZ2l2ZW4gdGV4dCBpbmRpY2F0b3IgZGF0YS4gVGhpcyBpcyBpbnZva2VkIGFmdGVy
IHNuYXBzaG90cyBhcmUKKyAgICAgICAgdGFrZW4gZm9sbG93aW5nIGFuIGVkaXQgZHJhZyAodGhp
cyBpcyBhZGRpdGlvbmFsbHkgYWZ0ZXIgYWxsIGltYWdlcyBpbiB0aGUgaW5zZXJ0ZWQgZnJhZ21l
bnQgaGF2ZSBmaW5pc2hlZAorICAgICAgICBsb2FkaW5nKS4KKworICAgICAgICAoV2ViS2l0OjpE
cmFnRHJvcEludGVyYWN0aW9uU3RhdGU6OmNsZWFyQWxsRGVsYXllZEl0ZW1QcmV2aWV3UHJvdmlk
ZXJzKToKKworICAgICAgICBJbnZva2VzIGFsbCBzdG9yZWQgZHJvcCBwcmV2aWV3IHByb3ZpZGVy
cyB3aXRoIGEgbmlsIHByZXZpZXcuIFRoaXMgaXMgaW52b2tlZCBpbiBhbnkgY2FzZSB3aGVyZSBk
cmFnIHNlc3Npb24KKyAgICAgICAgY2xlYW51cCBvY2N1cnMgZWFybGllciB0aGFuIG5vcm1hbCAo
ZS5nLiwgaWYgdGhlIHdlYiBwcm9jZXNzIGNyYXNoZXMgZHVyaW5nIGRyb3ApLCBhbmQgZW5zdXJl
cyB0aGF0IHRoZSBoYW5kbGVycworICAgICAgICBhcmUgYWx3YXlzIGludm9rZWQgd2hlbiBjbGVh
bmluZyB1cCB0aGUgZHJhZyBzZXNzaW9uLgorCisgICAgICAgIChXZWJLaXQ6OkRyYWdEcm9wSW50
ZXJhY3Rpb25TdGF0ZTo6ZHJhZ0FuZERyb3BTZXNzaW9uc0RpZEVuZCk6CisKKyAgICAgICAgQ2Fs
bCBjbGVhckFsbERlbGF5ZWRJdGVtUHJldmlld1Byb3ZpZGVycy4KKworICAgICAgICAqIFVJUHJv
Y2Vzcy9pb3MvUGFnZUNsaWVudEltcGxJT1MuaDoKKyAgICAgICAgKiBVSVByb2Nlc3MvaW9zL1Bh
Z2VDbGllbnRJbXBsSU9TLm1tOgorICAgICAgICAoV2ViS2l0OjpQYWdlQ2xpZW50SW1wbDo6d2ls
bFJlY2VpdmVFZGl0RHJhZ1NuYXBzaG90KToKKyAgICAgICAgKFdlYktpdDo6UGFnZUNsaWVudElt
cGw6OmRpZFJlY2VpdmVFZGl0RHJhZ1NuYXBzaG90KToKKyAgICAgICAgKFdlYktpdDo6UGFnZUNs
aWVudEltcGw6OmRpZENvbmNsdWRlRWRpdERyYWcpOiBEZWxldGVkLgorCisgICAgICAgIE1vcmUg
cGx1bWJpbmcgKHNlZSBjaGFuZ2VzIHRvIERpZENvbmNsdWRlRWRpdERyYWcgYWJvdmUpLgorCisg
ICAgICAgICogVUlQcm9jZXNzL2lvcy9XS0NvbnRlbnRWaWV3SW50ZXJhY3Rpb24uaDoKKyAgICAg
ICAgKiBVSVByb2Nlc3MvaW9zL1dLQ29udGVudFZpZXdJbnRlcmFjdGlvbi5tbToKKyAgICAgICAg
KC1bV0tDb250ZW50VmlldyBjbGVhbnVwSW50ZXJhY3Rpb25dKToKKyAgICAgICAgKC1bV0tDb250
ZW50VmlldyBjbGVhblVwRHJhZ1NvdXJjZVNlc3Npb25TdGF0ZV0pOgorICAgICAgICAoLVtXS0Nv
bnRlbnRWaWV3IF93aWxsUmVjZWl2ZUVkaXREcmFnU25hcHNob3RdKToKKyAgICAgICAgKC1bV0tD
b250ZW50VmlldyBfZGlkUmVjZWl2ZUVkaXREcmFnU25hcHNob3Q6XSk6CisKKyAgICAgICAgU2V0
IF93YWl0aW5nRm9yRWRpdERyYWdTbmFwc2hvdCB0byBZRVMgaW4gdGhlIGdhcCBiZXR3ZWVuIHdo
ZW4gLV93aWxsUmVjZWl2ZUVkaXREcmFnU25hcHNob3QgaXMgaW52b2tlZCwgYW5kCisgICAgICAg
IHdoZW4gLV9kaWRSZWNlaXZlRWRpdERyYWdTbmFwc2hvdCBpcyBpbnZva2VkLiBJZiBfd2FpdGlu
Z0ZvckVkaXREcmFnU25hcHNob3QgaXMgWUVTLCB3ZSBiYWlsIG91dCBvZgorICAgICAgICAtY2xl
YW5VcERyYWdTb3VyY2VTZXNzaW9uU3RhdGUsIGFuZCBpbnN0ZWFkIGNsZWFuIHVwIGRyYWcgc2Vz
c2lvbiBzdGF0ZSBhZnRlciB0aGUgZWRpdCBkcmFnIHNuYXBzaG90IGlzCisgICAgICAgIHJlY2Vp
dmVkLgorCisgICAgICAgICgtW1dLQ29udGVudFZpZXcgX2RlbGl2ZXJEZWxheWVkRHJvcFByZXZp
ZXdJZlBvc3NpYmxlOl0pOgorICAgICAgICAoLVtXS0NvbnRlbnRWaWV3IF9kaWRQZXJmb3JtRHJh
Z09wZXJhdGlvbjpdKToKKyAgICAgICAgKC1bV0tDb250ZW50VmlldyB0ZXh0RWZmZWN0c1dpbmRv
d10pOgorCisgICAgICAgIERyaXZlLWJ5IGZpeCB0byByZW1vdmUgYSB3b3JrYXJvdW5kIGZvciBh
IGRlcHJlY2F0aW9uIHdhcm5pbmcuCisKKyAgICAgICAgKC1bV0tDb250ZW50VmlldyBkcm9wSW50
ZXJhY3Rpb246aXRlbTp3aWxsQW5pbWF0ZURyb3BXaXRoQW5pbWF0b3I6XSk6CisgICAgICAgICgt
W1dLQ29udGVudFZpZXcgZHJvcEludGVyYWN0aW9uOmNvbmNsdWRlRHJvcDpdKToKKworICAgICAg
ICBJbXBsZW1lbnQgdGhpcyBob29rIHRvIGVuc3VyZSB0aGF0IHRoZSB1bnNlbGVjdGVkIGNvbnRl
bnQgc25hcHNob3QgdmlldyBhbmQgdmlzaWJsZSBjb250ZW50IHNuYXBzaG90IHZpZXcgYXJlCisg
ICAgICAgIGd1YXJhbnRlZWQgdG8gYmUgcmVtb3ZlZCBmcm9tIHRoZSB2aWV3IGFmdGVyIGEgZHJv
cCBpbiBlZGl0YWJsZSBjb250ZW50LCBldmVuIGlmIHRoZSBkcmFnIGVkaXQgc25hcHNob3QgYXJy
aXZlcworICAgICAgICBhZnRlciB0aGUgZHJvcCBpcyBjb25jbHVkZWQuCisKKyAgICAgICAgKC1b
V0tDb250ZW50VmlldyBkcm9wSW50ZXJhY3Rpb246cHJldmlld0ZvckRyb3BwaW5nSXRlbTp3aXRo
RGVmYXVsdDpdKToKKyAgICAgICAgKC1bV0tDb250ZW50VmlldyBfZHJvcEludGVyYWN0aW9uOmRl
bGF5ZWRQcmV2aWV3UHJvdmlkZXJGb3JEcm9wcGluZ0l0ZW06cHJldmlld1Byb3ZpZGVyOl0pOgor
CisgICAgICAgIEltcGxlbWVudCB0aGUgbmV3IFVJS2l0IFNQSSBoZXJlLiBVSUtpdCBoYW5kcyB1
cyBhIHByZXZpZXcgcHJvdmlkZXIgaGVyZSwgd2hpY2ggd2UgY2FuIGludm9rZSBhdCBhIGxhdGVy
IHRpbWUKKyAgICAgICAgdG8gdXBkYXRlIHRoZSBkcm9wIHByZXZpZXcuIFdlIGRvIHRoaXMgaW4g
X2RpZFJlY2VpdmVFZGl0RHJhZ1NuYXBzaG90LgorCisgICAgICAgICgtW1dLQ29udGVudFZpZXcg
X2RvQWZ0ZXJSZWNlaXZpbmdFZGl0RHJhZ1NuYXBzaG90Rm9yVGVzdGluZzpdKToKKyAgICAgICAg
KC1bV0tDb250ZW50VmlldyBfZGlkQ29uY2x1ZGVFZGl0RHJhZzpdKTogRGVsZXRlZC4KKyAgICAg
ICAgKiBVSVByb2Nlc3MvaW9zL1dlYlBhZ2VQcm94eUlPUy5tbToKKyAgICAgICAgKFdlYktpdDo6
V2ViUGFnZVByb3h5Ojp3aWxsUmVjZWl2ZUVkaXREcmFnU25hcHNob3QpOgorICAgICAgICAoV2Vi
S2l0OjpXZWJQYWdlUHJveHk6OmRpZFJlY2VpdmVFZGl0RHJhZ1NuYXBzaG90KToKKyAgICAgICAg
KFdlYktpdDo6V2ViUGFnZVByb3h5OjpkaWRDb25jbHVkZURyb3ApOgorICAgICAgICAoV2ViS2l0
OjpXZWJQYWdlUHJveHk6OmRpZENvbmNsdWRlRWRpdERyYWcpOiBEZWxldGVkLgorICAgICAgICAq
IFdlYlByb2Nlc3MvV2ViQ29yZVN1cHBvcnQvV2ViQ2hyb21lQ2xpZW50LmNwcDoKKyAgICAgICAg
KFdlYktpdDo6V2ViQ2hyb21lQ2xpZW50OjpkaWRGaW5pc2hMb2FkaW5nSW1hZ2VGb3JFbGVtZW50
KToKKyAgICAgICAgKiBXZWJQcm9jZXNzL1dlYkNvcmVTdXBwb3J0L1dlYkNocm9tZUNsaWVudC5o
OgorICAgICAgICAqIFdlYlByb2Nlc3MvV2ViUGFnZS9XZWJQYWdlLmNwcDoKKyAgICAgICAgKFdl
YktpdDo6V2ViUGFnZTo6ZGlkRmluaXNoTG9hZGluZ0ltYWdlRm9yRWxlbWVudCk6CisgICAgICAg
ICogV2ViUHJvY2Vzcy9XZWJQYWdlL1dlYlBhZ2UuaDoKKyAgICAgICAgKiBXZWJQcm9jZXNzL1dl
YlBhZ2UvV2ViUGFnZS5tZXNzYWdlcy5pbjoKKyAgICAgICAgKiBXZWJQcm9jZXNzL1dlYlBhZ2Uv
aW9zL1dlYlBhZ2VJT1MubW06CisgICAgICAgIChXZWJLaXQ6OldlYlBhZ2U6OmRpZENvbmNsdWRl
RHJvcCk6CisKKyAgICAgICAgSWYgYW4gZWRpdCBkcmFnIGhhcyBiZWVuIGNvbmNsdWRlZCwgdGhl
cmUncyBubyBuZWVkIHRvIGhhbmcgb24gdG8gcGVuZGluZyBkcm9wcGVkIGltYWdlIGVsZW1lbnRz
IGFueW1vcmU7IGNsZWFyCisgICAgICAgIG91dCB0aGUgc2V0IGhlcmUuCisKKyAgICAgICAgKFdl
YktpdDo6V2ViUGFnZTo6ZGlkQ29uY2x1ZGVFZGl0RHJhZyk6CisKKyAgICAgICAgQWZ0ZXIgY29u
Y2x1ZGluZyBhbiBlZGl0IGRyYWcsIHdlIHRyeSB0byBkZWxpdmVyIHR3byB3ZWIgY29udGVudCBz
bmFwc2hvdHMgdG8gdGhlIFVJIHByb2Nlc3MsIHNvIHRoYXQgdGhlIFVJCisgICAgICAgIHByb2Nl
c3MgY2FuIGFzc2VtYmxlIGEgdGFyZ2V0ZWQgZHJvcCBwcmV2aWV3IGZvciBVSUtpdC4gT25lIHNu
YXBzaG90IGlzIG9mIHRoZSB2aXNpYmxlIGNvbnRlbnQgYXJlYSwgbm90CisgICAgICAgIGluY2x1
ZGluZyBhbnkgc2VsZWN0ZWQgY29udGVudC4gVGhlIG90aGVyIHNuYXBzaG90IGlzIG9mIHRoZSBz
ZWxlY3RlZCBjb250ZW50IG9ubHkuIEhvd2V2ZXIsIHdoZW4gZHJvcHBpbmcKKyAgICAgICAgaW1h
Z2VzIChvciBhIHRleHQgc2VsZWN0aW9uIGNvbnRhaW5pbmcgaW1hZ2VzKSwgdGhlc2UgaW1hZ2Vz
IG1heSBub3QgeWV0IGhhdmUgYmVlbiBsb2FkZWQuIElmIHRoYXQgaXMgdGhlIGNhc2UsCisgICAg
ICAgIHRoZXNlIGltYWdlcyB3aWxsIGFwcGVhciB0byBiZSBtaXNzaW5nIGZyb20gdGhlc2Ugc25h
cHNob3RzLgorCisgICAgICAgIFRvIGVuc3VyZSB0aGF0IHdlIGRvbid0IHRha2UgdGhpcyBzbmFw
c2hvdCB0b28gZWFybHksIGRlZmVyIGl0IHVudGlsIGFsbCBpbWFnZSBlbGVtZW50cyBpbiB0aGUg
ZHJvcHBlZCBjb250ZW50CisgICAgICAgIHJhbmdlIGhhdmUgZmluaXNoZWQgbG9hZGluZy4gV2Ug
Y2FuIHRlbGwgdGhhdCBhbGwgZHJvcHBlZCBpbWFnZXMgaGF2ZSBmaW5pc2hlZCBsb2FkaW5nIGJ5
IHVzaW5nIGEgbmV3IGNsaWVudAorICAgICAgICBob29rIHRoYXQgaXMgaW52b2tlZCB3aGVuIGFu
IGltYWdlIGhhcyBmaW5pc2hlZCBsb2FkaW5nLgorCisgICAgICAgIChXZWJLaXQ6OldlYlBhZ2U6
OmRpZEZpbmlzaExvYWRpbmdJbWFnZUZvckVsZW1lbnQpOgorICAgICAgICAoV2ViS2l0OjpXZWJQ
YWdlOjpjb21wdXRlQW5kU2VuZEVkaXREcmFnU25hcHNob3QpOgorCisgICAgICAgIFNuYXBzaG90
IHRoZSBzZWxlY3RlZCBjb250ZW50IGFuZCBzZW5kIGl0IHRvIHRoZSBVSSBwcm9jZXNzLgorCiAy
MDE5LTA1LTI0ICBZb3Vlbm4gRmFibGV0ICA8eW91ZW5uQGFwcGxlLmNvbT4KIAogICAgICAgICBS
RUdSRVNTSU9OIChyMjQ1NzE1PykgW1dLMl0gTGF5b3V0IFRlc3QgaHR0cC93cHQvY2FjaGUtc3Rv
cmFnZS9jYWNoZS1zdG9yYWdlLW5ldHdvcmtwcm9jZXNzLWNyYXNoLmh0bWwgaXMgYSBmbGFreSBm
YWlsdXJlCmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViS2l0TGVnYWN5L21hYy9DaGFuZ2VMb2cgYi9T
b3VyY2UvV2ViS2l0TGVnYWN5L21hYy9DaGFuZ2VMb2cKaW5kZXggZjk3MDBmMzFmY2RmODdhMWIx
MmYwMWMxZTJhNzRmNTA2Nzg3MWZhYi4uYzJhMDJmYTQwNWU0YTY0ZjRiZmQxNGI3ZmI3OWIwZWQ3
N2Y4ODEyZSAxMDA2NDQKLS0tIGEvU291cmNlL1dlYktpdExlZ2FjeS9tYWMvQ2hhbmdlTG9nCisr
KyBiL1NvdXJjZS9XZWJLaXRMZWdhY3kvbWFjL0NoYW5nZUxvZwpAQCAtMSwzICsxLDE3IEBACisy
MDE5LTA1LTI1ICBXZW5zb24gSHNpZWggIDx3ZW5zb25faHNpZWhAYXBwbGUuY29tPgorCisgICAg
ICAgIFtpT1NdIERyb3BwZWQgdGV4dCwgYXR0YWNobWVudHMsIGFuZCBpbWFnZXMgc2hvdWxkIGFu
aW1hdGUgaW50byBwbGFjZQorICAgICAgICBodHRwczovL2J1Z3Mud2Via2l0Lm9yZy9zaG93X2J1
Zy5jZ2k/aWQ9MTk4MjQzCisgICAgICAgIDxyZGFyOi8vcHJvYmxlbS8zNTIwNTM3Mz4KKworICAg
ICAgICBSZXZpZXdlZCBieSBOT0JPRFkgKE9PUFMhKS4KKworICAgICAgICBBZGQgYSBuZXcgY2hy
b21lIGNsaWVudCBtZXRob2QuIFNlZSBvdGhlciBjaGFuZ2Vsb2dzIGZvciBtb3JlIGRldGFpbC4K
KworICAgICAgICAqIFdlYkNvcmVTdXBwb3J0L1dlYkNocm9tZUNsaWVudC5oOgorICAgICAgICAq
IFdlYkNvcmVTdXBwb3J0L1dlYkNocm9tZUNsaWVudC5tbToKKyAgICAgICAgKFdlYkNocm9tZUNs
aWVudDo6ZGlkRmluaXNoTG9hZGluZ0ltYWdlRm9yRWxlbWVudCk6CisKIDIwMTktMDUtMjEgIEFs
ZXggQ2hyaXN0ZW5zZW4gIDxhY2hyaXN0ZW5zZW5Ad2Via2l0Lm9yZz4KIAogICAgICAgICBGaXgg
SU9TTUFDIGJ1aWxkCmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9sb2FkZXIvRW1wdHlDbGll
bnRzLmggYi9Tb3VyY2UvV2ViQ29yZS9sb2FkZXIvRW1wdHlDbGllbnRzLmgKaW5kZXggZDQ1MjI4
ZWVkMjBlYjk5NWY1ZGYyYTQ2MmZiNGUzNGI3M2I5OGYzNS4uYjY5YjkzMDZmMTliNDNhYWM0ZDI1
MGZhNzMwYmU4NDVkOWRmZWU0OSAxMDA2NDQKLS0tIGEvU291cmNlL1dlYkNvcmUvbG9hZGVyL0Vt
cHR5Q2xpZW50cy5oCisrKyBiL1NvdXJjZS9XZWJDb3JlL2xvYWRlci9FbXB0eUNsaWVudHMuaApA
QCAtNDAsNiArNDAsNyBAQCBuYW1lc3BhY2UgV2ViQ29yZSB7CiAKIGNsYXNzIERpYWdub3N0aWNM
b2dnaW5nQ2xpZW50OwogY2xhc3MgRWRpdG9yQ2xpZW50OworY2xhc3MgSFRNTEltYWdlRWxlbWVu
dDsKIGNsYXNzIFBhZ2VDb25maWd1cmF0aW9uOwogCiBjbGFzcyBFbXB0eUNocm9tZUNsaWVudCA6
IHB1YmxpYyBDaHJvbWVDbGllbnQgewpAQCAtMTExLDYgKzExMiw4IEBAIGNsYXNzIEVtcHR5Q2hy
b21lQ2xpZW50IDogcHVibGljIENocm9tZUNsaWVudCB7CiAgICAgSW50UG9pbnQgYWNjZXNzaWJp
bGl0eVNjcmVlblRvUm9vdFZpZXcoY29uc3QgSW50UG9pbnQmIHApIGNvbnN0IGZpbmFsIHsgcmV0
dXJuIHA7IH07CiAgICAgSW50UmVjdCByb290Vmlld1RvQWNjZXNzaWJpbGl0eVNjcmVlbihjb25z
dCBJbnRSZWN0JiByKSBjb25zdCBmaW5hbCB7IHJldHVybiByOyB9OwogCisgICAgdm9pZCBkaWRG
aW5pc2hMb2FkaW5nSW1hZ2VGb3JFbGVtZW50KEhUTUxJbWFnZUVsZW1lbnQmKSBmaW5hbCB7IH0K
KwogICAgIFBsYXRmb3JtUGFnZUNsaWVudCBwbGF0Zm9ybVBhZ2VDbGllbnQoKSBjb25zdCBmaW5h
bCB7IHJldHVybiAwOyB9CiAgICAgdm9pZCBjb250ZW50c1NpemVDaGFuZ2VkKEZyYW1lJiwgY29u
c3QgSW50U2l6ZSYpIGNvbnN0IGZpbmFsIHsgfQogICAgIHZvaWQgaW50cmluc2ljQ29udGVudHNT
aXplQ2hhbmdlZChjb25zdCBJbnRTaXplJikgY29uc3QgZmluYWwgeyB9CmRpZmYgLS1naXQgYS9T
b3VyY2UvV2ViQ29yZS9wYWdlL0Nocm9tZUNsaWVudC5oIGIvU291cmNlL1dlYkNvcmUvcGFnZS9D
aHJvbWVDbGllbnQuaAppbmRleCBmMzUzOTBjOGMzYWUyNzlmOWQzNjk1ZmE2ZGUyZTdmNzk3Njlj
N2VmLi4xNmQzZjljMWFlZDVhNzVhMGE0OWY4NDVmZTQ0MTAzMDJkYjRlMTdmIDEwMDY0NAotLS0g
YS9Tb3VyY2UvV2ViQ29yZS9wYWdlL0Nocm9tZUNsaWVudC5oCisrKyBiL1NvdXJjZS9XZWJDb3Jl
L3BhZ2UvQ2hyb21lQ2xpZW50LmgKQEAgLTg3LDYgKzg3LDcgQEAgY2xhc3MgRnJhbWVMb2FkUmVx
dWVzdDsKIGNsYXNzIEdlb2xvY2F0aW9uOwogY2xhc3MgR3JhcGhpY3NMYXllcjsKIGNsYXNzIEdy
YXBoaWNzTGF5ZXJGYWN0b3J5OworY2xhc3MgSFRNTEltYWdlRWxlbWVudDsKIGNsYXNzIEhUTUxJ
bnB1dEVsZW1lbnQ7CiBjbGFzcyBIVE1MTWVkaWFFbGVtZW50OwogY2xhc3MgSFRNTFZpZGVvRWxl
bWVudDsKQEAgLTE4Miw2ICsxODMsOCBAQCBwdWJsaWM6CiAgICAgdmlydHVhbCBJbnRQb2ludCBh
Y2Nlc3NpYmlsaXR5U2NyZWVuVG9Sb290Vmlldyhjb25zdCBJbnRQb2ludCYpIGNvbnN0ID0gMDsK
ICAgICB2aXJ0dWFsIEludFJlY3Qgcm9vdFZpZXdUb0FjY2Vzc2liaWxpdHlTY3JlZW4oY29uc3Qg
SW50UmVjdCYpIGNvbnN0ID0gMDsKIAorICAgIHZpcnR1YWwgdm9pZCBkaWRGaW5pc2hMb2FkaW5n
SW1hZ2VGb3JFbGVtZW50KEhUTUxJbWFnZUVsZW1lbnQmKSA9IDA7CisKICAgICB2aXJ0dWFsIFBs
YXRmb3JtUGFnZUNsaWVudCBwbGF0Zm9ybVBhZ2VDbGllbnQoKSBjb25zdCA9IDA7CiAKICNpZiBF
TkFCTEUoQ1VSU09SX1NVUFBPUlQpCmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9wYWdlL1Bh
Z2UuY3BwIGIvU291cmNlL1dlYkNvcmUvcGFnZS9QYWdlLmNwcAppbmRleCBhYTAxM2JmNzYzM2Vj
ZTAzNmRlOTBiZmU3NDViYTQzN2RmMjU4MDVkLi4yOTkzMmJhOTM2NzE0ZjI3OWIwMDYxMzY5ZjRl
NTAzNzQxNjEyNDlmIDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViQ29yZS9wYWdlL1BhZ2UuY3BwCisr
KyBiL1NvdXJjZS9XZWJDb3JlL3BhZ2UvUGFnZS5jcHAKQEAgLTI5OTYsNCArMjk5Niw5IEBAIHZv
aWQgUGFnZTo6Y29uZmlndXJlTG9nZ2luZ0NoYW5uZWwoY29uc3QgU3RyaW5nJiBjaGFubmVsTmFt
ZSwgV1RGTG9nQ2hhbm5lbFN0YXRlCiAjZW5kaWYKIH0KIAordm9pZCBQYWdlOjpkaWRGaW5pc2hM
b2FkaW5nSW1hZ2VGb3JFbGVtZW50KEhUTUxJbWFnZUVsZW1lbnQmIGVsZW1lbnQpCit7CisgICAg
Y2hyb21lKCkuY2xpZW50KCkuZGlkRmluaXNoTG9hZGluZ0ltYWdlRm9yRWxlbWVudChlbGVtZW50
KTsKK30KKwogfSAvLyBuYW1lc3BhY2UgV2ViQ29yZQpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYkNv
cmUvcGFnZS9QYWdlLmggYi9Tb3VyY2UvV2ViQ29yZS9wYWdlL1BhZ2UuaAppbmRleCBlYzNmNTNj
ODI4ODI2NWJmOGU2ZmNmOWQxYjFjZTk5MTFkYzZkZDQ1Li5lN2ExZWFlNjJmZjdjZDI1NTFmYTQw
ZjY5MDk0MGJmYWZhMjdhYTQ0IDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViQ29yZS9wYWdlL1BhZ2Uu
aAorKysgYi9Tb3VyY2UvV2ViQ29yZS9wYWdlL1BhZ2UuaApAQCAtNTI3LDYgKzUyNyw4IEBAIHB1
YmxpYzoKICAgICBXRUJDT1JFX0VYUE9SVCBWaXNpYmlsaXR5U3RhdGUgdmlzaWJpbGl0eVN0YXRl
KCkgY29uc3Q7CiAgICAgV0VCQ09SRV9FWFBPUlQgdm9pZCByZXN1bWVBbmltYXRpbmdJbWFnZXMo
KTsKIAorICAgIHZvaWQgZGlkRmluaXNoTG9hZGluZ0ltYWdlRm9yRWxlbWVudChIVE1MSW1hZ2VF
bGVtZW50Jik7CisKICAgICBXRUJDT1JFX0VYUE9SVCB2b2lkIGFkZExheW91dE1pbGVzdG9uZXMo
T3B0aW9uU2V0PExheW91dE1pbGVzdG9uZT4pOwogICAgIFdFQkNPUkVfRVhQT1JUIHZvaWQgcmVt
b3ZlTGF5b3V0TWlsZXN0b25lcyhPcHRpb25TZXQ8TGF5b3V0TWlsZXN0b25lPik7CiAgICAgT3B0
aW9uU2V0PExheW91dE1pbGVzdG9uZT4gcmVxdWVzdGVkTGF5b3V0TWlsZXN0b25lcygpIGNvbnN0
IHsgcmV0dXJuIG1fcmVxdWVzdGVkTGF5b3V0TWlsZXN0b25lczsgfQpkaWZmIC0tZ2l0IGEvU291
cmNlL1dlYkNvcmUvcmVuZGVyaW5nL1JlbmRlckltYWdlLmNwcCBiL1NvdXJjZS9XZWJDb3JlL3Jl
bmRlcmluZy9SZW5kZXJJbWFnZS5jcHAKaW5kZXggOGU4NDAwMjM1YWUxNzJlYzgyZjQwYWJkNGUw
OTQ1MTllNGY4NmQxZC4uNGQ2YWE3NTdlYWEzODFjZTBjYWNmOGZlNWZkMTNiOGIwODQ0ZDJmMCAx
MDA2NDQKLS0tIGEvU291cmNlL1dlYkNvcmUvcmVuZGVyaW5nL1JlbmRlckltYWdlLmNwcAorKysg
Yi9Tb3VyY2UvV2ViQ29yZS9yZW5kZXJpbmcvUmVuZGVySW1hZ2UuY3BwCkBAIC0zNzgsNiArMzc4
LDkgQEAgdm9pZCBSZW5kZXJJbWFnZTo6bm90aWZ5RmluaXNoZWQoQ2FjaGVkUmVzb3VyY2UmIG5l
d0ltYWdlKQogICAgICAgICAvLyB0aGF0IHRoZSBpbWFnZSBpcyBkb25lIGFuZCB0aGV5IGNhbiBy
ZWZlcmVuY2UgaXQgZGlyZWN0bHkuCiAgICAgICAgIGNvbnRlbnRDaGFuZ2VkKEltYWdlQ2hhbmdl
ZCk7CiAgICAgfQorCisgICAgaWYgKGlzPEhUTUxJbWFnZUVsZW1lbnQ+KGVsZW1lbnQoKSkpCisg
ICAgICAgIHBhZ2UoKS5kaWRGaW5pc2hMb2FkaW5nSW1hZ2VGb3JFbGVtZW50KGRvd25jYXN0PEhU
TUxJbWFnZUVsZW1lbnQ+KCplbGVtZW50KCkpKTsKIH0KIAogYm9vbCBSZW5kZXJJbWFnZTo6aXNT
aG93aW5nTWlzc2luZ09ySW1hZ2VFcnJvcigpIGNvbnN0CmRpZmYgLS1naXQgYS9Tb3VyY2UvV2Vi
S2l0L1VJUHJvY2Vzcy9BUEkvQ29jb2EvV0tXZWJWaWV3Lm1tIGIvU291cmNlL1dlYktpdC9VSVBy
b2Nlc3MvQVBJL0NvY29hL1dLV2ViVmlldy5tbQppbmRleCBmNmE3ODY1ZGI3M2IxMWNkNzYzODQ5
ZWNmM2JhNzQ3YmNhMDU4NDEzLi5kODczZDE0ODFhNzBiYWQ1MzIyMmU2ZWU5OGY5ZTg0NzY5MjQ3
NDBlIDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViS2l0L1VJUHJvY2Vzcy9BUEkvQ29jb2EvV0tXZWJW
aWV3Lm1tCisrKyBiL1NvdXJjZS9XZWJLaXQvVUlQcm9jZXNzL0FQSS9Db2NvYS9XS1dlYlZpZXcu
bW0KQEAgLTY4ODksNiArNjg4OSwxMSBAQCAtIChOU0RpY3Rpb25hcnkgKilfcHJvcGVydGllc09m
TGF5ZXJXaXRoSUQ6KHVuc2lnbmVkIGxvbmcgbG9uZylsYXllcklECiAgICAgfTsKIH0KIAorLSAo
dm9pZClfZG9BZnRlclJlY2VpdmluZ0VkaXREcmFnU25hcHNob3RGb3JUZXN0aW5nOihkaXNwYXRj
aF9ibG9ja190KWFjdGlvbgoreworICAgIFtfY29udGVudFZpZXcgX2RvQWZ0ZXJSZWNlaXZpbmdF
ZGl0RHJhZ1NuYXBzaG90Rm9yVGVzdGluZzphY3Rpb25dOworfQorCiAjZW5kaWYgLy8gUExBVEZP
Uk0oSU9TX0ZBTUlMWSkKIAogI2lmIFBMQVRGT1JNKE1BQykKZGlmZiAtLWdpdCBhL1NvdXJjZS9X
ZWJLaXQvVUlQcm9jZXNzL0FQSS9Db2NvYS9XS1dlYlZpZXdQcml2YXRlLmggYi9Tb3VyY2UvV2Vi
S2l0L1VJUHJvY2Vzcy9BUEkvQ29jb2EvV0tXZWJWaWV3UHJpdmF0ZS5oCmluZGV4IDBmMTc4YzA5
ODNjN2VmMGY1YjRiZWQxYzRiN2Q3MTgxNTgxNjcwYjMuLmM2NzViZmZmMjY2YjU3NDhhNTY2ZDI3
NDBiZDZkNzMxZWRlNjQ5MDkgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJLaXQvVUlQcm9jZXNzL0FQ
SS9Db2NvYS9XS1dlYlZpZXdQcml2YXRlLmgKKysrIGIvU291cmNlL1dlYktpdC9VSVByb2Nlc3Mv
QVBJL0NvY29hL1dLV2ViVmlld1ByaXZhdGUuaApAQCAtNDg5LDYgKzQ4OSw4IEBAIHR5cGVkZWYg
TlNfT1BUSU9OUyhOU1VJbnRlZ2VyLCBfV0tSZWN0RWRnZSkgewogCiBAcHJvcGVydHkgKG5vbmF0
b21pYywgcmVhZG9ubHkpIENHUmVjdCBfZHJhZ0NhcmV0UmVjdCBXS19BUElfQVZBSUxBQkxFKGlv
cygxMS4wKSk7CiAKKy0gKHZvaWQpX2RvQWZ0ZXJSZWNlaXZpbmdFZGl0RHJhZ1NuYXBzaG90Rm9y
VGVzdGluZzooZGlzcGF0Y2hfYmxvY2tfdClhY3Rpb24gV0tfQVBJX0FWQUlMQUJMRShpb3MoV0tf
SU9TX1RCQSkpOworCiAtICh2b2lkKV9yZXF1ZXN0QWN0aXZhdGVkRWxlbWVudEF0UG9zaXRpb246
KENHUG9pbnQpcG9zaXRpb24gY29tcGxldGlvbkJsb2NrOih2b2lkICheKShfV0tBY3RpdmF0ZWRF
bGVtZW50SW5mbyAqKSlibG9jayBXS19BUElfQVZBSUxBQkxFKGlvcygxMS4wKSk7CiAtICh2b2lk
KV9hY2Nlc3NpYmlsaXR5UmV0cmlldmVSZWN0c0F0U2VsZWN0aW9uT2Zmc2V0OihOU0ludGVnZXIp
b2Zmc2V0IHdpdGhUZXh0OihOU1N0cmluZyAqKXRleHQgY29tcGxldGlvbkhhbmRsZXI6KHZvaWQg
KF4pKE5TQXJyYXk8TlNWYWx1ZSAqPiAqcmVjdHMpKWNvbXBsZXRpb25IYW5kbGVyIFdLX0FQSV9B
VkFJTEFCTEUoaW9zKDExLjMpKTsKIC0gKHZvaWQpX2FjY2Vzc2liaWxpdHlTdG9yZVNlbGVjdGlv
biBXS19BUElfQVZBSUxBQkxFKGlvcygxMS4zKSk7CmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViS2l0
L1VJUHJvY2Vzcy9QYWdlQ2xpZW50LmggYi9Tb3VyY2UvV2ViS2l0L1VJUHJvY2Vzcy9QYWdlQ2xp
ZW50LmgKaW5kZXggYWZjOTRjZTkwMmRmZDkxM2U4NGViN2Q5NjU4ZDBkNzUzYWIwOWJkMS4uNjY5
YzFkYTZkYmI5OGY2Njk1Y2NhZGVkMjJiNzQ3YWQwZWZjZDlhMSAxMDA2NDQKLS0tIGEvU291cmNl
L1dlYktpdC9VSVByb2Nlc3MvUGFnZUNsaWVudC5oCisrKyBiL1NvdXJjZS9XZWJLaXQvVUlQcm9j
ZXNzL1BhZ2VDbGllbnQuaApAQCAtNDc5LDcgKzQ3OSw4IEBAIHB1YmxpYzoKICNpZiBFTkFCTEUo
REFUQV9JTlRFUkFDVElPTikKICAgICB2aXJ0dWFsIHZvaWQgZGlkSGFuZGxlRHJhZ1N0YXJ0UmVx
dWVzdChib29sIHN0YXJ0ZWQpID0gMDsKICAgICB2aXJ0dWFsIHZvaWQgZGlkSGFuZGxlQWRkaXRp
b25hbERyYWdJdGVtc1JlcXVlc3QoYm9vbCBhZGRlZCkgPSAwOwotICAgIHZpcnR1YWwgdm9pZCBk
aWRDb25jbHVkZUVkaXREcmFnKE9wdGlvbmFsPFdlYkNvcmU6OlRleHRJbmRpY2F0b3JEYXRhPikg
PSAwOworICAgIHZpcnR1YWwgdm9pZCB3aWxsUmVjZWl2ZUVkaXREcmFnU25hcHNob3QoKSA9IDA7
CisgICAgdmlydHVhbCB2b2lkIGRpZFJlY2VpdmVFZGl0RHJhZ1NuYXBzaG90KE9wdGlvbmFsPFdl
YkNvcmU6OlRleHRJbmRpY2F0b3JEYXRhPikgPSAwOwogICAgIHZpcnR1YWwgdm9pZCBkaWRDaGFu
Z2VEcmFnQ2FyZXRSZWN0KGNvbnN0IFdlYkNvcmU6OkludFJlY3QmIHByZXZpb3VzQ2FyZXRSZWN0
LCBjb25zdCBXZWJDb3JlOjpJbnRSZWN0JiBjYXJldFJlY3QpID0gMDsKICNlbmRpZgogCmRpZmYg
LS1naXQgYS9Tb3VyY2UvV2ViS2l0L1VJUHJvY2Vzcy9XZWJQYWdlUHJveHkuaCBiL1NvdXJjZS9X
ZWJLaXQvVUlQcm9jZXNzL1dlYlBhZ2VQcm94eS5oCmluZGV4IDZjNWFkNjI1ZDEyMDRjN2MwZDgz
OTY5OWU3ZTJmNjVhNWJhNjRlMDMuLjYzMWE4ZmU1NDA5NzNhN2JlZmEzMmM3ZjBiMmY5ZGY3Yzhm
NGZmMDMgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJLaXQvVUlQcm9jZXNzL1dlYlBhZ2VQcm94eS5o
CisrKyBiL1NvdXJjZS9XZWJLaXQvVUlQcm9jZXNzL1dlYlBhZ2VQcm94eS5oCkBAIC03MjYsMTIg
KzcyNiwxNCBAQCBwdWJsaWM6CiAgICAgdm9pZCB1cGRhdGVTZWxlY3Rpb25XaXRoRGVsdGEoaW50
NjRfdCBsb2NhdGlvbkRlbHRhLCBpbnQ2NF90IGxlbmd0aERlbHRhLCBDb21wbGV0aW9uSGFuZGxl
cjx2b2lkKCk+JiYpOwogICAgIHZvaWQgcmVxdWVzdERvY3VtZW50RWRpdGluZ0NvbnRleHQoV2Vi
S2l0OjpEb2N1bWVudEVkaXRpbmdDb250ZXh0UmVxdWVzdCwgQ29tcGxldGlvbkhhbmRsZXI8dm9p
ZChXZWJLaXQ6OkRvY3VtZW50RWRpdGluZ0NvbnRleHQpPiYmKTsKICAgICB2b2lkIGdlbmVyYXRl
U3ludGhldGljRWRpdGluZ0NvbW1hbmQoU3ludGhldGljRWRpdGluZ0NvbW1hbmRUeXBlKTsKLSNp
ZiBFTkFCTEUoREFUQV9JTlRFUkFDVElPTikKKyNpZiBFTkFCTEUoRFJBR19TVVBQT1JUKQogICAg
IHZvaWQgZGlkSGFuZGxlRHJhZ1N0YXJ0UmVxdWVzdChib29sIHN0YXJ0ZWQpOwogICAgIHZvaWQg
ZGlkSGFuZGxlQWRkaXRpb25hbERyYWdJdGVtc1JlcXVlc3QoYm9vbCBhZGRlZCk7CiAgICAgdm9p
ZCByZXF1ZXN0RHJhZ1N0YXJ0KGNvbnN0IFdlYkNvcmU6OkludFBvaW50JiBjbGllbnRQb3NpdGlv
biwgY29uc3QgV2ViQ29yZTo6SW50UG9pbnQmIGdsb2JhbFBvc2l0aW9uLCBXZWJDb3JlOjpEcmFn
U291cmNlQWN0aW9uIGFsbG93ZWRBY3Rpb25zKTsKICAgICB2b2lkIHJlcXVlc3RBZGRpdGlvbmFs
SXRlbXNGb3JEcmFnU2Vzc2lvbihjb25zdCBXZWJDb3JlOjpJbnRQb2ludCYgY2xpZW50UG9zaXRp
b24sIGNvbnN0IFdlYkNvcmU6OkludFBvaW50JiBnbG9iYWxQb3NpdGlvbiwgV2ViQ29yZTo6RHJh
Z1NvdXJjZUFjdGlvbiBhbGxvd2VkQWN0aW9ucyk7Ci0gICAgdm9pZCBkaWRDb25jbHVkZUVkaXRE
cmFnKE9wdGlvbmFsPFdlYkNvcmU6OlRleHRJbmRpY2F0b3JEYXRhPik7CisgICAgdm9pZCB3aWxs
UmVjZWl2ZUVkaXREcmFnU25hcHNob3QoKTsKKyAgICB2b2lkIGRpZFJlY2VpdmVFZGl0RHJhZ1Nu
YXBzaG90KE9wdGlvbmFsPFdlYkNvcmU6OlRleHRJbmRpY2F0b3JEYXRhPik7CisgICAgdm9pZCBk
aWRDb25jbHVkZURyb3AoKTsKICNlbmRpZgogI2VuZGlmIC8vIFBMQVRGT1JNKElPU19GQU1JTFkp
CiAjaWYgRU5BQkxFKERBVEFfREVURUNUSU9OKQpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYktpdC9V
SVByb2Nlc3MvV2ViUGFnZVByb3h5Lm1lc3NhZ2VzLmluIGIvU291cmNlL1dlYktpdC9VSVByb2Nl
c3MvV2ViUGFnZVByb3h5Lm1lc3NhZ2VzLmluCmluZGV4IDZmY2VjZGM2YjY1ZDg4YzljOTg1ODUz
OTVhYjU5ZTdkODEyNmJhMDYuLjQwNDZlMmUyYjI0NjIyOTNlMjlmYTQ1ODBmMDcxNGE5MGMzOTk4
MzMgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJLaXQvVUlQcm9jZXNzL1dlYlBhZ2VQcm94eS5tZXNz
YWdlcy5pbgorKysgYi9Tb3VyY2UvV2ViS2l0L1VJUHJvY2Vzcy9XZWJQYWdlUHJveHkubWVzc2Fn
ZXMuaW4KQEAgLTMzMyw3ICszMzMsOCBAQCBtZXNzYWdlcyAtPiBXZWJQYWdlUHJveHkgewogI2lm
IEVOQUJMRShEQVRBX0lOVEVSQUNUSU9OKQogICAgIERpZEhhbmRsZURyYWdTdGFydFJlcXVlc3Qo
Ym9vbCBzdGFydGVkKQogICAgIERpZEhhbmRsZUFkZGl0aW9uYWxEcmFnSXRlbXNSZXF1ZXN0KGJv
b2wgYWRkZWQpCi0gICAgRGlkQ29uY2x1ZGVFZGl0RHJhZyhPcHRpb25hbDxXZWJDb3JlOjpUZXh0
SW5kaWNhdG9yRGF0YT4gdGV4dEluZGljYXRvcikKKyAgICBXaWxsUmVjZWl2ZUVkaXREcmFnU25h
cHNob3QoKQorICAgIERpZFJlY2VpdmVFZGl0RHJhZ1NuYXBzaG90KE9wdGlvbmFsPFdlYkNvcmU6
OlRleHRJbmRpY2F0b3JEYXRhPiB0ZXh0SW5kaWNhdG9yKQogI2VuZGlmCiAKICNpZiBQTEFURk9S
TShDT0NPQSkKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJLaXQvVUlQcm9jZXNzL2lvcy9EcmFnRHJv
cEludGVyYWN0aW9uU3RhdGUuaCBiL1NvdXJjZS9XZWJLaXQvVUlQcm9jZXNzL2lvcy9EcmFnRHJv
cEludGVyYWN0aW9uU3RhdGUuaAppbmRleCBmMTg0OWEyNTJjZDk5NzJjNmUwMmI3OGJmZDkxY2M3
OWEzODBlMTdmLi5mNTdkYjlmMDllMTVkYmM0ZTNiZGMwYjk0MDk1YjUwODE3ZTgxNDg5IDEwMDY0
NAotLS0gYS9Tb3VyY2UvV2ViS2l0L1VJUHJvY2Vzcy9pb3MvRHJhZ0Ryb3BJbnRlcmFjdGlvblN0
YXRlLmgKKysrIGIvU291cmNlL1dlYktpdC9VSVByb2Nlc3MvaW9zL0RyYWdEcm9wSW50ZXJhY3Rp
b25TdGF0ZS5oCkBAIC00MCw2ICs0MCw3IEBACiAKIG5hbWVzcGFjZSBXZWJDb3JlIHsKIHN0cnVj
dCBEcmFnSXRlbTsKK3N0cnVjdCBUZXh0SW5kaWNhdG9yRGF0YTsKIH0KIAogbmFtZXNwYWNlIFdl
YktpdCB7CkBAIC01OCw2ICs1OSwxMSBAQCBzdHJ1Y3QgRHJhZ1NvdXJjZVN0YXRlIHsKICAgICBO
U0ludGVnZXIgaXRlbUlkZW50aWZpZXIgeyAwIH07CiB9OwogCitzdHJ1Y3QgSXRlbUFuZFByZXZp
ZXdQcm92aWRlciB7CisgICAgUmV0YWluUHRyPFVJRHJhZ0l0ZW0+IGl0ZW07CisgICAgQmxvY2tQ
dHI8dm9pZChVSVRhcmdldGVkRHJhZ1ByZXZpZXcgKik+IHByb3ZpZGVyOworfTsKKwogY2xhc3Mg
RHJhZ0Ryb3BJbnRlcmFjdGlvblN0YXRlIHsKIHB1YmxpYzoKICAgICBib29sIGFueUFjdGl2ZURy
YWdTb3VyY2VJcyhXZWJDb3JlOjpEcmFnU291cmNlQWN0aW9uKSBjb25zdDsKQEAgLTkyLDYgKzk4
LDEwIEBAIHB1YmxpYzoKICAgICBCbG9ja1B0cjx2b2lkKCk+IHRha2VEcmFnQ2FuY2VsU2V0RG93
bkJsb2NrKCkgeyByZXR1cm4gV1RGTW92ZShtX2RyYWdDYW5jZWxTZXREb3duQmxvY2spOyB9CiAg
ICAgQmxvY2tQdHI8dm9pZChOU0FycmF5PFVJRHJhZ0l0ZW0gKj4gKik+IHRha2VBZGREcmFnSXRl
bUNvbXBsZXRpb25CbG9jaygpIHsgcmV0dXJuIFdURk1vdmUobV9hZGREcmFnSXRlbUNvbXBsZXRp
b25CbG9jayk7IH0KIAorICAgIHZvaWQgcHJlcGFyZUZvckRlbGF5ZWREcm9wUHJldmlldyhVSURy
YWdJdGVtICosIHZvaWQoXnByb3ZpZGVyKShVSVRhcmdldGVkRHJhZ1ByZXZpZXcgKnByZXZpZXcp
KTsKKyAgICB2b2lkIGRlbGl2ZXJEZWxheWVkRHJvcFByZXZpZXcoVUlWaWV3ICpjb250ZW50Vmll
dywgVUlWaWV3ICpwcmV2aWV3Q29udGFpbmVyLCBjb25zdCBXZWJDb3JlOjpUZXh0SW5kaWNhdG9y
RGF0YSYpOworICAgIHZvaWQgY2xlYXJBbGxEZWxheWVkSXRlbVByZXZpZXdQcm92aWRlcnMoKTsK
KwogcHJpdmF0ZToKICAgICB2b2lkIHVwZGF0ZVByZXZpZXdzRm9yQWN0aXZlRHJhZ1NvdXJjZXMo
KTsKICAgICBPcHRpb25hbDxEcmFnU291cmNlU3RhdGU+IGFjdGl2ZURyYWdTb3VyY2VGb3JJdGVt
KFVJRHJhZ0l0ZW0gKikgY29uc3Q7CkBAIC0xMDgsNiArMTE4LDcgQEAgcHJpdmF0ZToKIAogICAg
IE9wdGlvbmFsPERyYWdTb3VyY2VTdGF0ZT4gbV9zdGFnZWREcmFnU291cmNlOwogICAgIFZlY3Rv
cjxEcmFnU291cmNlU3RhdGU+IG1fYWN0aXZlRHJhZ1NvdXJjZXM7CisgICAgVmVjdG9yPEl0ZW1B
bmRQcmV2aWV3UHJvdmlkZXI+IG1fZGVsYXllZEl0ZW1QcmV2aWV3UHJvdmlkZXJzOwogfTsKIAog
fSAvLyBuYW1lc3BhY2UgV2ViS2l0CmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViS2l0L1VJUHJvY2Vz
cy9pb3MvRHJhZ0Ryb3BJbnRlcmFjdGlvblN0YXRlLm1tIGIvU291cmNlL1dlYktpdC9VSVByb2Nl
c3MvaW9zL0RyYWdEcm9wSW50ZXJhY3Rpb25TdGF0ZS5tbQppbmRleCAwNjcwYzQ1OWM2YTg1MWM0
MDdiYzliMjc2ODExYmE4ZGRlYzY4MTU2Li4wZDNiZDBjYmJhNjE1MWQ1OGJhNjM5ZjQ2NzlmOWY5
YWVkODk5ZjU1IDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViS2l0L1VJUHJvY2Vzcy9pb3MvRHJhZ0Ry
b3BJbnRlcmFjdGlvblN0YXRlLm1tCisrKyBiL1NvdXJjZS9XZWJLaXQvVUlQcm9jZXNzL2lvcy9E
cmFnRHJvcEludGVyYWN0aW9uU3RhdGUubW0KQEAgLTE4Niw2ICsxODYsMzAgQEAgdm9pZCBEcmFn
RHJvcEludGVyYWN0aW9uU3RhdGU6OmRyYWdTZXNzaW9uV2lsbEJlZ2luKCkKICAgICB1cGRhdGVQ
cmV2aWV3c0ZvckFjdGl2ZURyYWdTb3VyY2VzKCk7CiB9CiAKK3ZvaWQgRHJhZ0Ryb3BJbnRlcmFj
dGlvblN0YXRlOjpwcmVwYXJlRm9yRGVsYXllZERyb3BQcmV2aWV3KFVJRHJhZ0l0ZW0gKml0ZW0s
IHZvaWQoXnByb3ZpZGVyKShVSVRhcmdldGVkRHJhZ1ByZXZpZXcgKnByZXZpZXcpKQoreworICAg
IG1fZGVsYXllZEl0ZW1QcmV2aWV3UHJvdmlkZXJzLmFwcGVuZCh7IGl0ZW0sIHByb3ZpZGVyIH0p
OworfQorCit2b2lkIERyYWdEcm9wSW50ZXJhY3Rpb25TdGF0ZTo6ZGVsaXZlckRlbGF5ZWREcm9w
UHJldmlldyhVSVZpZXcgKmNvbnRlbnRWaWV3LCBVSVZpZXcgKnByZXZpZXdDb250YWluZXIsIGNv
bnN0IFdlYkNvcmU6OlRleHRJbmRpY2F0b3JEYXRhJiBpbmRpY2F0b3IpCit7CisgICAgaWYgKG1f
ZGVsYXllZEl0ZW1QcmV2aWV3UHJvdmlkZXJzLmlzRW1wdHkoKSkKKyAgICAgICAgcmV0dXJuOwor
CisgICAgYXV0byB0ZXh0SW5kaWNhdG9ySW1hZ2UgPSB1aUltYWdlRm9ySW1hZ2UoaW5kaWNhdG9y
LmNvbnRlbnRJbWFnZS5nZXQoKSk7CisgICAgVUlUYXJnZXRlZERyYWdQcmV2aWV3ICpwcmV2aWV3
ID0gY3JlYXRlVGFyZ2V0ZWREcmFnUHJldmlldyh0ZXh0SW5kaWNhdG9ySW1hZ2UuZ2V0KCksIGNv
bnRlbnRWaWV3LCBwcmV2aWV3Q29udGFpbmVyLCBpbmRpY2F0b3IudGV4dEJvdW5kaW5nUmVjdElu
Um9vdFZpZXdDb29yZGluYXRlcywgaW5kaWNhdG9yLnRleHRSZWN0c0luQm91bmRpbmdSZWN0Q29v
cmRpbmF0ZXMsIFtVSUNvbG9yIGNvbG9yV2l0aENHQ29sb3I6Y2FjaGVkQ0dDb2xvcihpbmRpY2F0
b3IuZXN0aW1hdGVkQmFja2dyb3VuZENvbG9yKV0sIG5pbCk7CisgICAgZm9yIChhdXRvJiBpdGVt
QW5kUHJldmlld1Byb3ZpZGVyIDogbV9kZWxheWVkSXRlbVByZXZpZXdQcm92aWRlcnMpCisgICAg
ICAgIGl0ZW1BbmRQcmV2aWV3UHJvdmlkZXIucHJvdmlkZXIocHJldmlldyk7CisgICAgbV9kZWxh
eWVkSXRlbVByZXZpZXdQcm92aWRlcnMuY2xlYXIoKTsKK30KKwordm9pZCBEcmFnRHJvcEludGVy
YWN0aW9uU3RhdGU6OmNsZWFyQWxsRGVsYXllZEl0ZW1QcmV2aWV3UHJvdmlkZXJzKCkKK3sKKyAg
ICBmb3IgKGF1dG8mIGl0ZW1BbmRQcmV2aWV3UHJvdmlkZXIgOiBtX2RlbGF5ZWRJdGVtUHJldmll
d1Byb3ZpZGVycykKKyAgICAgICAgaXRlbUFuZFByZXZpZXdQcm92aWRlci5wcm92aWRlcihuaWwp
OworICAgIG1fZGVsYXllZEl0ZW1QcmV2aWV3UHJvdmlkZXJzLmNsZWFyKCk7Cit9CisKIFVJVGFy
Z2V0ZWREcmFnUHJldmlldyAqRHJhZ0Ryb3BJbnRlcmFjdGlvblN0YXRlOjpwcmV2aWV3Rm9yRHJh
Z0l0ZW0oVUlEcmFnSXRlbSAqaXRlbSwgVUlWaWV3ICpjb250ZW50VmlldywgVUlWaWV3ICpwcmV2
aWV3Q29udGFpbmVyKSBjb25zdAogewogICAgIGF1dG8gZm91bmRTb3VyY2UgPSBhY3RpdmVEcmFn
U291cmNlRm9ySXRlbShpdGVtKTsKQEAgLTI2Niw2ICsyOTAsOCBAQCB2b2lkIERyYWdEcm9wSW50
ZXJhY3Rpb25TdGF0ZTo6Y2xlYXJTdGFnZWREcmFnU291cmNlKERpZEJlY29tZUFjdGl2ZSBkaWRC
ZWNvbWVBYwogCiB2b2lkIERyYWdEcm9wSW50ZXJhY3Rpb25TdGF0ZTo6ZHJhZ0FuZERyb3BTZXNz
aW9uc0RpZEVuZCgpCiB7CisgICAgY2xlYXJBbGxEZWxheWVkSXRlbVByZXZpZXdQcm92aWRlcnMo
KTsKKwogICAgIC8vIElmIGFueSBvZiBVSUtpdCdzIGNvbXBsZXRpb24gYmxvY2tzIGFyZSBzdGls
bCBpbi1mbGlnaHQgd2hlbiB0aGUgZHJhZyBpbnRlcmFjdGlvbiBlbmRzLCB3ZSBuZWVkIHRvIGVu
c3VyZSB0aGF0IHRoZXkgYXJlIHN0aWxsIGludm9rZWQKICAgICAvLyB0byBwcmV2ZW50IFVJS2l0
IGZyb20gZ2V0dGluZyBpbnRvIGFuIGluY29uc2lzdGVudCBzdGF0ZS4KICAgICBpZiAoYXV0byBj
b21wbGV0aW9uQmxvY2sgPSB0YWtlRHJhZ0NhbmNlbFNldERvd25CbG9jaygpKQpkaWZmIC0tZ2l0
IGEvU291cmNlL1dlYktpdC9VSVByb2Nlc3MvaW9zL1BhZ2VDbGllbnRJbXBsSU9TLmggYi9Tb3Vy
Y2UvV2ViS2l0L1VJUHJvY2Vzcy9pb3MvUGFnZUNsaWVudEltcGxJT1MuaAppbmRleCA4NzZhYzkx
MDgwOGQyZTk3ZDAxOGVjNjJlZWQ3OWQzYzcwNTA3OTFiLi40MTNjOTNiM2FjMDVlNmM1ZjY1Mzdk
NDlmNTEyODIzNWVmNWM0YTBmIDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViS2l0L1VJUHJvY2Vzcy9p
b3MvUGFnZUNsaWVudEltcGxJT1MuaAorKysgYi9Tb3VyY2UvV2ViS2l0L1VJUHJvY2Vzcy9pb3Mv
UGFnZUNsaWVudEltcGxJT1MuaApAQCAtMjM3LDcgKzIzNyw4IEBAIHByaXZhdGU6CiAgICAgdm9p
ZCBkaWRIYW5kbGVEcmFnU3RhcnRSZXF1ZXN0KGJvb2wgc3RhcnRlZCkgb3ZlcnJpZGU7CiAgICAg
dm9pZCBkaWRIYW5kbGVBZGRpdGlvbmFsRHJhZ0l0ZW1zUmVxdWVzdChib29sIGFkZGVkKSBvdmVy
cmlkZTsKICAgICB2b2lkIHN0YXJ0RHJhZyhjb25zdCBXZWJDb3JlOjpEcmFnSXRlbSYsIGNvbnN0
IFNoYXJlYWJsZUJpdG1hcDo6SGFuZGxlJiBpbWFnZSkgb3ZlcnJpZGU7Ci0gICAgdm9pZCBkaWRD
b25jbHVkZUVkaXREcmFnKE9wdGlvbmFsPFdlYkNvcmU6OlRleHRJbmRpY2F0b3JEYXRhPikgb3Zl
cnJpZGU7CisgICAgdm9pZCB3aWxsUmVjZWl2ZUVkaXREcmFnU25hcHNob3QoKSBvdmVycmlkZTsK
KyAgICB2b2lkIGRpZFJlY2VpdmVFZGl0RHJhZ1NuYXBzaG90KE9wdGlvbmFsPFdlYkNvcmU6OlRl
eHRJbmRpY2F0b3JEYXRhPikgb3ZlcnJpZGU7CiAgICAgdm9pZCBkaWRDaGFuZ2VEcmFnQ2FyZXRS
ZWN0KGNvbnN0IFdlYkNvcmU6OkludFJlY3QmIHByZXZpb3VzQ2FyZXRSZWN0LCBjb25zdCBXZWJD
b3JlOjpJbnRSZWN0JiBjYXJldFJlY3QpIG92ZXJyaWRlOwogI2VuZGlmCiAKZGlmZiAtLWdpdCBh
L1NvdXJjZS9XZWJLaXQvVUlQcm9jZXNzL2lvcy9QYWdlQ2xpZW50SW1wbElPUy5tbSBiL1NvdXJj
ZS9XZWJLaXQvVUlQcm9jZXNzL2lvcy9QYWdlQ2xpZW50SW1wbElPUy5tbQppbmRleCAwOTUzMmZm
MjdlOTlmNGU5Yzg5M2FkYzgxOGRmOTBkMjRmYTE2MjFhLi4yNjdiZDQzYmRkMTAxY2RhOTQ2Zjg0
ODhhMTc1MzMzMzQ2Y2RkMTEwIDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViS2l0L1VJUHJvY2Vzcy9p
b3MvUGFnZUNsaWVudEltcGxJT1MubW0KKysrIGIvU291cmNlL1dlYktpdC9VSVByb2Nlc3MvaW9z
L1BhZ2VDbGllbnRJbXBsSU9TLm1tCkBAIC04MjAsOSArODIwLDE0IEBAIHZvaWQgUGFnZUNsaWVu
dEltcGw6OnN0YXJ0RHJhZyhjb25zdCBEcmFnSXRlbSYgaXRlbSwgY29uc3QgU2hhcmVhYmxlQml0
bWFwOjpIYW5kCiAgICAgW21fY29udGVudFZpZXcgX3N0YXJ0RHJhZzpTaGFyZWFibGVCaXRtYXA6
OmNyZWF0ZShpbWFnZSktPm1ha2VDR0ltYWdlQ29weSgpIGl0ZW06aXRlbV07CiB9CiAKLXZvaWQg
UGFnZUNsaWVudEltcGw6OmRpZENvbmNsdWRlRWRpdERyYWcoT3B0aW9uYWw8VGV4dEluZGljYXRv
ckRhdGE+IGRhdGEpCit2b2lkIFBhZ2VDbGllbnRJbXBsOjp3aWxsUmVjZWl2ZUVkaXREcmFnU25h
cHNob3QoKQogewotICAgIFttX2NvbnRlbnRWaWV3IF9kaWRDb25jbHVkZUVkaXREcmFnOmRhdGFd
OworICAgIFttX2NvbnRlbnRWaWV3IF93aWxsUmVjZWl2ZUVkaXREcmFnU25hcHNob3RdOworfQor
Cit2b2lkIFBhZ2VDbGllbnRJbXBsOjpkaWRSZWNlaXZlRWRpdERyYWdTbmFwc2hvdChPcHRpb25h
bDxUZXh0SW5kaWNhdG9yRGF0YT4gZGF0YSkKK3sKKyAgICBbbV9jb250ZW50VmlldyBfZGlkUmVj
ZWl2ZUVkaXREcmFnU25hcHNob3Q6ZGF0YV07CiB9CiAKIHZvaWQgUGFnZUNsaWVudEltcGw6OmRp
ZENoYW5nZURyYWdDYXJldFJlY3QoY29uc3QgSW50UmVjdCYgcHJldmlvdXNDYXJldFJlY3QsIGNv
bnN0IEludFJlY3QmIGNhcmV0UmVjdCkKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJLaXQvVUlQcm9j
ZXNzL2lvcy9XS0NvbnRlbnRWaWV3SW50ZXJhY3Rpb24uaCBiL1NvdXJjZS9XZWJLaXQvVUlQcm9j
ZXNzL2lvcy9XS0NvbnRlbnRWaWV3SW50ZXJhY3Rpb24uaAppbmRleCBjOTJiM2Y5ZDIyMDg3MjBh
Y2IzMWFiOTg5NGNkNzQyZjliZGY5NWVmLi4wOGI2NGQyYjFmYzUwNWM5ZDQxYzAyZjM5MzcyZDQw
YzI4YjYwM2E3IDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViS2l0L1VJUHJvY2Vzcy9pb3MvV0tDb250
ZW50Vmlld0ludGVyYWN0aW9uLmgKKysrIGIvU291cmNlL1dlYktpdC9VSVByb2Nlc3MvaW9zL1dL
Q29udGVudFZpZXdJbnRlcmFjdGlvbi5oCkBAIC0zMzQsNiArMzM0LDcgQEAgc3RydWN0IFdLQXV0
b0NvcnJlY3Rpb25EYXRhIHsKICAgICBCT09MIF9pc0JsdXJyaW5nRm9jdXNlZEVsZW1lbnQ7CiAK
ICAgICBCT09MIF9mb2N1c1JlcXVpcmVzU3Ryb25nUGFzc3dvcmRBc3Npc3RhbmNlOworICAgIEJP
T0wgX3dhaXRpbmdGb3JFZGl0RHJhZ1NuYXBzaG90OwogCiAgICAgQk9PTCBfaGFzU2V0VXBJbnRl
cmFjdGlvbnM7CiAgICAgTlNVSW50ZWdlciBfaWdub3JlU2VsZWN0aW9uQ29tbWFuZEZhZGVDb3Vu
dDsKQEAgLTM0NSw5ICszNDYsMTAgQEAgc3RydWN0IFdLQXV0b0NvcnJlY3Rpb25EYXRhIHsKICAg
ICBSZXRhaW5QdHI8VUlEcmFnSW50ZXJhY3Rpb24+IF9kcmFnSW50ZXJhY3Rpb247CiAgICAgUmV0
YWluUHRyPFVJRHJvcEludGVyYWN0aW9uPiBfZHJvcEludGVyYWN0aW9uOwogICAgIEJPT0wgX3No
b3VsZFJlc3RvcmVDYWxsb3V0QmFyQWZ0ZXJEcm9wOwotICAgIEJPT0wgX2lzQW5pbWF0aW5nQ29u
Y2x1ZGVFZGl0RHJhZzsKICAgICBSZXRhaW5QdHI8VUlWaWV3PiBfdmlzaWJsZUNvbnRlbnRWaWV3
U25hcHNob3Q7CisgICAgUmV0YWluUHRyPFVJVmlldz4gX3Vuc2VsZWN0ZWRDb250ZW50U25hcHNo
b3Q7CiAgICAgUmV0YWluUHRyPF9VSVRleHREcmFnQ2FyZXRWaWV3PiBfZWRpdERyb3BDYXJldFZp
ZXc7CisgICAgQmxvY2tQdHI8dm9pZCgpPiBfYWN0aW9uVG9QZXJmb3JtQWZ0ZXJSZWNlaXZpbmdF
ZGl0RHJhZ1NuYXBzaG90OwogI2VuZGlmCiAKICNpZiBQTEFURk9STShXQVRDSE9TKQpAQCAtNDkw
LDcgKzQ5Miw4IEBAIEZPUl9FQUNIX1BSSVZBVEVfV0tDT05URU5UVklFV19BQ1RJT04oREVDTEFS
RV9XS0NPTlRFTlRWSUVXX0FDVElPTl9GT1JfV0VCX1ZJRVcpCiAtICh2b2lkKV9kaWRIYW5kbGVE
cmFnU3RhcnRSZXF1ZXN0OihCT09MKXN0YXJ0ZWQ7CiAtICh2b2lkKV9kaWRIYW5kbGVBZGRpdGlv
bmFsRHJhZ0l0ZW1zUmVxdWVzdDooQk9PTClhZGRlZDsKIC0gKHZvaWQpX3N0YXJ0RHJhZzooUmV0
YWluUHRyPENHSW1hZ2VSZWY+KWltYWdlIGl0ZW06KGNvbnN0IFdlYkNvcmU6OkRyYWdJdGVtJilp
dGVtOwotLSAodm9pZClfZGlkQ29uY2x1ZGVFZGl0RHJhZzooT3B0aW9uYWw8V2ViQ29yZTo6VGV4
dEluZGljYXRvckRhdGE+KWRhdGE7CistICh2b2lkKV93aWxsUmVjZWl2ZUVkaXREcmFnU25hcHNo
b3Q7CistICh2b2lkKV9kaWRSZWNlaXZlRWRpdERyYWdTbmFwc2hvdDooT3B0aW9uYWw8V2ViQ29y
ZTo6VGV4dEluZGljYXRvckRhdGE+KWRhdGE7CiAtICh2b2lkKV9kaWRDaGFuZ2VEcmFnQ2FyZXRS
ZWN0OihDR1JlY3QpcHJldmlvdXNSZWN0IGN1cnJlbnRSZWN0OihDR1JlY3QpcmVjdDsKICNlbmRp
ZgogCkBAIC01MTcsNiArNTIwLDcgQEAgRk9SX0VBQ0hfUFJJVkFURV9XS0NPTlRFTlRWSUVXX0FD
VElPTihERUNMQVJFX1dLQ09OVEVOVFZJRVdfQUNUSU9OX0ZPUl9XRUJfVklFVykKIC0gKHZvaWQp
c2VsZWN0Rm9ybUFjY2Vzc29yeVBpY2tlclJvdzooTlNJbnRlZ2VyKXJvd0luZGV4OwogLSAodm9p
ZClzZXRUaW1lUGlja2VyVmFsdWVUb0hvdXI6KE5TSW50ZWdlcilob3VyIG1pbnV0ZTooTlNJbnRl
Z2VyKW1pbnV0ZTsKIC0gKE5TRGljdGlvbmFyeSAqKV9jb250ZW50c09mVXNlckludGVyZmFjZUl0
ZW06KE5TU3RyaW5nICopdXNlckludGVyZmFjZUl0ZW07CistICh2b2lkKV9kb0FmdGVyUmVjZWl2
aW5nRWRpdERyYWdTbmFwc2hvdEZvclRlc3Rpbmc6KGRpc3BhdGNoX2Jsb2NrX3QpYWN0aW9uOwog
CiBAcHJvcGVydHkgKG5vbmF0b21pYywgcmVhZG9ubHkpIE5TU3RyaW5nICp0ZXh0Q29udGVudFR5
cGVGb3JUZXN0aW5nOwogQHByb3BlcnR5IChub25hdG9taWMsIHJlYWRvbmx5KSBOU1N0cmluZyAq
c2VsZWN0Rm9ybVBvcG92ZXJUaXRsZTsKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJLaXQvVUlQcm9j
ZXNzL2lvcy9XS0NvbnRlbnRWaWV3SW50ZXJhY3Rpb24ubW0gYi9Tb3VyY2UvV2ViS2l0L1VJUHJv
Y2Vzcy9pb3MvV0tDb250ZW50Vmlld0ludGVyYWN0aW9uLm1tCmluZGV4IDI0MDc3ZGFmOTM4N2Ux
ZWVkZDNjMzdlNDYyMGIyYmY5YWI4NmJmMzQuLjM2MzY3YTNmOGRmOTIyZWQ0N2VjMWJiYmI3MWJl
YmNhNWNhMGYyNDUgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJLaXQvVUlQcm9jZXNzL2lvcy9XS0Nv
bnRlbnRWaWV3SW50ZXJhY3Rpb24ubW0KKysrIGIvU291cmNlL1dlYktpdC9VSVByb2Nlc3MvaW9z
L1dLQ29udGVudFZpZXdJbnRlcmFjdGlvbi5tbQpAQCAtODQxLDYgKzg0MSw3IEBAIC0gKHZvaWQp
Y2xlYW51cEludGVyYWN0aW9uCiAgICAgX291dHN0YW5kaW5nUG9zaXRpb25JbmZvcm1hdGlvblJl
cXVlc3QgPSBXVEY6Om51bGxvcHQ7CiAKICAgICBfZm9jdXNSZXF1aXJlc1N0cm9uZ1Bhc3N3b3Jk
QXNzaXN0YW5jZSA9IE5POworICAgIF93YWl0aW5nRm9yRWRpdERyYWdTbmFwc2hvdCA9IE5POwog
CiAjaWYgVVNFKFVJS0lUX0tFWUJPQVJEX0FERElUSU9OUykKICAgICBfY2FuZGlkYXRlVmlld05l
ZWRzVXBkYXRlID0gTk87CkBAIC02MjY5LDYgKzYyNzAsOSBAQCAtIChXZWJDb3JlOjpEcmFnRGF0
YSlkcmFnRGF0YUZvckRyb3BTZXNzaW9uOihpZCA8VUlEcm9wU2Vzc2lvbj4pc2Vzc2lvbiBkcmFn
RGVzdAogCiAtICh2b2lkKWNsZWFuVXBEcmFnU291cmNlU2Vzc2lvblN0YXRlCiB7CisgICAgaWYg
KF93YWl0aW5nRm9yRWRpdERyYWdTbmFwc2hvdCkKKyAgICAgICAgcmV0dXJuOworCiAgICAgaWYg
KF9kcmFnRHJvcEludGVyYWN0aW9uU3RhdGUuZHJhZ1Nlc3Npb24oKSB8fCBfZHJhZ0Ryb3BJbnRl
cmFjdGlvblN0YXRlLmlzUGVyZm9ybWluZ0Ryb3AoKSkKICAgICAgICAgUkVMRUFTRV9MT0coRHJh
Z0FuZERyb3AsICJDbGVhbmluZyB1cCBkcmFnZ2luZyBzdGF0ZSAoaGFzIHBlbmRpbmcgb3BlcmF0
aW9uOiAlZCkiLCBbW1dlYkl0ZW1Qcm92aWRlclBhc3RlYm9hcmQgc2hhcmVkSW5zdGFuY2VdIGhh
c1BlbmRpbmdPcGVyYXRpb25dKTsKIApAQCAtNjI4MSwxMSArNjI4NSw5IEBAIC0gKHZvaWQpY2xl
YW5VcERyYWdTb3VyY2VTZXNzaW9uU3RhdGUKICAgICBbW1dlYkl0ZW1Qcm92aWRlclBhc3RlYm9h
cmQgc2hhcmVkSW5zdGFuY2VdIHN0YWdlUmVnaXN0cmF0aW9uTGlzdDpuaWxdOwogICAgIFtzZWxm
IF9yZXN0b3JlQ2FsbG91dEJhcklmTmVlZGVkXTsKIAotICAgIFtfdmlzaWJsZUNvbnRlbnRWaWV3
U25hcHNob3QgcmVtb3ZlRnJvbVN1cGVydmlld107Ci0gICAgX3Zpc2libGVDb250ZW50Vmlld1Nu
YXBzaG90ID0gbmlsOworICAgIFtzdGQ6OmV4Y2hhbmdlKF92aXNpYmxlQ29udGVudFZpZXdTbmFw
c2hvdCwgbmlsKSByZW1vdmVGcm9tU3VwZXJ2aWV3XTsKICAgICBbX2VkaXREcm9wQ2FyZXRWaWV3
IHJlbW92ZV07CiAgICAgX2VkaXREcm9wQ2FyZXRWaWV3ID0gbmlsOwotICAgIF9pc0FuaW1hdGlu
Z0NvbmNsdWRlRWRpdERyYWcgPSBOTzsKICAgICBfc2hvdWxkUmVzdG9yZUNhbGxvdXRCYXJBZnRl
ckRyb3AgPSBOTzsKIAogICAgIF9kcmFnRHJvcEludGVyYWN0aW9uU3RhdGUuZHJhZ0FuZERyb3BT
ZXNzaW9uc0RpZEVuZCgpOwpAQCAtNjMwNywxMSArNjMwOSwzMyBAQCBzdGF0aWMgTlNBcnJheTxO
U0l0ZW1Qcm92aWRlciAqPiAqZXh0cmFjdEl0ZW1Qcm92aWRlcnNGcm9tRHJvcFNlc3Npb24oaWQg
PFVJRHJvcAogICAgIHJldHVybiBleHRyYWN0SXRlbVByb3ZpZGVyc0Zyb21EcmFnSXRlbXMoc2Vz
c2lvbi5pdGVtcyk7CiB9CiAKLS0gKHZvaWQpX2RpZENvbmNsdWRlRWRpdERyYWc6KE9wdGlvbmFs
PFdlYkNvcmU6OlRleHRJbmRpY2F0b3JEYXRhPilkYXRhCistICh2b2lkKV93aWxsUmVjZWl2ZUVk
aXREcmFnU25hcHNob3QKK3sKKyAgICBfd2FpdGluZ0ZvckVkaXREcmFnU25hcHNob3QgPSBZRVM7
Cit9CisKKy0gKHZvaWQpX2RpZFJlY2VpdmVFZGl0RHJhZ1NuYXBzaG90OihPcHRpb25hbDxXZWJD
b3JlOjpUZXh0SW5kaWNhdG9yRGF0YT4pZGF0YQoreworICAgIF93YWl0aW5nRm9yRWRpdERyYWdT
bmFwc2hvdCA9IE5POworCisgICAgW3NlbGYgX2RlbGl2ZXJEZWxheWVkRHJvcFByZXZpZXdJZlBv
c3NpYmxlOmRhdGFdOworICAgIFtzZWxmIGNsZWFuVXBEcmFnU291cmNlU2Vzc2lvblN0YXRlXTsK
KworICAgIGlmIChhdXRvIGFjdGlvbiA9IFdURk1vdmUoX2FjdGlvblRvUGVyZm9ybUFmdGVyUmVj
ZWl2aW5nRWRpdERyYWdTbmFwc2hvdCkpCisgICAgICAgIGFjdGlvbigpOworfQorCistICh2b2lk
KV9kZWxpdmVyRGVsYXllZERyb3BQcmV2aWV3SWZQb3NzaWJsZTooT3B0aW9uYWw8V2ViQ29yZTo6
VGV4dEluZGljYXRvckRhdGE+KWRhdGEKIHsKKyAgICBpZiAoIV92aXNpYmxlQ29udGVudFZpZXdT
bmFwc2hvdCkKKyAgICAgICAgcmV0dXJuOworCiAgICAgaWYgKCFkYXRhKQogICAgICAgICByZXR1
cm47CiAKKyAgICBpZiAoIWRhdGEtPmNvbnRlbnRJbWFnZSkKKyAgICAgICAgcmV0dXJuOworCiAg
ICAgYXV0byBzbmFwc2hvdFdpdGhvdXRTZWxlY3Rpb24gPSBkYXRhLT5jb250ZW50SW1hZ2VXaXRo
b3V0U2VsZWN0aW9uOwogICAgIGlmICghc25hcHNob3RXaXRob3V0U2VsZWN0aW9uKQogICAgICAg
ICByZXR1cm47CkBAIC02MzIxLDI1ICs2MzQ1LDExIEBAIC0gKHZvaWQpX2RpZENvbmNsdWRlRWRp
dERyYWc6KE9wdGlvbmFsPFdlYkNvcmU6OlRleHRJbmRpY2F0b3JEYXRhPilkYXRhCiAgICAgICAg
IHJldHVybjsKIAogICAgIGF1dG8gdW5zZWxlY3RlZENvbnRlbnRJbWFnZUZvckVkaXREcmFnID0g
YWRvcHROUyhbW1VJSW1hZ2UgYWxsb2NdIGluaXRXaXRoQ0dJbWFnZTp1bnNlbGVjdGVkU25hcHNo
b3RJbWFnZS5nZXQoKSBzY2FsZTpfcGFnZS0+ZGV2aWNlU2NhbGVGYWN0b3IoKSBvcmllbnRhdGlv
bjpVSUltYWdlT3JpZW50YXRpb25VcF0pOwotICAgIGF1dG8gdW5zZWxlY3RlZENvbnRlbnRTbmFw
c2hvdCA9IGFkb3B0TlMoW1tVSUltYWdlVmlldyBhbGxvY10gaW5pdFdpdGhJbWFnZTp1bnNlbGVj
dGVkQ29udGVudEltYWdlRm9yRWRpdERyYWcuZ2V0KCldKTsKLSAgICBbdW5zZWxlY3RlZENvbnRl
bnRTbmFwc2hvdCBzZXRGcmFtZTpkYXRhLT5jb250ZW50SW1hZ2VXaXRob3V0U2VsZWN0aW9uUmVj
dEluUm9vdFZpZXdDb29yZGluYXRlc107Ci0KLSAgICBhdXRvIHByb3RlY3RlZFNlbGYgPSByZXRh
aW5QdHIoc2VsZik7Ci0gICAgYXV0byB2aXNpYmxlQ29udGVudFZpZXdTbmFwc2hvdCA9IGFkb3B0
TlMoX3Zpc2libGVDb250ZW50Vmlld1NuYXBzaG90LmxlYWtSZWYoKSk7Ci0KLSAgICBfaXNBbmlt
YXRpbmdDb25jbHVkZUVkaXREcmFnID0gWUVTOwotICAgIFtzZWxmIGluc2VydFN1YnZpZXc6dW5z
ZWxlY3RlZENvbnRlbnRTbmFwc2hvdC5nZXQoKSBiZWxvd1N1YnZpZXc6dmlzaWJsZUNvbnRlbnRW
aWV3U25hcHNob3QuZ2V0KCldOwotICAgIFtVSVZpZXcgYW5pbWF0ZVdpdGhEdXJhdGlvbjowLjI1
IGFuaW1hdGlvbnM6XigpIHsKLSAgICAgICAgW3Zpc2libGVDb250ZW50Vmlld1NuYXBzaG90IHNl
dEFscGhhOjBdOwotICAgIH0gY29tcGxldGlvbjpeKEJPT0wgY29tcGxldGVkKSB7Ci0gICAgICAg
IFt2aXNpYmxlQ29udGVudFZpZXdTbmFwc2hvdCByZW1vdmVGcm9tU3VwZXJ2aWV3XTsKLSAgICAg
ICAgW1VJVmlldyBhbmltYXRlV2l0aER1cmF0aW9uOjAuMjUgYW5pbWF0aW9uczpeKCkgewotICAg
ICAgICAgICAgW3Byb3RlY3RlZFNlbGYgX3N0b3BTdXBwcmVzc2luZ1NlbGVjdGlvbkFzc2lzdGFu
dEZvclJlYXNvbjpXZWJLaXQ6OkRyb3BBbmltYXRpb25Jc1J1bm5pbmddOwotICAgICAgICAgICAg
W3Vuc2VsZWN0ZWRDb250ZW50U25hcHNob3Qgc2V0QWxwaGE6MF07Ci0gICAgICAgIH0gY29tcGxl
dGlvbjpeKEJPT0wgY29tcGxldGVkKSB7Ci0gICAgICAgICAgICBbdW5zZWxlY3RlZENvbnRlbnRT
bmFwc2hvdCByZW1vdmVGcm9tU3VwZXJ2aWV3XTsKLSAgICAgICAgfV07Ci0gICAgfV07CisgICAg
X3Vuc2VsZWN0ZWRDb250ZW50U25hcHNob3QgPSBhZG9wdE5TKFtbVUlJbWFnZVZpZXcgYWxsb2Nd
IGluaXRXaXRoSW1hZ2U6dW5zZWxlY3RlZENvbnRlbnRJbWFnZUZvckVkaXREcmFnLmdldCgpXSk7
CisgICAgW191bnNlbGVjdGVkQ29udGVudFNuYXBzaG90IHNldEZyYW1lOmRhdGEtPmNvbnRlbnRJ
bWFnZVdpdGhvdXRTZWxlY3Rpb25SZWN0SW5Sb290Vmlld0Nvb3JkaW5hdGVzXTsKKworICAgIFtz
ZWxmIGluc2VydFN1YnZpZXc6X3Vuc2VsZWN0ZWRDb250ZW50U25hcHNob3QuZ2V0KCkgYmVsb3dT
dWJ2aWV3Ol92aXNpYmxlQ29udGVudFZpZXdTbmFwc2hvdC5nZXQoKV07CisgICAgX2RyYWdEcm9w
SW50ZXJhY3Rpb25TdGF0ZS5kZWxpdmVyRGVsYXllZERyb3BQcmV2aWV3KHNlbGYsIHNlbGYudW5z
Y2FsZWRWaWV3LCBkYXRhLnZhbHVlKCkpOwogfQogCiAtICh2b2lkKV9kaWRQZXJmb3JtRHJhZ09w
ZXJhdGlvbjooQk9PTCloYW5kbGVkCkBAIC02MzUwLDkgKzYzNjAsNiBAQCAtICh2b2lkKV9kaWRQ
ZXJmb3JtRHJhZ09wZXJhdGlvbjooQk9PTCloYW5kbGVkCiAgICAgaWYgKFtzZWxmLndlYlZpZXdV
SURlbGVnYXRlIHJlc3BvbmRzVG9TZWxlY3RvcjpAc2VsZWN0b3IoX3dlYlZpZXc6ZGF0YUludGVy
YWN0aW9uT3BlcmF0aW9uV2FzSGFuZGxlZDpmb3JTZXNzaW9uOml0ZW1Qcm92aWRlcnM6KV0pCiAg
ICAgICAgIFtzZWxmLndlYlZpZXdVSURlbGVnYXRlIF93ZWJWaWV3Ol93ZWJWaWV3IGRhdGFJbnRl
cmFjdGlvbk9wZXJhdGlvbldhc0hhbmRsZWQ6aGFuZGxlZCBmb3JTZXNzaW9uOmRyb3BTZXNzaW9u
IGl0ZW1Qcm92aWRlcnM6W1dlYkl0ZW1Qcm92aWRlclBhc3RlYm9hcmQgc2hhcmVkSW5zdGFuY2Vd
Lml0ZW1Qcm92aWRlcnNdOwogCi0gICAgaWYgKCFfaXNBbmltYXRpbmdDb25jbHVkZUVkaXREcmFn
KQotICAgICAgICBbc2VsZiBfc3RvcFN1cHByZXNzaW5nU2VsZWN0aW9uQXNzaXN0YW50Rm9yUmVh
c29uOldlYktpdDo6RHJvcEFuaW1hdGlvbklzUnVubmluZ107Ci0KICAgICBDR1BvaW50IGdsb2Jh
bDsKICAgICBDR1BvaW50IGNsaWVudDsKICAgICBbc2VsZiBjb21wdXRlQ2xpZW50QW5kR2xvYmFs
UG9pbnRzRm9yRHJvcFNlc3Npb246ZHJvcFNlc3Npb24gb3V0Q2xpZW50UG9pbnQ6JmNsaWVudCBv
dXRHbG9iYWxQb2ludDomZ2xvYmFsXTsKQEAgLTY1MDksNiArNjUxNiwxNSBAQCAtIChOU0FycmF5
PFVJRHJhZ0l0ZW0gKj4gKilfaXRlbXNGb3JCZWdpbm5pbmdPckFkZGluZ1RvU2Vzc2lvbldpdGhS
ZWdpc3RyYXRpb25MaQogICAgIHJldHVybiBkcmFnSXRlbXM7CiB9CiAKKy0gKFVJVmlldyAqKXRl
eHRFZmZlY3RzV2luZG93Cit7CisjaWYgSEFWRShVSVNDRU5FKQorICAgIHJldHVybiBbVUlUZXh0
RWZmZWN0c1dpbmRvdyBzaGFyZWRUZXh0RWZmZWN0c1dpbmRvd0ZvcldpbmRvd1NjZW5lOnNlbGYu
d2luZG93LndpbmRvd1NjZW5lXTsKKyNlbHNlCisgICAgcmV0dXJuIFtVSVRleHRFZmZlY3RzV2lu
ZG93IHNoYXJlZFRleHRFZmZlY3RzV2luZG93XTsKKyNlbmRpZgorfQorCiAtIChOU0RpY3Rpb25h
cnkgKilfYXV0b2ZpbGxDb250ZXh0CiB7CiAgICAgQk9PTCBwcm92aWRlU3Ryb25nUGFzc3dvcmRB
c3Npc3RhbmNlID0gX2ZvY3VzUmVxdWlyZXNTdHJvbmdQYXNzd29yZEFzc2lzdGFuY2UgJiYgX2Zv
Y3VzZWRFbGVtZW50SW5mb3JtYXRpb24uZWxlbWVudFR5cGUgPT0gV2ViS2l0OjpJbnB1dFR5cGU6
OlBhc3N3b3JkOwpAQCAtNjg5MCwyMyArNjkwNiw0MiBAQCAtICh2b2lkKWRyb3BJbnRlcmFjdGlv
bjooVUlEcm9wSW50ZXJhY3Rpb24gKilpbnRlcmFjdGlvbiBwZXJmb3JtRHJvcDooaWQgPFVJRHJv
cAogICAgIH1dOwogfQogCistICh2b2lkKWRyb3BJbnRlcmFjdGlvbjooVUlEcm9wSW50ZXJhY3Rp
b24gKilpbnRlcmFjdGlvbiBpdGVtOihVSURyYWdJdGVtICopaXRlbSB3aWxsQW5pbWF0ZURyb3BX
aXRoQW5pbWF0b3I6KGlkIDxVSURyYWdBbmltYXRpbmc+KWFuaW1hdG9yCit7CisgICAgW2FuaW1h
dG9yIGFkZENvbXBsZXRpb246W3N0cm9uZ1NlbGYgPSByZXRhaW5QdHIoc2VsZildIChVSVZpZXdB
bmltYXRpbmdQb3NpdGlvbikgeworICAgICAgICBbc3RkOjpleGNoYW5nZShzdHJvbmdTZWxmLT5f
dW5zZWxlY3RlZENvbnRlbnRTbmFwc2hvdCwgbmlsKSByZW1vdmVGcm9tU3VwZXJ2aWV3XTsKKyAg
ICB9XTsKK30KKworLSAodm9pZClkcm9wSW50ZXJhY3Rpb246KFVJRHJvcEludGVyYWN0aW9uICop
aW50ZXJhY3Rpb24gY29uY2x1ZGVEcm9wOihpZCA8VUlEcm9wU2Vzc2lvbj4pc2Vzc2lvbgorewor
ICAgIFtzZWxmIF9zdG9wU3VwcHJlc3NpbmdTZWxlY3Rpb25Bc3Npc3RhbnRGb3JSZWFzb246V2Vi
S2l0OjpEcm9wQW5pbWF0aW9uSXNSdW5uaW5nXTsKKyAgICBbc3RkOjpleGNoYW5nZShfdmlzaWJs
ZUNvbnRlbnRWaWV3U25hcHNob3QsIG5pbCkgcmVtb3ZlRnJvbVN1cGVydmlld107CisgICAgW3N0
ZDo6ZXhjaGFuZ2UoX3Vuc2VsZWN0ZWRDb250ZW50U25hcHNob3QsIG5pbCkgcmVtb3ZlRnJvbVN1
cGVydmlld107CisgICAgX2RyYWdEcm9wSW50ZXJhY3Rpb25TdGF0ZS5jbGVhckFsbERlbGF5ZWRJ
dGVtUHJldmlld1Byb3ZpZGVycygpOworICAgIF9wYWdlLT5kaWRDb25jbHVkZURyb3AoKTsKK30K
KwogLSAoVUlUYXJnZXRlZERyYWdQcmV2aWV3ICopZHJvcEludGVyYWN0aW9uOihVSURyb3BJbnRl
cmFjdGlvbiAqKWludGVyYWN0aW9uIHByZXZpZXdGb3JEcm9wcGluZ0l0ZW06KFVJRHJhZ0l0ZW0g
KilpdGVtIHdpdGhEZWZhdWx0OihVSVRhcmdldGVkRHJhZ1ByZXZpZXcgKilkZWZhdWx0UHJldmll
dwogewogICAgIENHUmVjdCBjYXJldFJlY3QgPSBfcGFnZS0+Y3VycmVudERyYWdDYXJldFJlY3Qo
KTsKICAgICBpZiAoQ0dSZWN0SXNFbXB0eShjYXJldFJlY3QpKQogICAgICAgICByZXR1cm4gbmls
OwogCi1BTExPV19ERVBSRUNBVEVEX0RFQ0xBUkFUSU9OU19CRUdJTgotICAgIC8vIEZJWE1FOiA8
cmRhcjovL3Byb2JsZW0vMzEwNzQzNzY+IFtXSzJdIFBlcmZvcm1pbmcgYW4gZWRpdCBkcmFnIHNo
b3VsZCB0cmFuc2l0aW9uIGZyb20gdGhlIGluaXRpYWwgZHJhZyBwcmV2aWV3IHRvIHRoZSBmaW5h
bCBkcm9wIHByZXZpZXcKLSAgICAvLyBUaGlzIGlzIGJsb2NrZWQgb24gVUlLaXQgc3VwcG9ydCwg
c2luY2Ugd2UgYXJlbid0IGFibGUgdG8gdXBkYXRlIHRoZSB0ZXh0IGNsaXBwaW5nIHJlY3RzIG9m
IGEgVUlUYXJnZXRlZERyYWdQcmV2aWV3IG1pZC1mbGlnaHQuIEZvciBub3csCi0gICAgLy8ganVz
dCB6b29tIHRvIHRoZSBjZW50ZXIgb2YgdGhlIGNhcmV0IHJlY3Qgd2hpbGUgc2hyaW5raW5nIHRo
ZSBkcm9wIHByZXZpZXcuCi0gICAgYXV0byBjYXJldFJlY3RJbldpbmRvd0Nvb3JkaW5hdGVzID0g
W3NlbGYgY29udmVydFJlY3Q6Y2FyZXRSZWN0IHRvVmlldzpbVUlUZXh0RWZmZWN0c1dpbmRvdyBz
aGFyZWRUZXh0RWZmZWN0c1dpbmRvd11dOworICAgIFVJVmlldyAqdGV4dEVmZmVjdHNXaW5kb3cg
PSBzZWxmLnRleHRFZmZlY3RzV2luZG93OworICAgIGF1dG8gY2FyZXRSZWN0SW5XaW5kb3dDb29y
ZGluYXRlcyA9IFtzZWxmIGNvbnZlcnRSZWN0OmNhcmV0UmVjdCB0b1ZpZXc6dGV4dEVmZmVjdHNX
aW5kb3ddOwogICAgIGF1dG8gY2FyZXRDZW50ZXJJbldpbmRvd0Nvb3JkaW5hdGVzID0gQ0dQb2lu
dE1ha2UoQ0dSZWN0R2V0TWlkWChjYXJldFJlY3RJbldpbmRvd0Nvb3JkaW5hdGVzKSwgQ0dSZWN0
R2V0TWlkWShjYXJldFJlY3RJbldpbmRvd0Nvb3JkaW5hdGVzKSk7Ci0gICAgYXV0byB0YXJnZXQg
PSBhZG9wdE5TKFtbVUlEcmFnUHJldmlld1RhcmdldCBhbGxvY10gaW5pdFdpdGhDb250YWluZXI6
W1VJVGV4dEVmZmVjdHNXaW5kb3cgc2hhcmVkVGV4dEVmZmVjdHNXaW5kb3ddIGNlbnRlcjpjYXJl
dENlbnRlckluV2luZG93Q29vcmRpbmF0ZXMgdHJhbnNmb3JtOkNHQWZmaW5lVHJhbnNmb3JtTWFr
ZVNjYWxlKDAsIDApXSk7Ci1BTExPV19ERVBSRUNBVEVEX0RFQ0xBUkFUSU9OU19FTkQKKyAgICBh
dXRvIHRhcmdldFByZXZpZXdDZW50ZXJJbldpbmRvd0Nvb3JkaW5hdGVzID0gQ0dQb2ludE1ha2Uo
Y2FyZXRDZW50ZXJJbldpbmRvd0Nvb3JkaW5hdGVzLnggKyBkZWZhdWx0UHJldmlldy5zaXplLndp
ZHRoIC8gMiwgY2FyZXRDZW50ZXJJbldpbmRvd0Nvb3JkaW5hdGVzLnkgKyBkZWZhdWx0UHJldmll
dy5zaXplLmhlaWdodCAvIDIpOworICAgIGF1dG8gdGFyZ2V0ID0gYWRvcHROUyhbW1VJRHJhZ1By
ZXZpZXdUYXJnZXQgYWxsb2NdIGluaXRXaXRoQ29udGFpbmVyOnRleHRFZmZlY3RzV2luZG93IGNl
bnRlcjp0YXJnZXRQcmV2aWV3Q2VudGVySW5XaW5kb3dDb29yZGluYXRlcyB0cmFuc2Zvcm06Q0dB
ZmZpbmVUcmFuc2Zvcm1JZGVudGl0eV0pOwogICAgIHJldHVybiBbZGVmYXVsdFByZXZpZXcgcmV0
YXJnZXRlZFByZXZpZXdXaXRoVGFyZ2V0OnRhcmdldC5nZXQoKV07CiB9CiAKKy0gKHZvaWQpX2Ry
b3BJbnRlcmFjdGlvbjooVUlEcm9wSW50ZXJhY3Rpb24gKilpbnRlcmFjdGlvbiBkZWxheWVkUHJl
dmlld1Byb3ZpZGVyRm9yRHJvcHBpbmdJdGVtOihVSURyYWdJdGVtICopaXRlbSBwcmV2aWV3UHJv
dmlkZXI6KHZvaWQoXikoVUlUYXJnZXRlZERyYWdQcmV2aWV3ICpwcmV2aWV3KSlwcmV2aWV3UHJv
dmlkZXIKK3sKKyAgICAvLyBGSVhNRTogVGhpcyBkb2Vzbid0IGN1cnJlbnRseSBoYW5kbGUgbXVs
dGlwbGUgaXRlbXMgaW4gYSBkcm9wIHNlc3Npb24uCisgICAgX2RyYWdEcm9wSW50ZXJhY3Rpb25T
dGF0ZS5wcmVwYXJlRm9yRGVsYXllZERyb3BQcmV2aWV3KGl0ZW0sIHByZXZpZXdQcm92aWRlcik7
Cit9CisKIC0gKHZvaWQpZHJvcEludGVyYWN0aW9uOihVSURyb3BJbnRlcmFjdGlvbiAqKWludGVy
YWN0aW9uIHNlc3Npb25EaWRFbmQ6KGlkIDxVSURyb3BTZXNzaW9uPilzZXNzaW9uCiB7CiAgICAg
UkVMRUFTRV9MT0coRHJhZ0FuZERyb3AsICJEcm9wIHNlc3Npb24gZW5kZWQ6ICVwIChwZXJmb3Jt
aW5nIG9wZXJhdGlvbjogJWQsIGJlZ2FuIGRyYWdnaW5nOiAlZCkiLCBzZXNzaW9uLCBfZHJhZ0Ry
b3BJbnRlcmFjdGlvblN0YXRlLmlzUGVyZm9ybWluZ0Ryb3AoKSwgX2RyYWdEcm9wSW50ZXJhY3Rp
b25TdGF0ZS5kaWRCZWdpbkRyYWdnaW5nKCkpOwpAQCAtNzE2Niw2ICs3MjAxLDE1IEBAIEBlbmQK
IAogQGltcGxlbWVudGF0aW9uIFdLQ29udGVudFZpZXcgKFdLVGVzdGluZykKIAorLSAodm9pZClf
ZG9BZnRlclJlY2VpdmluZ0VkaXREcmFnU25hcHNob3RGb3JUZXN0aW5nOihkaXNwYXRjaF9ibG9j
a190KWFjdGlvbgoreworICAgIEFTU0VSVCghX2FjdGlvblRvUGVyZm9ybUFmdGVyUmVjZWl2aW5n
RWRpdERyYWdTbmFwc2hvdCk7CisgICAgaWYgKF93YWl0aW5nRm9yRWRpdERyYWdTbmFwc2hvdCkK
KyAgICAgICAgX2FjdGlvblRvUGVyZm9ybUFmdGVyUmVjZWl2aW5nRWRpdERyYWdTbmFwc2hvdCA9
IGFjdGlvbjsKKyAgICBlbHNlCisgICAgICAgIGFjdGlvbigpOworfQorCiAtIChXS0Zvcm1JbnB1
dENvbnRyb2wgKilmb3JtSW5wdXRDb250cm9sCiB7CiAgICAgaWYgKFtfaW5wdXRQZXJpcGhlcmFs
IGlzS2luZE9mQ2xhc3M6V0tGb3JtSW5wdXRDb250cm9sLmNsYXNzXSkKZGlmZiAtLWdpdCBhL1Nv
dXJjZS9XZWJLaXQvVUlQcm9jZXNzL2lvcy9XZWJQYWdlUHJveHlJT1MubW0gYi9Tb3VyY2UvV2Vi
S2l0L1VJUHJvY2Vzcy9pb3MvV2ViUGFnZVByb3h5SU9TLm1tCmluZGV4IDAzNTg0YjU1MDM4NzNl
YTAyZTE1ZGIzNzdlNTRhNmY4ZTEzZGU2ZDQuLjhlOWJlZDVlZmZkNDNmNzdlOGFlODVlZDg1OGE5
MDE1ZGQxODQ1NjAgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJLaXQvVUlQcm9jZXNzL2lvcy9XZWJQ
YWdlUHJveHlJT1MubW0KKysrIGIvU291cmNlL1dlYktpdC9VSVByb2Nlc3MvaW9zL1dlYlBhZ2VQ
cm94eUlPUy5tbQpAQCAtMTIxOSw5ICsxMjE5LDE5IEBAIHZvaWQgV2ViUGFnZVByb3h5OjpyZXF1
ZXN0QWRkaXRpb25hbEl0ZW1zRm9yRHJhZ1Nlc3Npb24oY29uc3QgSW50UG9pbnQmIGNsaWVudFBv
CiAgICAgICAgIG1fcHJvY2Vzcy0+c2VuZChNZXNzYWdlczo6V2ViUGFnZTo6UmVxdWVzdEFkZGl0
aW9uYWxJdGVtc0ZvckRyYWdTZXNzaW9uKGNsaWVudFBvc2l0aW9uLCBnbG9iYWxQb3NpdGlvbiwg
YWxsb3dlZEFjdGlvbnMpLCBtX3BhZ2VJRCk7CiB9CiAKLXZvaWQgV2ViUGFnZVByb3h5OjpkaWRD
b25jbHVkZUVkaXREcmFnKE9wdGlvbmFsPFRleHRJbmRpY2F0b3JEYXRhPiBkYXRhKQordm9pZCBX
ZWJQYWdlUHJveHk6OndpbGxSZWNlaXZlRWRpdERyYWdTbmFwc2hvdCgpCiB7Ci0gICAgcGFnZUNs
aWVudCgpLmRpZENvbmNsdWRlRWRpdERyYWcoZGF0YSk7CisgICAgcGFnZUNsaWVudCgpLndpbGxS
ZWNlaXZlRWRpdERyYWdTbmFwc2hvdCgpOworfQorCit2b2lkIFdlYlBhZ2VQcm94eTo6ZGlkUmVj
ZWl2ZUVkaXREcmFnU25hcHNob3QoT3B0aW9uYWw8VGV4dEluZGljYXRvckRhdGE+IGRhdGEpCit7
CisgICAgcGFnZUNsaWVudCgpLmRpZFJlY2VpdmVFZGl0RHJhZ1NuYXBzaG90KGRhdGEpOworfQor
Cit2b2lkIFdlYlBhZ2VQcm94eTo6ZGlkQ29uY2x1ZGVEcm9wKCkKK3sKKyAgICBtX3Byb2Nlc3Mt
PnNlbmQoTWVzc2FnZXM6OldlYlBhZ2U6OkRpZENvbmNsdWRlRHJvcCgpLCBtX3BhZ2VJRCk7CiB9
CiAKICNlbmRpZgpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYktpdC9XZWJQcm9jZXNzL1dlYkNvcmVT
dXBwb3J0L1dlYkNocm9tZUNsaWVudC5jcHAgYi9Tb3VyY2UvV2ViS2l0L1dlYlByb2Nlc3MvV2Vi
Q29yZVN1cHBvcnQvV2ViQ2hyb21lQ2xpZW50LmNwcAppbmRleCA0OTYyOTZmNmQ4ODEwNTIzOTI0
NTE2MDEzMDU2NDZiYjZkNmIxY2NhLi4yNzI2YzIzZDJhNGY0ODQ1MTBhYjAxODMyMmU3ZDkwMjc5
YjE0ZjY3IDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViS2l0L1dlYlByb2Nlc3MvV2ViQ29yZVN1cHBv
cnQvV2ViQ2hyb21lQ2xpZW50LmNwcAorKysgYi9Tb3VyY2UvV2ViS2l0L1dlYlByb2Nlc3MvV2Vi
Q29yZVN1cHBvcnQvV2ViQ2hyb21lQ2xpZW50LmNwcApAQCAtNTg3LDYgKzU4NywxMSBAQCBJbnRS
ZWN0IFdlYkNocm9tZUNsaWVudDo6cm9vdFZpZXdUb0FjY2Vzc2liaWxpdHlTY3JlZW4oY29uc3Qg
SW50UmVjdCYgcmVjdCkgY29ucwogICAgIHJldHVybiBtX3BhZ2Uucm9vdFZpZXdUb0FjY2Vzc2li
aWxpdHlTY3JlZW4ocmVjdCk7CiB9CiAKK3ZvaWQgV2ViQ2hyb21lQ2xpZW50OjpkaWRGaW5pc2hM
b2FkaW5nSW1hZ2VGb3JFbGVtZW50KEhUTUxJbWFnZUVsZW1lbnQmIGVsZW1lbnQpCit7CisgICAg
bV9wYWdlLmRpZEZpbmlzaExvYWRpbmdJbWFnZUZvckVsZW1lbnQoZWxlbWVudCk7Cit9CisKIFBs
YXRmb3JtUGFnZUNsaWVudCBXZWJDaHJvbWVDbGllbnQ6OnBsYXRmb3JtUGFnZUNsaWVudCgpIGNv
bnN0CiB7CiAgICAgbm90SW1wbGVtZW50ZWQoKTsKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJLaXQv
V2ViUHJvY2Vzcy9XZWJDb3JlU3VwcG9ydC9XZWJDaHJvbWVDbGllbnQuaCBiL1NvdXJjZS9XZWJL
aXQvV2ViUHJvY2Vzcy9XZWJDb3JlU3VwcG9ydC9XZWJDaHJvbWVDbGllbnQuaAppbmRleCBkZDNi
MjI1NDM1ZDkyNjM0NDE1OTljODA1YzM2MzczY2YyNjI2MWNlLi5iMjg5ZmIyM2ZlNDFhYmJiY2Ex
Y2UxNzJjZThhNGYyNWFjY2Q1ZWMwIDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViS2l0L1dlYlByb2Nl
c3MvV2ViQ29yZVN1cHBvcnQvV2ViQ2hyb21lQ2xpZW50LmgKKysrIGIvU291cmNlL1dlYktpdC9X
ZWJQcm9jZXNzL1dlYkNvcmVTdXBwb3J0L1dlYkNocm9tZUNsaWVudC5oCkBAIC0yOSw2ICsyOSw3
IEBACiAjaW5jbHVkZSA8V2ViQ29yZS9DaHJvbWVDbGllbnQuaD4KIAogbmFtZXNwYWNlIFdlYkNv
cmUgeworY2xhc3MgSFRNTEltYWdlRWxlbWVudDsKIGNsYXNzIFJlZ2lzdHJhYmxlRG9tYWluOwog
ZW51bSBjbGFzcyBTdG9yYWdlQWNjZXNzUHJvbXB0V2FzU2hvd24gOiBib29sOwogZW51bSBjbGFz
cyBTdG9yYWdlQWNjZXNzV2FzR3JhbnRlZCA6IGJvb2w7CkBAIC0xMjEsNiArMTIyLDggQEAgcHJp
dmF0ZToKICAgICBXZWJDb3JlOjpJbnRQb2ludCBhY2Nlc3NpYmlsaXR5U2NyZWVuVG9Sb290Vmll
dyhjb25zdCBXZWJDb3JlOjpJbnRQb2ludCYpIGNvbnN0IGZpbmFsOwogICAgIFdlYkNvcmU6Oklu
dFJlY3Qgcm9vdFZpZXdUb0FjY2Vzc2liaWxpdHlTY3JlZW4oY29uc3QgV2ViQ29yZTo6SW50UmVj
dCYpIGNvbnN0IGZpbmFsOwogCisgICAgdm9pZCBkaWRGaW5pc2hMb2FkaW5nSW1hZ2VGb3JFbGVt
ZW50KFdlYkNvcmU6OkhUTUxJbWFnZUVsZW1lbnQmKSBmaW5hbDsKKwogICAgIFBsYXRmb3JtUGFn
ZUNsaWVudCBwbGF0Zm9ybVBhZ2VDbGllbnQoKSBjb25zdCBmaW5hbDsKICAgICB2b2lkIGNvbnRl
bnRzU2l6ZUNoYW5nZWQoV2ViQ29yZTo6RnJhbWUmLCBjb25zdCBXZWJDb3JlOjpJbnRTaXplJikg
Y29uc3QgZmluYWw7CiAgICAgdm9pZCBpbnRyaW5zaWNDb250ZW50c1NpemVDaGFuZ2VkKGNvbnN0
IFdlYkNvcmU6OkludFNpemUmKSBjb25zdCBmaW5hbDsKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJL
aXQvV2ViUHJvY2Vzcy9XZWJQYWdlL1dlYlBhZ2UuY3BwIGIvU291cmNlL1dlYktpdC9XZWJQcm9j
ZXNzL1dlYlBhZ2UvV2ViUGFnZS5jcHAKaW5kZXggM2JhYWZkMTg1NGNiYzk5NWNhNGU4OTgwM2Uz
YjQ0MTgyM2ViNjE2NS4uMjY2ODJmZjI0N2JiZDQ5ZmFjNDM4YWM4ZjY2YjY1NDdmZGY2NTc0ZCAx
MDA2NDQKLS0tIGEvU291cmNlL1dlYktpdC9XZWJQcm9jZXNzL1dlYlBhZ2UvV2ViUGFnZS5jcHAK
KysrIGIvU291cmNlL1dlYktpdC9XZWJQcm9jZXNzL1dlYlBhZ2UvV2ViUGFnZS5jcHAKQEAgLTY3
NDAsNiArNjc0MCwxNCBAQCB2b2lkIFdlYlBhZ2U6OnVwZGF0ZU1vY2tBY2Nlc3NpYmlsaXR5RWxl
bWVudEFmdGVyQ29tbWl0dGluZ0xvYWQoKQogfQogI2VuZGlmCiAKKyNpZiAhUExBVEZPUk0oSU9T
X0ZBTUlMWSkgfHwgIUVOQUJMRShEUkFHX1NVUFBPUlQpCisKK3ZvaWQgV2ViUGFnZTo6ZGlkRmlu
aXNoTG9hZGluZ0ltYWdlRm9yRWxlbWVudChXZWJDb3JlOjpIVE1MSW1hZ2VFbGVtZW50JikKK3sK
K30KKworI2VuZGlmCisKIH0gLy8gbmFtZXNwYWNlIFdlYktpdAogCiAjdW5kZWYgUkVMRUFTRV9M
T0dfSUZfQUxMT1dFRApkaWZmIC0tZ2l0IGEvU291cmNlL1dlYktpdC9XZWJQcm9jZXNzL1dlYlBh
Z2UvV2ViUGFnZS5oIGIvU291cmNlL1dlYktpdC9XZWJQcm9jZXNzL1dlYlBhZ2UvV2ViUGFnZS5o
CmluZGV4IDg2OGFlOTJmMmZiMzI5MzUxMDExMGJhZWU4Y2NiNjc4MjMxYzMzYWQuLjJhODE0NmI3
NDUwNzczMDJlMjNlNDNlNmE3NjRiMTI2YzllNDFiYmUgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJL
aXQvV2ViUHJvY2Vzcy9XZWJQYWdlL1dlYlBhZ2UuaAorKysgYi9Tb3VyY2UvV2ViS2l0L1dlYlBy
b2Nlc3MvV2ViUGFnZS9XZWJQYWdlLmgKQEAgLTE1NCw2ICsxNTQsNyBAQCBjbGFzcyBGcmFtZTsK
IGNsYXNzIEZyYW1lU2VsZWN0aW9uOwogY2xhc3MgRnJhbWVWaWV3OwogY2xhc3MgR3JhcGhpY3ND
b250ZXh0OworY2xhc3MgSFRNTEltYWdlRWxlbWVudDsKIGNsYXNzIEhUTUxNZW51RWxlbWVudDsK
IGNsYXNzIEhUTUxNZW51SXRlbUVsZW1lbnQ7CiBjbGFzcyBIVE1MUGx1Z0luRWxlbWVudDsKQEAg
LTExMTMsMTAgKzExMTQsMTMgQEAgcHVibGljOgogICAgIHZvaWQgZGlkR2V0TG9hZERlY2lzaW9u
Rm9ySWNvbihib29sIGRlY2lzaW9uLCBDYWxsYmFja0lEIGxvYWRJZGVudGlmaWVyLCBPcHRpb25h
bENhbGxiYWNrSUQpOwogICAgIHZvaWQgc2V0VXNlSWNvbkxvYWRpbmdDbGllbnQoYm9vbCk7CiAK
LSNpZiBFTkFCTEUoREFUQV9JTlRFUkFDVElPTikKKyNpZiBQTEFURk9STShJT1NfRkFNSUxZKSAm
JiBFTkFCTEUoRFJBR19TVVBQT1JUKQogICAgIHZvaWQgZGlkQ29uY2x1ZGVFZGl0RHJhZygpOwor
ICAgIHZvaWQgZGlkQ29uY2x1ZGVEcm9wKCk7CiAjZW5kaWYKIAorICAgIHZvaWQgZGlkRmluaXNo
TG9hZGluZ0ltYWdlRm9yRWxlbWVudChXZWJDb3JlOjpIVE1MSW1hZ2VFbGVtZW50Jik7CisKICAg
ICBXZWJVUkxTY2hlbWVIYW5kbGVyUHJveHkqIHVybFNjaGVtZUhhbmRsZXJGb3JTY2hlbWUoY29u
c3QgU3RyaW5nJik7CiAgICAgdm9pZCBzdG9wQWxsVVJMU2NoZW1lVGFza3MoKTsKIApAQCAtMTI1
OCw2ICsxMjYyLDcgQEAgcHJpdmF0ZToKICNpZiBQTEFURk9STShJT1NfRkFNSUxZKSAmJiBFTkFC
TEUoREFUQV9JTlRFUkFDVElPTikKICAgICB2b2lkIHJlcXVlc3REcmFnU3RhcnQoY29uc3QgV2Vi
Q29yZTo6SW50UG9pbnQmIGNsaWVudFBvc2l0aW9uLCBjb25zdCBXZWJDb3JlOjpJbnRQb2ludCYg
Z2xvYmFsUG9zaXRpb24sIHVpbnQ2NF90IGFsbG93ZWRBY3Rpb25zKTsKICAgICB2b2lkIHJlcXVl
c3RBZGRpdGlvbmFsSXRlbXNGb3JEcmFnU2Vzc2lvbihjb25zdCBXZWJDb3JlOjpJbnRQb2ludCYg
Y2xpZW50UG9zaXRpb24sIGNvbnN0IFdlYkNvcmU6OkludFBvaW50JiBnbG9iYWxQb3NpdGlvbiwg
dWludDY0X3QgYWxsb3dlZEFjdGlvbnMpOworICAgIHZvaWQgY29tcHV0ZUFuZFNlbmRFZGl0RHJh
Z1NuYXBzaG90KCk7CiAjZW5kaWYKIAogI2lmICFQTEFURk9STShDT0NPQSkgJiYgIVBMQVRGT1JN
KFdQRSkKQEAgLTE3NzAsNiArMTc3NSwxMCBAQCBwcml2YXRlOgogICAgIFdlYkNvcmU6OkRyYWdT
b3VyY2VBY3Rpb24gbV9hbGxvd2VkRHJhZ1NvdXJjZUFjdGlvbnMgeyBXZWJDb3JlOjpEcmFnU291
cmNlQWN0aW9uQW55IH07CiAjZW5kaWYKIAorI2lmIEVOQUJMRShEUkFHX1NVUFBPUlQpICYmIFBM
QVRGT1JNKElPU19GQU1JTFkpCisgICAgSGFzaFNldDxSZWZQdHI8V2ViQ29yZTo6SFRNTEltYWdl
RWxlbWVudD4+IG1fcGVuZGluZ0ltYWdlRWxlbWVudHNGb3JEcm9wU25hcHNob3Q7CisjZW5kaWYK
KwogICAgIGJvb2wgbV9jYWNoZWRNYWluRnJhbWVJc1Bpbm5lZFRvTGVmdFNpZGUgeyB0cnVlIH07
CiAgICAgYm9vbCBtX2NhY2hlZE1haW5GcmFtZUlzUGlubmVkVG9SaWdodFNpZGUgeyB0cnVlIH07
CiAgICAgYm9vbCBtX2NhY2hlZE1haW5GcmFtZUlzUGlubmVkVG9Ub3BTaWRlIHsgdHJ1ZSB9Owpk
aWZmIC0tZ2l0IGEvU291cmNlL1dlYktpdC9XZWJQcm9jZXNzL1dlYlBhZ2UvV2ViUGFnZS5tZXNz
YWdlcy5pbiBiL1NvdXJjZS9XZWJLaXQvV2ViUHJvY2Vzcy9XZWJQYWdlL1dlYlBhZ2UubWVzc2Fn
ZXMuaW4KaW5kZXggMThmMDZmODg0ZTE5Nzc0ZmZjYTFkNzgxYjY4ODA5ZmZlZTE3MGQwOC4uZjdm
ZWIzYTVhMzNkYzhjYTk3YjA2N2JmYjRmZmY5YTVhZmE0YWFjYSAxMDA2NDQKLS0tIGEvU291cmNl
L1dlYktpdC9XZWJQcm9jZXNzL1dlYlBhZ2UvV2ViUGFnZS5tZXNzYWdlcy5pbgorKysgYi9Tb3Vy
Y2UvV2ViS2l0L1dlYlByb2Nlc3MvV2ViUGFnZS9XZWJQYWdlLm1lc3NhZ2VzLmluCkBAIC0zMDMs
OSArMzAzLDEwIEBAIEdlbmVyYXRlU3ludGhldGljRWRpdGluZ0NvbW1hbmQoZW51bTp1aW50OF90
IFdlYktpdDo6U3ludGhldGljRWRpdGluZ0NvbW1hbmRUeXBlCiAgICAgRHJhZ0NhbmNlbGxlZCgp
CiAjZW5kaWYKIAotI2lmIEVOQUJMRShEQVRBX0lOVEVSQUNUSU9OKQorI2lmIFBMQVRGT1JNKElP
U19GQU1JTFkpICYmIEVOQUJMRShEUkFHX1NVUFBPUlQpCiAgICAgUmVxdWVzdERyYWdTdGFydChX
ZWJDb3JlOjpJbnRQb2ludCBjbGllbnRQb3NpdGlvbiwgV2ViQ29yZTo6SW50UG9pbnQgZ2xvYmFs
UG9zaXRpb24sIHVpbnQ2NF90IGFsbG93ZWRBY3Rpb25zKQogICAgIFJlcXVlc3RBZGRpdGlvbmFs
SXRlbXNGb3JEcmFnU2Vzc2lvbihXZWJDb3JlOjpJbnRQb2ludCBjbGllbnRQb3NpdGlvbiwgV2Vi
Q29yZTo6SW50UG9pbnQgZ2xvYmFsUG9zaXRpb24sIHVpbnQ2NF90IGFsbG93ZWRBY3Rpb25zKQor
ICAgIERpZENvbmNsdWRlRHJvcCgpCiAjZW5kaWYKIAogICAgICMgUG9wdXAgbWVudS4KZGlmZiAt
LWdpdCBhL1NvdXJjZS9XZWJLaXQvV2ViUHJvY2Vzcy9XZWJQYWdlL2lvcy9XZWJQYWdlSU9TLm1t
IGIvU291cmNlL1dlYktpdC9XZWJQcm9jZXNzL1dlYlBhZ2UvaW9zL1dlYlBhZ2VJT1MubW0KaW5k
ZXggYzExOWQ0ZjEyNDdlZjY1YzZiODhkYWNlZGNjYjdlODFlNzFlMmZiMC4uOWJhZTdkNDVhNDJl
OWFlMWZlMGRmNzA3MzdjZmJkNGFiZDI2M2U2NyAxMDA2NDQKLS0tIGEvU291cmNlL1dlYktpdC9X
ZWJQcm9jZXNzL1dlYlBhZ2UvaW9zL1dlYlBhZ2VJT1MubW0KKysrIGIvU291cmNlL1dlYktpdC9X
ZWJQcm9jZXNzL1dlYlBhZ2UvaW9zL1dlYlBhZ2VJT1MubW0KQEAgLTgyNSwxOSArODI1LDYzIEBA
IHZvaWQgV2ViUGFnZTo6cmVxdWVzdEFkZGl0aW9uYWxJdGVtc0ZvckRyYWdTZXNzaW9uKGNvbnN0
IEludFBvaW50JiBjbGllbnRQb3NpdGlvCiAgICAgc2VuZChNZXNzYWdlczo6V2ViUGFnZVByb3h5
OjpEaWRIYW5kbGVBZGRpdGlvbmFsRHJhZ0l0ZW1zUmVxdWVzdChkaWRIYW5kbGVEcmFnKSk7CiB9
CiAKK3ZvaWQgV2ViUGFnZTo6ZGlkQ29uY2x1ZGVEcm9wKCkKK3sKKyAgICBtX3BlbmRpbmdJbWFn
ZUVsZW1lbnRzRm9yRHJvcFNuYXBzaG90LmNsZWFyKCk7Cit9CisKIHZvaWQgV2ViUGFnZTo6ZGlk
Q29uY2x1ZGVFZGl0RHJhZygpCiB7Ci0gICAgT3B0aW9uYWw8VGV4dEluZGljYXRvckRhdGE+IHRl
eHRJbmRpY2F0b3JEYXRhOworICAgIHNlbmQoTWVzc2FnZXM6OldlYlBhZ2VQcm94eTo6V2lsbFJl
Y2VpdmVFZGl0RHJhZ1NuYXBzaG90KCkpOworCisgICAgbGF5b3V0SWZOZWVkZWQoKTsKKworICAg
IG1fcGVuZGluZ0ltYWdlRWxlbWVudHNGb3JEcm9wU25hcHNob3QuY2xlYXIoKTsKIAorICAgIGJv
b2wgd2FpdGluZ0ZvckFueUltYWdlVG9Mb2FkID0gZmFsc2U7CisgICAgYXV0byYgZnJhbWUgPSBt
X3BhZ2UtPmZvY3VzQ29udHJvbGxlcigpLmZvY3VzZWRPck1haW5GcmFtZSgpOworICAgIGlmIChh
dXRvIHJhbmdlID0gZnJhbWUuc2VsZWN0aW9uKCkuc2VsZWN0aW9uKCkudG9Ob3JtYWxpemVkUmFu
Z2UoKSkgeworICAgICAgICBmb3IgKFRleHRJdGVyYXRvciBpdGVyYXRvcihyYW5nZS5nZXQoKSk7
ICFpdGVyYXRvci5hdEVuZCgpOyBpdGVyYXRvci5hZHZhbmNlKCkpIHsKKyAgICAgICAgICAgIGF1
dG8qIG5vZGUgPSBpdGVyYXRvci5ub2RlKCk7CisgICAgICAgICAgICBpZiAoIWlzPEhUTUxJbWFn
ZUVsZW1lbnQ+KG5vZGUpKQorICAgICAgICAgICAgICAgIGNvbnRpbnVlOworCisgICAgICAgICAg
ICBhdXRvJiBpbWFnZUVsZW1lbnQgPSBkb3duY2FzdDxIVE1MSW1hZ2VFbGVtZW50Pigqbm9kZSk7
CisgICAgICAgICAgICBhdXRvKiBjYWNoZWRJbWFnZSA9IGltYWdlRWxlbWVudC5jYWNoZWRJbWFn
ZSgpOworICAgICAgICAgICAgaWYgKGNhY2hlZEltYWdlICYmIGNhY2hlZEltYWdlLT5pbWFnZSgp
ICYmIGNhY2hlZEltYWdlLT5pbWFnZSgpLT5pc051bGwoKSkgeworICAgICAgICAgICAgICAgIG1f
cGVuZGluZ0ltYWdlRWxlbWVudHNGb3JEcm9wU25hcHNob3QuYWRkKCZpbWFnZUVsZW1lbnQpOwor
ICAgICAgICAgICAgICAgIHdhaXRpbmdGb3JBbnlJbWFnZVRvTG9hZCA9IHRydWU7CisgICAgICAg
ICAgICB9CisgICAgICAgIH0KKyAgICB9CisKKyAgICBpZiAoIXdhaXRpbmdGb3JBbnlJbWFnZVRv
TG9hZCkKKyAgICAgICAgY29tcHV0ZUFuZFNlbmRFZGl0RHJhZ1NuYXBzaG90KCk7Cit9CisKK3Zv
aWQgV2ViUGFnZTo6ZGlkRmluaXNoTG9hZGluZ0ltYWdlRm9yRWxlbWVudChXZWJDb3JlOjpIVE1M
SW1hZ2VFbGVtZW50JiBlbGVtZW50KQoreworICAgIGlmIChtX3BlbmRpbmdJbWFnZUVsZW1lbnRz
Rm9yRHJvcFNuYXBzaG90LmlzRW1wdHkoKSkKKyAgICAgICAgcmV0dXJuOworCisgICAgbV9wZW5k
aW5nSW1hZ2VFbGVtZW50c0ZvckRyb3BTbmFwc2hvdC5yZW1vdmUoJmVsZW1lbnQpOworCisgICAg
aWYgKG1fcGVuZGluZ0ltYWdlRWxlbWVudHNGb3JEcm9wU25hcHNob3QuaXNFbXB0eSgpKQorICAg
ICAgICBjb21wdXRlQW5kU2VuZEVkaXREcmFnU25hcHNob3QoKTsKK30KKwordm9pZCBXZWJQYWdl
Ojpjb21wdXRlQW5kU2VuZEVkaXREcmFnU25hcHNob3QoKQoreworICAgIE9wdGlvbmFsPFRleHRJ
bmRpY2F0b3JEYXRhPiB0ZXh0SW5kaWNhdG9yRGF0YTsKICAgICBzdGF0aWMgYXV0byBkZWZhdWx0
VGV4dEluZGljYXRvck9wdGlvbnNGb3JFZGl0RHJhZyA9IFRleHRJbmRpY2F0b3JPcHRpb25JbmNs
dWRlU25hcHNob3RPZkFsbFZpc2libGVDb250ZW50V2l0aG91dFNlbGVjdGlvbiB8IFRleHRJbmRp
Y2F0b3JPcHRpb25FeHBhbmRDbGlwQmV5b25kVmlzaWJsZVJlY3QgfCBUZXh0SW5kaWNhdG9yT3B0
aW9uUGFpbnRBbGxDb250ZW50IHwgVGV4dEluZGljYXRvck9wdGlvbkluY2x1ZGVNYXJnaW5JZlJh
bmdlTWF0Y2hlc1NlbGVjdGlvbiB8IFRleHRJbmRpY2F0b3JPcHRpb25QYWludEJhY2tncm91bmRz
IHwgVGV4dEluZGljYXRvck9wdGlvbkNvbXB1dGVFc3RpbWF0ZWRCYWNrZ3JvdW5kQ29sb3J8IFRl
eHRJbmRpY2F0b3JPcHRpb25Vc2VTZWxlY3Rpb25SZWN0Rm9yU2l6aW5nIHwgVGV4dEluZGljYXRv
ck9wdGlvbkluY2x1ZGVTbmFwc2hvdFdpdGhTZWxlY3Rpb25IaWdobGlnaHQ7CiAgICAgYXV0byYg
ZnJhbWUgPSBtX3BhZ2UtPmZvY3VzQ29udHJvbGxlcigpLmZvY3VzZWRPck1haW5GcmFtZSgpOwog
ICAgIGlmIChhdXRvIHJhbmdlID0gZnJhbWUuc2VsZWN0aW9uKCkuc2VsZWN0aW9uKCkudG9Ob3Jt
YWxpemVkUmFuZ2UoKSkgewotICAgICAgICBpZiAoYXV0byB0ZXh0SW5kaWNhdG9yID0gVGV4dElu
ZGljYXRvcjo6Y3JlYXRlV2l0aFJhbmdlKCpyYW5nZSwgZGVmYXVsdFRleHRJbmRpY2F0b3JPcHRp
b25zRm9yRWRpdERyYWcsIFRleHRJbmRpY2F0b3JQcmVzZW50YXRpb25UcmFuc2l0aW9uOjpOb25l
LCBGbG9hdFNpemUoKSkpCisgICAgICAgIGlmIChhdXRvIHRleHRJbmRpY2F0b3IgPSBUZXh0SW5k
aWNhdG9yOjpjcmVhdGVXaXRoUmFuZ2UoKnJhbmdlLCBkZWZhdWx0VGV4dEluZGljYXRvck9wdGlv
bnNGb3JFZGl0RHJhZywgVGV4dEluZGljYXRvclByZXNlbnRhdGlvblRyYW5zaXRpb246Ok5vbmUs
IHsgfSkpCiAgICAgICAgICAgICB0ZXh0SW5kaWNhdG9yRGF0YSA9IHRleHRJbmRpY2F0b3ItPmRh
dGEoKTsKICAgICB9Ci0KLSAgICBzZW5kKE1lc3NhZ2VzOjpXZWJQYWdlUHJveHk6OkRpZENvbmNs
dWRlRWRpdERyYWcoV1RGTW92ZSh0ZXh0SW5kaWNhdG9yRGF0YSkpKTsKKyAgICBzZW5kKE1lc3Nh
Z2VzOjpXZWJQYWdlUHJveHk6OkRpZFJlY2VpdmVFZGl0RHJhZ1NuYXBzaG90KFdURk1vdmUodGV4
dEluZGljYXRvckRhdGEpKSk7CiB9CisKICNlbmRpZgogCiB2b2lkIFdlYlBhZ2U6OnNlbmRUYXBI
aWdobGlnaHRGb3JOb2RlSWZOZWNlc3NhcnkodWludDY0X3QgcmVxdWVzdElELCBOb2RlKiBub2Rl
KQpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYktpdExlZ2FjeS9tYWMvV2ViQ29yZVN1cHBvcnQvV2Vi
Q2hyb21lQ2xpZW50LmggYi9Tb3VyY2UvV2ViS2l0TGVnYWN5L21hYy9XZWJDb3JlU3VwcG9ydC9X
ZWJDaHJvbWVDbGllbnQuaAppbmRleCA2NDBmZTU4ZmQxMDQ3OTRiM2M1ODNlNjU5YWI2MWFjZGYx
N2MyZTIwLi43ZTBhNjI1OGFjMDJhODdjYTljMTBjZTRhOWY4NWNmNDMyNzU5OTk2IDEwMDY0NAot
LS0gYS9Tb3VyY2UvV2ViS2l0TGVnYWN5L21hYy9XZWJDb3JlU3VwcG9ydC9XZWJDaHJvbWVDbGll
bnQuaAorKysgYi9Tb3VyY2UvV2ViS2l0TGVnYWN5L21hYy9XZWJDb3JlU3VwcG9ydC9XZWJDaHJv
bWVDbGllbnQuaApAQCAtMzEsNiArMzEsMTAgQEAKICNpbXBvcnQgPFdlYkNvcmUvRm9jdXNEaXJl
Y3Rpb24uaD4KICNpbXBvcnQgPHd0Zi9Gb3J3YXJkLmg+CiAKK25hbWVzcGFjZSBXZWJDb3JlIHsK
K2NsYXNzIEhUTUxJbWFnZUVsZW1lbnQ7Cit9CisKIEBjbGFzcyBXZWJWaWV3OwogCiAvLyBGSVhN
RTogVGhpcyBjbGFzcyBpcyB1c2VkIGFzIGEgY29uY3JldGUgY2xhc3Mgb24gTWFjLCBidXQgb24g
aU9TIHRoaXMgaXMgYW4gYWJzdHJhY3QKQEAgLTEwMiw2ICsxMDYsOCBAQCBwcml2YXRlOgogICAg
IFdlYkNvcmU6OkludFBvaW50IGFjY2Vzc2liaWxpdHlTY3JlZW5Ub1Jvb3RWaWV3KGNvbnN0IFdl
YkNvcmU6OkludFBvaW50JikgY29uc3QgZmluYWw7CiAgICAgV2ViQ29yZTo6SW50UmVjdCByb290
Vmlld1RvQWNjZXNzaWJpbGl0eVNjcmVlbihjb25zdCBXZWJDb3JlOjpJbnRSZWN0JikgY29uc3Qg
ZmluYWw7CiAKKyAgICB2b2lkIGRpZEZpbmlzaExvYWRpbmdJbWFnZUZvckVsZW1lbnQoV2ViQ29y
ZTo6SFRNTEltYWdlRWxlbWVudCYpIGZpbmFsOworCiAgICAgUGxhdGZvcm1QYWdlQ2xpZW50IHBs
YXRmb3JtUGFnZUNsaWVudCgpIGNvbnN0IGZpbmFsOwogICAgIHZvaWQgY29udGVudHNTaXplQ2hh
bmdlZChXZWJDb3JlOjpGcmFtZSYsIGNvbnN0IFdlYkNvcmU6OkludFNpemUmKSBjb25zdCBmaW5h
bDsKICAgICB2b2lkIGludHJpbnNpY0NvbnRlbnRzU2l6ZUNoYW5nZWQoY29uc3QgV2ViQ29yZTo6
SW50U2l6ZSYpIGNvbnN0IGZpbmFsIHsgfQpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYktpdExlZ2Fj
eS9tYWMvV2ViQ29yZVN1cHBvcnQvV2ViQ2hyb21lQ2xpZW50Lm1tIGIvU291cmNlL1dlYktpdExl
Z2FjeS9tYWMvV2ViQ29yZVN1cHBvcnQvV2ViQ2hyb21lQ2xpZW50Lm1tCmluZGV4IGFhYzg3MTU2
NjRmMmNiZTdjZTcwZGYyNzQ2M2VjNGYxNzVkODJjNzkuLmFiZTJmYjMyOThkMTZkZTQxNGNiZjkz
YzhiZWQ4YmVjMThiMjEwN2UgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJLaXRMZWdhY3kvbWFjL1dl
YkNvcmVTdXBwb3J0L1dlYkNocm9tZUNsaWVudC5tbQorKysgYi9Tb3VyY2UvV2ViS2l0TGVnYWN5
L21hYy9XZWJDb3JlU3VwcG9ydC9XZWJDaHJvbWVDbGllbnQubW0KQEAgLTYxMCw2ICs2MTAsMTAg
QEAgSW50UmVjdCBXZWJDaHJvbWVDbGllbnQ6OnJvb3RWaWV3VG9BY2Nlc3NpYmlsaXR5U2NyZWVu
KGNvbnN0IEludFJlY3QmIHIpIGNvbnN0CiAgICAgcmV0dXJuIHJvb3RWaWV3VG9TY3JlZW4ocik7
CiB9CiAKK3ZvaWQgV2ViQ2hyb21lQ2xpZW50OjpkaWRGaW5pc2hMb2FkaW5nSW1hZ2VGb3JFbGVt
ZW50KEhUTUxJbWFnZUVsZW1lbnQmKQoreworfQorCiBQbGF0Zm9ybVBhZ2VDbGllbnQgV2ViQ2hy
b21lQ2xpZW50OjpwbGF0Zm9ybVBhZ2VDbGllbnQoKSBjb25zdAogewogICAgIHJldHVybiAwOwpk
aWZmIC0tZ2l0IGEvVG9vbHMvQ2hhbmdlTG9nIGIvVG9vbHMvQ2hhbmdlTG9nCmluZGV4IGU4MjQy
NjA3YmRiMmQxZjRhOGRkMDM4N2FlZDhiNGY0ZjFlOTk0NDEuLjE5MzQ4YjRhNWE4NmZjYzI1Zjgw
YzQ5YTU2YjAyN2E3Y2IxYmY1OTAgMTAwNjQ0Ci0tLSBhL1Rvb2xzL0NoYW5nZUxvZworKysgYi9U
b29scy9DaGFuZ2VMb2cKQEAgLTEsMyArMSw0MSBAQAorMjAxOS0wNS0yNSAgV2Vuc29uIEhzaWVo
ICA8d2Vuc29uX2hzaWVoQGFwcGxlLmNvbT4KKworICAgICAgICBbaU9TXSBEcm9wcGVkIHRleHQs
IGF0dGFjaG1lbnRzLCBhbmQgaW1hZ2VzIHNob3VsZCBhbmltYXRlIGludG8gcGxhY2UKKyAgICAg
ICAgaHR0cHM6Ly9idWdzLndlYmtpdC5vcmcvc2hvd19idWcuY2dpP2lkPTE5ODI0MworICAgICAg
ICA8cmRhcjovL3Byb2JsZW0vMzUyMDUzNzM+CisKKyAgICAgICAgUmV2aWV3ZWQgYnkgTk9CT0RZ
IChPT1BTISkuCisKKyAgICAgICAgQWRqdXN0cyB0aGUgaU9TIGRyYWdnaW5nIHNpbXVsYXRvciwg
YW5kIGFkZHMgYSBuZXcgQVBJIHRlc3QuIFNlZSBiZWxvdyBmb3IgbW9yZSBkZXRhaWwuCisKKyAg
ICAgICAgKiBUZXN0V2ViS2l0QVBJL1Rlc3RzL2lvcy9EcmFnQW5kRHJvcFRlc3RzSU9TLm1tOgor
ICAgICAgICAoVGVzdFdlYktpdEFQSTo6aXNDb21wbGV0ZWx5V2hpdGUpOgorICAgICAgICAoVGVz
dFdlYktpdEFQSTo6VEVTVCk6CisKKyAgICAgICAgQWRkIGEgdGVzdCB0aGF0IGRyYWdzIGFuZCBk
cm9wcyBhbiBpbWFnZSBpbnRvIGEgY29udGVudGVkaXRhYmxlIGVsZW1lbnQsIGFuZCB0aGVuIG9i
c2VydmVzIHRoZSByZXN1bHRpbmcKKyAgICAgICAgVUlUYXJnZXRlZERyYWdQcmV2aWV3cyB1cG9u
IGRyb3AuCisKKyAgICAgICAgKiBUZXN0V2ViS2l0QVBJL2NvY29hL0RyYWdBbmREcm9wU2ltdWxh
dG9yLmg6CisgICAgICAgICogVGVzdFdlYktpdEFQSS9pb3MvRHJhZ0FuZERyb3BTaW11bGF0b3JJ
T1MubW06CisgICAgICAgICgtW0RyYWdBbmREcm9wU2ltdWxhdG9yIF9yZXNldFNpbXVsYXRlZFN0
YXRlXSk6CisgICAgICAgICgtW0RyYWdBbmREcm9wU2ltdWxhdG9yIHJ1bkZyb206dG86YWRkaXRp
b25hbEl0ZW1SZXF1ZXN0TG9jYXRpb25zOl0pOgorICAgICAgICAoLVtEcmFnQW5kRHJvcFNpbXVs
YXRvciBfY29uY2x1ZGVEcm9wQW5kUGVyZm9ybU9wZXJhdGlvbklmTmVjZXNzYXJ5XSk6CisKKyAg
ICAgICAgVGVhY2ggdGhlIGlPUyB2ZXJzaW9uIG9mIERyYWdBbmREcm9wU2ltdWxhdG9yIHRvIGlu
dm9rZSAtZHJvcEludGVyYWN0aW9uOmNvbmNsdWRlRHJvcDogb24gdGhlIGRyb3AgaW50ZXJhY3Rp
b24KKyAgICAgICAgZGVsZWdhdGUgd2hlbiB0aGUgZHJvcCBmaW5pc2hlcy4gVGhpcyBhZGRpdGlv
bmFsbHkgdXNlcyBfZG9BZnRlclJlY2VpdmluZ0VkaXREcmFnU25hcHNob3RGb3JUZXN0aW5nOiB0
byBkZWZlcgorICAgICAgICB0aGUgZW5kIG9mIHRoZSBzaW11bGF0ZWQgZHJhZyBhbmQgZHJvcCB1
bnRpbCBhZnRlciBkcmFnIHByZXZpZXdzIGhhdmUgYmVlbiByZWNlaXZlZCBkdXJpbmcgYW4gZWRp
dCBkcmFnLgorCisgICAgICAgICgtW0RyYWdBbmREcm9wU2ltdWxhdG9yIGRyb3BQcmV2aWV3c10p
OgorICAgICAgICAoLVtEcmFnQW5kRHJvcFNpbXVsYXRvciBkZWxheWVkRHJvcFByZXZpZXdzXSk6
CisKKyAgICAgICAgSGF2ZSB0aGUgZHJhZyBhbmQgZHJvcCBzaW11bGF0b3IgcmVtZW1iZXIgd2hp
Y2ggcHJldmlld3Mgd2VyZSByZXR1cm5lZCBieSB0aGUgZGVsZWdhdGUgb24gZHJvcCwgYXMgd2Vs
bCBhcyB3aGljaAorICAgICAgICBwcmV2aWV3cyB3ZXJlIHByb3ZpZGVkIGFzeW5jaHJvbm91c2x5
LgorCisgICAgICAgICgtW0RyYWdBbmREcm9wU2ltdWxhdG9yIF93ZWJWaWV3OmRhdGFJbnRlcmFj
dGlvbk9wZXJhdGlvbldhc0hhbmRsZWQ6Zm9yU2Vzc2lvbjppdGVtUHJvdmlkZXJzOl0pOgorICAg
ICAgICAqIFRlc3RXZWJLaXRBUEkvaW9zL1VJS2l0U1BJLmg6CisKKyAgICAgICAgU3RhZ2UgdGhl
IG5ldyBwcml2YXRlIGRyb3AgaW50ZXJhY3RvbiBkZWxlZ2F0ZSBtZXRob2QuCisKIDIwMTktMDUt
MjUgIFNpbW9uIEZyYXNlciAgPHNpbW9uLmZyYXNlckBhcHBsZS5jb20+CiAKICAgICAgICAgTW9i
aWxlTWluaUJyb3dzZXI6IEFkZCBpUGFkIHN1cHBvcnQsIGFuZCBhbGxvdyBpbnNlY3VyZSBsb2Fk
cwpkaWZmIC0tZ2l0IGEvVG9vbHMvVGVzdFdlYktpdEFQSS9UZXN0cy9pb3MvRHJhZ0FuZERyb3BU
ZXN0c0lPUy5tbSBiL1Rvb2xzL1Rlc3RXZWJLaXRBUEkvVGVzdHMvaW9zL0RyYWdBbmREcm9wVGVz
dHNJT1MubW0KaW5kZXggMjE5MzZiZDYzMDE1ZGFhZmQ4M2YwMTdiZTk0YzA5NDIyZDAyYmVhZi4u
ZjFjYzI0MGU1MzljODE3ZjM4OGMzMWFmZDFlOTgxODQ2YjNlNTM3MyAxMDA2NDQKLS0tIGEvVG9v
bHMvVGVzdFdlYktpdEFQSS9UZXN0cy9pb3MvRHJhZ0FuZERyb3BUZXN0c0lPUy5tbQorKysgYi9U
b29scy9UZXN0V2ViS2l0QVBJL1Rlc3RzL2lvcy9EcmFnQW5kRHJvcFRlc3RzSU9TLm1tCkBAIC0y
MTA3LDYgKzIxMDcsNDQgQEAgVEVTVChEcmFnQW5kRHJvcFRlc3RzLCBEYXRhVHJhbnNmZXJTYW5p
dGl6ZUhUTUwpCiAgICAgVGVzdFdlYktpdEFQSTo6VXRpbDo6cnVuKCZkb25lKTsKIH0KIAorc3Rh
dGljIEJPT0wgaXNDb21wbGV0ZWx5V2hpdGUoVUlJbWFnZSAqaW1hZ2UpCit7CisgICAgYXV0byBk
YXRhID0gYWRvcHRDRihDR0RhdGFQcm92aWRlckNvcHlEYXRhKENHSW1hZ2VHZXREYXRhUHJvdmlk
ZXIoaW1hZ2UuQ0dJbWFnZSkpKTsKKyAgICBhdXRvKiBkYXRhUHRyID0gQ0ZEYXRhR2V0Qnl0ZVB0
cihkYXRhLmdldCgpKTsKKyAgICBpbnQgaW1hZ2VXaWR0aCA9IGltYWdlLnNpemUud2lkdGg7Cisg
ICAgZm9yIChpbnQgcm93ID0gMDsgcm93IDwgaW1hZ2Uuc2l6ZS5oZWlnaHQ7ICsrcm93KSB7Cisg
ICAgICAgIGZvciAoaW50IGNvbHVtbiA9IDA7IGNvbHVtbiA8IGltYWdlV2lkdGg7ICsrY29sdW1u
KSB7CisgICAgICAgICAgICBpbnQgcGl4ZWxPZmZzZXQgPSAoKGltYWdlV2lkdGggKiByb3cpICsg
Y29sdW1uKSAqIDQ7CisgICAgICAgICAgICBpZiAoZGF0YVB0cltwaXhlbE9mZnNldF0gIT0gMHhG
RiB8fCBkYXRhUHRyW3BpeGVsT2Zmc2V0ICsgMV0gIT0gMHhGRiB8fCBkYXRhUHRyW3BpeGVsT2Zm
c2V0ICsgMl0gIT0gMHhGRikKKyAgICAgICAgICAgICAgICByZXR1cm4gTk87CisgICAgICAgIH0K
KyAgICB9CisgICAgcmV0dXJuIFlFUzsKK30KKworVEVTVChEcmFnQW5kRHJvcFRlc3RzLCBEcm9w
UHJldmlld0ZvckltYWdlSW5FZGl0YWJsZUFyZWEpCit7CisgICAgYXV0byB3ZWJWaWV3ID0gYWRv
cHROUyhbW1Rlc3RXS1dlYlZpZXcgYWxsb2NdIGluaXRXaXRoRnJhbWU6Q0dSZWN0TWFrZSgwLCAw
LCAzMjAsIDUwMCldKTsKKyAgICBbd2ViVmlldyBzeW5jaHJvbm91c2x5TG9hZFRlc3RQYWdlTmFt
ZWQ6QCJpbWFnZS1hbmQtY29udGVudGVkaXRhYmxlIl07CisKKyAgICAvLyBFbnN1cmUgdGhhdCB0
aGUgcmVzdWx0aW5nIHNuYXBzaG90IG9uIGRyb3AgY29udGFpbnMgb25seSB0aGUgZHJhZ2dlZCBp
bWFnZS4KKyAgICBbd2ViVmlldyBzdHJpbmdCeUV2YWx1YXRpbmdKYXZhU2NyaXB0OkAiZWRpdG9y
LnN0eWxlLmJvcmRlciA9ICdub25lJzsgZWRpdG9yLnN0eWxlLm91dGxpbmUgPSAnbm9uZSciXTsK
KworICAgIGF1dG8gc2ltdWxhdG9yID0gYWRvcHROUyhbW0RyYWdBbmREcm9wU2ltdWxhdG9yIGFs
bG9jXSBpbml0V2l0aFdlYlZpZXc6d2ViVmlldy5nZXQoKV0pOworICAgIFtzaW11bGF0b3IgcnVu
RnJvbTpDR1BvaW50TWFrZSgxMDAsIDUwKSB0bzpDR1BvaW50TWFrZSgxMDAsIDMwMCldOworCisg
ICAgTlNBcnJheSAqZHJvcFByZXZpZXdzID0gW3NpbXVsYXRvciBkcm9wUHJldmlld3NdOworICAg
IE5TQXJyYXkgKmRlbGF5ZWREcm9wUHJldmlld3MgPSBbc2ltdWxhdG9yIGRlbGF5ZWREcm9wUHJl
dmlld3NdOworICAgIEVYUEVDVF9FUSgxVSwgZHJvcFByZXZpZXdzLmNvdW50KTsKKyAgICBFWFBF
Q1RfRVEoMVUsIGRlbGF5ZWREcm9wUHJldmlld3MuY291bnQpOworICAgIEVYUEVDVF9FUShVSVRh
cmdldGVkRHJhZ1ByZXZpZXcuY2xhc3MsIFtkcm9wUHJldmlld3MuZmlyc3RPYmplY3QgY2xhc3Nd
KTsKKyAgICBFWFBFQ1RfRVEoVUlUYXJnZXRlZERyYWdQcmV2aWV3LmNsYXNzLCBbZGVsYXllZERy
b3BQcmV2aWV3cy5maXJzdE9iamVjdCBjbGFzc10pOworCisgICAgVUlUYXJnZXRlZERyYWdQcmV2
aWV3ICpmaW5hbFByZXZpZXcgPSAoVUlUYXJnZXRlZERyYWdQcmV2aWV3ICopZGVsYXllZERyb3BQ
cmV2aWV3cy5maXJzdE9iamVjdDsKKyAgICBFWFBFQ1RfRVEoVUlJbWFnZVZpZXcuY2xhc3MsIGZp
bmFsUHJldmlldy52aWV3LmNsYXNzKTsKKyAgICBFWFBFQ1RfRkFMU0UoaXNDb21wbGV0ZWx5V2hp
dGUoWyhVSUltYWdlVmlldyAqKWZpbmFsUHJldmlldy52aWV3IGltYWdlXSkpOworfQorCiB9IC8v
IG5hbWVzcGFjZSBUZXN0V2ViS2l0QVBJCiAKICNlbmRpZiAvLyBFTkFCTEUoRFJBR19TVVBQT1JU
KSAmJiBQTEFURk9STShJT1NfRkFNSUxZKQpkaWZmIC0tZ2l0IGEvVG9vbHMvVGVzdFdlYktpdEFQ
SS9jb2NvYS9EcmFnQW5kRHJvcFNpbXVsYXRvci5oIGIvVG9vbHMvVGVzdFdlYktpdEFQSS9jb2Nv
YS9EcmFnQW5kRHJvcFNpbXVsYXRvci5oCmluZGV4IDg0N2M3NzZhZGNmZTY4YTcwNDUzY2RmNDg3
NjU3YjhmYTM2NDFmZjcuLmM1YmMwZGU3OTJmOGYzNjM5ZjNjZWIxYzFlMGQ4YWUwMGYxZDU2MDkg
MTAwNjQ0Ci0tLSBhL1Rvb2xzL1Rlc3RXZWJLaXRBUEkvY29jb2EvRHJhZ0FuZERyb3BTaW11bGF0
b3IuaAorKysgYi9Ub29scy9UZXN0V2ViS2l0QVBJL2NvY29hL0RyYWdBbmREcm9wU2ltdWxhdG9y
LmgKQEAgLTExMSw2ICsxMTEsOCBAQCB0eXBlZGVmIE5TRGljdGlvbmFyeTxOU051bWJlciAqLCBO
U1ZhbHVlICo+ICpQcm9ncmVzc1RvQ0dQb2ludFZhbHVlTWFwOwogQHByb3BlcnR5IChub25hdG9t
aWMsIHJlYWRvbmx5KSBOU0FycmF5ICpmaW5hbFNlbGVjdGlvblJlY3RzOwogQHByb3BlcnR5IChu
b25hdG9taWMsIHJlYWRvbmx5KSBDR1JlY3QgbGFzdEtub3duRHJhZ0NhcmV0UmVjdDsKIEBwcm9w
ZXJ0eSAobm9uYXRvbWljLCByZWFkb25seSkgTlNBcnJheTxVSVRhcmdldGVkRHJhZ1ByZXZpZXcg
Kj4gKmxpZnRQcmV2aWV3czsKK0Bwcm9wZXJ0eSAobm9uYXRvbWljLCByZWFkb25seSkgTlNBcnJh
eSAqZHJvcFByZXZpZXdzOworQHByb3BlcnR5IChub25hdG9taWMsIHJlYWRvbmx5KSBOU0FycmF5
ICpkZWxheWVkRHJvcFByZXZpZXdzOwogQHByb3BlcnR5IChub25hdG9taWMsIHJlYWRvbmx5KSBC
T09MIHN1cHByZXNzZWRTZWxlY3Rpb25Db21tYW5kc0R1cmluZ0Ryb3A7CiAKICNlbmRpZiAvLyBQ
TEFURk9STShJT1NfRkFNSUxZKQpkaWZmIC0tZ2l0IGEvVG9vbHMvVGVzdFdlYktpdEFQSS9pb3Mv
RHJhZ0FuZERyb3BTaW11bGF0b3JJT1MubW0gYi9Ub29scy9UZXN0V2ViS2l0QVBJL2lvcy9EcmFn
QW5kRHJvcFNpbXVsYXRvcklPUy5tbQppbmRleCBmZjAxODdkYzRlNmMwNWY1MWZjOTBhNTE1YWZl
NWQ3OGM3MDAyOTNiLi44ZWRhZThjZThhOTQ4NDM1ODUzMjcyN2U2Njg1ZjAxYTc1MGNmYTIwIDEw
MDY0NAotLS0gYS9Ub29scy9UZXN0V2ViS2l0QVBJL2lvcy9EcmFnQW5kRHJvcFNpbXVsYXRvcklP
Uy5tbQorKysgYi9Ub29scy9UZXN0V2ViS2l0QVBJL2lvcy9EcmFnQW5kRHJvcFNpbXVsYXRvcklP
Uy5tbQpAQCAtMzQsNiArMzQsNyBAQAogCiAjaW1wb3J0IDxVSUtpdC9VSURyYWdJbnRlcmFjdGlv
bi5oPgogI2ltcG9ydCA8VUlLaXQvVUlEcmFnSXRlbS5oPgorI2ltcG9ydCA8VUlLaXQvVUlEcm9w
SW50ZXJhY3Rpb24uaD4KICNpbXBvcnQgPFVJS2l0L1VJSW50ZXJhY3Rpb24uaD4KICNpbXBvcnQg
PFdlYktpdC9XS1dlYlZpZXdQcml2YXRlLmg+CiAjaW1wb3J0IDxXZWJLaXQvX1dLRm9jdXNlZEVs
ZW1lbnRJbmZvLmg+CkBAIC0zMTAsNiArMzExLDggQEAgQGltcGxlbWVudGF0aW9uIERyYWdBbmRE
cm9wU2ltdWxhdG9yIHsKICAgICBSZXRhaW5QdHI8TlNNdXRhYmxlRGljdGlvbmFyeTxOU051bWJl
ciAqLCBOU1ZhbHVlICo+Pl9yZW1haW5pbmdBZGRpdGlvbmFsSXRlbVJlcXVlc3RMb2NhdGlvbnNC
eVByb2dyZXNzOwogICAgIFJldGFpblB0cjxOU011dGFibGVBcnJheTxOU1ZhbHVlICo+Pl9xdWV1
ZWRBZGRpdGlvbmFsSXRlbVJlcXVlc3RMb2NhdGlvbnM7CiAgICAgUmV0YWluUHRyPE5TTXV0YWJs
ZUFycmF5PFVJVGFyZ2V0ZWREcmFnUHJldmlldyAqPj4gX2xpZnRQcmV2aWV3czsKKyAgICBSZXRh
aW5QdHI8TlNNdXRhYmxlQXJyYXk+IF9kcm9wUHJldmlld3M7CisgICAgUmV0YWluUHRyPE5TTXV0
YWJsZUFycmF5PiBfZGVsYXllZERyb3BQcmV2aWV3czsKIAogICAgIFJldGFpblB0cjxOU011dGFi
bGVBcnJheTxfV0tBdHRhY2htZW50ICo+PiBfaW5zZXJ0ZWRBdHRhY2htZW50czsKICAgICBSZXRh
aW5QdHI8TlNNdXRhYmxlQXJyYXk8X1dLQXR0YWNobWVudCAqPj4gX3JlbW92ZWRBdHRhY2htZW50
czsKQEAgLTMxNyw2ICszMjAsNyBAQCBAaW1wbGVtZW50YXRpb24gRHJhZ0FuZERyb3BTaW11bGF0
b3IgewogICAgIGJvb2wgX2hhc1N0YXJ0ZWRJbnB1dFNlc3Npb247CiAgICAgZG91YmxlIF9jdXJy
ZW50UHJvZ3Jlc3M7CiAgICAgYm9vbCBfaXNEb25lV2l0aEN1cnJlbnRSdW47CisgICAgYm9vbCBf
aXNEb25lV2FpdGluZ0ZvckRlbGF5ZWREcm9wUHJldmlld3M7CiAgICAgRHJhZ0FuZERyb3BQaGFz
ZSBfcGhhc2U7CiAKICAgICBCT09MIF9zdXBwcmVzc2VkU2VsZWN0aW9uQ29tbWFuZHNEdXJpbmdE
cm9wOwpAQCAtMzczLDYgKzM3Nyw3IEBAIC0gKHZvaWQpX3Jlc2V0U2ltdWxhdGVkU3RhdGUKICAg
ICBfcGhhc2UgPSBEcmFnQW5kRHJvcFBoYXNlQmVnaW5uaW5nOwogICAgIF9jdXJyZW50UHJvZ3Jl
c3MgPSAwOwogICAgIF9pc0RvbmVXaXRoQ3VycmVudFJ1biA9IGZhbHNlOworICAgIF9pc0RvbmVX
YWl0aW5nRm9yRGVsYXllZERyb3BQcmV2aWV3cyA9IHRydWU7CiAgICAgX29ic2VydmVkRXZlbnRO
YW1lcyA9IGFkb3B0TlMoW1tOU011dGFibGVBcnJheSBhbGxvY10gaW5pdF0pOwogICAgIF9pbnNl
cnRlZEF0dGFjaG1lbnRzID0gYWRvcHROUyhbW05TTXV0YWJsZUFycmF5IGFsbG9jXSBpbml0XSk7
CiAgICAgX3JlbW92ZWRBdHRhY2htZW50cyA9IGFkb3B0TlMoW1tOU011dGFibGVBcnJheSBhbGxv
Y10gaW5pdF0pOwpAQCAtMzg0LDYgKzM4OSw4IEBAIC0gKHZvaWQpX3Jlc2V0U2ltdWxhdGVkU3Rh
dGUKICAgICBfcmVtYWluaW5nQWRkaXRpb25hbEl0ZW1SZXF1ZXN0TG9jYXRpb25zQnlQcm9ncmVz
cyA9IG5pbDsKICAgICBfcXVldWVkQWRkaXRpb25hbEl0ZW1SZXF1ZXN0TG9jYXRpb25zID0gYWRv
cHROUyhbW05TTXV0YWJsZUFycmF5IGFsbG9jXSBpbml0XSk7CiAgICAgX2xpZnRQcmV2aWV3cyA9
IGFkb3B0TlMoW1tOU011dGFibGVBcnJheSBhbGxvY10gaW5pdF0pOworICAgIF9kcm9wUHJldmll
d3MgPSBhZG9wdE5TKFtbTlNNdXRhYmxlQXJyYXkgYWxsb2NdIGluaXRdKTsKKyAgICBfZGVsYXll
ZERyb3BQcmV2aWV3cyA9IGFkb3B0TlMoW1tOU011dGFibGVBcnJheSBhbGxvY10gaW5pdF0pOwog
ICAgIF9oYXNTdGFydGVkSW5wdXRTZXNzaW9uID0gZmFsc2U7CiB9CiAKQEAgLTQ1NCw2ICs0NjEs
NyBAQCAtICh2b2lkKXJ1bkZyb206KENHUG9pbnQpc3RhcnRMb2NhdGlvbiB0bzooQ0dQb2ludCll
bmRMb2NhdGlvbiBhZGRpdGlvbmFsSXRlbVJlcQogICAgIH0KIAogICAgIFV0aWw6OnJ1bigmX2lz
RG9uZVdpdGhDdXJyZW50UnVuKTsKKyAgICBVdGlsOjpydW4oJl9pc0RvbmVXYWl0aW5nRm9yRGVs
YXllZERyb3BQcmV2aWV3cyk7CiAgICAgW193ZWJWaWV3IGNsZWFyTWVzc2FnZUhhbmRsZXJzOmRy
YWdBbmREcm9wRXZlbnROYW1lcygpXTsKICAgICBfZmluYWxTZWxlY3Rpb25SZWN0cyA9IFtfd2Vi
VmlldyBzZWxlY3Rpb25SZWN0c0FmdGVyUHJlc2VudGF0aW9uVXBkYXRlXTsKIApAQCAtNDcwLDEx
ICs0NzgsMzAgQEAgLSAodm9pZClfY29uY2x1ZGVEcm9wQW5kUGVyZm9ybU9wZXJhdGlvbklmTmVj
ZXNzYXJ5CiAgICAgX2xhc3RLbm93bkRyYWdDYXJldFJlY3QgPSBbX3dlYlZpZXcgX2RyYWdDYXJl
dFJlY3RdOwogICAgIGF1dG8gb3BlcmF0aW9uID0gW19sYXN0S25vd25Ecm9wUHJvcG9zYWwgb3Bl
cmF0aW9uXTsKICAgICBpZiAob3BlcmF0aW9uICE9IFVJRHJvcE9wZXJhdGlvbkNhbmNlbCAmJiBv
cGVyYXRpb24gIT0gVUlEcm9wT3BlcmF0aW9uRm9yYmlkZGVuKSB7CisgICAgICAgIE5TSW50ZWdl
ciBkcm9wUHJldmlld0luZGV4ID0gMDsKKyAgICAgICAgX19ibG9jayBOU1VJbnRlZ2VyIG51bWJl
ck9mUGVuZGluZ1ByZXZpZXdzID0gW19kcm9wU2Vzc2lvbiBpdGVtc10uY291bnQ7CisgICAgICAg
IF9pc0RvbmVXYWl0aW5nRm9yRGVsYXllZERyb3BQcmV2aWV3cyA9ICFudW1iZXJPZlBlbmRpbmdQ
cmV2aWV3czsKKyAgICAgICAgZm9yIChVSURyYWdJdGVtICppdGVtIGluIFtfZHJvcFNlc3Npb24g
aXRlbXNdKSB7CisgICAgICAgICAgICBhdXRvIGRlZmF1bHRQcmV2aWV3ID0gYWRvcHROUyhbW1VJ
VGFyZ2V0ZWREcmFnUHJldmlldyBhbGxvY10gaW5pdFdpdGhWaWV3Ol93ZWJWaWV3LmdldCgpXSk7
CisgICAgICAgICAgICBpZCA8VUlEcm9wSW50ZXJhY3Rpb25EZWxlZ2F0ZV9TdGFnaW5nXzMxMDc1
MDA1PiBkZWxlZ2F0ZSA9IChpZCA8VUlEcm9wSW50ZXJhY3Rpb25EZWxlZ2F0ZV9TdGFnaW5nXzMx
MDc1MDA1PilbX3dlYlZpZXcgZHJvcEludGVyYWN0aW9uRGVsZWdhdGVdOworICAgICAgICAgICAg
VUlEcm9wSW50ZXJhY3Rpb24gKmludGVyYWN0aW9uID0gW193ZWJWaWV3IGRyb3BJbnRlcmFjdGlv
bl07CisgICAgICAgICAgICBbX2Ryb3BQcmV2aWV3cyBhZGRPYmplY3Q6W2RlbGVnYXRlIGRyb3BJ
bnRlcmFjdGlvbjppbnRlcmFjdGlvbiBwcmV2aWV3Rm9yRHJvcHBpbmdJdGVtOml0ZW0gd2l0aERl
ZmF1bHQ6ZGVmYXVsdFByZXZpZXcuZ2V0KCldID86IE5TTnVsbC5udWxsXTsKKyAgICAgICAgICAg
IFtfZGVsYXllZERyb3BQcmV2aWV3cyBhZGRPYmplY3Q6TlNOdWxsLm51bGxdOworICAgICAgICAg
ICAgW2RlbGVnYXRlIF9kcm9wSW50ZXJhY3Rpb246aW50ZXJhY3Rpb24gZGVsYXllZFByZXZpZXdQ
cm92aWRlckZvckRyb3BwaW5nSXRlbTppdGVtIHByZXZpZXdQcm92aWRlcjpeKFVJVGFyZ2V0ZWRE
cmFnUHJldmlldyAqcHJldmlldykgeworICAgICAgICAgICAgICAgIGlmIChwcmV2aWV3KQorICAg
ICAgICAgICAgICAgICAgICBbX2RlbGF5ZWREcm9wUHJldmlld3Mgc2V0T2JqZWN0OnByZXZpZXcg
YXRJbmRleGVkU3Vic2NyaXB0OmRyb3BQcmV2aWV3SW5kZXhdOworCisgICAgICAgICAgICAgICAg
aWYgKCEtLW51bWJlck9mUGVuZGluZ1ByZXZpZXdzKQorICAgICAgICAgICAgICAgICAgICBfaXNE
b25lV2FpdGluZ0ZvckRlbGF5ZWREcm9wUHJldmlld3MgPSB0cnVlOworICAgICAgICAgICAgfV07
CisgICAgICAgICAgICArK2Ryb3BQcmV2aWV3SW5kZXg7CisgICAgICAgIH0KICAgICAgICAgW1tf
d2ViVmlldyBkcm9wSW50ZXJhY3Rpb25EZWxlZ2F0ZV0gZHJvcEludGVyYWN0aW9uOltfd2ViVmll
dyBkcm9wSW50ZXJhY3Rpb25dIHBlcmZvcm1Ecm9wOl9kcm9wU2Vzc2lvbi5nZXQoKV07CiAgICAg
ICAgIF9waGFzZSA9IERyYWdBbmREcm9wUGhhc2VQZXJmb3JtaW5nRHJvcDsKICAgICB9IGVsc2Ug
ewotICAgICAgICBfaXNEb25lV2l0aEN1cnJlbnRSdW4gPSBZRVM7CisgICAgICAgIF9pc0RvbmVX
aXRoQ3VycmVudFJ1biA9IHRydWU7CiAgICAgICAgIF9waGFzZSA9IERyYWdBbmREcm9wUGhhc2VD
YW5jZWxsZWQ7CisgICAgICAgIFtbX3dlYlZpZXcgZHJvcEludGVyYWN0aW9uRGVsZWdhdGVdIGRy
b3BJbnRlcmFjdGlvbjpbX3dlYlZpZXcgZHJvcEludGVyYWN0aW9uXSBjb25jbHVkZURyb3A6X2Ry
b3BTZXNzaW9uLmdldCgpXTsKICAgICB9CiAKICAgICBbW193ZWJWaWV3IGRyb3BJbnRlcmFjdGlv
bkRlbGVnYXRlXSBkcm9wSW50ZXJhY3Rpb246W193ZWJWaWV3IGRyb3BJbnRlcmFjdGlvbl0gc2Vz
c2lvbkRpZEVuZDpfZHJvcFNlc3Npb24uZ2V0KCldOwpAQCAtNjQ0LDYgKzY3MSwxNiBAQCAtIChO
U0FycmF5PFVJVGFyZ2V0ZWREcmFnUHJldmlldyAqPiAqKWxpZnRQcmV2aWV3cwogICAgIHJldHVy
biBfbGlmdFByZXZpZXdzLmdldCgpOwogfQogCistIChOU0FycmF5PFVJVGFyZ2V0ZWREcmFnUHJl
dmlldyAqPiAqKWRyb3BQcmV2aWV3cworeworICAgIHJldHVybiBfZHJvcFByZXZpZXdzLmdldCgp
OworfQorCistIChOU0FycmF5PFVJVGFyZ2V0ZWREcmFnUHJldmlldyAqPiAqKWRlbGF5ZWREcm9w
UHJldmlld3MKK3sKKyAgICByZXR1cm4gX2RlbGF5ZWREcm9wUHJldmlld3MuZ2V0KCk7Cit9CisK
IC0gKENHUmVjdClsYXN0S25vd25EcmFnQ2FyZXRSZWN0CiB7CiAgICAgcmV0dXJuIF9sYXN0S25v
d25EcmFnQ2FyZXRSZWN0OwpAQCAtNzI5LDEwICs3NjYsMTQgQEAgLSAodm9pZCheKShCT09MLCBO
U0FycmF5ICopKWRyb3BDb21wbGV0aW9uQmxvY2sKIC0gKHZvaWQpX3dlYlZpZXc6KFdLV2ViVmll
dyAqKXdlYlZpZXcgZGF0YUludGVyYWN0aW9uT3BlcmF0aW9uV2FzSGFuZGxlZDooQk9PTCloYW5k
bGVkIGZvclNlc3Npb246KGlkKXNlc3Npb24gaXRlbVByb3ZpZGVyczooTlNBcnJheTxOU0l0ZW1Q
cm92aWRlciAqPiAqKWl0ZW1Qcm92aWRlcnMKIHsKICAgICBfc3VwcHJlc3NlZFNlbGVjdGlvbkNv
bW1hbmRzRHVyaW5nRHJvcCA9IFtfd2ViVmlldyB0ZXh0SW5wdXRDb250ZW50Vmlld10uX3Nob3Vs
ZFN1cHByZXNzU2VsZWN0aW9uQ29tbWFuZHM7Ci0gICAgX2lzRG9uZVdpdGhDdXJyZW50UnVuID0g
dHJ1ZTsKIAogICAgIGlmIChzZWxmLmRyb3BDb21wbGV0aW9uQmxvY2spCiAgICAgICAgIHNlbGYu
ZHJvcENvbXBsZXRpb25CbG9jayhoYW5kbGVkLCBpdGVtUHJvdmlkZXJzKTsKKworICAgIFtfd2Vi
VmlldyBfZG9BZnRlclJlY2VpdmluZ0VkaXREcmFnU25hcHNob3RGb3JUZXN0aW5nOl57CisgICAg
ICAgIFtbX3dlYlZpZXcgZHJvcEludGVyYWN0aW9uRGVsZWdhdGVdIGRyb3BJbnRlcmFjdGlvbjpb
X3dlYlZpZXcgZHJvcEludGVyYWN0aW9uXSBjb25jbHVkZURyb3A6X2Ryb3BTZXNzaW9uLmdldCgp
XTsKKyAgICAgICAgX2lzRG9uZVdpdGhDdXJyZW50UnVuID0gdHJ1ZTsKKyAgICB9XTsKIH0KIAog
LSAoVUlEcm9wUHJvcG9zYWwgKilfd2ViVmlldzooV0tXZWJWaWV3ICopd2ViVmlldyB3aWxsVXBk
YXRlRHJvcFByb3Bvc2FsVG9Qcm9wb3NhbDooVUlEcm9wUHJvcG9zYWwgKilwcm9wb3NhbCBmb3JT
ZXNzaW9uOihpZCA8VUlEcm9wU2Vzc2lvbj4pc2Vzc2lvbgpkaWZmIC0tZ2l0IGEvVG9vbHMvVGVz
dFdlYktpdEFQSS9pb3MvVUlLaXRTUEkuaCBiL1Rvb2xzL1Rlc3RXZWJLaXRBUEkvaW9zL1VJS2l0
U1BJLmgKaW5kZXggM2ZhNjY4NDM3ZDJkNjJkYmQ3M2I5ODdiMDE0N2I5MTdiNmUwM2NiNi4uNzJl
YzlmZDhjYTM5OTE1YzZlZDkzZWEyMTZmNzdkMjYwODRiMzcxYSAxMDA2NDQKLS0tIGEvVG9vbHMv
VGVzdFdlYktpdEFQSS9pb3MvVUlLaXRTUEkuaAorKysgYi9Ub29scy9UZXN0V2ViS2l0QVBJL2lv
cy9VSUtpdFNQSS5oCkBAIC0xODMsNCArMTgzLDggQEAgdHlwZWRlZiBOU19PUFRJT05TKE5TSW50
ZWdlciwgVUlXS0RvY3VtZW50UmVxdWVzdEZsYWdzKSB7CiAtICh2b2lkKXNldE5leHRQcmV2aW91
c0l0ZW1zVmlzaWJsZTooQk9PTCl2aXNpYmxlOwogQGVuZAogCitAcHJvdG9jb2wgVUlEcm9wSW50
ZXJhY3Rpb25EZWxlZ2F0ZV9TdGFnaW5nXzMxMDc1MDA1IDxVSURyb3BJbnRlcmFjdGlvbkRlbGVn
YXRlPgorLSAodm9pZClfZHJvcEludGVyYWN0aW9uOihVSURyb3BJbnRlcmFjdGlvbiAqKWludGVy
YWN0aW9uIGRlbGF5ZWRQcmV2aWV3UHJvdmlkZXJGb3JEcm9wcGluZ0l0ZW06KFVJRHJhZ0l0ZW0g
KilpdGVtIHByZXZpZXdQcm92aWRlcjoodm9pZCheKShVSVRhcmdldGVkRHJhZ1ByZXZpZXcgKnBy
ZXZpZXcpKXByZXZpZXdQcm92aWRlcjsKK0BlbmQKKwogI2VuZGlmIC8vIFBMQVRGT1JNKElPU19G
QU1JTFkpCg==
</data>

          </attachment>
          <attachment
              isobsolete="1"
              ispatch="1"
              isprivate="0"
          >
            <attachid>370647</attachid>
            <date>2019-05-26 02:56:59 -0700</date>
            <delta_ts>2019-05-26 03:52:15 -0700</delta_ts>
            <desc>Fix Win build/review comment</desc>
            <filename>bug-198243-20190526025659.patch</filename>
            <type>text/plain</type>
            <size>65476</size>
            <attacher name="Wenson Hsieh">wenson_hsieh</attacher>
            
              <data encoding="base64">U3VidmVyc2lvbiBSZXZpc2lvbjogMjQ1Nzc3CmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9D
aGFuZ2VMb2cgYi9Tb3VyY2UvV2ViQ29yZS9DaGFuZ2VMb2cKaW5kZXggMmU0MDUwZjEyYzc0NTM1
YzUzMzczMTc1ZWNmYjg0YTAxODQ1ZWNlOC4uMTUwZDM3MDUyNzMyMTJkNjM1YzljOWVhZTkzMzAx
ZGVlZDc2OGMwMCAxMDA2NDQKLS0tIGEvU291cmNlL1dlYkNvcmUvQ2hhbmdlTG9nCisrKyBiL1Nv
dXJjZS9XZWJDb3JlL0NoYW5nZUxvZwpAQCAtMSwzICsxLDI0IEBACisyMDE5LTA1LTI2ICBXZW5z
b24gSHNpZWggIDx3ZW5zb25faHNpZWhAYXBwbGUuY29tPgorCisgICAgICAgIFtpT1NdIERyb3Bw
ZWQgdGV4dCwgYXR0YWNobWVudHMsIGFuZCBpbWFnZXMgc2hvdWxkIGFuaW1hdGUgaW50byBwbGFj
ZQorICAgICAgICBodHRwczovL2J1Z3Mud2Via2l0Lm9yZy9zaG93X2J1Zy5jZ2k/aWQ9MTk4MjQz
CisgICAgICAgIDxyZGFyOi8vcHJvYmxlbS8zNTIwNTM3Mz4KKworICAgICAgICBSZXZpZXdlZCBi
eSBUaW0gSG9ydG9uLgorCisgICAgICAgIEFkZCBzb21lIGhvb2tzIHRvIG5vdGlmeSB0aGUgY2hy
b21lIGNsaWVudCB3aGVuIGFuIEhUTUxJbWFnZUVsZW1lbnQncyBpbWFnZSBpcyBmaW5pc2hlZCBs
b2FkaW5nLiBTZWUgV2ViS2l0CisgICAgICAgIGNoYW5nZWxvZyBmb3IgbW9yZSBkZXRhaWwuCisK
KyAgICAgICAgVGVzdDogRHJhZ0FuZERyb3BUZXN0cy5Ecm9wUHJldmlld0ZvckltYWdlSW5FZGl0
YWJsZUFyZWEKKworICAgICAgICAqIGxvYWRlci9FbXB0eUNsaWVudHMuaDoKKyAgICAgICAgKiBw
YWdlL0Nocm9tZUNsaWVudC5oOgorICAgICAgICAqIHBhZ2UvUGFnZS5jcHA6CisgICAgICAgIChX
ZWJDb3JlOjpQYWdlOjpkaWRGaW5pc2hMb2FkaW5nSW1hZ2VGb3JFbGVtZW50KToKKyAgICAgICAg
KiBwYWdlL1BhZ2UuaDoKKyAgICAgICAgKiByZW5kZXJpbmcvUmVuZGVySW1hZ2UuY3BwOgorICAg
ICAgICAoV2ViQ29yZTo6UmVuZGVySW1hZ2U6Om5vdGlmeUZpbmlzaGVkKToKKwogMjAxOS0wNS0y
NSAgWmFsYW4gQnVqdGFzICA8emFsYW5AYXBwbGUuY29tPgogCiAgICAgICAgIFtMRkNdW0lGQ10g
SW50cm9kdWNlIERpc3BsYXlSdW4gdG8gZGlzcGxheSB0cmVlCmRpZmYgLS1naXQgYS9Tb3VyY2Uv
V2ViS2l0L0NoYW5nZUxvZyBiL1NvdXJjZS9XZWJLaXQvQ2hhbmdlTG9nCmluZGV4IDgwMGJkZGNl
ZjEzOTIwZTRiYTczZmZmMzhiZDdlNjQ3N2MzZWMxNWQuLjc1ZGY0OWUyY2ZkODRmYTVhYzRhMjgx
YTBjNTQ4N2U5YWZkZjdhN2QgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJLaXQvQ2hhbmdlTG9nCisr
KyBiL1NvdXJjZS9XZWJLaXQvQ2hhbmdlTG9nCkBAIC0xLDMgKzEsMTQ5IEBACisyMDE5LTA1LTI2
ICBXZW5zb24gSHNpZWggIDx3ZW5zb25faHNpZWhAYXBwbGUuY29tPgorCisgICAgICAgIFtpT1Nd
IERyb3BwZWQgdGV4dCwgYXR0YWNobWVudHMsIGFuZCBpbWFnZXMgc2hvdWxkIGFuaW1hdGUgaW50
byBwbGFjZQorICAgICAgICBodHRwczovL2J1Z3Mud2Via2l0Lm9yZy9zaG93X2J1Zy5jZ2k/aWQ9
MTk4MjQzCisgICAgICAgIDxyZGFyOi8vcHJvYmxlbS8zNTIwNTM3Mz4KKworICAgICAgICBSZXZp
ZXdlZCBieSBUaW0gSG9ydG9uLgorCisgICAgICAgIEFkZHMgc3VwcG9ydCBmb3IgdGFyZ2V0ZWQg
ZHJvcCBhbmltYXRpb25zIG9uIGlPUyBpbiBtb2Rlcm4gV2ViS2l0IGJ5IGFkb3B0aW5nIFVJS2l0
IFNQSSBpbnRyb2R1Y2VkIGluCisgICAgICAgIDxyZGFyOi8vcHJvYmxlbS8zMTA3NTAwNT4gdG8g
YWxsb3cgdXBkYXRpbmcgdGhlIGRyb3AgcHJldmlldyBtaWQtZmxpZ2h0LiBUbyBnZXQgdGhlIGFu
aW1hdGlvbiByaWdodCwgd2UgcmVmYWN0b3IKKyAgICAgICAgYW5kIGF1Z21lbnQgZXhpc3Rpbmcg
bG9naWMgZm9yIHRha2luZyBzbmFwc2hvdHMgYWZ0ZXIgcGVyZm9ybWluZyBhIGRyb3AgaW4gYW4g
ZWRpdGFibGUgY29udGVudC4KKworICAgICAgICBDdXJyZW50bHksIHVwb24gZHJvcHBpbmcgaW4g
ZWRpdGFibGUgY29udGVudCwgd2UgZmlyc3Qgc25hcHNob3QgdGhlIHdlYiB2aWV3IGFuZCB0ZW1w
b3JhcmlseSBjb3ZlciB0aGUgcmVhbCB3ZWIKKyAgICAgICAgdmlldyB3aXRoIHRoaXMgc25hcHNo
b3QuIFdoZW4gdGhlIFRleHRJbmRpY2F0b3IgZGF0YSBhcnJpdmVzIHRoYXQgY29udGFpbnMgKDEp
IGEgc25hcHNob3Qgb2YgdGhlIHZpc2libGUgcGFydCBvZgorICAgICAgICB0aGUgd2ViIHZpZXcg
aWdub3JpbmcgdGhlIHNlbGVjdGlvbiwgYW5kICgyKSBhIHNuYXBzaG90IG9mIGp1c3QgdGhlIHNl
bGVjdGVkIGNvbnRlbnRzIGFmdGVyIGRyb3AsIHdlIGNyb3NzZmFkZQorICAgICAgICBmcm9tIHRo
ZSB3ZWIgdmlldyBzbmFwc2hvdCB0byB0aGUgc25hcHNob3QgaW4gKDEpIHVzaW5nIGEgaGFyZC1j
b2RlZCB0aW1lIGRlbGF5ICh+NTAwbXMpLCBhbmQgdGFyZ2V0IHRoZSBkcm9wCisgICAgICAgIHBy
ZXZpZXcgdG8gdGhlIGRyYWcgY2FyZXQgcmVjdC4gRHVyaW5nIHRoaXMgcHJvY2Vzcywgc25hcHNo
b3QgKDIpIGlzIGNvbXBsZXRlbHkgaWdub3JlZC4KKworICAgICAgICBUaGlzIHdhcyBlZmZlY3Rp
dmVseSBhIGhhbGZ3YXkgaW1wbGVtZW50aW9uIG9mIHRoZSBkZXNpcmVkIGVmZmVjdCBvZiBhbmlt
YXRpbmcgdGhlIGRyb3BwZWQgY29udGVudCBpbnRvIHBsYWNlCisgICAgICAgIGFuZCBjcm9zc2Zh
ZGluZyB0byB0aGUgZmluYWwgY29udGVudDsgYmVmb3JlIFVJS2l0IGltcGxlbWVudGVkIHVwZGF0
ZWFibGUgZHJhZyBwcmV2aWV3cywgdGhlIGZ1bGwgaW1wbGVtZW50YXRpb24KKyAgICAgICAgd2Fz
IG5vdCBwb3NzaWJsZSBpbiBtb2Rlcm4gV2ViS2l0ICh3aXRob3V0IHVzaW5nIHN5bmNocm9ub3Vz
IElQQykuCisKKyAgICAgICAgTm93IHRoYXQgd2UncmUgYWJsZSB0byB1cGRhdGUgdGhlIGRyYWcg
cHJldmlldyBpbiB0aGUgbWlkZGxlIG9mIHRoZSBkcm9wIGFuaW1hdGlvbiwgd2UgY2FuIG5vdyB1
dGlsaXplIHNuYXBzaG90CisgICAgICAgICgyKSBhYm92ZSBhbmQgY2xlYW4gdXAgc29tZSBwYXJ0
cyBvZiB0aGUgZHJvcCBhbmltYXRpb24gaW4gZWRpdGFibGUgY29udGVudC4gU2VlIGJlbG93IGZv
ciBtb3JlIGRldGFpbHMuCisKKyAgICAgICAgKiBVSVByb2Nlc3MvQVBJL0NvY29hL1dLV2ViVmll
dy5tbToKKyAgICAgICAgKC1bV0tXZWJWaWV3IF9kb0FmdGVyUmVjZWl2aW5nRWRpdERyYWdTbmFw
c2hvdEZvclRlc3Rpbmc6XSk6CisKKyAgICAgICAgQWRkIGEgdGVzdGluZyBob29rIHRvIHBlcmZv
cm0gdGhlIGdpdmVuIGJsb2NrIGFmdGVyIGFueSBwZW5kaW5nIGVkaXQgZHJhZyBzbmFwc2hvdCBo
YXMgYmVlbiByZWNlaXZlZC4gU2VlCisgICAgICAgIFRlc3RXZWJLaXRBUEkgY2hhbmdlcyBmb3Ig
bW9yZSBkZXRhaWwuCisKKyAgICAgICAgKiBVSVByb2Nlc3MvQVBJL0NvY29hL1dLV2ViVmlld1By
aXZhdGUuaDoKKyAgICAgICAgKiBVSVByb2Nlc3MvUGFnZUNsaWVudC5oOgorICAgICAgICAqIFVJ
UHJvY2Vzcy9XZWJQYWdlUHJveHkuaDoKKyAgICAgICAgKiBVSVByb2Nlc3MvV2ViUGFnZVByb3h5
Lm1lc3NhZ2VzLmluOgorCisgICAgICAgIFNwbGl0IHVwIHRoZSBleGlzdGluZyBEaWRDb25jbHVk
ZUVkaXREcmFnIElQQyBtZXNzYWdlIGludG8gdHdvIG1lc3NhZ2VzOiBXaWxsUmVjZWl2ZUVkaXRE
cmFnU25hcHNob3QgYW5kCisgICAgICAgIERpZFJlY2VpdmVFZGl0RHJhZ1NuYXBzaG90LiBUaGlz
IGFsbG93cyB1cyB0byBkZWZlciBjbGVhbmluZyB1cCB0aGUgZHJhZyBzZXNzaW9uIHN0YXRlIGR1
cmluZyBhbiBlZGl0IGRyb3AsCisgICAgICAgIHVudGlsIGFmdGVyIHRoZSBmaW5hbCBlZGl0IGRy
YWcgc25hcHNob3QgaGFzIGJlZW4gcmVjZWl2ZWQuCisKKyAgICAgICAgKiBVSVByb2Nlc3MvaW9z
L0RyYWdEcm9wSW50ZXJhY3Rpb25TdGF0ZS5oOgorCisgICAgICAgIEFkZCBzb21lIG5ldyBtZXRo
b2RzIHRvIGhlbHAgbWFuYWdlIHRoZSBsaWZlY3ljbGUgb2YgZHJvcCBwcmV2aWV3IHByb3ZpZGVy
IGJsb2Nrcy4KKworICAgICAgICAqIFVJUHJvY2Vzcy9pb3MvRHJhZ0Ryb3BJbnRlcmFjdGlvblN0
YXRlLm1tOgorICAgICAgICAoV2ViS2l0OjpjcmVhdGVUYXJnZXRlZERyYWdQcmV2aWV3KToKKwor
ICAgICAgICBEcml2ZS1ieSBmaXg6IG1ha2UgdGhpcyByZXR1cm4gYSBSZXRhaW5QdHIuCisKKyAg
ICAgICAgKFdlYktpdDo6RHJhZ0Ryb3BJbnRlcmFjdGlvblN0YXRlOjpwcmVwYXJlRm9yRGVsYXll
ZERyb3BQcmV2aWV3KToKKworICAgICAgICBTdG9yZXMgYSBkcm9wIHByZXZpZXcgcHJvdmlkZXIs
IGdpdmVuIHRvIHVzIGJ5IFVJS2l0LgorCisgICAgICAgIChXZWJLaXQ6OkRyYWdEcm9wSW50ZXJh
Y3Rpb25TdGF0ZTo6ZGVsaXZlckRlbGF5ZWREcm9wUHJldmlldyk6CisKKyAgICAgICAgSW52b2tl
cyB0aGUgc3RvcmVkIGRyb3AgcHJldmlldyBwcm92aWRlcnMgd2l0aCBnaXZlbiB0ZXh0IGluZGlj
YXRvciBkYXRhLiBUaGlzIGlzIGludm9rZWQgYWZ0ZXIgc25hcHNob3RzIGFyZQorICAgICAgICB0
YWtlbiBmb2xsb3dpbmcgYW4gZWRpdCBkcmFnICh0aGlzIGlzIGFkZGl0aW9uYWxseSBhZnRlciBh
bGwgaW1hZ2VzIGluIHRoZSBpbnNlcnRlZCBmcmFnbWVudCBoYXZlIGZpbmlzaGVkCisgICAgICAg
IGxvYWRpbmcpLgorCisgICAgICAgIChXZWJLaXQ6OkRyYWdEcm9wSW50ZXJhY3Rpb25TdGF0ZTo6
Y2xlYXJBbGxEZWxheWVkSXRlbVByZXZpZXdQcm92aWRlcnMpOgorCisgICAgICAgIEludm9rZXMg
YWxsIHN0b3JlZCBkcm9wIHByZXZpZXcgcHJvdmlkZXJzIHdpdGggYSBuaWwgcHJldmlldy4gVGhp
cyBpcyBpbnZva2VkIGluIGFueSBjYXNlIHdoZXJlIGRyYWcgc2Vzc2lvbgorICAgICAgICBjbGVh
bnVwIG9jY3VycyBlYXJsaWVyIHRoYW4gbm9ybWFsIChlLmcuLCBpZiB0aGUgd2ViIHByb2Nlc3Mg
Y3Jhc2hlcyBkdXJpbmcgZHJvcCksIGFuZCBlbnN1cmVzIHRoYXQgdGhlIGhhbmRsZXJzCisgICAg
ICAgIGFyZSBhbHdheXMgaW52b2tlZCB3aGVuIGNsZWFuaW5nIHVwIHRoZSBkcmFnIHNlc3Npb24u
CisKKyAgICAgICAgKFdlYktpdDo6RHJhZ0Ryb3BJbnRlcmFjdGlvblN0YXRlOjpwcmV2aWV3Rm9y
RHJhZ0l0ZW0gY29uc3QpOgorICAgICAgICAoV2ViS2l0OjpEcmFnRHJvcEludGVyYWN0aW9uU3Rh
dGU6OmRyYWdBbmREcm9wU2Vzc2lvbnNEaWRFbmQpOgorCisgICAgICAgIENhbGwgY2xlYXJBbGxE
ZWxheWVkSXRlbVByZXZpZXdQcm92aWRlcnMuCisKKyAgICAgICAgKiBVSVByb2Nlc3MvaW9zL1Bh
Z2VDbGllbnRJbXBsSU9TLmg6CisgICAgICAgICogVUlQcm9jZXNzL2lvcy9QYWdlQ2xpZW50SW1w
bElPUy5tbToKKyAgICAgICAgKFdlYktpdDo6UGFnZUNsaWVudEltcGw6OndpbGxSZWNlaXZlRWRp
dERyYWdTbmFwc2hvdCk6CisgICAgICAgIChXZWJLaXQ6OlBhZ2VDbGllbnRJbXBsOjpkaWRSZWNl
aXZlRWRpdERyYWdTbmFwc2hvdCk6CisgICAgICAgIChXZWJLaXQ6OlBhZ2VDbGllbnRJbXBsOjpk
aWRDb25jbHVkZUVkaXREcmFnKTogRGVsZXRlZC4KKworICAgICAgICBNb3JlIHBsdW1iaW5nIChz
ZWUgY2hhbmdlcyB0byBEaWRDb25jbHVkZUVkaXREcmFnIGFib3ZlKS4KKworICAgICAgICAqIFVJ
UHJvY2Vzcy9pb3MvV0tDb250ZW50Vmlld0ludGVyYWN0aW9uLmg6CisgICAgICAgICogVUlQcm9j
ZXNzL2lvcy9XS0NvbnRlbnRWaWV3SW50ZXJhY3Rpb24ubW06CisgICAgICAgICgtW1dLQ29udGVu
dFZpZXcgY2xlYW51cEludGVyYWN0aW9uXSk6CisgICAgICAgICgtW1dLQ29udGVudFZpZXcgY2xl
YW5VcERyYWdTb3VyY2VTZXNzaW9uU3RhdGVdKToKKyAgICAgICAgKC1bV0tDb250ZW50VmlldyBf
d2lsbFJlY2VpdmVFZGl0RHJhZ1NuYXBzaG90XSk6CisgICAgICAgICgtW1dLQ29udGVudFZpZXcg
X2RpZFJlY2VpdmVFZGl0RHJhZ1NuYXBzaG90Ol0pOgorCisgICAgICAgIFNldCBfd2FpdGluZ0Zv
ckVkaXREcmFnU25hcHNob3QgdG8gWUVTIGluIHRoZSBnYXAgYmV0d2VlbiB3aGVuIC1fd2lsbFJl
Y2VpdmVFZGl0RHJhZ1NuYXBzaG90IGlzIGludm9rZWQsIGFuZAorICAgICAgICB3aGVuIC1fZGlk
UmVjZWl2ZUVkaXREcmFnU25hcHNob3QgaXMgaW52b2tlZC4gSWYgX3dhaXRpbmdGb3JFZGl0RHJh
Z1NuYXBzaG90IGlzIFlFUywgd2UgYmFpbCBvdXQgb2YKKyAgICAgICAgLWNsZWFuVXBEcmFnU291
cmNlU2Vzc2lvblN0YXRlLCBhbmQgaW5zdGVhZCBjbGVhbiB1cCBkcmFnIHNlc3Npb24gc3RhdGUg
YWZ0ZXIgdGhlIGVkaXQgZHJhZyBzbmFwc2hvdCBpcworICAgICAgICByZWNlaXZlZC4KKworICAg
ICAgICAoLVtXS0NvbnRlbnRWaWV3IF9kZWxpdmVyRGVsYXllZERyb3BQcmV2aWV3SWZQb3NzaWJs
ZTpdKToKKyAgICAgICAgKC1bV0tDb250ZW50VmlldyBfZGlkUGVyZm9ybURyYWdPcGVyYXRpb246
XSk6CisgICAgICAgICgtW1dLQ29udGVudFZpZXcgdGV4dEVmZmVjdHNXaW5kb3ddKToKKworICAg
ICAgICBEcml2ZS1ieSBmaXggdG8gcmVtb3ZlIGEgd29ya2Fyb3VuZCBmb3IgYSBkZXByZWNhdGlv
biB3YXJuaW5nLgorCisgICAgICAgICgtW1dLQ29udGVudFZpZXcgZHJvcEludGVyYWN0aW9uOml0
ZW06d2lsbEFuaW1hdGVEcm9wV2l0aEFuaW1hdG9yOl0pOgorICAgICAgICAoLVtXS0NvbnRlbnRW
aWV3IGRyb3BJbnRlcmFjdGlvbjpjb25jbHVkZURyb3A6XSk6CisKKyAgICAgICAgSW1wbGVtZW50
IHRoaXMgaG9vayB0byBlbnN1cmUgdGhhdCB0aGUgdW5zZWxlY3RlZCBjb250ZW50IHNuYXBzaG90
IHZpZXcgYW5kIHZpc2libGUgY29udGVudCBzbmFwc2hvdCB2aWV3IGFyZQorICAgICAgICBndWFy
YW50ZWVkIHRvIGJlIHJlbW92ZWQgZnJvbSB0aGUgdmlldyBhZnRlciBhIGRyb3AgaW4gZWRpdGFi
bGUgY29udGVudCwgZXZlbiBpZiB0aGUgZHJhZyBlZGl0IHNuYXBzaG90IGFycml2ZXMKKyAgICAg
ICAgYWZ0ZXIgdGhlIGRyb3AgaXMgY29uY2x1ZGVkLgorCisgICAgICAgICgtW1dLQ29udGVudFZp
ZXcgZHJvcEludGVyYWN0aW9uOnByZXZpZXdGb3JEcm9wcGluZ0l0ZW06d2l0aERlZmF1bHQ6XSk6
CisgICAgICAgICgtW1dLQ29udGVudFZpZXcgX2Ryb3BJbnRlcmFjdGlvbjpkZWxheWVkUHJldmll
d1Byb3ZpZGVyRm9yRHJvcHBpbmdJdGVtOnByZXZpZXdQcm92aWRlcjpdKToKKworICAgICAgICBJ
bXBsZW1lbnQgdGhlIG5ldyBVSUtpdCBTUEkgaGVyZS4gVUlLaXQgaGFuZHMgdXMgYSBwcmV2aWV3
IHByb3ZpZGVyIGhlcmUsIHdoaWNoIHdlIGNhbiBpbnZva2UgYXQgYSBsYXRlciB0aW1lCisgICAg
ICAgIHRvIHVwZGF0ZSB0aGUgZHJvcCBwcmV2aWV3LiBXZSBkbyB0aGlzIGluIF9kaWRSZWNlaXZl
RWRpdERyYWdTbmFwc2hvdC4KKworICAgICAgICAoLVtXS0NvbnRlbnRWaWV3IF9kb0FmdGVyUmVj
ZWl2aW5nRWRpdERyYWdTbmFwc2hvdEZvclRlc3Rpbmc6XSk6CisgICAgICAgICgtW1dLQ29udGVu
dFZpZXcgX2RpZENvbmNsdWRlRWRpdERyYWc6XSk6IERlbGV0ZWQuCisgICAgICAgICogVUlQcm9j
ZXNzL2lvcy9XZWJQYWdlUHJveHlJT1MubW06CisgICAgICAgIChXZWJLaXQ6OldlYlBhZ2VQcm94
eTo6d2lsbFJlY2VpdmVFZGl0RHJhZ1NuYXBzaG90KToKKyAgICAgICAgKFdlYktpdDo6V2ViUGFn
ZVByb3h5OjpkaWRSZWNlaXZlRWRpdERyYWdTbmFwc2hvdCk6CisgICAgICAgIChXZWJLaXQ6Oldl
YlBhZ2VQcm94eTo6ZGlkQ29uY2x1ZGVEcm9wKToKKyAgICAgICAgKFdlYktpdDo6V2ViUGFnZVBy
b3h5OjpkaWRDb25jbHVkZUVkaXREcmFnKTogRGVsZXRlZC4KKyAgICAgICAgKiBXZWJQcm9jZXNz
L1dlYkNvcmVTdXBwb3J0L1dlYkNocm9tZUNsaWVudC5jcHA6CisgICAgICAgIChXZWJLaXQ6Oldl
YkNocm9tZUNsaWVudDo6ZGlkRmluaXNoTG9hZGluZ0ltYWdlRm9yRWxlbWVudCk6CisgICAgICAg
ICogV2ViUHJvY2Vzcy9XZWJDb3JlU3VwcG9ydC9XZWJDaHJvbWVDbGllbnQuaDoKKyAgICAgICAg
KiBXZWJQcm9jZXNzL1dlYlBhZ2UvV2ViUGFnZS5jcHA6CisgICAgICAgIChXZWJLaXQ6OldlYlBh
Z2U6OmRpZEZpbmlzaExvYWRpbmdJbWFnZUZvckVsZW1lbnQpOgorICAgICAgICAqIFdlYlByb2Nl
c3MvV2ViUGFnZS9XZWJQYWdlLmg6CisgICAgICAgICogV2ViUHJvY2Vzcy9XZWJQYWdlL1dlYlBh
Z2UubWVzc2FnZXMuaW46CisgICAgICAgICogV2ViUHJvY2Vzcy9XZWJQYWdlL2lvcy9XZWJQYWdl
SU9TLm1tOgorICAgICAgICAoV2ViS2l0OjpXZWJQYWdlOjpkaWRDb25jbHVkZURyb3ApOgorCisg
ICAgICAgIElmIGFuIGVkaXQgZHJhZyBoYXMgYmVlbiBjb25jbHVkZWQsIHRoZXJlJ3Mgbm8gbmVl
ZCB0byBoYW5nIG9uIHRvIHBlbmRpbmcgZHJvcHBlZCBpbWFnZSBlbGVtZW50cyBhbnltb3JlOyBj
bGVhcgorICAgICAgICBvdXQgdGhlIHNldCBoZXJlLgorCisgICAgICAgIChXZWJLaXQ6OldlYlBh
Z2U6OmRpZENvbmNsdWRlRWRpdERyYWcpOgorCisgICAgICAgIEFmdGVyIGNvbmNsdWRpbmcgYW4g
ZWRpdCBkcmFnLCB3ZSB0cnkgdG8gZGVsaXZlciB0d28gd2ViIGNvbnRlbnQgc25hcHNob3RzIHRv
IHRoZSBVSSBwcm9jZXNzLCBzbyB0aGF0IHRoZSBVSQorICAgICAgICBwcm9jZXNzIGNhbiBhc3Nl
bWJsZSBhIHRhcmdldGVkIGRyb3AgcHJldmlldyBmb3IgVUlLaXQuIE9uZSBzbmFwc2hvdCBpcyBv
ZiB0aGUgdmlzaWJsZSBjb250ZW50IGFyZWEsIG5vdAorICAgICAgICBpbmNsdWRpbmcgYW55IHNl
bGVjdGVkIGNvbnRlbnQuIFRoZSBvdGhlciBzbmFwc2hvdCBpcyBvZiB0aGUgc2VsZWN0ZWQgY29u
dGVudCBvbmx5LiBIb3dldmVyLCB3aGVuIGRyb3BwaW5nCisgICAgICAgIGltYWdlcyAob3IgYSB0
ZXh0IHNlbGVjdGlvbiBjb250YWluaW5nIGltYWdlcyksIHRoZXNlIGltYWdlcyBtYXkgbm90IHll
dCBoYXZlIGJlZW4gbG9hZGVkLiBJZiB0aGF0IGlzIHRoZSBjYXNlLAorICAgICAgICB0aGVzZSBp
bWFnZXMgd2lsbCBhcHBlYXIgdG8gYmUgbWlzc2luZyBmcm9tIHRoZXNlIHNuYXBzaG90cy4KKwor
ICAgICAgICBUbyBlbnN1cmUgdGhhdCB3ZSBkb24ndCB0YWtlIHRoaXMgc25hcHNob3QgdG9vIGVh
cmx5LCBkZWZlciBpdCB1bnRpbCBhbGwgaW1hZ2UgZWxlbWVudHMgaW4gdGhlIGRyb3BwZWQgY29u
dGVudAorICAgICAgICByYW5nZSBoYXZlIGZpbmlzaGVkIGxvYWRpbmcuIFdlIGNhbiB0ZWxsIHRo
YXQgYWxsIGRyb3BwZWQgaW1hZ2VzIGhhdmUgZmluaXNoZWQgbG9hZGluZyBieSB1c2luZyBhIG5l
dyBjbGllbnQKKyAgICAgICAgaG9vayB0aGF0IGlzIGludm9rZWQgd2hlbiBhbiBpbWFnZSBoYXMg
ZmluaXNoZWQgbG9hZGluZy4KKworICAgICAgICAoV2ViS2l0OjpXZWJQYWdlOjpkaWRGaW5pc2hM
b2FkaW5nSW1hZ2VGb3JFbGVtZW50KToKKyAgICAgICAgKFdlYktpdDo6V2ViUGFnZTo6Y29tcHV0
ZUFuZFNlbmRFZGl0RHJhZ1NuYXBzaG90KToKKworICAgICAgICBTbmFwc2hvdCB0aGUgc2VsZWN0
ZWQgY29udGVudCBhbmQgc2VuZCBpdCB0byB0aGUgVUkgcHJvY2Vzcy4KKwogMjAxOS0wNS0yNCAg
WW91ZW5uIEZhYmxldCAgPHlvdWVubkBhcHBsZS5jb20+CiAKICAgICAgICAgUkVHUkVTU0lPTiAo
cjI0NTcxNT8pIFtXSzJdIExheW91dCBUZXN0IGh0dHAvd3B0L2NhY2hlLXN0b3JhZ2UvY2FjaGUt
c3RvcmFnZS1uZXR3b3JrcHJvY2Vzcy1jcmFzaC5odG1sIGlzIGEgZmxha3kgZmFpbHVyZQpkaWZm
IC0tZ2l0IGEvU291cmNlL1dlYktpdExlZ2FjeS9tYWMvQ2hhbmdlTG9nIGIvU291cmNlL1dlYktp
dExlZ2FjeS9tYWMvQ2hhbmdlTG9nCmluZGV4IGY5NzAwZjMxZmNkZjg3YTFiMTJmMDFjMWUyYTc0
ZjUwNjc4NzFmYWIuLmQ2MGYzNThlZjBmNjFiZmEwZTBjYzdkMjBhMjBhYmY0YzgwNDVhNTEgMTAw
NjQ0Ci0tLSBhL1NvdXJjZS9XZWJLaXRMZWdhY3kvbWFjL0NoYW5nZUxvZworKysgYi9Tb3VyY2Uv
V2ViS2l0TGVnYWN5L21hYy9DaGFuZ2VMb2cKQEAgLTEsMyArMSwxNyBAQAorMjAxOS0wNS0yNiAg
V2Vuc29uIEhzaWVoICA8d2Vuc29uX2hzaWVoQGFwcGxlLmNvbT4KKworICAgICAgICBbaU9TXSBE
cm9wcGVkIHRleHQsIGF0dGFjaG1lbnRzLCBhbmQgaW1hZ2VzIHNob3VsZCBhbmltYXRlIGludG8g
cGxhY2UKKyAgICAgICAgaHR0cHM6Ly9idWdzLndlYmtpdC5vcmcvc2hvd19idWcuY2dpP2lkPTE5
ODI0MworICAgICAgICA8cmRhcjovL3Byb2JsZW0vMzUyMDUzNzM+CisKKyAgICAgICAgUmV2aWV3
ZWQgYnkgVGltIEhvcnRvbi4KKworICAgICAgICBBZGQgYSBuZXcgY2hyb21lIGNsaWVudCBtZXRo
b2QuIFNlZSBvdGhlciBjaGFuZ2Vsb2dzIGZvciBtb3JlIGRldGFpbC4KKworICAgICAgICAqIFdl
YkNvcmVTdXBwb3J0L1dlYkNocm9tZUNsaWVudC5oOgorICAgICAgICAqIFdlYkNvcmVTdXBwb3J0
L1dlYkNocm9tZUNsaWVudC5tbToKKyAgICAgICAgKFdlYkNocm9tZUNsaWVudDo6ZGlkRmluaXNo
TG9hZGluZ0ltYWdlRm9yRWxlbWVudCk6CisKIDIwMTktMDUtMjEgIEFsZXggQ2hyaXN0ZW5zZW4g
IDxhY2hyaXN0ZW5zZW5Ad2Via2l0Lm9yZz4KIAogICAgICAgICBGaXggSU9TTUFDIGJ1aWxkCmRp
ZmYgLS1naXQgYS9Tb3VyY2UvV2ViS2l0TGVnYWN5L3dpbi9DaGFuZ2VMb2cgYi9Tb3VyY2UvV2Vi
S2l0TGVnYWN5L3dpbi9DaGFuZ2VMb2cKaW5kZXggM2Q1YWRlZDUxOWFlNzViYmVlNWUyZDc0NTgy
NGU0NGJmNjkyYzU1Ni4uOWRjMWYyZWRhMjE1Y2YyMmVmZjJhYzQzMThjZjMyMDczMDcxODc4MiAx
MDA2NDQKLS0tIGEvU291cmNlL1dlYktpdExlZ2FjeS93aW4vQ2hhbmdlTG9nCisrKyBiL1NvdXJj
ZS9XZWJLaXRMZWdhY3kvd2luL0NoYW5nZUxvZwpAQCAtMSwzICsxLDE1IEBACisyMDE5LTA1LTI2
ICBXZW5zb24gSHNpZWggIDx3ZW5zb25faHNpZWhAYXBwbGUuY29tPgorCisgICAgICAgIFtpT1Nd
IERyb3BwZWQgdGV4dCwgYXR0YWNobWVudHMsIGFuZCBpbWFnZXMgc2hvdWxkIGFuaW1hdGUgaW50
byBwbGFjZQorICAgICAgICBodHRwczovL2J1Z3Mud2Via2l0Lm9yZy9zaG93X2J1Zy5jZ2k/aWQ9
MTk4MjQzCisgICAgICAgIDxyZGFyOi8vcHJvYmxlbS8zNTIwNTM3Mz4KKworICAgICAgICBSZXZp
ZXdlZCBieSBUaW0gSG9ydG9uLgorCisgICAgICAgICogV2ViQ29yZVN1cHBvcnQvV2ViQ2hyb21l
Q2xpZW50LmNwcDoKKyAgICAgICAgKFdlYkNocm9tZUNsaWVudDo6ZGlkRmluaXNoTG9hZGluZ0lt
YWdlRm9yRWxlbWVudCk6CisgICAgICAgICogV2ViQ29yZVN1cHBvcnQvV2ViQ2hyb21lQ2xpZW50
Lmg6CisKIDIwMTktMDUtMDMgIERhbmllbCBCYXRlcyAgPGRhYmF0ZXNAYXBwbGUuY29tPgogCiAg
ICAgICAgIFBhc3MgS2V5Ym9hcmRFdmVudCBieSByZWZlcmVuY2UgaW4gbW9yZSBwbGFjZXMKZGlm
ZiAtLWdpdCBhL1NvdXJjZS9XZWJDb3JlL2xvYWRlci9FbXB0eUNsaWVudHMuaCBiL1NvdXJjZS9X
ZWJDb3JlL2xvYWRlci9FbXB0eUNsaWVudHMuaAppbmRleCBkNDUyMjhlZWQyMGViOTk1ZjVkZjJh
NDYyZmI0ZTM0YjczYjk4ZjM1Li5iNjliOTMwNmYxOWI0M2FhYzRkMjUwZmE3MzBiZTg0NWQ5ZGZl
ZTQ5IDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViQ29yZS9sb2FkZXIvRW1wdHlDbGllbnRzLmgKKysr
IGIvU291cmNlL1dlYkNvcmUvbG9hZGVyL0VtcHR5Q2xpZW50cy5oCkBAIC00MCw2ICs0MCw3IEBA
IG5hbWVzcGFjZSBXZWJDb3JlIHsKIAogY2xhc3MgRGlhZ25vc3RpY0xvZ2dpbmdDbGllbnQ7CiBj
bGFzcyBFZGl0b3JDbGllbnQ7CitjbGFzcyBIVE1MSW1hZ2VFbGVtZW50OwogY2xhc3MgUGFnZUNv
bmZpZ3VyYXRpb247CiAKIGNsYXNzIEVtcHR5Q2hyb21lQ2xpZW50IDogcHVibGljIENocm9tZUNs
aWVudCB7CkBAIC0xMTEsNiArMTEyLDggQEAgY2xhc3MgRW1wdHlDaHJvbWVDbGllbnQgOiBwdWJs
aWMgQ2hyb21lQ2xpZW50IHsKICAgICBJbnRQb2ludCBhY2Nlc3NpYmlsaXR5U2NyZWVuVG9Sb290
Vmlldyhjb25zdCBJbnRQb2ludCYgcCkgY29uc3QgZmluYWwgeyByZXR1cm4gcDsgfTsKICAgICBJ
bnRSZWN0IHJvb3RWaWV3VG9BY2Nlc3NpYmlsaXR5U2NyZWVuKGNvbnN0IEludFJlY3QmIHIpIGNv
bnN0IGZpbmFsIHsgcmV0dXJuIHI7IH07CiAKKyAgICB2b2lkIGRpZEZpbmlzaExvYWRpbmdJbWFn
ZUZvckVsZW1lbnQoSFRNTEltYWdlRWxlbWVudCYpIGZpbmFsIHsgfQorCiAgICAgUGxhdGZvcm1Q
YWdlQ2xpZW50IHBsYXRmb3JtUGFnZUNsaWVudCgpIGNvbnN0IGZpbmFsIHsgcmV0dXJuIDA7IH0K
ICAgICB2b2lkIGNvbnRlbnRzU2l6ZUNoYW5nZWQoRnJhbWUmLCBjb25zdCBJbnRTaXplJikgY29u
c3QgZmluYWwgeyB9CiAgICAgdm9pZCBpbnRyaW5zaWNDb250ZW50c1NpemVDaGFuZ2VkKGNvbnN0
IEludFNpemUmKSBjb25zdCBmaW5hbCB7IH0KZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJDb3JlL3Bh
Z2UvQ2hyb21lQ2xpZW50LmggYi9Tb3VyY2UvV2ViQ29yZS9wYWdlL0Nocm9tZUNsaWVudC5oCmlu
ZGV4IGYzNTM5MGM4YzNhZTI3OWY5ZDM2OTVmYTZkZTJlN2Y3OTc2OWM3ZWYuLjE2ZDNmOWMxYWVk
NWE3NWEwYTQ5Zjg0NWZlNDQxMDMwMmRiNGUxN2YgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJDb3Jl
L3BhZ2UvQ2hyb21lQ2xpZW50LmgKKysrIGIvU291cmNlL1dlYkNvcmUvcGFnZS9DaHJvbWVDbGll
bnQuaApAQCAtODcsNiArODcsNyBAQCBjbGFzcyBGcmFtZUxvYWRSZXF1ZXN0OwogY2xhc3MgR2Vv
bG9jYXRpb247CiBjbGFzcyBHcmFwaGljc0xheWVyOwogY2xhc3MgR3JhcGhpY3NMYXllckZhY3Rv
cnk7CitjbGFzcyBIVE1MSW1hZ2VFbGVtZW50OwogY2xhc3MgSFRNTElucHV0RWxlbWVudDsKIGNs
YXNzIEhUTUxNZWRpYUVsZW1lbnQ7CiBjbGFzcyBIVE1MVmlkZW9FbGVtZW50OwpAQCAtMTgyLDYg
KzE4Myw4IEBAIHB1YmxpYzoKICAgICB2aXJ0dWFsIEludFBvaW50IGFjY2Vzc2liaWxpdHlTY3Jl
ZW5Ub1Jvb3RWaWV3KGNvbnN0IEludFBvaW50JikgY29uc3QgPSAwOwogICAgIHZpcnR1YWwgSW50
UmVjdCByb290Vmlld1RvQWNjZXNzaWJpbGl0eVNjcmVlbihjb25zdCBJbnRSZWN0JikgY29uc3Qg
PSAwOwogCisgICAgdmlydHVhbCB2b2lkIGRpZEZpbmlzaExvYWRpbmdJbWFnZUZvckVsZW1lbnQo
SFRNTEltYWdlRWxlbWVudCYpID0gMDsKKwogICAgIHZpcnR1YWwgUGxhdGZvcm1QYWdlQ2xpZW50
IHBsYXRmb3JtUGFnZUNsaWVudCgpIGNvbnN0ID0gMDsKIAogI2lmIEVOQUJMRShDVVJTT1JfU1VQ
UE9SVCkKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJDb3JlL3BhZ2UvUGFnZS5jcHAgYi9Tb3VyY2Uv
V2ViQ29yZS9wYWdlL1BhZ2UuY3BwCmluZGV4IGFhMDEzYmY3NjMzZWNlMDM2ZGU5MGJmZTc0NWJh
NDM3ZGYyNTgwNWQuLjI5OTMyYmE5MzY3MTRmMjc5YjAwNjEzNjlmNGU1MDM3NDE2MTI0OWYgMTAw
NjQ0Ci0tLSBhL1NvdXJjZS9XZWJDb3JlL3BhZ2UvUGFnZS5jcHAKKysrIGIvU291cmNlL1dlYkNv
cmUvcGFnZS9QYWdlLmNwcApAQCAtMjk5Niw0ICsyOTk2LDkgQEAgdm9pZCBQYWdlOjpjb25maWd1
cmVMb2dnaW5nQ2hhbm5lbChjb25zdCBTdHJpbmcmIGNoYW5uZWxOYW1lLCBXVEZMb2dDaGFubmVs
U3RhdGUKICNlbmRpZgogfQogCit2b2lkIFBhZ2U6OmRpZEZpbmlzaExvYWRpbmdJbWFnZUZvckVs
ZW1lbnQoSFRNTEltYWdlRWxlbWVudCYgZWxlbWVudCkKK3sKKyAgICBjaHJvbWUoKS5jbGllbnQo
KS5kaWRGaW5pc2hMb2FkaW5nSW1hZ2VGb3JFbGVtZW50KGVsZW1lbnQpOworfQorCiB9IC8vIG5h
bWVzcGFjZSBXZWJDb3JlCmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9wYWdlL1BhZ2UuaCBi
L1NvdXJjZS9XZWJDb3JlL3BhZ2UvUGFnZS5oCmluZGV4IGVjM2Y1M2M4Mjg4MjY1YmY4ZTZmY2Y5
ZDFiMWNlOTkxMWRjNmRkNDUuLmU3YTFlYWU2MmZmN2NkMjU1MWZhNDBmNjkwOTQwYmZhZmEyN2Fh
NDQgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJDb3JlL3BhZ2UvUGFnZS5oCisrKyBiL1NvdXJjZS9X
ZWJDb3JlL3BhZ2UvUGFnZS5oCkBAIC01MjcsNiArNTI3LDggQEAgcHVibGljOgogICAgIFdFQkNP
UkVfRVhQT1JUIFZpc2liaWxpdHlTdGF0ZSB2aXNpYmlsaXR5U3RhdGUoKSBjb25zdDsKICAgICBX
RUJDT1JFX0VYUE9SVCB2b2lkIHJlc3VtZUFuaW1hdGluZ0ltYWdlcygpOwogCisgICAgdm9pZCBk
aWRGaW5pc2hMb2FkaW5nSW1hZ2VGb3JFbGVtZW50KEhUTUxJbWFnZUVsZW1lbnQmKTsKKwogICAg
IFdFQkNPUkVfRVhQT1JUIHZvaWQgYWRkTGF5b3V0TWlsZXN0b25lcyhPcHRpb25TZXQ8TGF5b3V0
TWlsZXN0b25lPik7CiAgICAgV0VCQ09SRV9FWFBPUlQgdm9pZCByZW1vdmVMYXlvdXRNaWxlc3Rv
bmVzKE9wdGlvblNldDxMYXlvdXRNaWxlc3RvbmU+KTsKICAgICBPcHRpb25TZXQ8TGF5b3V0TWls
ZXN0b25lPiByZXF1ZXN0ZWRMYXlvdXRNaWxlc3RvbmVzKCkgY29uc3QgeyByZXR1cm4gbV9yZXF1
ZXN0ZWRMYXlvdXRNaWxlc3RvbmVzOyB9CmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9yZW5k
ZXJpbmcvUmVuZGVySW1hZ2UuY3BwIGIvU291cmNlL1dlYkNvcmUvcmVuZGVyaW5nL1JlbmRlcklt
YWdlLmNwcAppbmRleCA4ZTg0MDAyMzVhZTE3MmVjODJmNDBhYmQ0ZTA5NDUxOWU0Zjg2ZDFkLi40
ZDZhYTc1N2VhYTM4MWNlMGNhY2Y4ZmU1ZmQxM2I4YjA4NDRkMmYwIDEwMDY0NAotLS0gYS9Tb3Vy
Y2UvV2ViQ29yZS9yZW5kZXJpbmcvUmVuZGVySW1hZ2UuY3BwCisrKyBiL1NvdXJjZS9XZWJDb3Jl
L3JlbmRlcmluZy9SZW5kZXJJbWFnZS5jcHAKQEAgLTM3OCw2ICszNzgsOSBAQCB2b2lkIFJlbmRl
ckltYWdlOjpub3RpZnlGaW5pc2hlZChDYWNoZWRSZXNvdXJjZSYgbmV3SW1hZ2UpCiAgICAgICAg
IC8vIHRoYXQgdGhlIGltYWdlIGlzIGRvbmUgYW5kIHRoZXkgY2FuIHJlZmVyZW5jZSBpdCBkaXJl
Y3RseS4KICAgICAgICAgY29udGVudENoYW5nZWQoSW1hZ2VDaGFuZ2VkKTsKICAgICB9CisKKyAg
ICBpZiAoaXM8SFRNTEltYWdlRWxlbWVudD4oZWxlbWVudCgpKSkKKyAgICAgICAgcGFnZSgpLmRp
ZEZpbmlzaExvYWRpbmdJbWFnZUZvckVsZW1lbnQoZG93bmNhc3Q8SFRNTEltYWdlRWxlbWVudD4o
KmVsZW1lbnQoKSkpOwogfQogCiBib29sIFJlbmRlckltYWdlOjppc1Nob3dpbmdNaXNzaW5nT3JJ
bWFnZUVycm9yKCkgY29uc3QKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJLaXQvVUlQcm9jZXNzL0FQ
SS9Db2NvYS9XS1dlYlZpZXcubW0gYi9Tb3VyY2UvV2ViS2l0L1VJUHJvY2Vzcy9BUEkvQ29jb2Ev
V0tXZWJWaWV3Lm1tCmluZGV4IGY2YTc4NjVkYjczYjExY2Q3NjM4NDllY2YzYmE3NDdiY2EwNTg0
MTMuLmQ4NzNkMTQ4MWE3MGJhZDUzMjIyZTZlZTk4ZjllODQ3NjkyNDc0MGUgMTAwNjQ0Ci0tLSBh
L1NvdXJjZS9XZWJLaXQvVUlQcm9jZXNzL0FQSS9Db2NvYS9XS1dlYlZpZXcubW0KKysrIGIvU291
cmNlL1dlYktpdC9VSVByb2Nlc3MvQVBJL0NvY29hL1dLV2ViVmlldy5tbQpAQCAtNjg4OSw2ICs2
ODg5LDExIEBAIC0gKE5TRGljdGlvbmFyeSAqKV9wcm9wZXJ0aWVzT2ZMYXllcldpdGhJRDoodW5z
aWduZWQgbG9uZyBsb25nKWxheWVySUQKICAgICB9OwogfQogCistICh2b2lkKV9kb0FmdGVyUmVj
ZWl2aW5nRWRpdERyYWdTbmFwc2hvdEZvclRlc3Rpbmc6KGRpc3BhdGNoX2Jsb2NrX3QpYWN0aW9u
Cit7CisgICAgW19jb250ZW50VmlldyBfZG9BZnRlclJlY2VpdmluZ0VkaXREcmFnU25hcHNob3RG
b3JUZXN0aW5nOmFjdGlvbl07Cit9CisKICNlbmRpZiAvLyBQTEFURk9STShJT1NfRkFNSUxZKQog
CiAjaWYgUExBVEZPUk0oTUFDKQpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYktpdC9VSVByb2Nlc3Mv
QVBJL0NvY29hL1dLV2ViVmlld1ByaXZhdGUuaCBiL1NvdXJjZS9XZWJLaXQvVUlQcm9jZXNzL0FQ
SS9Db2NvYS9XS1dlYlZpZXdQcml2YXRlLmgKaW5kZXggMGYxNzhjMDk4M2M3ZWYwZjViNGJlZDFj
NGI3ZDcxODE1ODE2NzBiMy4uYzY3NWJmZmYyNjZiNTc0OGE1NjZkMjc0MGJkNmQ3MzFlZGU2NDkw
OSAxMDA2NDQKLS0tIGEvU291cmNlL1dlYktpdC9VSVByb2Nlc3MvQVBJL0NvY29hL1dLV2ViVmll
d1ByaXZhdGUuaAorKysgYi9Tb3VyY2UvV2ViS2l0L1VJUHJvY2Vzcy9BUEkvQ29jb2EvV0tXZWJW
aWV3UHJpdmF0ZS5oCkBAIC00ODksNiArNDg5LDggQEAgdHlwZWRlZiBOU19PUFRJT05TKE5TVUlu
dGVnZXIsIF9XS1JlY3RFZGdlKSB7CiAKIEBwcm9wZXJ0eSAobm9uYXRvbWljLCByZWFkb25seSkg
Q0dSZWN0IF9kcmFnQ2FyZXRSZWN0IFdLX0FQSV9BVkFJTEFCTEUoaW9zKDExLjApKTsKIAorLSAo
dm9pZClfZG9BZnRlclJlY2VpdmluZ0VkaXREcmFnU25hcHNob3RGb3JUZXN0aW5nOihkaXNwYXRj
aF9ibG9ja190KWFjdGlvbiBXS19BUElfQVZBSUxBQkxFKGlvcyhXS19JT1NfVEJBKSk7CisKIC0g
KHZvaWQpX3JlcXVlc3RBY3RpdmF0ZWRFbGVtZW50QXRQb3NpdGlvbjooQ0dQb2ludClwb3NpdGlv
biBjb21wbGV0aW9uQmxvY2s6KHZvaWQgKF4pKF9XS0FjdGl2YXRlZEVsZW1lbnRJbmZvICopKWJs
b2NrIFdLX0FQSV9BVkFJTEFCTEUoaW9zKDExLjApKTsKIC0gKHZvaWQpX2FjY2Vzc2liaWxpdHlS
ZXRyaWV2ZVJlY3RzQXRTZWxlY3Rpb25PZmZzZXQ6KE5TSW50ZWdlcilvZmZzZXQgd2l0aFRleHQ6
KE5TU3RyaW5nICopdGV4dCBjb21wbGV0aW9uSGFuZGxlcjoodm9pZCAoXikoTlNBcnJheTxOU1Zh
bHVlICo+ICpyZWN0cykpY29tcGxldGlvbkhhbmRsZXIgV0tfQVBJX0FWQUlMQUJMRShpb3MoMTEu
MykpOwogLSAodm9pZClfYWNjZXNzaWJpbGl0eVN0b3JlU2VsZWN0aW9uIFdLX0FQSV9BVkFJTEFC
TEUoaW9zKDExLjMpKTsKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJLaXQvVUlQcm9jZXNzL1BhZ2VD
bGllbnQuaCBiL1NvdXJjZS9XZWJLaXQvVUlQcm9jZXNzL1BhZ2VDbGllbnQuaAppbmRleCBhZmM5
NGNlOTAyZGZkOTEzZTg0ZWI3ZDk2NThkMGQ3NTNhYjA5YmQxLi42NjljMWRhNmRiYjk4ZjY2OTVj
Y2FkZWQyMmI3NDdhZDBlZmNkOWExIDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViS2l0L1VJUHJvY2Vz
cy9QYWdlQ2xpZW50LmgKKysrIGIvU291cmNlL1dlYktpdC9VSVByb2Nlc3MvUGFnZUNsaWVudC5o
CkBAIC00NzksNyArNDc5LDggQEAgcHVibGljOgogI2lmIEVOQUJMRShEQVRBX0lOVEVSQUNUSU9O
KQogICAgIHZpcnR1YWwgdm9pZCBkaWRIYW5kbGVEcmFnU3RhcnRSZXF1ZXN0KGJvb2wgc3RhcnRl
ZCkgPSAwOwogICAgIHZpcnR1YWwgdm9pZCBkaWRIYW5kbGVBZGRpdGlvbmFsRHJhZ0l0ZW1zUmVx
dWVzdChib29sIGFkZGVkKSA9IDA7Ci0gICAgdmlydHVhbCB2b2lkIGRpZENvbmNsdWRlRWRpdERy
YWcoT3B0aW9uYWw8V2ViQ29yZTo6VGV4dEluZGljYXRvckRhdGE+KSA9IDA7CisgICAgdmlydHVh
bCB2b2lkIHdpbGxSZWNlaXZlRWRpdERyYWdTbmFwc2hvdCgpID0gMDsKKyAgICB2aXJ0dWFsIHZv
aWQgZGlkUmVjZWl2ZUVkaXREcmFnU25hcHNob3QoT3B0aW9uYWw8V2ViQ29yZTo6VGV4dEluZGlj
YXRvckRhdGE+KSA9IDA7CiAgICAgdmlydHVhbCB2b2lkIGRpZENoYW5nZURyYWdDYXJldFJlY3Qo
Y29uc3QgV2ViQ29yZTo6SW50UmVjdCYgcHJldmlvdXNDYXJldFJlY3QsIGNvbnN0IFdlYkNvcmU6
OkludFJlY3QmIGNhcmV0UmVjdCkgPSAwOwogI2VuZGlmCiAKZGlmZiAtLWdpdCBhL1NvdXJjZS9X
ZWJLaXQvVUlQcm9jZXNzL1dlYlBhZ2VQcm94eS5oIGIvU291cmNlL1dlYktpdC9VSVByb2Nlc3Mv
V2ViUGFnZVByb3h5LmgKaW5kZXggNmM1YWQ2MjVkMTIwNGM3YzBkODM5Njk5ZTdlMmY2NWE1YmE2
NGUwMy4uNjMxYThmZTU0MDk3M2E3YmVmYTMyYzdmMGIyZjlkZjdjOGY0ZmYwMyAxMDA2NDQKLS0t
IGEvU291cmNlL1dlYktpdC9VSVByb2Nlc3MvV2ViUGFnZVByb3h5LmgKKysrIGIvU291cmNlL1dl
YktpdC9VSVByb2Nlc3MvV2ViUGFnZVByb3h5LmgKQEAgLTcyNiwxMiArNzI2LDE0IEBAIHB1Ymxp
YzoKICAgICB2b2lkIHVwZGF0ZVNlbGVjdGlvbldpdGhEZWx0YShpbnQ2NF90IGxvY2F0aW9uRGVs
dGEsIGludDY0X3QgbGVuZ3RoRGVsdGEsIENvbXBsZXRpb25IYW5kbGVyPHZvaWQoKT4mJik7CiAg
ICAgdm9pZCByZXF1ZXN0RG9jdW1lbnRFZGl0aW5nQ29udGV4dChXZWJLaXQ6OkRvY3VtZW50RWRp
dGluZ0NvbnRleHRSZXF1ZXN0LCBDb21wbGV0aW9uSGFuZGxlcjx2b2lkKFdlYktpdDo6RG9jdW1l
bnRFZGl0aW5nQ29udGV4dCk+JiYpOwogICAgIHZvaWQgZ2VuZXJhdGVTeW50aGV0aWNFZGl0aW5n
Q29tbWFuZChTeW50aGV0aWNFZGl0aW5nQ29tbWFuZFR5cGUpOwotI2lmIEVOQUJMRShEQVRBX0lO
VEVSQUNUSU9OKQorI2lmIEVOQUJMRShEUkFHX1NVUFBPUlQpCiAgICAgdm9pZCBkaWRIYW5kbGVE
cmFnU3RhcnRSZXF1ZXN0KGJvb2wgc3RhcnRlZCk7CiAgICAgdm9pZCBkaWRIYW5kbGVBZGRpdGlv
bmFsRHJhZ0l0ZW1zUmVxdWVzdChib29sIGFkZGVkKTsKICAgICB2b2lkIHJlcXVlc3REcmFnU3Rh
cnQoY29uc3QgV2ViQ29yZTo6SW50UG9pbnQmIGNsaWVudFBvc2l0aW9uLCBjb25zdCBXZWJDb3Jl
OjpJbnRQb2ludCYgZ2xvYmFsUG9zaXRpb24sIFdlYkNvcmU6OkRyYWdTb3VyY2VBY3Rpb24gYWxs
b3dlZEFjdGlvbnMpOwogICAgIHZvaWQgcmVxdWVzdEFkZGl0aW9uYWxJdGVtc0ZvckRyYWdTZXNz
aW9uKGNvbnN0IFdlYkNvcmU6OkludFBvaW50JiBjbGllbnRQb3NpdGlvbiwgY29uc3QgV2ViQ29y
ZTo6SW50UG9pbnQmIGdsb2JhbFBvc2l0aW9uLCBXZWJDb3JlOjpEcmFnU291cmNlQWN0aW9uIGFs
bG93ZWRBY3Rpb25zKTsKLSAgICB2b2lkIGRpZENvbmNsdWRlRWRpdERyYWcoT3B0aW9uYWw8V2Vi
Q29yZTo6VGV4dEluZGljYXRvckRhdGE+KTsKKyAgICB2b2lkIHdpbGxSZWNlaXZlRWRpdERyYWdT
bmFwc2hvdCgpOworICAgIHZvaWQgZGlkUmVjZWl2ZUVkaXREcmFnU25hcHNob3QoT3B0aW9uYWw8
V2ViQ29yZTo6VGV4dEluZGljYXRvckRhdGE+KTsKKyAgICB2b2lkIGRpZENvbmNsdWRlRHJvcCgp
OwogI2VuZGlmCiAjZW5kaWYgLy8gUExBVEZPUk0oSU9TX0ZBTUlMWSkKICNpZiBFTkFCTEUoREFU
QV9ERVRFQ1RJT04pCmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViS2l0L1VJUHJvY2Vzcy9XZWJQYWdl
UHJveHkubWVzc2FnZXMuaW4gYi9Tb3VyY2UvV2ViS2l0L1VJUHJvY2Vzcy9XZWJQYWdlUHJveHku
bWVzc2FnZXMuaW4KaW5kZXggNmZjZWNkYzZiNjVkODhjOWM5ODU4NTM5NWFiNTllN2Q4MTI2YmEw
Ni4uNDA0NmUyZTJiMjQ2MjI5M2UyOWZhNDU4MGYwNzE0YTkwYzM5OTgzMyAxMDA2NDQKLS0tIGEv
U291cmNlL1dlYktpdC9VSVByb2Nlc3MvV2ViUGFnZVByb3h5Lm1lc3NhZ2VzLmluCisrKyBiL1Nv
dXJjZS9XZWJLaXQvVUlQcm9jZXNzL1dlYlBhZ2VQcm94eS5tZXNzYWdlcy5pbgpAQCAtMzMzLDcg
KzMzMyw4IEBAIG1lc3NhZ2VzIC0+IFdlYlBhZ2VQcm94eSB7CiAjaWYgRU5BQkxFKERBVEFfSU5U
RVJBQ1RJT04pCiAgICAgRGlkSGFuZGxlRHJhZ1N0YXJ0UmVxdWVzdChib29sIHN0YXJ0ZWQpCiAg
ICAgRGlkSGFuZGxlQWRkaXRpb25hbERyYWdJdGVtc1JlcXVlc3QoYm9vbCBhZGRlZCkKLSAgICBE
aWRDb25jbHVkZUVkaXREcmFnKE9wdGlvbmFsPFdlYkNvcmU6OlRleHRJbmRpY2F0b3JEYXRhPiB0
ZXh0SW5kaWNhdG9yKQorICAgIFdpbGxSZWNlaXZlRWRpdERyYWdTbmFwc2hvdCgpCisgICAgRGlk
UmVjZWl2ZUVkaXREcmFnU25hcHNob3QoT3B0aW9uYWw8V2ViQ29yZTo6VGV4dEluZGljYXRvckRh
dGE+IHRleHRJbmRpY2F0b3IpCiAjZW5kaWYKIAogI2lmIFBMQVRGT1JNKENPQ09BKQpkaWZmIC0t
Z2l0IGEvU291cmNlL1dlYktpdC9VSVByb2Nlc3MvaW9zL0RyYWdEcm9wSW50ZXJhY3Rpb25TdGF0
ZS5oIGIvU291cmNlL1dlYktpdC9VSVByb2Nlc3MvaW9zL0RyYWdEcm9wSW50ZXJhY3Rpb25TdGF0
ZS5oCmluZGV4IGYxODQ5YTI1MmNkOTk3MmM2ZTAyYjc4YmZkOTFjYzc5YTM4MGUxN2YuLmY1N2Ri
OWYwOWUxNWRiYzRlM2JkYzBiOTQwOTViNTA4MTdlODE0ODkgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9X
ZWJLaXQvVUlQcm9jZXNzL2lvcy9EcmFnRHJvcEludGVyYWN0aW9uU3RhdGUuaAorKysgYi9Tb3Vy
Y2UvV2ViS2l0L1VJUHJvY2Vzcy9pb3MvRHJhZ0Ryb3BJbnRlcmFjdGlvblN0YXRlLmgKQEAgLTQw
LDYgKzQwLDcgQEAKIAogbmFtZXNwYWNlIFdlYkNvcmUgewogc3RydWN0IERyYWdJdGVtOworc3Ry
dWN0IFRleHRJbmRpY2F0b3JEYXRhOwogfQogCiBuYW1lc3BhY2UgV2ViS2l0IHsKQEAgLTU4LDYg
KzU5LDExIEBAIHN0cnVjdCBEcmFnU291cmNlU3RhdGUgewogICAgIE5TSW50ZWdlciBpdGVtSWRl
bnRpZmllciB7IDAgfTsKIH07CiAKK3N0cnVjdCBJdGVtQW5kUHJldmlld1Byb3ZpZGVyIHsKKyAg
ICBSZXRhaW5QdHI8VUlEcmFnSXRlbT4gaXRlbTsKKyAgICBCbG9ja1B0cjx2b2lkKFVJVGFyZ2V0
ZWREcmFnUHJldmlldyAqKT4gcHJvdmlkZXI7Cit9OworCiBjbGFzcyBEcmFnRHJvcEludGVyYWN0
aW9uU3RhdGUgewogcHVibGljOgogICAgIGJvb2wgYW55QWN0aXZlRHJhZ1NvdXJjZUlzKFdlYkNv
cmU6OkRyYWdTb3VyY2VBY3Rpb24pIGNvbnN0OwpAQCAtOTIsNiArOTgsMTAgQEAgcHVibGljOgog
ICAgIEJsb2NrUHRyPHZvaWQoKT4gdGFrZURyYWdDYW5jZWxTZXREb3duQmxvY2soKSB7IHJldHVy
biBXVEZNb3ZlKG1fZHJhZ0NhbmNlbFNldERvd25CbG9jayk7IH0KICAgICBCbG9ja1B0cjx2b2lk
KE5TQXJyYXk8VUlEcmFnSXRlbSAqPiAqKT4gdGFrZUFkZERyYWdJdGVtQ29tcGxldGlvbkJsb2Nr
KCkgeyByZXR1cm4gV1RGTW92ZShtX2FkZERyYWdJdGVtQ29tcGxldGlvbkJsb2NrKTsgfQogCisg
ICAgdm9pZCBwcmVwYXJlRm9yRGVsYXllZERyb3BQcmV2aWV3KFVJRHJhZ0l0ZW0gKiwgdm9pZChe
cHJvdmlkZXIpKFVJVGFyZ2V0ZWREcmFnUHJldmlldyAqcHJldmlldykpOworICAgIHZvaWQgZGVs
aXZlckRlbGF5ZWREcm9wUHJldmlldyhVSVZpZXcgKmNvbnRlbnRWaWV3LCBVSVZpZXcgKnByZXZp
ZXdDb250YWluZXIsIGNvbnN0IFdlYkNvcmU6OlRleHRJbmRpY2F0b3JEYXRhJik7CisgICAgdm9p
ZCBjbGVhckFsbERlbGF5ZWRJdGVtUHJldmlld1Byb3ZpZGVycygpOworCiBwcml2YXRlOgogICAg
IHZvaWQgdXBkYXRlUHJldmlld3NGb3JBY3RpdmVEcmFnU291cmNlcygpOwogICAgIE9wdGlvbmFs
PERyYWdTb3VyY2VTdGF0ZT4gYWN0aXZlRHJhZ1NvdXJjZUZvckl0ZW0oVUlEcmFnSXRlbSAqKSBj
b25zdDsKQEAgLTEwOCw2ICsxMTgsNyBAQCBwcml2YXRlOgogCiAgICAgT3B0aW9uYWw8RHJhZ1Nv
dXJjZVN0YXRlPiBtX3N0YWdlZERyYWdTb3VyY2U7CiAgICAgVmVjdG9yPERyYWdTb3VyY2VTdGF0
ZT4gbV9hY3RpdmVEcmFnU291cmNlczsKKyAgICBWZWN0b3I8SXRlbUFuZFByZXZpZXdQcm92aWRl
cj4gbV9kZWxheWVkSXRlbVByZXZpZXdQcm92aWRlcnM7CiB9OwogCiB9IC8vIG5hbWVzcGFjZSBX
ZWJLaXQKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJLaXQvVUlQcm9jZXNzL2lvcy9EcmFnRHJvcElu
dGVyYWN0aW9uU3RhdGUubW0gYi9Tb3VyY2UvV2ViS2l0L1VJUHJvY2Vzcy9pb3MvRHJhZ0Ryb3BJ
bnRlcmFjdGlvblN0YXRlLm1tCmluZGV4IDA2NzBjNDU5YzZhODUxYzQwN2JjOWIyNzY4MTFiYThk
ZGVjNjgxNTYuLjhmMjgwN2IyMzBlYjMxNDA3ODhjY2Q5Y2NjOWY2MjNiZGRmNTE2YmEgMTAwNjQ0
Ci0tLSBhL1NvdXJjZS9XZWJLaXQvVUlQcm9jZXNzL2lvcy9EcmFnRHJvcEludGVyYWN0aW9uU3Rh
dGUubW0KKysrIGIvU291cmNlL1dlYktpdC9VSVByb2Nlc3MvaW9zL0RyYWdEcm9wSW50ZXJhY3Rp
b25TdGF0ZS5tbQpAQCAtNDQsNyArNDQsNyBAQCBzdGF0aWMgVUlEcmFnSXRlbSAqZHJhZ0l0ZW1N
YXRjaGluZ0lkZW50aWZpZXIoaWQgPFVJRHJhZ1Nlc3Npb24+IHNlc3Npb24sIE5TSW50ZQogICAg
IHJldHVybiBuaWw7CiB9CiAKLXN0YXRpYyBVSVRhcmdldGVkRHJhZ1ByZXZpZXcgKmNyZWF0ZVRh
cmdldGVkRHJhZ1ByZXZpZXcoVUlJbWFnZSAqaW1hZ2UsIFVJVmlldyAqcm9vdFZpZXcsIFVJVmll
dyAqcHJldmlld0NvbnRhaW5lciwgY29uc3QgRmxvYXRSZWN0JiBmcmFtZUluUm9vdFZpZXdDb29y
ZGluYXRlcywgY29uc3QgVmVjdG9yPEZsb2F0UmVjdD4mIGNsaXBwaW5nUmVjdHNJbkZyYW1lQ29v
cmRpbmF0ZXMsIFVJQ29sb3IgKmJhY2tncm91bmRDb2xvciwgVUlCZXppZXJQYXRoICp2aXNpYmxl
UGF0aCkKK3N0YXRpYyBSZXRhaW5QdHI8VUlUYXJnZXRlZERyYWdQcmV2aWV3PiBjcmVhdGVUYXJn
ZXRlZERyYWdQcmV2aWV3KFVJSW1hZ2UgKmltYWdlLCBVSVZpZXcgKnJvb3RWaWV3LCBVSVZpZXcg
KnByZXZpZXdDb250YWluZXIsIGNvbnN0IEZsb2F0UmVjdCYgZnJhbWVJblJvb3RWaWV3Q29vcmRp
bmF0ZXMsIGNvbnN0IFZlY3RvcjxGbG9hdFJlY3Q+JiBjbGlwcGluZ1JlY3RzSW5GcmFtZUNvb3Jk
aW5hdGVzLCBVSUNvbG9yICpiYWNrZ3JvdW5kQ29sb3IsIFVJQmV6aWVyUGF0aCAqdmlzaWJsZVBh
dGgpCiB7CiAgICAgaWYgKGZyYW1lSW5Sb290Vmlld0Nvb3JkaW5hdGVzLmlzRW1wdHkoKSB8fCAh
aW1hZ2UpCiAgICAgICAgIHJldHVybiBudWxscHRyOwpAQCAtNzgsOCArNzgsNyBAQCBzdGF0aWMg
VUlUYXJnZXRlZERyYWdQcmV2aWV3ICpjcmVhdGVUYXJnZXRlZERyYWdQcmV2aWV3KFVJSW1hZ2Ug
KmltYWdlLCBVSVZpZXcgKgogCiAgICAgQ0dQb2ludCBjZW50ZXJJbkNvbnRhaW5lckNvb3JkaW5h
dGVzID0geyBDR1JlY3RHZXRNaWRYKGZyYW1lSW5Db250YWluZXJDb29yZGluYXRlcyksIENHUmVj
dEdldE1pZFkoZnJhbWVJbkNvbnRhaW5lckNvb3JkaW5hdGVzKSB9OwogICAgIGF1dG8gdGFyZ2V0
ID0gYWRvcHROUyhbW1VJRHJhZ1ByZXZpZXdUYXJnZXQgYWxsb2NdIGluaXRXaXRoQ29udGFpbmVy
OnByZXZpZXdDb250YWluZXIgY2VudGVyOmNlbnRlckluQ29udGFpbmVyQ29vcmRpbmF0ZXNdKTsK
LSAgICBhdXRvIGRyYWdQcmV2aWV3ID0gYWRvcHROUyhbW1VJVGFyZ2V0ZWREcmFnUHJldmlldyBh
bGxvY10gaW5pdFdpdGhWaWV3OmltYWdlVmlldy5nZXQoKSBwYXJhbWV0ZXJzOnBhcmFtZXRlcnMu
Z2V0KCkgdGFyZ2V0OnRhcmdldC5nZXQoKV0pOwotICAgIHJldHVybiBkcmFnUHJldmlldy5hdXRv
cmVsZWFzZSgpOworICAgIHJldHVybiBhZG9wdE5TKFtbVUlUYXJnZXRlZERyYWdQcmV2aWV3IGFs
bG9jXSBpbml0V2l0aFZpZXc6aW1hZ2VWaWV3LmdldCgpIHBhcmFtZXRlcnM6cGFyYW1ldGVycy5n
ZXQoKSB0YXJnZXQ6dGFyZ2V0LmdldCgpXSk7CiB9CiAKIHN0YXRpYyBSZXRhaW5QdHI8VUlJbWFn
ZT4gdWlJbWFnZUZvckltYWdlKEltYWdlKiBpbWFnZSkKQEAgLTE4Niw2ICsxODUsMzAgQEAgdm9p
ZCBEcmFnRHJvcEludGVyYWN0aW9uU3RhdGU6OmRyYWdTZXNzaW9uV2lsbEJlZ2luKCkKICAgICB1
cGRhdGVQcmV2aWV3c0ZvckFjdGl2ZURyYWdTb3VyY2VzKCk7CiB9CiAKK3ZvaWQgRHJhZ0Ryb3BJ
bnRlcmFjdGlvblN0YXRlOjpwcmVwYXJlRm9yRGVsYXllZERyb3BQcmV2aWV3KFVJRHJhZ0l0ZW0g
Kml0ZW0sIHZvaWQoXnByb3ZpZGVyKShVSVRhcmdldGVkRHJhZ1ByZXZpZXcgKnByZXZpZXcpKQor
eworICAgIG1fZGVsYXllZEl0ZW1QcmV2aWV3UHJvdmlkZXJzLmFwcGVuZCh7IGl0ZW0sIHByb3Zp
ZGVyIH0pOworfQorCit2b2lkIERyYWdEcm9wSW50ZXJhY3Rpb25TdGF0ZTo6ZGVsaXZlckRlbGF5
ZWREcm9wUHJldmlldyhVSVZpZXcgKmNvbnRlbnRWaWV3LCBVSVZpZXcgKnByZXZpZXdDb250YWlu
ZXIsIGNvbnN0IFdlYkNvcmU6OlRleHRJbmRpY2F0b3JEYXRhJiBpbmRpY2F0b3IpCit7CisgICAg
aWYgKG1fZGVsYXllZEl0ZW1QcmV2aWV3UHJvdmlkZXJzLmlzRW1wdHkoKSkKKyAgICAgICAgcmV0
dXJuOworCisgICAgYXV0byB0ZXh0SW5kaWNhdG9ySW1hZ2UgPSB1aUltYWdlRm9ySW1hZ2UoaW5k
aWNhdG9yLmNvbnRlbnRJbWFnZS5nZXQoKSk7CisgICAgYXV0byBwcmV2aWV3ID0gY3JlYXRlVGFy
Z2V0ZWREcmFnUHJldmlldyh0ZXh0SW5kaWNhdG9ySW1hZ2UuZ2V0KCksIGNvbnRlbnRWaWV3LCBw
cmV2aWV3Q29udGFpbmVyLCBpbmRpY2F0b3IudGV4dEJvdW5kaW5nUmVjdEluUm9vdFZpZXdDb29y
ZGluYXRlcywgaW5kaWNhdG9yLnRleHRSZWN0c0luQm91bmRpbmdSZWN0Q29vcmRpbmF0ZXMsIFtV
SUNvbG9yIGNvbG9yV2l0aENHQ29sb3I6Y2FjaGVkQ0dDb2xvcihpbmRpY2F0b3IuZXN0aW1hdGVk
QmFja2dyb3VuZENvbG9yKV0sIG5pbCk7CisgICAgZm9yIChhdXRvJiBpdGVtQW5kUHJldmlld1By
b3ZpZGVyIDogbV9kZWxheWVkSXRlbVByZXZpZXdQcm92aWRlcnMpCisgICAgICAgIGl0ZW1BbmRQ
cmV2aWV3UHJvdmlkZXIucHJvdmlkZXIocHJldmlldy5nZXQoKSk7CisgICAgbV9kZWxheWVkSXRl
bVByZXZpZXdQcm92aWRlcnMuY2xlYXIoKTsKK30KKwordm9pZCBEcmFnRHJvcEludGVyYWN0aW9u
U3RhdGU6OmNsZWFyQWxsRGVsYXllZEl0ZW1QcmV2aWV3UHJvdmlkZXJzKCkKK3sKKyAgICBmb3Ig
KGF1dG8mIGl0ZW1BbmRQcmV2aWV3UHJvdmlkZXIgOiBtX2RlbGF5ZWRJdGVtUHJldmlld1Byb3Zp
ZGVycykKKyAgICAgICAgaXRlbUFuZFByZXZpZXdQcm92aWRlci5wcm92aWRlcihuaWwpOworICAg
IG1fZGVsYXllZEl0ZW1QcmV2aWV3UHJvdmlkZXJzLmNsZWFyKCk7Cit9CisKIFVJVGFyZ2V0ZWRE
cmFnUHJldmlldyAqRHJhZ0Ryb3BJbnRlcmFjdGlvblN0YXRlOjpwcmV2aWV3Rm9yRHJhZ0l0ZW0o
VUlEcmFnSXRlbSAqaXRlbSwgVUlWaWV3ICpjb250ZW50VmlldywgVUlWaWV3ICpwcmV2aWV3Q29u
dGFpbmVyKSBjb25zdAogewogICAgIGF1dG8gZm91bmRTb3VyY2UgPSBhY3RpdmVEcmFnU291cmNl
Rm9ySXRlbShpdGVtKTsKQEAgLTE5NywxNSArMjIwLDE1IEBAIFVJVGFyZ2V0ZWREcmFnUHJldmll
dyAqRHJhZ0Ryb3BJbnRlcmFjdGlvblN0YXRlOjpwcmV2aWV3Rm9yRHJhZ0l0ZW0oVUlEcmFnSXRl
bSAqCiAgICAgICAgIGlmIChzaG91bGRVc2VWaXNpYmxlUGF0aFRvQ3JlYXRlUHJldmlld0ZvckRy
YWdTb3VyY2Uoc291cmNlKSkgewogICAgICAgICAgICAgYXV0byBwYXRoID0gc291cmNlLnZpc2li
bGVQYXRoLnZhbHVlKCk7CiAgICAgICAgICAgICBVSUJlemllclBhdGggKnZpc2libGVQYXRoID0g
W1VJQmV6aWVyUGF0aCBiZXppZXJQYXRoV2l0aENHUGF0aDpwYXRoLmVuc3VyZVBsYXRmb3JtUGF0
aCgpXTsKLSAgICAgICAgICAgIHJldHVybiBjcmVhdGVUYXJnZXRlZERyYWdQcmV2aWV3KHNvdXJj
ZS5pbWFnZS5nZXQoKSwgY29udGVudFZpZXcsIHByZXZpZXdDb250YWluZXIsIHNvdXJjZS5kcmFn
UHJldmlld0ZyYW1lSW5Sb290Vmlld0Nvb3JkaW5hdGVzLCB7IH0sIG5pbCwgdmlzaWJsZVBhdGgp
OworICAgICAgICAgICAgcmV0dXJuIGNyZWF0ZVRhcmdldGVkRHJhZ1ByZXZpZXcoc291cmNlLmlt
YWdlLmdldCgpLCBjb250ZW50VmlldywgcHJldmlld0NvbnRhaW5lciwgc291cmNlLmRyYWdQcmV2
aWV3RnJhbWVJblJvb3RWaWV3Q29vcmRpbmF0ZXMsIHsgfSwgbmlsLCB2aXNpYmxlUGF0aCkuYXV0
b3JlbGVhc2UoKTsKICAgICAgICAgfQotICAgICAgICByZXR1cm4gY3JlYXRlVGFyZ2V0ZWREcmFn
UHJldmlldyhzb3VyY2UuaW1hZ2UuZ2V0KCksIGNvbnRlbnRWaWV3LCBwcmV2aWV3Q29udGFpbmVy
LCBzb3VyY2UuZHJhZ1ByZXZpZXdGcmFtZUluUm9vdFZpZXdDb29yZGluYXRlcywgeyB9LCBuaWws
IG5pbCk7CisgICAgICAgIHJldHVybiBjcmVhdGVUYXJnZXRlZERyYWdQcmV2aWV3KHNvdXJjZS5p
bWFnZS5nZXQoKSwgY29udGVudFZpZXcsIHByZXZpZXdDb250YWluZXIsIHNvdXJjZS5kcmFnUHJl
dmlld0ZyYW1lSW5Sb290Vmlld0Nvb3JkaW5hdGVzLCB7IH0sIG5pbCwgbmlsKS5hdXRvcmVsZWFz
ZSgpOwogICAgIH0KIAogICAgIGlmIChzaG91bGRVc2VUZXh0SW5kaWNhdG9yVG9DcmVhdGVQcmV2
aWV3Rm9yRHJhZ1NvdXJjZShzb3VyY2UpKSB7CiAgICAgICAgIGF1dG8gaW5kaWNhdG9yID0gc291
cmNlLmluZGljYXRvckRhdGEudmFsdWUoKTsKICAgICAgICAgYXV0byB0ZXh0SW5kaWNhdG9ySW1h
Z2UgPSB1aUltYWdlRm9ySW1hZ2UoaW5kaWNhdG9yLmNvbnRlbnRJbWFnZS5nZXQoKSk7Ci0gICAg
ICAgIHJldHVybiBjcmVhdGVUYXJnZXRlZERyYWdQcmV2aWV3KHRleHRJbmRpY2F0b3JJbWFnZS5n
ZXQoKSwgY29udGVudFZpZXcsIHByZXZpZXdDb250YWluZXIsIGluZGljYXRvci50ZXh0Qm91bmRp
bmdSZWN0SW5Sb290Vmlld0Nvb3JkaW5hdGVzLCBpbmRpY2F0b3IudGV4dFJlY3RzSW5Cb3VuZGlu
Z1JlY3RDb29yZGluYXRlcywgW1VJQ29sb3IgY29sb3JXaXRoQ0dDb2xvcjpjYWNoZWRDR0NvbG9y
KGluZGljYXRvci5lc3RpbWF0ZWRCYWNrZ3JvdW5kQ29sb3IpXSwgbmlsKTsKKyAgICAgICAgcmV0
dXJuIGNyZWF0ZVRhcmdldGVkRHJhZ1ByZXZpZXcodGV4dEluZGljYXRvckltYWdlLmdldCgpLCBj
b250ZW50VmlldywgcHJldmlld0NvbnRhaW5lciwgaW5kaWNhdG9yLnRleHRCb3VuZGluZ1JlY3RJ
blJvb3RWaWV3Q29vcmRpbmF0ZXMsIGluZGljYXRvci50ZXh0UmVjdHNJbkJvdW5kaW5nUmVjdENv
b3JkaW5hdGVzLCBbVUlDb2xvciBjb2xvcldpdGhDR0NvbG9yOmNhY2hlZENHQ29sb3IoaW5kaWNh
dG9yLmVzdGltYXRlZEJhY2tncm91bmRDb2xvcildLCBuaWwpLmF1dG9yZWxlYXNlKCk7CiAgICAg
fQogCiAgICAgcmV0dXJuIG5pbDsKQEAgLTI2Niw2ICsyODksOCBAQCB2b2lkIERyYWdEcm9wSW50
ZXJhY3Rpb25TdGF0ZTo6Y2xlYXJTdGFnZWREcmFnU291cmNlKERpZEJlY29tZUFjdGl2ZSBkaWRC
ZWNvbWVBYwogCiB2b2lkIERyYWdEcm9wSW50ZXJhY3Rpb25TdGF0ZTo6ZHJhZ0FuZERyb3BTZXNz
aW9uc0RpZEVuZCgpCiB7CisgICAgY2xlYXJBbGxEZWxheWVkSXRlbVByZXZpZXdQcm92aWRlcnMo
KTsKKwogICAgIC8vIElmIGFueSBvZiBVSUtpdCdzIGNvbXBsZXRpb24gYmxvY2tzIGFyZSBzdGls
bCBpbi1mbGlnaHQgd2hlbiB0aGUgZHJhZyBpbnRlcmFjdGlvbiBlbmRzLCB3ZSBuZWVkIHRvIGVu
c3VyZSB0aGF0IHRoZXkgYXJlIHN0aWxsIGludm9rZWQKICAgICAvLyB0byBwcmV2ZW50IFVJS2l0
IGZyb20gZ2V0dGluZyBpbnRvIGFuIGluY29uc2lzdGVudCBzdGF0ZS4KICAgICBpZiAoYXV0byBj
b21wbGV0aW9uQmxvY2sgPSB0YWtlRHJhZ0NhbmNlbFNldERvd25CbG9jaygpKQpkaWZmIC0tZ2l0
IGEvU291cmNlL1dlYktpdC9VSVByb2Nlc3MvaW9zL1BhZ2VDbGllbnRJbXBsSU9TLmggYi9Tb3Vy
Y2UvV2ViS2l0L1VJUHJvY2Vzcy9pb3MvUGFnZUNsaWVudEltcGxJT1MuaAppbmRleCA4NzZhYzkx
MDgwOGQyZTk3ZDAxOGVjNjJlZWQ3OWQzYzcwNTA3OTFiLi40MTNjOTNiM2FjMDVlNmM1ZjY1Mzdk
NDlmNTEyODIzNWVmNWM0YTBmIDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViS2l0L1VJUHJvY2Vzcy9p
b3MvUGFnZUNsaWVudEltcGxJT1MuaAorKysgYi9Tb3VyY2UvV2ViS2l0L1VJUHJvY2Vzcy9pb3Mv
UGFnZUNsaWVudEltcGxJT1MuaApAQCAtMjM3LDcgKzIzNyw4IEBAIHByaXZhdGU6CiAgICAgdm9p
ZCBkaWRIYW5kbGVEcmFnU3RhcnRSZXF1ZXN0KGJvb2wgc3RhcnRlZCkgb3ZlcnJpZGU7CiAgICAg
dm9pZCBkaWRIYW5kbGVBZGRpdGlvbmFsRHJhZ0l0ZW1zUmVxdWVzdChib29sIGFkZGVkKSBvdmVy
cmlkZTsKICAgICB2b2lkIHN0YXJ0RHJhZyhjb25zdCBXZWJDb3JlOjpEcmFnSXRlbSYsIGNvbnN0
IFNoYXJlYWJsZUJpdG1hcDo6SGFuZGxlJiBpbWFnZSkgb3ZlcnJpZGU7Ci0gICAgdm9pZCBkaWRD
b25jbHVkZUVkaXREcmFnKE9wdGlvbmFsPFdlYkNvcmU6OlRleHRJbmRpY2F0b3JEYXRhPikgb3Zl
cnJpZGU7CisgICAgdm9pZCB3aWxsUmVjZWl2ZUVkaXREcmFnU25hcHNob3QoKSBvdmVycmlkZTsK
KyAgICB2b2lkIGRpZFJlY2VpdmVFZGl0RHJhZ1NuYXBzaG90KE9wdGlvbmFsPFdlYkNvcmU6OlRl
eHRJbmRpY2F0b3JEYXRhPikgb3ZlcnJpZGU7CiAgICAgdm9pZCBkaWRDaGFuZ2VEcmFnQ2FyZXRS
ZWN0KGNvbnN0IFdlYkNvcmU6OkludFJlY3QmIHByZXZpb3VzQ2FyZXRSZWN0LCBjb25zdCBXZWJD
b3JlOjpJbnRSZWN0JiBjYXJldFJlY3QpIG92ZXJyaWRlOwogI2VuZGlmCiAKZGlmZiAtLWdpdCBh
L1NvdXJjZS9XZWJLaXQvVUlQcm9jZXNzL2lvcy9QYWdlQ2xpZW50SW1wbElPUy5tbSBiL1NvdXJj
ZS9XZWJLaXQvVUlQcm9jZXNzL2lvcy9QYWdlQ2xpZW50SW1wbElPUy5tbQppbmRleCAwOTUzMmZm
MjdlOTlmNGU5Yzg5M2FkYzgxOGRmOTBkMjRmYTE2MjFhLi4yNjdiZDQzYmRkMTAxY2RhOTQ2Zjg0
ODhhMTc1MzMzMzQ2Y2RkMTEwIDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViS2l0L1VJUHJvY2Vzcy9p
b3MvUGFnZUNsaWVudEltcGxJT1MubW0KKysrIGIvU291cmNlL1dlYktpdC9VSVByb2Nlc3MvaW9z
L1BhZ2VDbGllbnRJbXBsSU9TLm1tCkBAIC04MjAsOSArODIwLDE0IEBAIHZvaWQgUGFnZUNsaWVu
dEltcGw6OnN0YXJ0RHJhZyhjb25zdCBEcmFnSXRlbSYgaXRlbSwgY29uc3QgU2hhcmVhYmxlQml0
bWFwOjpIYW5kCiAgICAgW21fY29udGVudFZpZXcgX3N0YXJ0RHJhZzpTaGFyZWFibGVCaXRtYXA6
OmNyZWF0ZShpbWFnZSktPm1ha2VDR0ltYWdlQ29weSgpIGl0ZW06aXRlbV07CiB9CiAKLXZvaWQg
UGFnZUNsaWVudEltcGw6OmRpZENvbmNsdWRlRWRpdERyYWcoT3B0aW9uYWw8VGV4dEluZGljYXRv
ckRhdGE+IGRhdGEpCit2b2lkIFBhZ2VDbGllbnRJbXBsOjp3aWxsUmVjZWl2ZUVkaXREcmFnU25h
cHNob3QoKQogewotICAgIFttX2NvbnRlbnRWaWV3IF9kaWRDb25jbHVkZUVkaXREcmFnOmRhdGFd
OworICAgIFttX2NvbnRlbnRWaWV3IF93aWxsUmVjZWl2ZUVkaXREcmFnU25hcHNob3RdOworfQor
Cit2b2lkIFBhZ2VDbGllbnRJbXBsOjpkaWRSZWNlaXZlRWRpdERyYWdTbmFwc2hvdChPcHRpb25h
bDxUZXh0SW5kaWNhdG9yRGF0YT4gZGF0YSkKK3sKKyAgICBbbV9jb250ZW50VmlldyBfZGlkUmVj
ZWl2ZUVkaXREcmFnU25hcHNob3Q6ZGF0YV07CiB9CiAKIHZvaWQgUGFnZUNsaWVudEltcGw6OmRp
ZENoYW5nZURyYWdDYXJldFJlY3QoY29uc3QgSW50UmVjdCYgcHJldmlvdXNDYXJldFJlY3QsIGNv
bnN0IEludFJlY3QmIGNhcmV0UmVjdCkKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJLaXQvVUlQcm9j
ZXNzL2lvcy9XS0NvbnRlbnRWaWV3SW50ZXJhY3Rpb24uaCBiL1NvdXJjZS9XZWJLaXQvVUlQcm9j
ZXNzL2lvcy9XS0NvbnRlbnRWaWV3SW50ZXJhY3Rpb24uaAppbmRleCBjOTJiM2Y5ZDIyMDg3MjBh
Y2IzMWFiOTg5NGNkNzQyZjliZGY5NWVmLi4wOGI2NGQyYjFmYzUwNWM5ZDQxYzAyZjM5MzcyZDQw
YzI4YjYwM2E3IDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViS2l0L1VJUHJvY2Vzcy9pb3MvV0tDb250
ZW50Vmlld0ludGVyYWN0aW9uLmgKKysrIGIvU291cmNlL1dlYktpdC9VSVByb2Nlc3MvaW9zL1dL
Q29udGVudFZpZXdJbnRlcmFjdGlvbi5oCkBAIC0zMzQsNiArMzM0LDcgQEAgc3RydWN0IFdLQXV0
b0NvcnJlY3Rpb25EYXRhIHsKICAgICBCT09MIF9pc0JsdXJyaW5nRm9jdXNlZEVsZW1lbnQ7CiAK
ICAgICBCT09MIF9mb2N1c1JlcXVpcmVzU3Ryb25nUGFzc3dvcmRBc3Npc3RhbmNlOworICAgIEJP
T0wgX3dhaXRpbmdGb3JFZGl0RHJhZ1NuYXBzaG90OwogCiAgICAgQk9PTCBfaGFzU2V0VXBJbnRl
cmFjdGlvbnM7CiAgICAgTlNVSW50ZWdlciBfaWdub3JlU2VsZWN0aW9uQ29tbWFuZEZhZGVDb3Vu
dDsKQEAgLTM0NSw5ICszNDYsMTAgQEAgc3RydWN0IFdLQXV0b0NvcnJlY3Rpb25EYXRhIHsKICAg
ICBSZXRhaW5QdHI8VUlEcmFnSW50ZXJhY3Rpb24+IF9kcmFnSW50ZXJhY3Rpb247CiAgICAgUmV0
YWluUHRyPFVJRHJvcEludGVyYWN0aW9uPiBfZHJvcEludGVyYWN0aW9uOwogICAgIEJPT0wgX3No
b3VsZFJlc3RvcmVDYWxsb3V0QmFyQWZ0ZXJEcm9wOwotICAgIEJPT0wgX2lzQW5pbWF0aW5nQ29u
Y2x1ZGVFZGl0RHJhZzsKICAgICBSZXRhaW5QdHI8VUlWaWV3PiBfdmlzaWJsZUNvbnRlbnRWaWV3
U25hcHNob3Q7CisgICAgUmV0YWluUHRyPFVJVmlldz4gX3Vuc2VsZWN0ZWRDb250ZW50U25hcHNo
b3Q7CiAgICAgUmV0YWluUHRyPF9VSVRleHREcmFnQ2FyZXRWaWV3PiBfZWRpdERyb3BDYXJldFZp
ZXc7CisgICAgQmxvY2tQdHI8dm9pZCgpPiBfYWN0aW9uVG9QZXJmb3JtQWZ0ZXJSZWNlaXZpbmdF
ZGl0RHJhZ1NuYXBzaG90OwogI2VuZGlmCiAKICNpZiBQTEFURk9STShXQVRDSE9TKQpAQCAtNDkw
LDcgKzQ5Miw4IEBAIEZPUl9FQUNIX1BSSVZBVEVfV0tDT05URU5UVklFV19BQ1RJT04oREVDTEFS
RV9XS0NPTlRFTlRWSUVXX0FDVElPTl9GT1JfV0VCX1ZJRVcpCiAtICh2b2lkKV9kaWRIYW5kbGVE
cmFnU3RhcnRSZXF1ZXN0OihCT09MKXN0YXJ0ZWQ7CiAtICh2b2lkKV9kaWRIYW5kbGVBZGRpdGlv
bmFsRHJhZ0l0ZW1zUmVxdWVzdDooQk9PTClhZGRlZDsKIC0gKHZvaWQpX3N0YXJ0RHJhZzooUmV0
YWluUHRyPENHSW1hZ2VSZWY+KWltYWdlIGl0ZW06KGNvbnN0IFdlYkNvcmU6OkRyYWdJdGVtJilp
dGVtOwotLSAodm9pZClfZGlkQ29uY2x1ZGVFZGl0RHJhZzooT3B0aW9uYWw8V2ViQ29yZTo6VGV4
dEluZGljYXRvckRhdGE+KWRhdGE7CistICh2b2lkKV93aWxsUmVjZWl2ZUVkaXREcmFnU25hcHNo
b3Q7CistICh2b2lkKV9kaWRSZWNlaXZlRWRpdERyYWdTbmFwc2hvdDooT3B0aW9uYWw8V2ViQ29y
ZTo6VGV4dEluZGljYXRvckRhdGE+KWRhdGE7CiAtICh2b2lkKV9kaWRDaGFuZ2VEcmFnQ2FyZXRS
ZWN0OihDR1JlY3QpcHJldmlvdXNSZWN0IGN1cnJlbnRSZWN0OihDR1JlY3QpcmVjdDsKICNlbmRp
ZgogCkBAIC01MTcsNiArNTIwLDcgQEAgRk9SX0VBQ0hfUFJJVkFURV9XS0NPTlRFTlRWSUVXX0FD
VElPTihERUNMQVJFX1dLQ09OVEVOVFZJRVdfQUNUSU9OX0ZPUl9XRUJfVklFVykKIC0gKHZvaWQp
c2VsZWN0Rm9ybUFjY2Vzc29yeVBpY2tlclJvdzooTlNJbnRlZ2VyKXJvd0luZGV4OwogLSAodm9p
ZClzZXRUaW1lUGlja2VyVmFsdWVUb0hvdXI6KE5TSW50ZWdlcilob3VyIG1pbnV0ZTooTlNJbnRl
Z2VyKW1pbnV0ZTsKIC0gKE5TRGljdGlvbmFyeSAqKV9jb250ZW50c09mVXNlckludGVyZmFjZUl0
ZW06KE5TU3RyaW5nICopdXNlckludGVyZmFjZUl0ZW07CistICh2b2lkKV9kb0FmdGVyUmVjZWl2
aW5nRWRpdERyYWdTbmFwc2hvdEZvclRlc3Rpbmc6KGRpc3BhdGNoX2Jsb2NrX3QpYWN0aW9uOwog
CiBAcHJvcGVydHkgKG5vbmF0b21pYywgcmVhZG9ubHkpIE5TU3RyaW5nICp0ZXh0Q29udGVudFR5
cGVGb3JUZXN0aW5nOwogQHByb3BlcnR5IChub25hdG9taWMsIHJlYWRvbmx5KSBOU1N0cmluZyAq
c2VsZWN0Rm9ybVBvcG92ZXJUaXRsZTsKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJLaXQvVUlQcm9j
ZXNzL2lvcy9XS0NvbnRlbnRWaWV3SW50ZXJhY3Rpb24ubW0gYi9Tb3VyY2UvV2ViS2l0L1VJUHJv
Y2Vzcy9pb3MvV0tDb250ZW50Vmlld0ludGVyYWN0aW9uLm1tCmluZGV4IDI0MDc3ZGFmOTM4N2Ux
ZWVkZDNjMzdlNDYyMGIyYmY5YWI4NmJmMzQuLjM2MzY3YTNmOGRmOTIyZWQ0N2VjMWJiYmI3MWJl
YmNhNWNhMGYyNDUgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJLaXQvVUlQcm9jZXNzL2lvcy9XS0Nv
bnRlbnRWaWV3SW50ZXJhY3Rpb24ubW0KKysrIGIvU291cmNlL1dlYktpdC9VSVByb2Nlc3MvaW9z
L1dLQ29udGVudFZpZXdJbnRlcmFjdGlvbi5tbQpAQCAtODQxLDYgKzg0MSw3IEBAIC0gKHZvaWQp
Y2xlYW51cEludGVyYWN0aW9uCiAgICAgX291dHN0YW5kaW5nUG9zaXRpb25JbmZvcm1hdGlvblJl
cXVlc3QgPSBXVEY6Om51bGxvcHQ7CiAKICAgICBfZm9jdXNSZXF1aXJlc1N0cm9uZ1Bhc3N3b3Jk
QXNzaXN0YW5jZSA9IE5POworICAgIF93YWl0aW5nRm9yRWRpdERyYWdTbmFwc2hvdCA9IE5POwog
CiAjaWYgVVNFKFVJS0lUX0tFWUJPQVJEX0FERElUSU9OUykKICAgICBfY2FuZGlkYXRlVmlld05l
ZWRzVXBkYXRlID0gTk87CkBAIC02MjY5LDYgKzYyNzAsOSBAQCAtIChXZWJDb3JlOjpEcmFnRGF0
YSlkcmFnRGF0YUZvckRyb3BTZXNzaW9uOihpZCA8VUlEcm9wU2Vzc2lvbj4pc2Vzc2lvbiBkcmFn
RGVzdAogCiAtICh2b2lkKWNsZWFuVXBEcmFnU291cmNlU2Vzc2lvblN0YXRlCiB7CisgICAgaWYg
KF93YWl0aW5nRm9yRWRpdERyYWdTbmFwc2hvdCkKKyAgICAgICAgcmV0dXJuOworCiAgICAgaWYg
KF9kcmFnRHJvcEludGVyYWN0aW9uU3RhdGUuZHJhZ1Nlc3Npb24oKSB8fCBfZHJhZ0Ryb3BJbnRl
cmFjdGlvblN0YXRlLmlzUGVyZm9ybWluZ0Ryb3AoKSkKICAgICAgICAgUkVMRUFTRV9MT0coRHJh
Z0FuZERyb3AsICJDbGVhbmluZyB1cCBkcmFnZ2luZyBzdGF0ZSAoaGFzIHBlbmRpbmcgb3BlcmF0
aW9uOiAlZCkiLCBbW1dlYkl0ZW1Qcm92aWRlclBhc3RlYm9hcmQgc2hhcmVkSW5zdGFuY2VdIGhh
c1BlbmRpbmdPcGVyYXRpb25dKTsKIApAQCAtNjI4MSwxMSArNjI4NSw5IEBAIC0gKHZvaWQpY2xl
YW5VcERyYWdTb3VyY2VTZXNzaW9uU3RhdGUKICAgICBbW1dlYkl0ZW1Qcm92aWRlclBhc3RlYm9h
cmQgc2hhcmVkSW5zdGFuY2VdIHN0YWdlUmVnaXN0cmF0aW9uTGlzdDpuaWxdOwogICAgIFtzZWxm
IF9yZXN0b3JlQ2FsbG91dEJhcklmTmVlZGVkXTsKIAotICAgIFtfdmlzaWJsZUNvbnRlbnRWaWV3
U25hcHNob3QgcmVtb3ZlRnJvbVN1cGVydmlld107Ci0gICAgX3Zpc2libGVDb250ZW50Vmlld1Nu
YXBzaG90ID0gbmlsOworICAgIFtzdGQ6OmV4Y2hhbmdlKF92aXNpYmxlQ29udGVudFZpZXdTbmFw
c2hvdCwgbmlsKSByZW1vdmVGcm9tU3VwZXJ2aWV3XTsKICAgICBbX2VkaXREcm9wQ2FyZXRWaWV3
IHJlbW92ZV07CiAgICAgX2VkaXREcm9wQ2FyZXRWaWV3ID0gbmlsOwotICAgIF9pc0FuaW1hdGlu
Z0NvbmNsdWRlRWRpdERyYWcgPSBOTzsKICAgICBfc2hvdWxkUmVzdG9yZUNhbGxvdXRCYXJBZnRl
ckRyb3AgPSBOTzsKIAogICAgIF9kcmFnRHJvcEludGVyYWN0aW9uU3RhdGUuZHJhZ0FuZERyb3BT
ZXNzaW9uc0RpZEVuZCgpOwpAQCAtNjMwNywxMSArNjMwOSwzMyBAQCBzdGF0aWMgTlNBcnJheTxO
U0l0ZW1Qcm92aWRlciAqPiAqZXh0cmFjdEl0ZW1Qcm92aWRlcnNGcm9tRHJvcFNlc3Npb24oaWQg
PFVJRHJvcAogICAgIHJldHVybiBleHRyYWN0SXRlbVByb3ZpZGVyc0Zyb21EcmFnSXRlbXMoc2Vz
c2lvbi5pdGVtcyk7CiB9CiAKLS0gKHZvaWQpX2RpZENvbmNsdWRlRWRpdERyYWc6KE9wdGlvbmFs
PFdlYkNvcmU6OlRleHRJbmRpY2F0b3JEYXRhPilkYXRhCistICh2b2lkKV93aWxsUmVjZWl2ZUVk
aXREcmFnU25hcHNob3QKK3sKKyAgICBfd2FpdGluZ0ZvckVkaXREcmFnU25hcHNob3QgPSBZRVM7
Cit9CisKKy0gKHZvaWQpX2RpZFJlY2VpdmVFZGl0RHJhZ1NuYXBzaG90OihPcHRpb25hbDxXZWJD
b3JlOjpUZXh0SW5kaWNhdG9yRGF0YT4pZGF0YQoreworICAgIF93YWl0aW5nRm9yRWRpdERyYWdT
bmFwc2hvdCA9IE5POworCisgICAgW3NlbGYgX2RlbGl2ZXJEZWxheWVkRHJvcFByZXZpZXdJZlBv
c3NpYmxlOmRhdGFdOworICAgIFtzZWxmIGNsZWFuVXBEcmFnU291cmNlU2Vzc2lvblN0YXRlXTsK
KworICAgIGlmIChhdXRvIGFjdGlvbiA9IFdURk1vdmUoX2FjdGlvblRvUGVyZm9ybUFmdGVyUmVj
ZWl2aW5nRWRpdERyYWdTbmFwc2hvdCkpCisgICAgICAgIGFjdGlvbigpOworfQorCistICh2b2lk
KV9kZWxpdmVyRGVsYXllZERyb3BQcmV2aWV3SWZQb3NzaWJsZTooT3B0aW9uYWw8V2ViQ29yZTo6
VGV4dEluZGljYXRvckRhdGE+KWRhdGEKIHsKKyAgICBpZiAoIV92aXNpYmxlQ29udGVudFZpZXdT
bmFwc2hvdCkKKyAgICAgICAgcmV0dXJuOworCiAgICAgaWYgKCFkYXRhKQogICAgICAgICByZXR1
cm47CiAKKyAgICBpZiAoIWRhdGEtPmNvbnRlbnRJbWFnZSkKKyAgICAgICAgcmV0dXJuOworCiAg
ICAgYXV0byBzbmFwc2hvdFdpdGhvdXRTZWxlY3Rpb24gPSBkYXRhLT5jb250ZW50SW1hZ2VXaXRo
b3V0U2VsZWN0aW9uOwogICAgIGlmICghc25hcHNob3RXaXRob3V0U2VsZWN0aW9uKQogICAgICAg
ICByZXR1cm47CkBAIC02MzIxLDI1ICs2MzQ1LDExIEBAIC0gKHZvaWQpX2RpZENvbmNsdWRlRWRp
dERyYWc6KE9wdGlvbmFsPFdlYkNvcmU6OlRleHRJbmRpY2F0b3JEYXRhPilkYXRhCiAgICAgICAg
IHJldHVybjsKIAogICAgIGF1dG8gdW5zZWxlY3RlZENvbnRlbnRJbWFnZUZvckVkaXREcmFnID0g
YWRvcHROUyhbW1VJSW1hZ2UgYWxsb2NdIGluaXRXaXRoQ0dJbWFnZTp1bnNlbGVjdGVkU25hcHNo
b3RJbWFnZS5nZXQoKSBzY2FsZTpfcGFnZS0+ZGV2aWNlU2NhbGVGYWN0b3IoKSBvcmllbnRhdGlv
bjpVSUltYWdlT3JpZW50YXRpb25VcF0pOwotICAgIGF1dG8gdW5zZWxlY3RlZENvbnRlbnRTbmFw
c2hvdCA9IGFkb3B0TlMoW1tVSUltYWdlVmlldyBhbGxvY10gaW5pdFdpdGhJbWFnZTp1bnNlbGVj
dGVkQ29udGVudEltYWdlRm9yRWRpdERyYWcuZ2V0KCldKTsKLSAgICBbdW5zZWxlY3RlZENvbnRl
bnRTbmFwc2hvdCBzZXRGcmFtZTpkYXRhLT5jb250ZW50SW1hZ2VXaXRob3V0U2VsZWN0aW9uUmVj
dEluUm9vdFZpZXdDb29yZGluYXRlc107Ci0KLSAgICBhdXRvIHByb3RlY3RlZFNlbGYgPSByZXRh
aW5QdHIoc2VsZik7Ci0gICAgYXV0byB2aXNpYmxlQ29udGVudFZpZXdTbmFwc2hvdCA9IGFkb3B0
TlMoX3Zpc2libGVDb250ZW50Vmlld1NuYXBzaG90LmxlYWtSZWYoKSk7Ci0KLSAgICBfaXNBbmlt
YXRpbmdDb25jbHVkZUVkaXREcmFnID0gWUVTOwotICAgIFtzZWxmIGluc2VydFN1YnZpZXc6dW5z
ZWxlY3RlZENvbnRlbnRTbmFwc2hvdC5nZXQoKSBiZWxvd1N1YnZpZXc6dmlzaWJsZUNvbnRlbnRW
aWV3U25hcHNob3QuZ2V0KCldOwotICAgIFtVSVZpZXcgYW5pbWF0ZVdpdGhEdXJhdGlvbjowLjI1
IGFuaW1hdGlvbnM6XigpIHsKLSAgICAgICAgW3Zpc2libGVDb250ZW50Vmlld1NuYXBzaG90IHNl
dEFscGhhOjBdOwotICAgIH0gY29tcGxldGlvbjpeKEJPT0wgY29tcGxldGVkKSB7Ci0gICAgICAg
IFt2aXNpYmxlQ29udGVudFZpZXdTbmFwc2hvdCByZW1vdmVGcm9tU3VwZXJ2aWV3XTsKLSAgICAg
ICAgW1VJVmlldyBhbmltYXRlV2l0aER1cmF0aW9uOjAuMjUgYW5pbWF0aW9uczpeKCkgewotICAg
ICAgICAgICAgW3Byb3RlY3RlZFNlbGYgX3N0b3BTdXBwcmVzc2luZ1NlbGVjdGlvbkFzc2lzdGFu
dEZvclJlYXNvbjpXZWJLaXQ6OkRyb3BBbmltYXRpb25Jc1J1bm5pbmddOwotICAgICAgICAgICAg
W3Vuc2VsZWN0ZWRDb250ZW50U25hcHNob3Qgc2V0QWxwaGE6MF07Ci0gICAgICAgIH0gY29tcGxl
dGlvbjpeKEJPT0wgY29tcGxldGVkKSB7Ci0gICAgICAgICAgICBbdW5zZWxlY3RlZENvbnRlbnRT
bmFwc2hvdCByZW1vdmVGcm9tU3VwZXJ2aWV3XTsKLSAgICAgICAgfV07Ci0gICAgfV07CisgICAg
X3Vuc2VsZWN0ZWRDb250ZW50U25hcHNob3QgPSBhZG9wdE5TKFtbVUlJbWFnZVZpZXcgYWxsb2Nd
IGluaXRXaXRoSW1hZ2U6dW5zZWxlY3RlZENvbnRlbnRJbWFnZUZvckVkaXREcmFnLmdldCgpXSk7
CisgICAgW191bnNlbGVjdGVkQ29udGVudFNuYXBzaG90IHNldEZyYW1lOmRhdGEtPmNvbnRlbnRJ
bWFnZVdpdGhvdXRTZWxlY3Rpb25SZWN0SW5Sb290Vmlld0Nvb3JkaW5hdGVzXTsKKworICAgIFtz
ZWxmIGluc2VydFN1YnZpZXc6X3Vuc2VsZWN0ZWRDb250ZW50U25hcHNob3QuZ2V0KCkgYmVsb3dT
dWJ2aWV3Ol92aXNpYmxlQ29udGVudFZpZXdTbmFwc2hvdC5nZXQoKV07CisgICAgX2RyYWdEcm9w
SW50ZXJhY3Rpb25TdGF0ZS5kZWxpdmVyRGVsYXllZERyb3BQcmV2aWV3KHNlbGYsIHNlbGYudW5z
Y2FsZWRWaWV3LCBkYXRhLnZhbHVlKCkpOwogfQogCiAtICh2b2lkKV9kaWRQZXJmb3JtRHJhZ09w
ZXJhdGlvbjooQk9PTCloYW5kbGVkCkBAIC02MzUwLDkgKzYzNjAsNiBAQCAtICh2b2lkKV9kaWRQ
ZXJmb3JtRHJhZ09wZXJhdGlvbjooQk9PTCloYW5kbGVkCiAgICAgaWYgKFtzZWxmLndlYlZpZXdV
SURlbGVnYXRlIHJlc3BvbmRzVG9TZWxlY3RvcjpAc2VsZWN0b3IoX3dlYlZpZXc6ZGF0YUludGVy
YWN0aW9uT3BlcmF0aW9uV2FzSGFuZGxlZDpmb3JTZXNzaW9uOml0ZW1Qcm92aWRlcnM6KV0pCiAg
ICAgICAgIFtzZWxmLndlYlZpZXdVSURlbGVnYXRlIF93ZWJWaWV3Ol93ZWJWaWV3IGRhdGFJbnRl
cmFjdGlvbk9wZXJhdGlvbldhc0hhbmRsZWQ6aGFuZGxlZCBmb3JTZXNzaW9uOmRyb3BTZXNzaW9u
IGl0ZW1Qcm92aWRlcnM6W1dlYkl0ZW1Qcm92aWRlclBhc3RlYm9hcmQgc2hhcmVkSW5zdGFuY2Vd
Lml0ZW1Qcm92aWRlcnNdOwogCi0gICAgaWYgKCFfaXNBbmltYXRpbmdDb25jbHVkZUVkaXREcmFn
KQotICAgICAgICBbc2VsZiBfc3RvcFN1cHByZXNzaW5nU2VsZWN0aW9uQXNzaXN0YW50Rm9yUmVh
c29uOldlYktpdDo6RHJvcEFuaW1hdGlvbklzUnVubmluZ107Ci0KICAgICBDR1BvaW50IGdsb2Jh
bDsKICAgICBDR1BvaW50IGNsaWVudDsKICAgICBbc2VsZiBjb21wdXRlQ2xpZW50QW5kR2xvYmFs
UG9pbnRzRm9yRHJvcFNlc3Npb246ZHJvcFNlc3Npb24gb3V0Q2xpZW50UG9pbnQ6JmNsaWVudCBv
dXRHbG9iYWxQb2ludDomZ2xvYmFsXTsKQEAgLTY1MDksNiArNjUxNiwxNSBAQCAtIChOU0FycmF5
PFVJRHJhZ0l0ZW0gKj4gKilfaXRlbXNGb3JCZWdpbm5pbmdPckFkZGluZ1RvU2Vzc2lvbldpdGhS
ZWdpc3RyYXRpb25MaQogICAgIHJldHVybiBkcmFnSXRlbXM7CiB9CiAKKy0gKFVJVmlldyAqKXRl
eHRFZmZlY3RzV2luZG93Cit7CisjaWYgSEFWRShVSVNDRU5FKQorICAgIHJldHVybiBbVUlUZXh0
RWZmZWN0c1dpbmRvdyBzaGFyZWRUZXh0RWZmZWN0c1dpbmRvd0ZvcldpbmRvd1NjZW5lOnNlbGYu
d2luZG93LndpbmRvd1NjZW5lXTsKKyNlbHNlCisgICAgcmV0dXJuIFtVSVRleHRFZmZlY3RzV2lu
ZG93IHNoYXJlZFRleHRFZmZlY3RzV2luZG93XTsKKyNlbmRpZgorfQorCiAtIChOU0RpY3Rpb25h
cnkgKilfYXV0b2ZpbGxDb250ZXh0CiB7CiAgICAgQk9PTCBwcm92aWRlU3Ryb25nUGFzc3dvcmRB
c3Npc3RhbmNlID0gX2ZvY3VzUmVxdWlyZXNTdHJvbmdQYXNzd29yZEFzc2lzdGFuY2UgJiYgX2Zv
Y3VzZWRFbGVtZW50SW5mb3JtYXRpb24uZWxlbWVudFR5cGUgPT0gV2ViS2l0OjpJbnB1dFR5cGU6
OlBhc3N3b3JkOwpAQCAtNjg5MCwyMyArNjkwNiw0MiBAQCAtICh2b2lkKWRyb3BJbnRlcmFjdGlv
bjooVUlEcm9wSW50ZXJhY3Rpb24gKilpbnRlcmFjdGlvbiBwZXJmb3JtRHJvcDooaWQgPFVJRHJv
cAogICAgIH1dOwogfQogCistICh2b2lkKWRyb3BJbnRlcmFjdGlvbjooVUlEcm9wSW50ZXJhY3Rp
b24gKilpbnRlcmFjdGlvbiBpdGVtOihVSURyYWdJdGVtICopaXRlbSB3aWxsQW5pbWF0ZURyb3BX
aXRoQW5pbWF0b3I6KGlkIDxVSURyYWdBbmltYXRpbmc+KWFuaW1hdG9yCit7CisgICAgW2FuaW1h
dG9yIGFkZENvbXBsZXRpb246W3N0cm9uZ1NlbGYgPSByZXRhaW5QdHIoc2VsZildIChVSVZpZXdB
bmltYXRpbmdQb3NpdGlvbikgeworICAgICAgICBbc3RkOjpleGNoYW5nZShzdHJvbmdTZWxmLT5f
dW5zZWxlY3RlZENvbnRlbnRTbmFwc2hvdCwgbmlsKSByZW1vdmVGcm9tU3VwZXJ2aWV3XTsKKyAg
ICB9XTsKK30KKworLSAodm9pZClkcm9wSW50ZXJhY3Rpb246KFVJRHJvcEludGVyYWN0aW9uICop
aW50ZXJhY3Rpb24gY29uY2x1ZGVEcm9wOihpZCA8VUlEcm9wU2Vzc2lvbj4pc2Vzc2lvbgorewor
ICAgIFtzZWxmIF9zdG9wU3VwcHJlc3NpbmdTZWxlY3Rpb25Bc3Npc3RhbnRGb3JSZWFzb246V2Vi
S2l0OjpEcm9wQW5pbWF0aW9uSXNSdW5uaW5nXTsKKyAgICBbc3RkOjpleGNoYW5nZShfdmlzaWJs
ZUNvbnRlbnRWaWV3U25hcHNob3QsIG5pbCkgcmVtb3ZlRnJvbVN1cGVydmlld107CisgICAgW3N0
ZDo6ZXhjaGFuZ2UoX3Vuc2VsZWN0ZWRDb250ZW50U25hcHNob3QsIG5pbCkgcmVtb3ZlRnJvbVN1
cGVydmlld107CisgICAgX2RyYWdEcm9wSW50ZXJhY3Rpb25TdGF0ZS5jbGVhckFsbERlbGF5ZWRJ
dGVtUHJldmlld1Byb3ZpZGVycygpOworICAgIF9wYWdlLT5kaWRDb25jbHVkZURyb3AoKTsKK30K
KwogLSAoVUlUYXJnZXRlZERyYWdQcmV2aWV3ICopZHJvcEludGVyYWN0aW9uOihVSURyb3BJbnRl
cmFjdGlvbiAqKWludGVyYWN0aW9uIHByZXZpZXdGb3JEcm9wcGluZ0l0ZW06KFVJRHJhZ0l0ZW0g
KilpdGVtIHdpdGhEZWZhdWx0OihVSVRhcmdldGVkRHJhZ1ByZXZpZXcgKilkZWZhdWx0UHJldmll
dwogewogICAgIENHUmVjdCBjYXJldFJlY3QgPSBfcGFnZS0+Y3VycmVudERyYWdDYXJldFJlY3Qo
KTsKICAgICBpZiAoQ0dSZWN0SXNFbXB0eShjYXJldFJlY3QpKQogICAgICAgICByZXR1cm4gbmls
OwogCi1BTExPV19ERVBSRUNBVEVEX0RFQ0xBUkFUSU9OU19CRUdJTgotICAgIC8vIEZJWE1FOiA8
cmRhcjovL3Byb2JsZW0vMzEwNzQzNzY+IFtXSzJdIFBlcmZvcm1pbmcgYW4gZWRpdCBkcmFnIHNo
b3VsZCB0cmFuc2l0aW9uIGZyb20gdGhlIGluaXRpYWwgZHJhZyBwcmV2aWV3IHRvIHRoZSBmaW5h
bCBkcm9wIHByZXZpZXcKLSAgICAvLyBUaGlzIGlzIGJsb2NrZWQgb24gVUlLaXQgc3VwcG9ydCwg
c2luY2Ugd2UgYXJlbid0IGFibGUgdG8gdXBkYXRlIHRoZSB0ZXh0IGNsaXBwaW5nIHJlY3RzIG9m
IGEgVUlUYXJnZXRlZERyYWdQcmV2aWV3IG1pZC1mbGlnaHQuIEZvciBub3csCi0gICAgLy8ganVz
dCB6b29tIHRvIHRoZSBjZW50ZXIgb2YgdGhlIGNhcmV0IHJlY3Qgd2hpbGUgc2hyaW5raW5nIHRo
ZSBkcm9wIHByZXZpZXcuCi0gICAgYXV0byBjYXJldFJlY3RJbldpbmRvd0Nvb3JkaW5hdGVzID0g
W3NlbGYgY29udmVydFJlY3Q6Y2FyZXRSZWN0IHRvVmlldzpbVUlUZXh0RWZmZWN0c1dpbmRvdyBz
aGFyZWRUZXh0RWZmZWN0c1dpbmRvd11dOworICAgIFVJVmlldyAqdGV4dEVmZmVjdHNXaW5kb3cg
PSBzZWxmLnRleHRFZmZlY3RzV2luZG93OworICAgIGF1dG8gY2FyZXRSZWN0SW5XaW5kb3dDb29y
ZGluYXRlcyA9IFtzZWxmIGNvbnZlcnRSZWN0OmNhcmV0UmVjdCB0b1ZpZXc6dGV4dEVmZmVjdHNX
aW5kb3ddOwogICAgIGF1dG8gY2FyZXRDZW50ZXJJbldpbmRvd0Nvb3JkaW5hdGVzID0gQ0dQb2lu
dE1ha2UoQ0dSZWN0R2V0TWlkWChjYXJldFJlY3RJbldpbmRvd0Nvb3JkaW5hdGVzKSwgQ0dSZWN0
R2V0TWlkWShjYXJldFJlY3RJbldpbmRvd0Nvb3JkaW5hdGVzKSk7Ci0gICAgYXV0byB0YXJnZXQg
PSBhZG9wdE5TKFtbVUlEcmFnUHJldmlld1RhcmdldCBhbGxvY10gaW5pdFdpdGhDb250YWluZXI6
W1VJVGV4dEVmZmVjdHNXaW5kb3cgc2hhcmVkVGV4dEVmZmVjdHNXaW5kb3ddIGNlbnRlcjpjYXJl
dENlbnRlckluV2luZG93Q29vcmRpbmF0ZXMgdHJhbnNmb3JtOkNHQWZmaW5lVHJhbnNmb3JtTWFr
ZVNjYWxlKDAsIDApXSk7Ci1BTExPV19ERVBSRUNBVEVEX0RFQ0xBUkFUSU9OU19FTkQKKyAgICBh
dXRvIHRhcmdldFByZXZpZXdDZW50ZXJJbldpbmRvd0Nvb3JkaW5hdGVzID0gQ0dQb2ludE1ha2Uo
Y2FyZXRDZW50ZXJJbldpbmRvd0Nvb3JkaW5hdGVzLnggKyBkZWZhdWx0UHJldmlldy5zaXplLndp
ZHRoIC8gMiwgY2FyZXRDZW50ZXJJbldpbmRvd0Nvb3JkaW5hdGVzLnkgKyBkZWZhdWx0UHJldmll
dy5zaXplLmhlaWdodCAvIDIpOworICAgIGF1dG8gdGFyZ2V0ID0gYWRvcHROUyhbW1VJRHJhZ1By
ZXZpZXdUYXJnZXQgYWxsb2NdIGluaXRXaXRoQ29udGFpbmVyOnRleHRFZmZlY3RzV2luZG93IGNl
bnRlcjp0YXJnZXRQcmV2aWV3Q2VudGVySW5XaW5kb3dDb29yZGluYXRlcyB0cmFuc2Zvcm06Q0dB
ZmZpbmVUcmFuc2Zvcm1JZGVudGl0eV0pOwogICAgIHJldHVybiBbZGVmYXVsdFByZXZpZXcgcmV0
YXJnZXRlZFByZXZpZXdXaXRoVGFyZ2V0OnRhcmdldC5nZXQoKV07CiB9CiAKKy0gKHZvaWQpX2Ry
b3BJbnRlcmFjdGlvbjooVUlEcm9wSW50ZXJhY3Rpb24gKilpbnRlcmFjdGlvbiBkZWxheWVkUHJl
dmlld1Byb3ZpZGVyRm9yRHJvcHBpbmdJdGVtOihVSURyYWdJdGVtICopaXRlbSBwcmV2aWV3UHJv
dmlkZXI6KHZvaWQoXikoVUlUYXJnZXRlZERyYWdQcmV2aWV3ICpwcmV2aWV3KSlwcmV2aWV3UHJv
dmlkZXIKK3sKKyAgICAvLyBGSVhNRTogVGhpcyBkb2Vzbid0IGN1cnJlbnRseSBoYW5kbGUgbXVs
dGlwbGUgaXRlbXMgaW4gYSBkcm9wIHNlc3Npb24uCisgICAgX2RyYWdEcm9wSW50ZXJhY3Rpb25T
dGF0ZS5wcmVwYXJlRm9yRGVsYXllZERyb3BQcmV2aWV3KGl0ZW0sIHByZXZpZXdQcm92aWRlcik7
Cit9CisKIC0gKHZvaWQpZHJvcEludGVyYWN0aW9uOihVSURyb3BJbnRlcmFjdGlvbiAqKWludGVy
YWN0aW9uIHNlc3Npb25EaWRFbmQ6KGlkIDxVSURyb3BTZXNzaW9uPilzZXNzaW9uCiB7CiAgICAg
UkVMRUFTRV9MT0coRHJhZ0FuZERyb3AsICJEcm9wIHNlc3Npb24gZW5kZWQ6ICVwIChwZXJmb3Jt
aW5nIG9wZXJhdGlvbjogJWQsIGJlZ2FuIGRyYWdnaW5nOiAlZCkiLCBzZXNzaW9uLCBfZHJhZ0Ry
b3BJbnRlcmFjdGlvblN0YXRlLmlzUGVyZm9ybWluZ0Ryb3AoKSwgX2RyYWdEcm9wSW50ZXJhY3Rp
b25TdGF0ZS5kaWRCZWdpbkRyYWdnaW5nKCkpOwpAQCAtNzE2Niw2ICs3MjAxLDE1IEBAIEBlbmQK
IAogQGltcGxlbWVudGF0aW9uIFdLQ29udGVudFZpZXcgKFdLVGVzdGluZykKIAorLSAodm9pZClf
ZG9BZnRlclJlY2VpdmluZ0VkaXREcmFnU25hcHNob3RGb3JUZXN0aW5nOihkaXNwYXRjaF9ibG9j
a190KWFjdGlvbgoreworICAgIEFTU0VSVCghX2FjdGlvblRvUGVyZm9ybUFmdGVyUmVjZWl2aW5n
RWRpdERyYWdTbmFwc2hvdCk7CisgICAgaWYgKF93YWl0aW5nRm9yRWRpdERyYWdTbmFwc2hvdCkK
KyAgICAgICAgX2FjdGlvblRvUGVyZm9ybUFmdGVyUmVjZWl2aW5nRWRpdERyYWdTbmFwc2hvdCA9
IGFjdGlvbjsKKyAgICBlbHNlCisgICAgICAgIGFjdGlvbigpOworfQorCiAtIChXS0Zvcm1JbnB1
dENvbnRyb2wgKilmb3JtSW5wdXRDb250cm9sCiB7CiAgICAgaWYgKFtfaW5wdXRQZXJpcGhlcmFs
IGlzS2luZE9mQ2xhc3M6V0tGb3JtSW5wdXRDb250cm9sLmNsYXNzXSkKZGlmZiAtLWdpdCBhL1Nv
dXJjZS9XZWJLaXQvVUlQcm9jZXNzL2lvcy9XZWJQYWdlUHJveHlJT1MubW0gYi9Tb3VyY2UvV2Vi
S2l0L1VJUHJvY2Vzcy9pb3MvV2ViUGFnZVByb3h5SU9TLm1tCmluZGV4IDAzNTg0YjU1MDM4NzNl
YTAyZTE1ZGIzNzdlNTRhNmY4ZTEzZGU2ZDQuLjhlOWJlZDVlZmZkNDNmNzdlOGFlODVlZDg1OGE5
MDE1ZGQxODQ1NjAgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJLaXQvVUlQcm9jZXNzL2lvcy9XZWJQ
YWdlUHJveHlJT1MubW0KKysrIGIvU291cmNlL1dlYktpdC9VSVByb2Nlc3MvaW9zL1dlYlBhZ2VQ
cm94eUlPUy5tbQpAQCAtMTIxOSw5ICsxMjE5LDE5IEBAIHZvaWQgV2ViUGFnZVByb3h5OjpyZXF1
ZXN0QWRkaXRpb25hbEl0ZW1zRm9yRHJhZ1Nlc3Npb24oY29uc3QgSW50UG9pbnQmIGNsaWVudFBv
CiAgICAgICAgIG1fcHJvY2Vzcy0+c2VuZChNZXNzYWdlczo6V2ViUGFnZTo6UmVxdWVzdEFkZGl0
aW9uYWxJdGVtc0ZvckRyYWdTZXNzaW9uKGNsaWVudFBvc2l0aW9uLCBnbG9iYWxQb3NpdGlvbiwg
YWxsb3dlZEFjdGlvbnMpLCBtX3BhZ2VJRCk7CiB9CiAKLXZvaWQgV2ViUGFnZVByb3h5OjpkaWRD
b25jbHVkZUVkaXREcmFnKE9wdGlvbmFsPFRleHRJbmRpY2F0b3JEYXRhPiBkYXRhKQordm9pZCBX
ZWJQYWdlUHJveHk6OndpbGxSZWNlaXZlRWRpdERyYWdTbmFwc2hvdCgpCiB7Ci0gICAgcGFnZUNs
aWVudCgpLmRpZENvbmNsdWRlRWRpdERyYWcoZGF0YSk7CisgICAgcGFnZUNsaWVudCgpLndpbGxS
ZWNlaXZlRWRpdERyYWdTbmFwc2hvdCgpOworfQorCit2b2lkIFdlYlBhZ2VQcm94eTo6ZGlkUmVj
ZWl2ZUVkaXREcmFnU25hcHNob3QoT3B0aW9uYWw8VGV4dEluZGljYXRvckRhdGE+IGRhdGEpCit7
CisgICAgcGFnZUNsaWVudCgpLmRpZFJlY2VpdmVFZGl0RHJhZ1NuYXBzaG90KGRhdGEpOworfQor
Cit2b2lkIFdlYlBhZ2VQcm94eTo6ZGlkQ29uY2x1ZGVEcm9wKCkKK3sKKyAgICBtX3Byb2Nlc3Mt
PnNlbmQoTWVzc2FnZXM6OldlYlBhZ2U6OkRpZENvbmNsdWRlRHJvcCgpLCBtX3BhZ2VJRCk7CiB9
CiAKICNlbmRpZgpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYktpdC9XZWJQcm9jZXNzL1dlYkNvcmVT
dXBwb3J0L1dlYkNocm9tZUNsaWVudC5jcHAgYi9Tb3VyY2UvV2ViS2l0L1dlYlByb2Nlc3MvV2Vi
Q29yZVN1cHBvcnQvV2ViQ2hyb21lQ2xpZW50LmNwcAppbmRleCA0OTYyOTZmNmQ4ODEwNTIzOTI0
NTE2MDEzMDU2NDZiYjZkNmIxY2NhLi4yNzI2YzIzZDJhNGY0ODQ1MTBhYjAxODMyMmU3ZDkwMjc5
YjE0ZjY3IDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViS2l0L1dlYlByb2Nlc3MvV2ViQ29yZVN1cHBv
cnQvV2ViQ2hyb21lQ2xpZW50LmNwcAorKysgYi9Tb3VyY2UvV2ViS2l0L1dlYlByb2Nlc3MvV2Vi
Q29yZVN1cHBvcnQvV2ViQ2hyb21lQ2xpZW50LmNwcApAQCAtNTg3LDYgKzU4NywxMSBAQCBJbnRS
ZWN0IFdlYkNocm9tZUNsaWVudDo6cm9vdFZpZXdUb0FjY2Vzc2liaWxpdHlTY3JlZW4oY29uc3Qg
SW50UmVjdCYgcmVjdCkgY29ucwogICAgIHJldHVybiBtX3BhZ2Uucm9vdFZpZXdUb0FjY2Vzc2li
aWxpdHlTY3JlZW4ocmVjdCk7CiB9CiAKK3ZvaWQgV2ViQ2hyb21lQ2xpZW50OjpkaWRGaW5pc2hM
b2FkaW5nSW1hZ2VGb3JFbGVtZW50KEhUTUxJbWFnZUVsZW1lbnQmIGVsZW1lbnQpCit7CisgICAg
bV9wYWdlLmRpZEZpbmlzaExvYWRpbmdJbWFnZUZvckVsZW1lbnQoZWxlbWVudCk7Cit9CisKIFBs
YXRmb3JtUGFnZUNsaWVudCBXZWJDaHJvbWVDbGllbnQ6OnBsYXRmb3JtUGFnZUNsaWVudCgpIGNv
bnN0CiB7CiAgICAgbm90SW1wbGVtZW50ZWQoKTsKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJLaXQv
V2ViUHJvY2Vzcy9XZWJDb3JlU3VwcG9ydC9XZWJDaHJvbWVDbGllbnQuaCBiL1NvdXJjZS9XZWJL
aXQvV2ViUHJvY2Vzcy9XZWJDb3JlU3VwcG9ydC9XZWJDaHJvbWVDbGllbnQuaAppbmRleCBkZDNi
MjI1NDM1ZDkyNjM0NDE1OTljODA1YzM2MzczY2YyNjI2MWNlLi5iMjg5ZmIyM2ZlNDFhYmJiY2Ex
Y2UxNzJjZThhNGYyNWFjY2Q1ZWMwIDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViS2l0L1dlYlByb2Nl
c3MvV2ViQ29yZVN1cHBvcnQvV2ViQ2hyb21lQ2xpZW50LmgKKysrIGIvU291cmNlL1dlYktpdC9X
ZWJQcm9jZXNzL1dlYkNvcmVTdXBwb3J0L1dlYkNocm9tZUNsaWVudC5oCkBAIC0yOSw2ICsyOSw3
IEBACiAjaW5jbHVkZSA8V2ViQ29yZS9DaHJvbWVDbGllbnQuaD4KIAogbmFtZXNwYWNlIFdlYkNv
cmUgeworY2xhc3MgSFRNTEltYWdlRWxlbWVudDsKIGNsYXNzIFJlZ2lzdHJhYmxlRG9tYWluOwog
ZW51bSBjbGFzcyBTdG9yYWdlQWNjZXNzUHJvbXB0V2FzU2hvd24gOiBib29sOwogZW51bSBjbGFz
cyBTdG9yYWdlQWNjZXNzV2FzR3JhbnRlZCA6IGJvb2w7CkBAIC0xMjEsNiArMTIyLDggQEAgcHJp
dmF0ZToKICAgICBXZWJDb3JlOjpJbnRQb2ludCBhY2Nlc3NpYmlsaXR5U2NyZWVuVG9Sb290Vmll
dyhjb25zdCBXZWJDb3JlOjpJbnRQb2ludCYpIGNvbnN0IGZpbmFsOwogICAgIFdlYkNvcmU6Oklu
dFJlY3Qgcm9vdFZpZXdUb0FjY2Vzc2liaWxpdHlTY3JlZW4oY29uc3QgV2ViQ29yZTo6SW50UmVj
dCYpIGNvbnN0IGZpbmFsOwogCisgICAgdm9pZCBkaWRGaW5pc2hMb2FkaW5nSW1hZ2VGb3JFbGVt
ZW50KFdlYkNvcmU6OkhUTUxJbWFnZUVsZW1lbnQmKSBmaW5hbDsKKwogICAgIFBsYXRmb3JtUGFn
ZUNsaWVudCBwbGF0Zm9ybVBhZ2VDbGllbnQoKSBjb25zdCBmaW5hbDsKICAgICB2b2lkIGNvbnRl
bnRzU2l6ZUNoYW5nZWQoV2ViQ29yZTo6RnJhbWUmLCBjb25zdCBXZWJDb3JlOjpJbnRTaXplJikg
Y29uc3QgZmluYWw7CiAgICAgdm9pZCBpbnRyaW5zaWNDb250ZW50c1NpemVDaGFuZ2VkKGNvbnN0
IFdlYkNvcmU6OkludFNpemUmKSBjb25zdCBmaW5hbDsKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJL
aXQvV2ViUHJvY2Vzcy9XZWJQYWdlL1dlYlBhZ2UuY3BwIGIvU291cmNlL1dlYktpdC9XZWJQcm9j
ZXNzL1dlYlBhZ2UvV2ViUGFnZS5jcHAKaW5kZXggM2JhYWZkMTg1NGNiYzk5NWNhNGU4OTgwM2Uz
YjQ0MTgyM2ViNjE2NS4uMjY2ODJmZjI0N2JiZDQ5ZmFjNDM4YWM4ZjY2YjY1NDdmZGY2NTc0ZCAx
MDA2NDQKLS0tIGEvU291cmNlL1dlYktpdC9XZWJQcm9jZXNzL1dlYlBhZ2UvV2ViUGFnZS5jcHAK
KysrIGIvU291cmNlL1dlYktpdC9XZWJQcm9jZXNzL1dlYlBhZ2UvV2ViUGFnZS5jcHAKQEAgLTY3
NDAsNiArNjc0MCwxNCBAQCB2b2lkIFdlYlBhZ2U6OnVwZGF0ZU1vY2tBY2Nlc3NpYmlsaXR5RWxl
bWVudEFmdGVyQ29tbWl0dGluZ0xvYWQoKQogfQogI2VuZGlmCiAKKyNpZiAhUExBVEZPUk0oSU9T
X0ZBTUlMWSkgfHwgIUVOQUJMRShEUkFHX1NVUFBPUlQpCisKK3ZvaWQgV2ViUGFnZTo6ZGlkRmlu
aXNoTG9hZGluZ0ltYWdlRm9yRWxlbWVudChXZWJDb3JlOjpIVE1MSW1hZ2VFbGVtZW50JikKK3sK
K30KKworI2VuZGlmCisKIH0gLy8gbmFtZXNwYWNlIFdlYktpdAogCiAjdW5kZWYgUkVMRUFTRV9M
T0dfSUZfQUxMT1dFRApkaWZmIC0tZ2l0IGEvU291cmNlL1dlYktpdC9XZWJQcm9jZXNzL1dlYlBh
Z2UvV2ViUGFnZS5oIGIvU291cmNlL1dlYktpdC9XZWJQcm9jZXNzL1dlYlBhZ2UvV2ViUGFnZS5o
CmluZGV4IDg2OGFlOTJmMmZiMzI5MzUxMDExMGJhZWU4Y2NiNjc4MjMxYzMzYWQuLjJhODE0NmI3
NDUwNzczMDJlMjNlNDNlNmE3NjRiMTI2YzllNDFiYmUgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJL
aXQvV2ViUHJvY2Vzcy9XZWJQYWdlL1dlYlBhZ2UuaAorKysgYi9Tb3VyY2UvV2ViS2l0L1dlYlBy
b2Nlc3MvV2ViUGFnZS9XZWJQYWdlLmgKQEAgLTE1NCw2ICsxNTQsNyBAQCBjbGFzcyBGcmFtZTsK
IGNsYXNzIEZyYW1lU2VsZWN0aW9uOwogY2xhc3MgRnJhbWVWaWV3OwogY2xhc3MgR3JhcGhpY3ND
b250ZXh0OworY2xhc3MgSFRNTEltYWdlRWxlbWVudDsKIGNsYXNzIEhUTUxNZW51RWxlbWVudDsK
IGNsYXNzIEhUTUxNZW51SXRlbUVsZW1lbnQ7CiBjbGFzcyBIVE1MUGx1Z0luRWxlbWVudDsKQEAg
LTExMTMsMTAgKzExMTQsMTMgQEAgcHVibGljOgogICAgIHZvaWQgZGlkR2V0TG9hZERlY2lzaW9u
Rm9ySWNvbihib29sIGRlY2lzaW9uLCBDYWxsYmFja0lEIGxvYWRJZGVudGlmaWVyLCBPcHRpb25h
bENhbGxiYWNrSUQpOwogICAgIHZvaWQgc2V0VXNlSWNvbkxvYWRpbmdDbGllbnQoYm9vbCk7CiAK
LSNpZiBFTkFCTEUoREFUQV9JTlRFUkFDVElPTikKKyNpZiBQTEFURk9STShJT1NfRkFNSUxZKSAm
JiBFTkFCTEUoRFJBR19TVVBQT1JUKQogICAgIHZvaWQgZGlkQ29uY2x1ZGVFZGl0RHJhZygpOwor
ICAgIHZvaWQgZGlkQ29uY2x1ZGVEcm9wKCk7CiAjZW5kaWYKIAorICAgIHZvaWQgZGlkRmluaXNo
TG9hZGluZ0ltYWdlRm9yRWxlbWVudChXZWJDb3JlOjpIVE1MSW1hZ2VFbGVtZW50Jik7CisKICAg
ICBXZWJVUkxTY2hlbWVIYW5kbGVyUHJveHkqIHVybFNjaGVtZUhhbmRsZXJGb3JTY2hlbWUoY29u
c3QgU3RyaW5nJik7CiAgICAgdm9pZCBzdG9wQWxsVVJMU2NoZW1lVGFza3MoKTsKIApAQCAtMTI1
OCw2ICsxMjYyLDcgQEAgcHJpdmF0ZToKICNpZiBQTEFURk9STShJT1NfRkFNSUxZKSAmJiBFTkFC
TEUoREFUQV9JTlRFUkFDVElPTikKICAgICB2b2lkIHJlcXVlc3REcmFnU3RhcnQoY29uc3QgV2Vi
Q29yZTo6SW50UG9pbnQmIGNsaWVudFBvc2l0aW9uLCBjb25zdCBXZWJDb3JlOjpJbnRQb2ludCYg
Z2xvYmFsUG9zaXRpb24sIHVpbnQ2NF90IGFsbG93ZWRBY3Rpb25zKTsKICAgICB2b2lkIHJlcXVl
c3RBZGRpdGlvbmFsSXRlbXNGb3JEcmFnU2Vzc2lvbihjb25zdCBXZWJDb3JlOjpJbnRQb2ludCYg
Y2xpZW50UG9zaXRpb24sIGNvbnN0IFdlYkNvcmU6OkludFBvaW50JiBnbG9iYWxQb3NpdGlvbiwg
dWludDY0X3QgYWxsb3dlZEFjdGlvbnMpOworICAgIHZvaWQgY29tcHV0ZUFuZFNlbmRFZGl0RHJh
Z1NuYXBzaG90KCk7CiAjZW5kaWYKIAogI2lmICFQTEFURk9STShDT0NPQSkgJiYgIVBMQVRGT1JN
KFdQRSkKQEAgLTE3NzAsNiArMTc3NSwxMCBAQCBwcml2YXRlOgogICAgIFdlYkNvcmU6OkRyYWdT
b3VyY2VBY3Rpb24gbV9hbGxvd2VkRHJhZ1NvdXJjZUFjdGlvbnMgeyBXZWJDb3JlOjpEcmFnU291
cmNlQWN0aW9uQW55IH07CiAjZW5kaWYKIAorI2lmIEVOQUJMRShEUkFHX1NVUFBPUlQpICYmIFBM
QVRGT1JNKElPU19GQU1JTFkpCisgICAgSGFzaFNldDxSZWZQdHI8V2ViQ29yZTo6SFRNTEltYWdl
RWxlbWVudD4+IG1fcGVuZGluZ0ltYWdlRWxlbWVudHNGb3JEcm9wU25hcHNob3Q7CisjZW5kaWYK
KwogICAgIGJvb2wgbV9jYWNoZWRNYWluRnJhbWVJc1Bpbm5lZFRvTGVmdFNpZGUgeyB0cnVlIH07
CiAgICAgYm9vbCBtX2NhY2hlZE1haW5GcmFtZUlzUGlubmVkVG9SaWdodFNpZGUgeyB0cnVlIH07
CiAgICAgYm9vbCBtX2NhY2hlZE1haW5GcmFtZUlzUGlubmVkVG9Ub3BTaWRlIHsgdHJ1ZSB9Owpk
aWZmIC0tZ2l0IGEvU291cmNlL1dlYktpdC9XZWJQcm9jZXNzL1dlYlBhZ2UvV2ViUGFnZS5tZXNz
YWdlcy5pbiBiL1NvdXJjZS9XZWJLaXQvV2ViUHJvY2Vzcy9XZWJQYWdlL1dlYlBhZ2UubWVzc2Fn
ZXMuaW4KaW5kZXggMThmMDZmODg0ZTE5Nzc0ZmZjYTFkNzgxYjY4ODA5ZmZlZTE3MGQwOC4uZjdm
ZWIzYTVhMzNkYzhjYTk3YjA2N2JmYjRmZmY5YTVhZmE0YWFjYSAxMDA2NDQKLS0tIGEvU291cmNl
L1dlYktpdC9XZWJQcm9jZXNzL1dlYlBhZ2UvV2ViUGFnZS5tZXNzYWdlcy5pbgorKysgYi9Tb3Vy
Y2UvV2ViS2l0L1dlYlByb2Nlc3MvV2ViUGFnZS9XZWJQYWdlLm1lc3NhZ2VzLmluCkBAIC0zMDMs
OSArMzAzLDEwIEBAIEdlbmVyYXRlU3ludGhldGljRWRpdGluZ0NvbW1hbmQoZW51bTp1aW50OF90
IFdlYktpdDo6U3ludGhldGljRWRpdGluZ0NvbW1hbmRUeXBlCiAgICAgRHJhZ0NhbmNlbGxlZCgp
CiAjZW5kaWYKIAotI2lmIEVOQUJMRShEQVRBX0lOVEVSQUNUSU9OKQorI2lmIFBMQVRGT1JNKElP
U19GQU1JTFkpICYmIEVOQUJMRShEUkFHX1NVUFBPUlQpCiAgICAgUmVxdWVzdERyYWdTdGFydChX
ZWJDb3JlOjpJbnRQb2ludCBjbGllbnRQb3NpdGlvbiwgV2ViQ29yZTo6SW50UG9pbnQgZ2xvYmFs
UG9zaXRpb24sIHVpbnQ2NF90IGFsbG93ZWRBY3Rpb25zKQogICAgIFJlcXVlc3RBZGRpdGlvbmFs
SXRlbXNGb3JEcmFnU2Vzc2lvbihXZWJDb3JlOjpJbnRQb2ludCBjbGllbnRQb3NpdGlvbiwgV2Vi
Q29yZTo6SW50UG9pbnQgZ2xvYmFsUG9zaXRpb24sIHVpbnQ2NF90IGFsbG93ZWRBY3Rpb25zKQor
ICAgIERpZENvbmNsdWRlRHJvcCgpCiAjZW5kaWYKIAogICAgICMgUG9wdXAgbWVudS4KZGlmZiAt
LWdpdCBhL1NvdXJjZS9XZWJLaXQvV2ViUHJvY2Vzcy9XZWJQYWdlL2lvcy9XZWJQYWdlSU9TLm1t
IGIvU291cmNlL1dlYktpdC9XZWJQcm9jZXNzL1dlYlBhZ2UvaW9zL1dlYlBhZ2VJT1MubW0KaW5k
ZXggYzExOWQ0ZjEyNDdlZjY1YzZiODhkYWNlZGNjYjdlODFlNzFlMmZiMC4uOWJhZTdkNDVhNDJl
OWFlMWZlMGRmNzA3MzdjZmJkNGFiZDI2M2U2NyAxMDA2NDQKLS0tIGEvU291cmNlL1dlYktpdC9X
ZWJQcm9jZXNzL1dlYlBhZ2UvaW9zL1dlYlBhZ2VJT1MubW0KKysrIGIvU291cmNlL1dlYktpdC9X
ZWJQcm9jZXNzL1dlYlBhZ2UvaW9zL1dlYlBhZ2VJT1MubW0KQEAgLTgyNSwxOSArODI1LDYzIEBA
IHZvaWQgV2ViUGFnZTo6cmVxdWVzdEFkZGl0aW9uYWxJdGVtc0ZvckRyYWdTZXNzaW9uKGNvbnN0
IEludFBvaW50JiBjbGllbnRQb3NpdGlvCiAgICAgc2VuZChNZXNzYWdlczo6V2ViUGFnZVByb3h5
OjpEaWRIYW5kbGVBZGRpdGlvbmFsRHJhZ0l0ZW1zUmVxdWVzdChkaWRIYW5kbGVEcmFnKSk7CiB9
CiAKK3ZvaWQgV2ViUGFnZTo6ZGlkQ29uY2x1ZGVEcm9wKCkKK3sKKyAgICBtX3BlbmRpbmdJbWFn
ZUVsZW1lbnRzRm9yRHJvcFNuYXBzaG90LmNsZWFyKCk7Cit9CisKIHZvaWQgV2ViUGFnZTo6ZGlk
Q29uY2x1ZGVFZGl0RHJhZygpCiB7Ci0gICAgT3B0aW9uYWw8VGV4dEluZGljYXRvckRhdGE+IHRl
eHRJbmRpY2F0b3JEYXRhOworICAgIHNlbmQoTWVzc2FnZXM6OldlYlBhZ2VQcm94eTo6V2lsbFJl
Y2VpdmVFZGl0RHJhZ1NuYXBzaG90KCkpOworCisgICAgbGF5b3V0SWZOZWVkZWQoKTsKKworICAg
IG1fcGVuZGluZ0ltYWdlRWxlbWVudHNGb3JEcm9wU25hcHNob3QuY2xlYXIoKTsKIAorICAgIGJv
b2wgd2FpdGluZ0ZvckFueUltYWdlVG9Mb2FkID0gZmFsc2U7CisgICAgYXV0byYgZnJhbWUgPSBt
X3BhZ2UtPmZvY3VzQ29udHJvbGxlcigpLmZvY3VzZWRPck1haW5GcmFtZSgpOworICAgIGlmIChh
dXRvIHJhbmdlID0gZnJhbWUuc2VsZWN0aW9uKCkuc2VsZWN0aW9uKCkudG9Ob3JtYWxpemVkUmFu
Z2UoKSkgeworICAgICAgICBmb3IgKFRleHRJdGVyYXRvciBpdGVyYXRvcihyYW5nZS5nZXQoKSk7
ICFpdGVyYXRvci5hdEVuZCgpOyBpdGVyYXRvci5hZHZhbmNlKCkpIHsKKyAgICAgICAgICAgIGF1
dG8qIG5vZGUgPSBpdGVyYXRvci5ub2RlKCk7CisgICAgICAgICAgICBpZiAoIWlzPEhUTUxJbWFn
ZUVsZW1lbnQ+KG5vZGUpKQorICAgICAgICAgICAgICAgIGNvbnRpbnVlOworCisgICAgICAgICAg
ICBhdXRvJiBpbWFnZUVsZW1lbnQgPSBkb3duY2FzdDxIVE1MSW1hZ2VFbGVtZW50Pigqbm9kZSk7
CisgICAgICAgICAgICBhdXRvKiBjYWNoZWRJbWFnZSA9IGltYWdlRWxlbWVudC5jYWNoZWRJbWFn
ZSgpOworICAgICAgICAgICAgaWYgKGNhY2hlZEltYWdlICYmIGNhY2hlZEltYWdlLT5pbWFnZSgp
ICYmIGNhY2hlZEltYWdlLT5pbWFnZSgpLT5pc051bGwoKSkgeworICAgICAgICAgICAgICAgIG1f
cGVuZGluZ0ltYWdlRWxlbWVudHNGb3JEcm9wU25hcHNob3QuYWRkKCZpbWFnZUVsZW1lbnQpOwor
ICAgICAgICAgICAgICAgIHdhaXRpbmdGb3JBbnlJbWFnZVRvTG9hZCA9IHRydWU7CisgICAgICAg
ICAgICB9CisgICAgICAgIH0KKyAgICB9CisKKyAgICBpZiAoIXdhaXRpbmdGb3JBbnlJbWFnZVRv
TG9hZCkKKyAgICAgICAgY29tcHV0ZUFuZFNlbmRFZGl0RHJhZ1NuYXBzaG90KCk7Cit9CisKK3Zv
aWQgV2ViUGFnZTo6ZGlkRmluaXNoTG9hZGluZ0ltYWdlRm9yRWxlbWVudChXZWJDb3JlOjpIVE1M
SW1hZ2VFbGVtZW50JiBlbGVtZW50KQoreworICAgIGlmIChtX3BlbmRpbmdJbWFnZUVsZW1lbnRz
Rm9yRHJvcFNuYXBzaG90LmlzRW1wdHkoKSkKKyAgICAgICAgcmV0dXJuOworCisgICAgbV9wZW5k
aW5nSW1hZ2VFbGVtZW50c0ZvckRyb3BTbmFwc2hvdC5yZW1vdmUoJmVsZW1lbnQpOworCisgICAg
aWYgKG1fcGVuZGluZ0ltYWdlRWxlbWVudHNGb3JEcm9wU25hcHNob3QuaXNFbXB0eSgpKQorICAg
ICAgICBjb21wdXRlQW5kU2VuZEVkaXREcmFnU25hcHNob3QoKTsKK30KKwordm9pZCBXZWJQYWdl
Ojpjb21wdXRlQW5kU2VuZEVkaXREcmFnU25hcHNob3QoKQoreworICAgIE9wdGlvbmFsPFRleHRJ
bmRpY2F0b3JEYXRhPiB0ZXh0SW5kaWNhdG9yRGF0YTsKICAgICBzdGF0aWMgYXV0byBkZWZhdWx0
VGV4dEluZGljYXRvck9wdGlvbnNGb3JFZGl0RHJhZyA9IFRleHRJbmRpY2F0b3JPcHRpb25JbmNs
dWRlU25hcHNob3RPZkFsbFZpc2libGVDb250ZW50V2l0aG91dFNlbGVjdGlvbiB8IFRleHRJbmRp
Y2F0b3JPcHRpb25FeHBhbmRDbGlwQmV5b25kVmlzaWJsZVJlY3QgfCBUZXh0SW5kaWNhdG9yT3B0
aW9uUGFpbnRBbGxDb250ZW50IHwgVGV4dEluZGljYXRvck9wdGlvbkluY2x1ZGVNYXJnaW5JZlJh
bmdlTWF0Y2hlc1NlbGVjdGlvbiB8IFRleHRJbmRpY2F0b3JPcHRpb25QYWludEJhY2tncm91bmRz
IHwgVGV4dEluZGljYXRvck9wdGlvbkNvbXB1dGVFc3RpbWF0ZWRCYWNrZ3JvdW5kQ29sb3J8IFRl
eHRJbmRpY2F0b3JPcHRpb25Vc2VTZWxlY3Rpb25SZWN0Rm9yU2l6aW5nIHwgVGV4dEluZGljYXRv
ck9wdGlvbkluY2x1ZGVTbmFwc2hvdFdpdGhTZWxlY3Rpb25IaWdobGlnaHQ7CiAgICAgYXV0byYg
ZnJhbWUgPSBtX3BhZ2UtPmZvY3VzQ29udHJvbGxlcigpLmZvY3VzZWRPck1haW5GcmFtZSgpOwog
ICAgIGlmIChhdXRvIHJhbmdlID0gZnJhbWUuc2VsZWN0aW9uKCkuc2VsZWN0aW9uKCkudG9Ob3Jt
YWxpemVkUmFuZ2UoKSkgewotICAgICAgICBpZiAoYXV0byB0ZXh0SW5kaWNhdG9yID0gVGV4dElu
ZGljYXRvcjo6Y3JlYXRlV2l0aFJhbmdlKCpyYW5nZSwgZGVmYXVsdFRleHRJbmRpY2F0b3JPcHRp
b25zRm9yRWRpdERyYWcsIFRleHRJbmRpY2F0b3JQcmVzZW50YXRpb25UcmFuc2l0aW9uOjpOb25l
LCBGbG9hdFNpemUoKSkpCisgICAgICAgIGlmIChhdXRvIHRleHRJbmRpY2F0b3IgPSBUZXh0SW5k
aWNhdG9yOjpjcmVhdGVXaXRoUmFuZ2UoKnJhbmdlLCBkZWZhdWx0VGV4dEluZGljYXRvck9wdGlv
bnNGb3JFZGl0RHJhZywgVGV4dEluZGljYXRvclByZXNlbnRhdGlvblRyYW5zaXRpb246Ok5vbmUs
IHsgfSkpCiAgICAgICAgICAgICB0ZXh0SW5kaWNhdG9yRGF0YSA9IHRleHRJbmRpY2F0b3ItPmRh
dGEoKTsKICAgICB9Ci0KLSAgICBzZW5kKE1lc3NhZ2VzOjpXZWJQYWdlUHJveHk6OkRpZENvbmNs
dWRlRWRpdERyYWcoV1RGTW92ZSh0ZXh0SW5kaWNhdG9yRGF0YSkpKTsKKyAgICBzZW5kKE1lc3Nh
Z2VzOjpXZWJQYWdlUHJveHk6OkRpZFJlY2VpdmVFZGl0RHJhZ1NuYXBzaG90KFdURk1vdmUodGV4
dEluZGljYXRvckRhdGEpKSk7CiB9CisKICNlbmRpZgogCiB2b2lkIFdlYlBhZ2U6OnNlbmRUYXBI
aWdobGlnaHRGb3JOb2RlSWZOZWNlc3NhcnkodWludDY0X3QgcmVxdWVzdElELCBOb2RlKiBub2Rl
KQpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYktpdExlZ2FjeS9tYWMvV2ViQ29yZVN1cHBvcnQvV2Vi
Q2hyb21lQ2xpZW50LmggYi9Tb3VyY2UvV2ViS2l0TGVnYWN5L21hYy9XZWJDb3JlU3VwcG9ydC9X
ZWJDaHJvbWVDbGllbnQuaAppbmRleCA2NDBmZTU4ZmQxMDQ3OTRiM2M1ODNlNjU5YWI2MWFjZGYx
N2MyZTIwLi43ZTBhNjI1OGFjMDJhODdjYTljMTBjZTRhOWY4NWNmNDMyNzU5OTk2IDEwMDY0NAot
LS0gYS9Tb3VyY2UvV2ViS2l0TGVnYWN5L21hYy9XZWJDb3JlU3VwcG9ydC9XZWJDaHJvbWVDbGll
bnQuaAorKysgYi9Tb3VyY2UvV2ViS2l0TGVnYWN5L21hYy9XZWJDb3JlU3VwcG9ydC9XZWJDaHJv
bWVDbGllbnQuaApAQCAtMzEsNiArMzEsMTAgQEAKICNpbXBvcnQgPFdlYkNvcmUvRm9jdXNEaXJl
Y3Rpb24uaD4KICNpbXBvcnQgPHd0Zi9Gb3J3YXJkLmg+CiAKK25hbWVzcGFjZSBXZWJDb3JlIHsK
K2NsYXNzIEhUTUxJbWFnZUVsZW1lbnQ7Cit9CisKIEBjbGFzcyBXZWJWaWV3OwogCiAvLyBGSVhN
RTogVGhpcyBjbGFzcyBpcyB1c2VkIGFzIGEgY29uY3JldGUgY2xhc3Mgb24gTWFjLCBidXQgb24g
aU9TIHRoaXMgaXMgYW4gYWJzdHJhY3QKQEAgLTEwMiw2ICsxMDYsOCBAQCBwcml2YXRlOgogICAg
IFdlYkNvcmU6OkludFBvaW50IGFjY2Vzc2liaWxpdHlTY3JlZW5Ub1Jvb3RWaWV3KGNvbnN0IFdl
YkNvcmU6OkludFBvaW50JikgY29uc3QgZmluYWw7CiAgICAgV2ViQ29yZTo6SW50UmVjdCByb290
Vmlld1RvQWNjZXNzaWJpbGl0eVNjcmVlbihjb25zdCBXZWJDb3JlOjpJbnRSZWN0JikgY29uc3Qg
ZmluYWw7CiAKKyAgICB2b2lkIGRpZEZpbmlzaExvYWRpbmdJbWFnZUZvckVsZW1lbnQoV2ViQ29y
ZTo6SFRNTEltYWdlRWxlbWVudCYpIGZpbmFsOworCiAgICAgUGxhdGZvcm1QYWdlQ2xpZW50IHBs
YXRmb3JtUGFnZUNsaWVudCgpIGNvbnN0IGZpbmFsOwogICAgIHZvaWQgY29udGVudHNTaXplQ2hh
bmdlZChXZWJDb3JlOjpGcmFtZSYsIGNvbnN0IFdlYkNvcmU6OkludFNpemUmKSBjb25zdCBmaW5h
bDsKICAgICB2b2lkIGludHJpbnNpY0NvbnRlbnRzU2l6ZUNoYW5nZWQoY29uc3QgV2ViQ29yZTo6
SW50U2l6ZSYpIGNvbnN0IGZpbmFsIHsgfQpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYktpdExlZ2Fj
eS9tYWMvV2ViQ29yZVN1cHBvcnQvV2ViQ2hyb21lQ2xpZW50Lm1tIGIvU291cmNlL1dlYktpdExl
Z2FjeS9tYWMvV2ViQ29yZVN1cHBvcnQvV2ViQ2hyb21lQ2xpZW50Lm1tCmluZGV4IGFhYzg3MTU2
NjRmMmNiZTdjZTcwZGYyNzQ2M2VjNGYxNzVkODJjNzkuLmFiZTJmYjMyOThkMTZkZTQxNGNiZjkz
YzhiZWQ4YmVjMThiMjEwN2UgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJLaXRMZWdhY3kvbWFjL1dl
YkNvcmVTdXBwb3J0L1dlYkNocm9tZUNsaWVudC5tbQorKysgYi9Tb3VyY2UvV2ViS2l0TGVnYWN5
L21hYy9XZWJDb3JlU3VwcG9ydC9XZWJDaHJvbWVDbGllbnQubW0KQEAgLTYxMCw2ICs2MTAsMTAg
QEAgSW50UmVjdCBXZWJDaHJvbWVDbGllbnQ6OnJvb3RWaWV3VG9BY2Nlc3NpYmlsaXR5U2NyZWVu
KGNvbnN0IEludFJlY3QmIHIpIGNvbnN0CiAgICAgcmV0dXJuIHJvb3RWaWV3VG9TY3JlZW4ocik7
CiB9CiAKK3ZvaWQgV2ViQ2hyb21lQ2xpZW50OjpkaWRGaW5pc2hMb2FkaW5nSW1hZ2VGb3JFbGVt
ZW50KEhUTUxJbWFnZUVsZW1lbnQmKQoreworfQorCiBQbGF0Zm9ybVBhZ2VDbGllbnQgV2ViQ2hy
b21lQ2xpZW50OjpwbGF0Zm9ybVBhZ2VDbGllbnQoKSBjb25zdAogewogICAgIHJldHVybiAwOwpk
aWZmIC0tZ2l0IGEvU291cmNlL1dlYktpdExlZ2FjeS93aW4vV2ViQ29yZVN1cHBvcnQvV2ViQ2hy
b21lQ2xpZW50LmNwcCBiL1NvdXJjZS9XZWJLaXRMZWdhY3kvd2luL1dlYkNvcmVTdXBwb3J0L1dl
YkNocm9tZUNsaWVudC5jcHAKaW5kZXggOTM3ZWY2OTRiNzQyYzUwZTZhYTAxMzBmNjMwMGI0MDk2
NzhmZjJhMi4uNGE0OWI5NGJiYTU4ZDBjNTQ2MzMyOWMzZjZlZjIzZTg0ODhiN2FmMyAxMDA2NDQK
LS0tIGEvU291cmNlL1dlYktpdExlZ2FjeS93aW4vV2ViQ29yZVN1cHBvcnQvV2ViQ2hyb21lQ2xp
ZW50LmNwcAorKysgYi9Tb3VyY2UvV2ViS2l0TGVnYWN5L3dpbi9XZWJDb3JlU3VwcG9ydC9XZWJD
aHJvbWVDbGllbnQuY3BwCkBAIC03MDMsNiArNzAzLDEwIEBAIFJlZlB0cjxJY29uPiBXZWJDaHJv
bWVDbGllbnQ6OmNyZWF0ZUljb25Gb3JGaWxlcyhjb25zdCBWZWN0b3I8U3RyaW5nPiYgZmlsZW5h
bWVzCiAgICAgcmV0dXJuIEljb246OmNyZWF0ZUljb25Gb3JGaWxlcyhmaWxlbmFtZXMpOwogfQog
Cit2b2lkIFdlYkNocm9tZUNsaWVudDo6ZGlkRmluaXNoTG9hZGluZ0ltYWdlRm9yRWxlbWVudChX
ZWJDb3JlOjpIVE1MSW1hZ2VFbGVtZW50JikKK3sKK30KKwogdm9pZCBXZWJDaHJvbWVDbGllbnQ6
OnNldEN1cnNvcihjb25zdCBDdXJzb3ImIGN1cnNvcikKIHsKICAgICBpZiAoIWN1cnNvci5wbGF0
Zm9ybUN1cnNvcigpKQpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYktpdExlZ2FjeS93aW4vV2ViQ29y
ZVN1cHBvcnQvV2ViQ2hyb21lQ2xpZW50LmggYi9Tb3VyY2UvV2ViS2l0TGVnYWN5L3dpbi9XZWJD
b3JlU3VwcG9ydC9XZWJDaHJvbWVDbGllbnQuaAppbmRleCBhZWYxNjdhNWRlMGU3MjE0MzQ0MzZj
MDVkMzI0OTU2YTYyMDBhNzc2Li40MWQ1ZjA2YWVhY2I3ZTE0MTdkNGI3MDI0MDA2MGJiZTU3ZjY5
MzBmIDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViS2l0TGVnYWN5L3dpbi9XZWJDb3JlU3VwcG9ydC9X
ZWJDaHJvbWVDbGllbnQuaAorKysgYi9Tb3VyY2UvV2ViS2l0TGVnYWN5L3dpbi9XZWJDb3JlU3Vw
cG9ydC9XZWJDaHJvbWVDbGllbnQuaApAQCAtMTcyLDYgKzE3Miw4IEBAIHB1YmxpYzoKIAogICAg
IFJlZlB0cjxXZWJDb3JlOjpJY29uPiBjcmVhdGVJY29uRm9yRmlsZXMoY29uc3QgVmVjdG9yPFN0
cmluZz4mKSBmaW5hbDsKIAorICAgIHZvaWQgZGlkRmluaXNoTG9hZGluZ0ltYWdlRm9yRWxlbWVu
dChXZWJDb3JlOjpIVE1MSW1hZ2VFbGVtZW50JikgZmluYWw7CisKIHByaXZhdGU6CiAgICAgQ09N
UHRyPElXZWJVSURlbGVnYXRlPiB1aURlbGVnYXRlKCk7CiAKZGlmZiAtLWdpdCBhL1Rvb2xzL0No
YW5nZUxvZyBiL1Rvb2xzL0NoYW5nZUxvZwppbmRleCBlODI0MjYwN2JkYjJkMWY0YThkZDAzODdh
ZWQ4YjRmNGYxZTk5NDQxLi5jNTk4ZjA1NDQ3MjQyYzE3ZmE1ZjcyNmU1OTQ2ZGM2NDgxYjA5OTE2
IDEwMDY0NAotLS0gYS9Ub29scy9DaGFuZ2VMb2cKKysrIGIvVG9vbHMvQ2hhbmdlTG9nCkBAIC0x
LDMgKzEsNDEgQEAKKzIwMTktMDUtMjYgIFdlbnNvbiBIc2llaCAgPHdlbnNvbl9oc2llaEBhcHBs
ZS5jb20+CisKKyAgICAgICAgW2lPU10gRHJvcHBlZCB0ZXh0LCBhdHRhY2htZW50cywgYW5kIGlt
YWdlcyBzaG91bGQgYW5pbWF0ZSBpbnRvIHBsYWNlCisgICAgICAgIGh0dHBzOi8vYnVncy53ZWJr
aXQub3JnL3Nob3dfYnVnLmNnaT9pZD0xOTgyNDMKKyAgICAgICAgPHJkYXI6Ly9wcm9ibGVtLzM1
MjA1MzczPgorCisgICAgICAgIFJldmlld2VkIGJ5IFRpbSBIb3J0b24uCisKKyAgICAgICAgQWRq
dXN0cyB0aGUgaU9TIGRyYWdnaW5nIHNpbXVsYXRvciwgYW5kIGFkZHMgYSBuZXcgQVBJIHRlc3Qu
IFNlZSBiZWxvdyBmb3IgbW9yZSBkZXRhaWwuCisKKyAgICAgICAgKiBUZXN0V2ViS2l0QVBJL1Rl
c3RzL2lvcy9EcmFnQW5kRHJvcFRlc3RzSU9TLm1tOgorICAgICAgICAoVGVzdFdlYktpdEFQSTo6
aXNDb21wbGV0ZWx5V2hpdGUpOgorICAgICAgICAoVGVzdFdlYktpdEFQSTo6VEVTVCk6CisKKyAg
ICAgICAgQWRkIGEgdGVzdCB0aGF0IGRyYWdzIGFuZCBkcm9wcyBhbiBpbWFnZSBpbnRvIGEgY29u
dGVudGVkaXRhYmxlIGVsZW1lbnQsIGFuZCB0aGVuIG9ic2VydmVzIHRoZSByZXN1bHRpbmcKKyAg
ICAgICAgVUlUYXJnZXRlZERyYWdQcmV2aWV3cyB1cG9uIGRyb3AuCisKKyAgICAgICAgKiBUZXN0
V2ViS2l0QVBJL2NvY29hL0RyYWdBbmREcm9wU2ltdWxhdG9yLmg6CisgICAgICAgICogVGVzdFdl
YktpdEFQSS9pb3MvRHJhZ0FuZERyb3BTaW11bGF0b3JJT1MubW06CisgICAgICAgICgtW0RyYWdB
bmREcm9wU2ltdWxhdG9yIF9yZXNldFNpbXVsYXRlZFN0YXRlXSk6CisgICAgICAgICgtW0RyYWdB
bmREcm9wU2ltdWxhdG9yIHJ1bkZyb206dG86YWRkaXRpb25hbEl0ZW1SZXF1ZXN0TG9jYXRpb25z
Ol0pOgorICAgICAgICAoLVtEcmFnQW5kRHJvcFNpbXVsYXRvciBfY29uY2x1ZGVEcm9wQW5kUGVy
Zm9ybU9wZXJhdGlvbklmTmVjZXNzYXJ5XSk6CisKKyAgICAgICAgVGVhY2ggdGhlIGlPUyB2ZXJz
aW9uIG9mIERyYWdBbmREcm9wU2ltdWxhdG9yIHRvIGludm9rZSAtZHJvcEludGVyYWN0aW9uOmNv
bmNsdWRlRHJvcDogb24gdGhlIGRyb3AgaW50ZXJhY3Rpb24KKyAgICAgICAgZGVsZWdhdGUgd2hl
biB0aGUgZHJvcCBmaW5pc2hlcy4gVGhpcyBhZGRpdGlvbmFsbHkgdXNlcyBfZG9BZnRlclJlY2Vp
dmluZ0VkaXREcmFnU25hcHNob3RGb3JUZXN0aW5nOiB0byBkZWZlcgorICAgICAgICB0aGUgZW5k
IG9mIHRoZSBzaW11bGF0ZWQgZHJhZyBhbmQgZHJvcCB1bnRpbCBhZnRlciBkcmFnIHByZXZpZXdz
IGhhdmUgYmVlbiByZWNlaXZlZCBkdXJpbmcgYW4gZWRpdCBkcmFnLgorCisgICAgICAgICgtW0Ry
YWdBbmREcm9wU2ltdWxhdG9yIGRyb3BQcmV2aWV3c10pOgorICAgICAgICAoLVtEcmFnQW5kRHJv
cFNpbXVsYXRvciBkZWxheWVkRHJvcFByZXZpZXdzXSk6CisKKyAgICAgICAgSGF2ZSB0aGUgZHJh
ZyBhbmQgZHJvcCBzaW11bGF0b3IgcmVtZW1iZXIgd2hpY2ggcHJldmlld3Mgd2VyZSByZXR1cm5l
ZCBieSB0aGUgZGVsZWdhdGUgb24gZHJvcCwgYXMgd2VsbCBhcyB3aGljaAorICAgICAgICBwcmV2
aWV3cyB3ZXJlIHByb3ZpZGVkIGFzeW5jaHJvbm91c2x5LgorCisgICAgICAgICgtW0RyYWdBbmRE
cm9wU2ltdWxhdG9yIF93ZWJWaWV3OmRhdGFJbnRlcmFjdGlvbk9wZXJhdGlvbldhc0hhbmRsZWQ6
Zm9yU2Vzc2lvbjppdGVtUHJvdmlkZXJzOl0pOgorICAgICAgICAqIFRlc3RXZWJLaXRBUEkvaW9z
L1VJS2l0U1BJLmg6CisKKyAgICAgICAgU3RhZ2UgdGhlIG5ldyBwcml2YXRlIGRyb3AgaW50ZXJh
Y3RvbiBkZWxlZ2F0ZSBtZXRob2QuCisKIDIwMTktMDUtMjUgIFNpbW9uIEZyYXNlciAgPHNpbW9u
LmZyYXNlckBhcHBsZS5jb20+CiAKICAgICAgICAgTW9iaWxlTWluaUJyb3dzZXI6IEFkZCBpUGFk
IHN1cHBvcnQsIGFuZCBhbGxvdyBpbnNlY3VyZSBsb2FkcwpkaWZmIC0tZ2l0IGEvVG9vbHMvVGVz
dFdlYktpdEFQSS9UZXN0cy9pb3MvRHJhZ0FuZERyb3BUZXN0c0lPUy5tbSBiL1Rvb2xzL1Rlc3RX
ZWJLaXRBUEkvVGVzdHMvaW9zL0RyYWdBbmREcm9wVGVzdHNJT1MubW0KaW5kZXggMjE5MzZiZDYz
MDE1ZGFhZmQ4M2YwMTdiZTk0YzA5NDIyZDAyYmVhZi4uZjFjYzI0MGU1MzljODE3ZjM4OGMzMWFm
ZDFlOTgxODQ2YjNlNTM3MyAxMDA2NDQKLS0tIGEvVG9vbHMvVGVzdFdlYktpdEFQSS9UZXN0cy9p
b3MvRHJhZ0FuZERyb3BUZXN0c0lPUy5tbQorKysgYi9Ub29scy9UZXN0V2ViS2l0QVBJL1Rlc3Rz
L2lvcy9EcmFnQW5kRHJvcFRlc3RzSU9TLm1tCkBAIC0yMTA3LDYgKzIxMDcsNDQgQEAgVEVTVChE
cmFnQW5kRHJvcFRlc3RzLCBEYXRhVHJhbnNmZXJTYW5pdGl6ZUhUTUwpCiAgICAgVGVzdFdlYktp
dEFQSTo6VXRpbDo6cnVuKCZkb25lKTsKIH0KIAorc3RhdGljIEJPT0wgaXNDb21wbGV0ZWx5V2hp
dGUoVUlJbWFnZSAqaW1hZ2UpCit7CisgICAgYXV0byBkYXRhID0gYWRvcHRDRihDR0RhdGFQcm92
aWRlckNvcHlEYXRhKENHSW1hZ2VHZXREYXRhUHJvdmlkZXIoaW1hZ2UuQ0dJbWFnZSkpKTsKKyAg
ICBhdXRvKiBkYXRhUHRyID0gQ0ZEYXRhR2V0Qnl0ZVB0cihkYXRhLmdldCgpKTsKKyAgICBpbnQg
aW1hZ2VXaWR0aCA9IGltYWdlLnNpemUud2lkdGg7CisgICAgZm9yIChpbnQgcm93ID0gMDsgcm93
IDwgaW1hZ2Uuc2l6ZS5oZWlnaHQ7ICsrcm93KSB7CisgICAgICAgIGZvciAoaW50IGNvbHVtbiA9
IDA7IGNvbHVtbiA8IGltYWdlV2lkdGg7ICsrY29sdW1uKSB7CisgICAgICAgICAgICBpbnQgcGl4
ZWxPZmZzZXQgPSAoKGltYWdlV2lkdGggKiByb3cpICsgY29sdW1uKSAqIDQ7CisgICAgICAgICAg
ICBpZiAoZGF0YVB0cltwaXhlbE9mZnNldF0gIT0gMHhGRiB8fCBkYXRhUHRyW3BpeGVsT2Zmc2V0
ICsgMV0gIT0gMHhGRiB8fCBkYXRhUHRyW3BpeGVsT2Zmc2V0ICsgMl0gIT0gMHhGRikKKyAgICAg
ICAgICAgICAgICByZXR1cm4gTk87CisgICAgICAgIH0KKyAgICB9CisgICAgcmV0dXJuIFlFUzsK
K30KKworVEVTVChEcmFnQW5kRHJvcFRlc3RzLCBEcm9wUHJldmlld0ZvckltYWdlSW5FZGl0YWJs
ZUFyZWEpCit7CisgICAgYXV0byB3ZWJWaWV3ID0gYWRvcHROUyhbW1Rlc3RXS1dlYlZpZXcgYWxs
b2NdIGluaXRXaXRoRnJhbWU6Q0dSZWN0TWFrZSgwLCAwLCAzMjAsIDUwMCldKTsKKyAgICBbd2Vi
VmlldyBzeW5jaHJvbm91c2x5TG9hZFRlc3RQYWdlTmFtZWQ6QCJpbWFnZS1hbmQtY29udGVudGVk
aXRhYmxlIl07CisKKyAgICAvLyBFbnN1cmUgdGhhdCB0aGUgcmVzdWx0aW5nIHNuYXBzaG90IG9u
IGRyb3AgY29udGFpbnMgb25seSB0aGUgZHJhZ2dlZCBpbWFnZS4KKyAgICBbd2ViVmlldyBzdHJp
bmdCeUV2YWx1YXRpbmdKYXZhU2NyaXB0OkAiZWRpdG9yLnN0eWxlLmJvcmRlciA9ICdub25lJzsg
ZWRpdG9yLnN0eWxlLm91dGxpbmUgPSAnbm9uZSciXTsKKworICAgIGF1dG8gc2ltdWxhdG9yID0g
YWRvcHROUyhbW0RyYWdBbmREcm9wU2ltdWxhdG9yIGFsbG9jXSBpbml0V2l0aFdlYlZpZXc6d2Vi
Vmlldy5nZXQoKV0pOworICAgIFtzaW11bGF0b3IgcnVuRnJvbTpDR1BvaW50TWFrZSgxMDAsIDUw
KSB0bzpDR1BvaW50TWFrZSgxMDAsIDMwMCldOworCisgICAgTlNBcnJheSAqZHJvcFByZXZpZXdz
ID0gW3NpbXVsYXRvciBkcm9wUHJldmlld3NdOworICAgIE5TQXJyYXkgKmRlbGF5ZWREcm9wUHJl
dmlld3MgPSBbc2ltdWxhdG9yIGRlbGF5ZWREcm9wUHJldmlld3NdOworICAgIEVYUEVDVF9FUSgx
VSwgZHJvcFByZXZpZXdzLmNvdW50KTsKKyAgICBFWFBFQ1RfRVEoMVUsIGRlbGF5ZWREcm9wUHJl
dmlld3MuY291bnQpOworICAgIEVYUEVDVF9FUShVSVRhcmdldGVkRHJhZ1ByZXZpZXcuY2xhc3Ms
IFtkcm9wUHJldmlld3MuZmlyc3RPYmplY3QgY2xhc3NdKTsKKyAgICBFWFBFQ1RfRVEoVUlUYXJn
ZXRlZERyYWdQcmV2aWV3LmNsYXNzLCBbZGVsYXllZERyb3BQcmV2aWV3cy5maXJzdE9iamVjdCBj
bGFzc10pOworCisgICAgVUlUYXJnZXRlZERyYWdQcmV2aWV3ICpmaW5hbFByZXZpZXcgPSAoVUlU
YXJnZXRlZERyYWdQcmV2aWV3ICopZGVsYXllZERyb3BQcmV2aWV3cy5maXJzdE9iamVjdDsKKyAg
ICBFWFBFQ1RfRVEoVUlJbWFnZVZpZXcuY2xhc3MsIGZpbmFsUHJldmlldy52aWV3LmNsYXNzKTsK
KyAgICBFWFBFQ1RfRkFMU0UoaXNDb21wbGV0ZWx5V2hpdGUoWyhVSUltYWdlVmlldyAqKWZpbmFs
UHJldmlldy52aWV3IGltYWdlXSkpOworfQorCiB9IC8vIG5hbWVzcGFjZSBUZXN0V2ViS2l0QVBJ
CiAKICNlbmRpZiAvLyBFTkFCTEUoRFJBR19TVVBQT1JUKSAmJiBQTEFURk9STShJT1NfRkFNSUxZ
KQpkaWZmIC0tZ2l0IGEvVG9vbHMvVGVzdFdlYktpdEFQSS9jb2NvYS9EcmFnQW5kRHJvcFNpbXVs
YXRvci5oIGIvVG9vbHMvVGVzdFdlYktpdEFQSS9jb2NvYS9EcmFnQW5kRHJvcFNpbXVsYXRvci5o
CmluZGV4IDg0N2M3NzZhZGNmZTY4YTcwNDUzY2RmNDg3NjU3YjhmYTM2NDFmZjcuLmM1YmMwZGU3
OTJmOGYzNjM5ZjNjZWIxYzFlMGQ4YWUwMGYxZDU2MDkgMTAwNjQ0Ci0tLSBhL1Rvb2xzL1Rlc3RX
ZWJLaXRBUEkvY29jb2EvRHJhZ0FuZERyb3BTaW11bGF0b3IuaAorKysgYi9Ub29scy9UZXN0V2Vi
S2l0QVBJL2NvY29hL0RyYWdBbmREcm9wU2ltdWxhdG9yLmgKQEAgLTExMSw2ICsxMTEsOCBAQCB0
eXBlZGVmIE5TRGljdGlvbmFyeTxOU051bWJlciAqLCBOU1ZhbHVlICo+ICpQcm9ncmVzc1RvQ0dQ
b2ludFZhbHVlTWFwOwogQHByb3BlcnR5IChub25hdG9taWMsIHJlYWRvbmx5KSBOU0FycmF5ICpm
aW5hbFNlbGVjdGlvblJlY3RzOwogQHByb3BlcnR5IChub25hdG9taWMsIHJlYWRvbmx5KSBDR1Jl
Y3QgbGFzdEtub3duRHJhZ0NhcmV0UmVjdDsKIEBwcm9wZXJ0eSAobm9uYXRvbWljLCByZWFkb25s
eSkgTlNBcnJheTxVSVRhcmdldGVkRHJhZ1ByZXZpZXcgKj4gKmxpZnRQcmV2aWV3czsKK0Bwcm9w
ZXJ0eSAobm9uYXRvbWljLCByZWFkb25seSkgTlNBcnJheSAqZHJvcFByZXZpZXdzOworQHByb3Bl
cnR5IChub25hdG9taWMsIHJlYWRvbmx5KSBOU0FycmF5ICpkZWxheWVkRHJvcFByZXZpZXdzOwog
QHByb3BlcnR5IChub25hdG9taWMsIHJlYWRvbmx5KSBCT09MIHN1cHByZXNzZWRTZWxlY3Rpb25D
b21tYW5kc0R1cmluZ0Ryb3A7CiAKICNlbmRpZiAvLyBQTEFURk9STShJT1NfRkFNSUxZKQpkaWZm
IC0tZ2l0IGEvVG9vbHMvVGVzdFdlYktpdEFQSS9pb3MvRHJhZ0FuZERyb3BTaW11bGF0b3JJT1Mu
bW0gYi9Ub29scy9UZXN0V2ViS2l0QVBJL2lvcy9EcmFnQW5kRHJvcFNpbXVsYXRvcklPUy5tbQpp
bmRleCBmZjAxODdkYzRlNmMwNWY1MWZjOTBhNTE1YWZlNWQ3OGM3MDAyOTNiLi44ZWRhZThjZThh
OTQ4NDM1ODUzMjcyN2U2Njg1ZjAxYTc1MGNmYTIwIDEwMDY0NAotLS0gYS9Ub29scy9UZXN0V2Vi
S2l0QVBJL2lvcy9EcmFnQW5kRHJvcFNpbXVsYXRvcklPUy5tbQorKysgYi9Ub29scy9UZXN0V2Vi
S2l0QVBJL2lvcy9EcmFnQW5kRHJvcFNpbXVsYXRvcklPUy5tbQpAQCAtMzQsNiArMzQsNyBAQAog
CiAjaW1wb3J0IDxVSUtpdC9VSURyYWdJbnRlcmFjdGlvbi5oPgogI2ltcG9ydCA8VUlLaXQvVUlE
cmFnSXRlbS5oPgorI2ltcG9ydCA8VUlLaXQvVUlEcm9wSW50ZXJhY3Rpb24uaD4KICNpbXBvcnQg
PFVJS2l0L1VJSW50ZXJhY3Rpb24uaD4KICNpbXBvcnQgPFdlYktpdC9XS1dlYlZpZXdQcml2YXRl
Lmg+CiAjaW1wb3J0IDxXZWJLaXQvX1dLRm9jdXNlZEVsZW1lbnRJbmZvLmg+CkBAIC0zMTAsNiAr
MzExLDggQEAgQGltcGxlbWVudGF0aW9uIERyYWdBbmREcm9wU2ltdWxhdG9yIHsKICAgICBSZXRh
aW5QdHI8TlNNdXRhYmxlRGljdGlvbmFyeTxOU051bWJlciAqLCBOU1ZhbHVlICo+Pl9yZW1haW5p
bmdBZGRpdGlvbmFsSXRlbVJlcXVlc3RMb2NhdGlvbnNCeVByb2dyZXNzOwogICAgIFJldGFpblB0
cjxOU011dGFibGVBcnJheTxOU1ZhbHVlICo+Pl9xdWV1ZWRBZGRpdGlvbmFsSXRlbVJlcXVlc3RM
b2NhdGlvbnM7CiAgICAgUmV0YWluUHRyPE5TTXV0YWJsZUFycmF5PFVJVGFyZ2V0ZWREcmFnUHJl
dmlldyAqPj4gX2xpZnRQcmV2aWV3czsKKyAgICBSZXRhaW5QdHI8TlNNdXRhYmxlQXJyYXk+IF9k
cm9wUHJldmlld3M7CisgICAgUmV0YWluUHRyPE5TTXV0YWJsZUFycmF5PiBfZGVsYXllZERyb3BQ
cmV2aWV3czsKIAogICAgIFJldGFpblB0cjxOU011dGFibGVBcnJheTxfV0tBdHRhY2htZW50ICo+
PiBfaW5zZXJ0ZWRBdHRhY2htZW50czsKICAgICBSZXRhaW5QdHI8TlNNdXRhYmxlQXJyYXk8X1dL
QXR0YWNobWVudCAqPj4gX3JlbW92ZWRBdHRhY2htZW50czsKQEAgLTMxNyw2ICszMjAsNyBAQCBA
aW1wbGVtZW50YXRpb24gRHJhZ0FuZERyb3BTaW11bGF0b3IgewogICAgIGJvb2wgX2hhc1N0YXJ0
ZWRJbnB1dFNlc3Npb247CiAgICAgZG91YmxlIF9jdXJyZW50UHJvZ3Jlc3M7CiAgICAgYm9vbCBf
aXNEb25lV2l0aEN1cnJlbnRSdW47CisgICAgYm9vbCBfaXNEb25lV2FpdGluZ0ZvckRlbGF5ZWRE
cm9wUHJldmlld3M7CiAgICAgRHJhZ0FuZERyb3BQaGFzZSBfcGhhc2U7CiAKICAgICBCT09MIF9z
dXBwcmVzc2VkU2VsZWN0aW9uQ29tbWFuZHNEdXJpbmdEcm9wOwpAQCAtMzczLDYgKzM3Nyw3IEBA
IC0gKHZvaWQpX3Jlc2V0U2ltdWxhdGVkU3RhdGUKICAgICBfcGhhc2UgPSBEcmFnQW5kRHJvcFBo
YXNlQmVnaW5uaW5nOwogICAgIF9jdXJyZW50UHJvZ3Jlc3MgPSAwOwogICAgIF9pc0RvbmVXaXRo
Q3VycmVudFJ1biA9IGZhbHNlOworICAgIF9pc0RvbmVXYWl0aW5nRm9yRGVsYXllZERyb3BQcmV2
aWV3cyA9IHRydWU7CiAgICAgX29ic2VydmVkRXZlbnROYW1lcyA9IGFkb3B0TlMoW1tOU011dGFi
bGVBcnJheSBhbGxvY10gaW5pdF0pOwogICAgIF9pbnNlcnRlZEF0dGFjaG1lbnRzID0gYWRvcHRO
UyhbW05TTXV0YWJsZUFycmF5IGFsbG9jXSBpbml0XSk7CiAgICAgX3JlbW92ZWRBdHRhY2htZW50
cyA9IGFkb3B0TlMoW1tOU011dGFibGVBcnJheSBhbGxvY10gaW5pdF0pOwpAQCAtMzg0LDYgKzM4
OSw4IEBAIC0gKHZvaWQpX3Jlc2V0U2ltdWxhdGVkU3RhdGUKICAgICBfcmVtYWluaW5nQWRkaXRp
b25hbEl0ZW1SZXF1ZXN0TG9jYXRpb25zQnlQcm9ncmVzcyA9IG5pbDsKICAgICBfcXVldWVkQWRk
aXRpb25hbEl0ZW1SZXF1ZXN0TG9jYXRpb25zID0gYWRvcHROUyhbW05TTXV0YWJsZUFycmF5IGFs
bG9jXSBpbml0XSk7CiAgICAgX2xpZnRQcmV2aWV3cyA9IGFkb3B0TlMoW1tOU011dGFibGVBcnJh
eSBhbGxvY10gaW5pdF0pOworICAgIF9kcm9wUHJldmlld3MgPSBhZG9wdE5TKFtbTlNNdXRhYmxl
QXJyYXkgYWxsb2NdIGluaXRdKTsKKyAgICBfZGVsYXllZERyb3BQcmV2aWV3cyA9IGFkb3B0TlMo
W1tOU011dGFibGVBcnJheSBhbGxvY10gaW5pdF0pOwogICAgIF9oYXNTdGFydGVkSW5wdXRTZXNz
aW9uID0gZmFsc2U7CiB9CiAKQEAgLTQ1NCw2ICs0NjEsNyBAQCAtICh2b2lkKXJ1bkZyb206KENH
UG9pbnQpc3RhcnRMb2NhdGlvbiB0bzooQ0dQb2ludCllbmRMb2NhdGlvbiBhZGRpdGlvbmFsSXRl
bVJlcQogICAgIH0KIAogICAgIFV0aWw6OnJ1bigmX2lzRG9uZVdpdGhDdXJyZW50UnVuKTsKKyAg
ICBVdGlsOjpydW4oJl9pc0RvbmVXYWl0aW5nRm9yRGVsYXllZERyb3BQcmV2aWV3cyk7CiAgICAg
W193ZWJWaWV3IGNsZWFyTWVzc2FnZUhhbmRsZXJzOmRyYWdBbmREcm9wRXZlbnROYW1lcygpXTsK
ICAgICBfZmluYWxTZWxlY3Rpb25SZWN0cyA9IFtfd2ViVmlldyBzZWxlY3Rpb25SZWN0c0FmdGVy
UHJlc2VudGF0aW9uVXBkYXRlXTsKIApAQCAtNDcwLDExICs0NzgsMzAgQEAgLSAodm9pZClfY29u
Y2x1ZGVEcm9wQW5kUGVyZm9ybU9wZXJhdGlvbklmTmVjZXNzYXJ5CiAgICAgX2xhc3RLbm93bkRy
YWdDYXJldFJlY3QgPSBbX3dlYlZpZXcgX2RyYWdDYXJldFJlY3RdOwogICAgIGF1dG8gb3BlcmF0
aW9uID0gW19sYXN0S25vd25Ecm9wUHJvcG9zYWwgb3BlcmF0aW9uXTsKICAgICBpZiAob3BlcmF0
aW9uICE9IFVJRHJvcE9wZXJhdGlvbkNhbmNlbCAmJiBvcGVyYXRpb24gIT0gVUlEcm9wT3BlcmF0
aW9uRm9yYmlkZGVuKSB7CisgICAgICAgIE5TSW50ZWdlciBkcm9wUHJldmlld0luZGV4ID0gMDsK
KyAgICAgICAgX19ibG9jayBOU1VJbnRlZ2VyIG51bWJlck9mUGVuZGluZ1ByZXZpZXdzID0gW19k
cm9wU2Vzc2lvbiBpdGVtc10uY291bnQ7CisgICAgICAgIF9pc0RvbmVXYWl0aW5nRm9yRGVsYXll
ZERyb3BQcmV2aWV3cyA9ICFudW1iZXJPZlBlbmRpbmdQcmV2aWV3czsKKyAgICAgICAgZm9yIChV
SURyYWdJdGVtICppdGVtIGluIFtfZHJvcFNlc3Npb24gaXRlbXNdKSB7CisgICAgICAgICAgICBh
dXRvIGRlZmF1bHRQcmV2aWV3ID0gYWRvcHROUyhbW1VJVGFyZ2V0ZWREcmFnUHJldmlldyBhbGxv
Y10gaW5pdFdpdGhWaWV3Ol93ZWJWaWV3LmdldCgpXSk7CisgICAgICAgICAgICBpZCA8VUlEcm9w
SW50ZXJhY3Rpb25EZWxlZ2F0ZV9TdGFnaW5nXzMxMDc1MDA1PiBkZWxlZ2F0ZSA9IChpZCA8VUlE
cm9wSW50ZXJhY3Rpb25EZWxlZ2F0ZV9TdGFnaW5nXzMxMDc1MDA1PilbX3dlYlZpZXcgZHJvcElu
dGVyYWN0aW9uRGVsZWdhdGVdOworICAgICAgICAgICAgVUlEcm9wSW50ZXJhY3Rpb24gKmludGVy
YWN0aW9uID0gW193ZWJWaWV3IGRyb3BJbnRlcmFjdGlvbl07CisgICAgICAgICAgICBbX2Ryb3BQ
cmV2aWV3cyBhZGRPYmplY3Q6W2RlbGVnYXRlIGRyb3BJbnRlcmFjdGlvbjppbnRlcmFjdGlvbiBw
cmV2aWV3Rm9yRHJvcHBpbmdJdGVtOml0ZW0gd2l0aERlZmF1bHQ6ZGVmYXVsdFByZXZpZXcuZ2V0
KCldID86IE5TTnVsbC5udWxsXTsKKyAgICAgICAgICAgIFtfZGVsYXllZERyb3BQcmV2aWV3cyBh
ZGRPYmplY3Q6TlNOdWxsLm51bGxdOworICAgICAgICAgICAgW2RlbGVnYXRlIF9kcm9wSW50ZXJh
Y3Rpb246aW50ZXJhY3Rpb24gZGVsYXllZFByZXZpZXdQcm92aWRlckZvckRyb3BwaW5nSXRlbTpp
dGVtIHByZXZpZXdQcm92aWRlcjpeKFVJVGFyZ2V0ZWREcmFnUHJldmlldyAqcHJldmlldykgewor
ICAgICAgICAgICAgICAgIGlmIChwcmV2aWV3KQorICAgICAgICAgICAgICAgICAgICBbX2RlbGF5
ZWREcm9wUHJldmlld3Mgc2V0T2JqZWN0OnByZXZpZXcgYXRJbmRleGVkU3Vic2NyaXB0OmRyb3BQ
cmV2aWV3SW5kZXhdOworCisgICAgICAgICAgICAgICAgaWYgKCEtLW51bWJlck9mUGVuZGluZ1By
ZXZpZXdzKQorICAgICAgICAgICAgICAgICAgICBfaXNEb25lV2FpdGluZ0ZvckRlbGF5ZWREcm9w
UHJldmlld3MgPSB0cnVlOworICAgICAgICAgICAgfV07CisgICAgICAgICAgICArK2Ryb3BQcmV2
aWV3SW5kZXg7CisgICAgICAgIH0KICAgICAgICAgW1tfd2ViVmlldyBkcm9wSW50ZXJhY3Rpb25E
ZWxlZ2F0ZV0gZHJvcEludGVyYWN0aW9uOltfd2ViVmlldyBkcm9wSW50ZXJhY3Rpb25dIHBlcmZv
cm1Ecm9wOl9kcm9wU2Vzc2lvbi5nZXQoKV07CiAgICAgICAgIF9waGFzZSA9IERyYWdBbmREcm9w
UGhhc2VQZXJmb3JtaW5nRHJvcDsKICAgICB9IGVsc2UgewotICAgICAgICBfaXNEb25lV2l0aEN1
cnJlbnRSdW4gPSBZRVM7CisgICAgICAgIF9pc0RvbmVXaXRoQ3VycmVudFJ1biA9IHRydWU7CiAg
ICAgICAgIF9waGFzZSA9IERyYWdBbmREcm9wUGhhc2VDYW5jZWxsZWQ7CisgICAgICAgIFtbX3dl
YlZpZXcgZHJvcEludGVyYWN0aW9uRGVsZWdhdGVdIGRyb3BJbnRlcmFjdGlvbjpbX3dlYlZpZXcg
ZHJvcEludGVyYWN0aW9uXSBjb25jbHVkZURyb3A6X2Ryb3BTZXNzaW9uLmdldCgpXTsKICAgICB9
CiAKICAgICBbW193ZWJWaWV3IGRyb3BJbnRlcmFjdGlvbkRlbGVnYXRlXSBkcm9wSW50ZXJhY3Rp
b246W193ZWJWaWV3IGRyb3BJbnRlcmFjdGlvbl0gc2Vzc2lvbkRpZEVuZDpfZHJvcFNlc3Npb24u
Z2V0KCldOwpAQCAtNjQ0LDYgKzY3MSwxNiBAQCAtIChOU0FycmF5PFVJVGFyZ2V0ZWREcmFnUHJl
dmlldyAqPiAqKWxpZnRQcmV2aWV3cwogICAgIHJldHVybiBfbGlmdFByZXZpZXdzLmdldCgpOwog
fQogCistIChOU0FycmF5PFVJVGFyZ2V0ZWREcmFnUHJldmlldyAqPiAqKWRyb3BQcmV2aWV3cwor
eworICAgIHJldHVybiBfZHJvcFByZXZpZXdzLmdldCgpOworfQorCistIChOU0FycmF5PFVJVGFy
Z2V0ZWREcmFnUHJldmlldyAqPiAqKWRlbGF5ZWREcm9wUHJldmlld3MKK3sKKyAgICByZXR1cm4g
X2RlbGF5ZWREcm9wUHJldmlld3MuZ2V0KCk7Cit9CisKIC0gKENHUmVjdClsYXN0S25vd25EcmFn
Q2FyZXRSZWN0CiB7CiAgICAgcmV0dXJuIF9sYXN0S25vd25EcmFnQ2FyZXRSZWN0OwpAQCAtNzI5
LDEwICs3NjYsMTQgQEAgLSAodm9pZCheKShCT09MLCBOU0FycmF5ICopKWRyb3BDb21wbGV0aW9u
QmxvY2sKIC0gKHZvaWQpX3dlYlZpZXc6KFdLV2ViVmlldyAqKXdlYlZpZXcgZGF0YUludGVyYWN0
aW9uT3BlcmF0aW9uV2FzSGFuZGxlZDooQk9PTCloYW5kbGVkIGZvclNlc3Npb246KGlkKXNlc3Np
b24gaXRlbVByb3ZpZGVyczooTlNBcnJheTxOU0l0ZW1Qcm92aWRlciAqPiAqKWl0ZW1Qcm92aWRl
cnMKIHsKICAgICBfc3VwcHJlc3NlZFNlbGVjdGlvbkNvbW1hbmRzRHVyaW5nRHJvcCA9IFtfd2Vi
VmlldyB0ZXh0SW5wdXRDb250ZW50Vmlld10uX3Nob3VsZFN1cHByZXNzU2VsZWN0aW9uQ29tbWFu
ZHM7Ci0gICAgX2lzRG9uZVdpdGhDdXJyZW50UnVuID0gdHJ1ZTsKIAogICAgIGlmIChzZWxmLmRy
b3BDb21wbGV0aW9uQmxvY2spCiAgICAgICAgIHNlbGYuZHJvcENvbXBsZXRpb25CbG9jayhoYW5k
bGVkLCBpdGVtUHJvdmlkZXJzKTsKKworICAgIFtfd2ViVmlldyBfZG9BZnRlclJlY2VpdmluZ0Vk
aXREcmFnU25hcHNob3RGb3JUZXN0aW5nOl57CisgICAgICAgIFtbX3dlYlZpZXcgZHJvcEludGVy
YWN0aW9uRGVsZWdhdGVdIGRyb3BJbnRlcmFjdGlvbjpbX3dlYlZpZXcgZHJvcEludGVyYWN0aW9u
XSBjb25jbHVkZURyb3A6X2Ryb3BTZXNzaW9uLmdldCgpXTsKKyAgICAgICAgX2lzRG9uZVdpdGhD
dXJyZW50UnVuID0gdHJ1ZTsKKyAgICB9XTsKIH0KIAogLSAoVUlEcm9wUHJvcG9zYWwgKilfd2Vi
VmlldzooV0tXZWJWaWV3ICopd2ViVmlldyB3aWxsVXBkYXRlRHJvcFByb3Bvc2FsVG9Qcm9wb3Nh
bDooVUlEcm9wUHJvcG9zYWwgKilwcm9wb3NhbCBmb3JTZXNzaW9uOihpZCA8VUlEcm9wU2Vzc2lv
bj4pc2Vzc2lvbgpkaWZmIC0tZ2l0IGEvVG9vbHMvVGVzdFdlYktpdEFQSS9pb3MvVUlLaXRTUEku
aCBiL1Rvb2xzL1Rlc3RXZWJLaXRBUEkvaW9zL1VJS2l0U1BJLmgKaW5kZXggM2ZhNjY4NDM3ZDJk
NjJkYmQ3M2I5ODdiMDE0N2I5MTdiNmUwM2NiNi4uNzJlYzlmZDhjYTM5OTE1YzZlZDkzZWEyMTZm
NzdkMjYwODRiMzcxYSAxMDA2NDQKLS0tIGEvVG9vbHMvVGVzdFdlYktpdEFQSS9pb3MvVUlLaXRT
UEkuaAorKysgYi9Ub29scy9UZXN0V2ViS2l0QVBJL2lvcy9VSUtpdFNQSS5oCkBAIC0xODMsNCAr
MTgzLDggQEAgdHlwZWRlZiBOU19PUFRJT05TKE5TSW50ZWdlciwgVUlXS0RvY3VtZW50UmVxdWVz
dEZsYWdzKSB7CiAtICh2b2lkKXNldE5leHRQcmV2aW91c0l0ZW1zVmlzaWJsZTooQk9PTCl2aXNp
YmxlOwogQGVuZAogCitAcHJvdG9jb2wgVUlEcm9wSW50ZXJhY3Rpb25EZWxlZ2F0ZV9TdGFnaW5n
XzMxMDc1MDA1IDxVSURyb3BJbnRlcmFjdGlvbkRlbGVnYXRlPgorLSAodm9pZClfZHJvcEludGVy
YWN0aW9uOihVSURyb3BJbnRlcmFjdGlvbiAqKWludGVyYWN0aW9uIGRlbGF5ZWRQcmV2aWV3UHJv
dmlkZXJGb3JEcm9wcGluZ0l0ZW06KFVJRHJhZ0l0ZW0gKilpdGVtIHByZXZpZXdQcm92aWRlcjoo
dm9pZCheKShVSVRhcmdldGVkRHJhZ1ByZXZpZXcgKnByZXZpZXcpKXByZXZpZXdQcm92aWRlcjsK
K0BlbmQKKwogI2VuZGlmIC8vIFBMQVRGT1JNKElPU19GQU1JTFkpCg==
</data>

          </attachment>
          <attachment
              isobsolete="0"
              ispatch="1"
              isprivate="0"
          >
            <attachid>370648</attachid>
            <date>2019-05-26 03:52:17 -0700</date>
            <delta_ts>2019-05-26 04:31:56 -0700</delta_ts>
            <desc>Fix watchOS too</desc>
            <filename>bug-198243-20190526035216.patch</filename>
            <type>text/plain</type>
            <size>65571</size>
            <attacher name="Wenson Hsieh">wenson_hsieh</attacher>
            
              <data encoding="base64">U3VidmVyc2lvbiBSZXZpc2lvbjogMjQ1Nzc3CmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9D
aGFuZ2VMb2cgYi9Tb3VyY2UvV2ViQ29yZS9DaGFuZ2VMb2cKaW5kZXggMmU0MDUwZjEyYzc0NTM1
YzUzMzczMTc1ZWNmYjg0YTAxODQ1ZWNlOC4uMTUwZDM3MDUyNzMyMTJkNjM1YzljOWVhZTkzMzAx
ZGVlZDc2OGMwMCAxMDA2NDQKLS0tIGEvU291cmNlL1dlYkNvcmUvQ2hhbmdlTG9nCisrKyBiL1Nv
dXJjZS9XZWJDb3JlL0NoYW5nZUxvZwpAQCAtMSwzICsxLDI0IEBACisyMDE5LTA1LTI2ICBXZW5z
b24gSHNpZWggIDx3ZW5zb25faHNpZWhAYXBwbGUuY29tPgorCisgICAgICAgIFtpT1NdIERyb3Bw
ZWQgdGV4dCwgYXR0YWNobWVudHMsIGFuZCBpbWFnZXMgc2hvdWxkIGFuaW1hdGUgaW50byBwbGFj
ZQorICAgICAgICBodHRwczovL2J1Z3Mud2Via2l0Lm9yZy9zaG93X2J1Zy5jZ2k/aWQ9MTk4MjQz
CisgICAgICAgIDxyZGFyOi8vcHJvYmxlbS8zNTIwNTM3Mz4KKworICAgICAgICBSZXZpZXdlZCBi
eSBUaW0gSG9ydG9uLgorCisgICAgICAgIEFkZCBzb21lIGhvb2tzIHRvIG5vdGlmeSB0aGUgY2hy
b21lIGNsaWVudCB3aGVuIGFuIEhUTUxJbWFnZUVsZW1lbnQncyBpbWFnZSBpcyBmaW5pc2hlZCBs
b2FkaW5nLiBTZWUgV2ViS2l0CisgICAgICAgIGNoYW5nZWxvZyBmb3IgbW9yZSBkZXRhaWwuCisK
KyAgICAgICAgVGVzdDogRHJhZ0FuZERyb3BUZXN0cy5Ecm9wUHJldmlld0ZvckltYWdlSW5FZGl0
YWJsZUFyZWEKKworICAgICAgICAqIGxvYWRlci9FbXB0eUNsaWVudHMuaDoKKyAgICAgICAgKiBw
YWdlL0Nocm9tZUNsaWVudC5oOgorICAgICAgICAqIHBhZ2UvUGFnZS5jcHA6CisgICAgICAgIChX
ZWJDb3JlOjpQYWdlOjpkaWRGaW5pc2hMb2FkaW5nSW1hZ2VGb3JFbGVtZW50KToKKyAgICAgICAg
KiBwYWdlL1BhZ2UuaDoKKyAgICAgICAgKiByZW5kZXJpbmcvUmVuZGVySW1hZ2UuY3BwOgorICAg
ICAgICAoV2ViQ29yZTo6UmVuZGVySW1hZ2U6Om5vdGlmeUZpbmlzaGVkKToKKwogMjAxOS0wNS0y
NSAgWmFsYW4gQnVqdGFzICA8emFsYW5AYXBwbGUuY29tPgogCiAgICAgICAgIFtMRkNdW0lGQ10g
SW50cm9kdWNlIERpc3BsYXlSdW4gdG8gZGlzcGxheSB0cmVlCmRpZmYgLS1naXQgYS9Tb3VyY2Uv
V2ViS2l0L0NoYW5nZUxvZyBiL1NvdXJjZS9XZWJLaXQvQ2hhbmdlTG9nCmluZGV4IDgwMGJkZGNl
ZjEzOTIwZTRiYTczZmZmMzhiZDdlNjQ3N2MzZWMxNWQuLjc1ZGY0OWUyY2ZkODRmYTVhYzRhMjgx
YTBjNTQ4N2U5YWZkZjdhN2QgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJLaXQvQ2hhbmdlTG9nCisr
KyBiL1NvdXJjZS9XZWJLaXQvQ2hhbmdlTG9nCkBAIC0xLDMgKzEsMTQ5IEBACisyMDE5LTA1LTI2
ICBXZW5zb24gSHNpZWggIDx3ZW5zb25faHNpZWhAYXBwbGUuY29tPgorCisgICAgICAgIFtpT1Nd
IERyb3BwZWQgdGV4dCwgYXR0YWNobWVudHMsIGFuZCBpbWFnZXMgc2hvdWxkIGFuaW1hdGUgaW50
byBwbGFjZQorICAgICAgICBodHRwczovL2J1Z3Mud2Via2l0Lm9yZy9zaG93X2J1Zy5jZ2k/aWQ9
MTk4MjQzCisgICAgICAgIDxyZGFyOi8vcHJvYmxlbS8zNTIwNTM3Mz4KKworICAgICAgICBSZXZp
ZXdlZCBieSBUaW0gSG9ydG9uLgorCisgICAgICAgIEFkZHMgc3VwcG9ydCBmb3IgdGFyZ2V0ZWQg
ZHJvcCBhbmltYXRpb25zIG9uIGlPUyBpbiBtb2Rlcm4gV2ViS2l0IGJ5IGFkb3B0aW5nIFVJS2l0
IFNQSSBpbnRyb2R1Y2VkIGluCisgICAgICAgIDxyZGFyOi8vcHJvYmxlbS8zMTA3NTAwNT4gdG8g
YWxsb3cgdXBkYXRpbmcgdGhlIGRyb3AgcHJldmlldyBtaWQtZmxpZ2h0LiBUbyBnZXQgdGhlIGFu
aW1hdGlvbiByaWdodCwgd2UgcmVmYWN0b3IKKyAgICAgICAgYW5kIGF1Z21lbnQgZXhpc3Rpbmcg
bG9naWMgZm9yIHRha2luZyBzbmFwc2hvdHMgYWZ0ZXIgcGVyZm9ybWluZyBhIGRyb3AgaW4gYW4g
ZWRpdGFibGUgY29udGVudC4KKworICAgICAgICBDdXJyZW50bHksIHVwb24gZHJvcHBpbmcgaW4g
ZWRpdGFibGUgY29udGVudCwgd2UgZmlyc3Qgc25hcHNob3QgdGhlIHdlYiB2aWV3IGFuZCB0ZW1w
b3JhcmlseSBjb3ZlciB0aGUgcmVhbCB3ZWIKKyAgICAgICAgdmlldyB3aXRoIHRoaXMgc25hcHNo
b3QuIFdoZW4gdGhlIFRleHRJbmRpY2F0b3IgZGF0YSBhcnJpdmVzIHRoYXQgY29udGFpbnMgKDEp
IGEgc25hcHNob3Qgb2YgdGhlIHZpc2libGUgcGFydCBvZgorICAgICAgICB0aGUgd2ViIHZpZXcg
aWdub3JpbmcgdGhlIHNlbGVjdGlvbiwgYW5kICgyKSBhIHNuYXBzaG90IG9mIGp1c3QgdGhlIHNl
bGVjdGVkIGNvbnRlbnRzIGFmdGVyIGRyb3AsIHdlIGNyb3NzZmFkZQorICAgICAgICBmcm9tIHRo
ZSB3ZWIgdmlldyBzbmFwc2hvdCB0byB0aGUgc25hcHNob3QgaW4gKDEpIHVzaW5nIGEgaGFyZC1j
b2RlZCB0aW1lIGRlbGF5ICh+NTAwbXMpLCBhbmQgdGFyZ2V0IHRoZSBkcm9wCisgICAgICAgIHBy
ZXZpZXcgdG8gdGhlIGRyYWcgY2FyZXQgcmVjdC4gRHVyaW5nIHRoaXMgcHJvY2Vzcywgc25hcHNo
b3QgKDIpIGlzIGNvbXBsZXRlbHkgaWdub3JlZC4KKworICAgICAgICBUaGlzIHdhcyBlZmZlY3Rp
dmVseSBhIGhhbGZ3YXkgaW1wbGVtZW50aW9uIG9mIHRoZSBkZXNpcmVkIGVmZmVjdCBvZiBhbmlt
YXRpbmcgdGhlIGRyb3BwZWQgY29udGVudCBpbnRvIHBsYWNlCisgICAgICAgIGFuZCBjcm9zc2Zh
ZGluZyB0byB0aGUgZmluYWwgY29udGVudDsgYmVmb3JlIFVJS2l0IGltcGxlbWVudGVkIHVwZGF0
ZWFibGUgZHJhZyBwcmV2aWV3cywgdGhlIGZ1bGwgaW1wbGVtZW50YXRpb24KKyAgICAgICAgd2Fz
IG5vdCBwb3NzaWJsZSBpbiBtb2Rlcm4gV2ViS2l0ICh3aXRob3V0IHVzaW5nIHN5bmNocm9ub3Vz
IElQQykuCisKKyAgICAgICAgTm93IHRoYXQgd2UncmUgYWJsZSB0byB1cGRhdGUgdGhlIGRyYWcg
cHJldmlldyBpbiB0aGUgbWlkZGxlIG9mIHRoZSBkcm9wIGFuaW1hdGlvbiwgd2UgY2FuIG5vdyB1
dGlsaXplIHNuYXBzaG90CisgICAgICAgICgyKSBhYm92ZSBhbmQgY2xlYW4gdXAgc29tZSBwYXJ0
cyBvZiB0aGUgZHJvcCBhbmltYXRpb24gaW4gZWRpdGFibGUgY29udGVudC4gU2VlIGJlbG93IGZv
ciBtb3JlIGRldGFpbHMuCisKKyAgICAgICAgKiBVSVByb2Nlc3MvQVBJL0NvY29hL1dLV2ViVmll
dy5tbToKKyAgICAgICAgKC1bV0tXZWJWaWV3IF9kb0FmdGVyUmVjZWl2aW5nRWRpdERyYWdTbmFw
c2hvdEZvclRlc3Rpbmc6XSk6CisKKyAgICAgICAgQWRkIGEgdGVzdGluZyBob29rIHRvIHBlcmZv
cm0gdGhlIGdpdmVuIGJsb2NrIGFmdGVyIGFueSBwZW5kaW5nIGVkaXQgZHJhZyBzbmFwc2hvdCBo
YXMgYmVlbiByZWNlaXZlZC4gU2VlCisgICAgICAgIFRlc3RXZWJLaXRBUEkgY2hhbmdlcyBmb3Ig
bW9yZSBkZXRhaWwuCisKKyAgICAgICAgKiBVSVByb2Nlc3MvQVBJL0NvY29hL1dLV2ViVmlld1By
aXZhdGUuaDoKKyAgICAgICAgKiBVSVByb2Nlc3MvUGFnZUNsaWVudC5oOgorICAgICAgICAqIFVJ
UHJvY2Vzcy9XZWJQYWdlUHJveHkuaDoKKyAgICAgICAgKiBVSVByb2Nlc3MvV2ViUGFnZVByb3h5
Lm1lc3NhZ2VzLmluOgorCisgICAgICAgIFNwbGl0IHVwIHRoZSBleGlzdGluZyBEaWRDb25jbHVk
ZUVkaXREcmFnIElQQyBtZXNzYWdlIGludG8gdHdvIG1lc3NhZ2VzOiBXaWxsUmVjZWl2ZUVkaXRE
cmFnU25hcHNob3QgYW5kCisgICAgICAgIERpZFJlY2VpdmVFZGl0RHJhZ1NuYXBzaG90LiBUaGlz
IGFsbG93cyB1cyB0byBkZWZlciBjbGVhbmluZyB1cCB0aGUgZHJhZyBzZXNzaW9uIHN0YXRlIGR1
cmluZyBhbiBlZGl0IGRyb3AsCisgICAgICAgIHVudGlsIGFmdGVyIHRoZSBmaW5hbCBlZGl0IGRy
YWcgc25hcHNob3QgaGFzIGJlZW4gcmVjZWl2ZWQuCisKKyAgICAgICAgKiBVSVByb2Nlc3MvaW9z
L0RyYWdEcm9wSW50ZXJhY3Rpb25TdGF0ZS5oOgorCisgICAgICAgIEFkZCBzb21lIG5ldyBtZXRo
b2RzIHRvIGhlbHAgbWFuYWdlIHRoZSBsaWZlY3ljbGUgb2YgZHJvcCBwcmV2aWV3IHByb3ZpZGVy
IGJsb2Nrcy4KKworICAgICAgICAqIFVJUHJvY2Vzcy9pb3MvRHJhZ0Ryb3BJbnRlcmFjdGlvblN0
YXRlLm1tOgorICAgICAgICAoV2ViS2l0OjpjcmVhdGVUYXJnZXRlZERyYWdQcmV2aWV3KToKKwor
ICAgICAgICBEcml2ZS1ieSBmaXg6IG1ha2UgdGhpcyByZXR1cm4gYSBSZXRhaW5QdHIuCisKKyAg
ICAgICAgKFdlYktpdDo6RHJhZ0Ryb3BJbnRlcmFjdGlvblN0YXRlOjpwcmVwYXJlRm9yRGVsYXll
ZERyb3BQcmV2aWV3KToKKworICAgICAgICBTdG9yZXMgYSBkcm9wIHByZXZpZXcgcHJvdmlkZXIs
IGdpdmVuIHRvIHVzIGJ5IFVJS2l0LgorCisgICAgICAgIChXZWJLaXQ6OkRyYWdEcm9wSW50ZXJh
Y3Rpb25TdGF0ZTo6ZGVsaXZlckRlbGF5ZWREcm9wUHJldmlldyk6CisKKyAgICAgICAgSW52b2tl
cyB0aGUgc3RvcmVkIGRyb3AgcHJldmlldyBwcm92aWRlcnMgd2l0aCBnaXZlbiB0ZXh0IGluZGlj
YXRvciBkYXRhLiBUaGlzIGlzIGludm9rZWQgYWZ0ZXIgc25hcHNob3RzIGFyZQorICAgICAgICB0
YWtlbiBmb2xsb3dpbmcgYW4gZWRpdCBkcmFnICh0aGlzIGlzIGFkZGl0aW9uYWxseSBhZnRlciBh
bGwgaW1hZ2VzIGluIHRoZSBpbnNlcnRlZCBmcmFnbWVudCBoYXZlIGZpbmlzaGVkCisgICAgICAg
IGxvYWRpbmcpLgorCisgICAgICAgIChXZWJLaXQ6OkRyYWdEcm9wSW50ZXJhY3Rpb25TdGF0ZTo6
Y2xlYXJBbGxEZWxheWVkSXRlbVByZXZpZXdQcm92aWRlcnMpOgorCisgICAgICAgIEludm9rZXMg
YWxsIHN0b3JlZCBkcm9wIHByZXZpZXcgcHJvdmlkZXJzIHdpdGggYSBuaWwgcHJldmlldy4gVGhp
cyBpcyBpbnZva2VkIGluIGFueSBjYXNlIHdoZXJlIGRyYWcgc2Vzc2lvbgorICAgICAgICBjbGVh
bnVwIG9jY3VycyBlYXJsaWVyIHRoYW4gbm9ybWFsIChlLmcuLCBpZiB0aGUgd2ViIHByb2Nlc3Mg
Y3Jhc2hlcyBkdXJpbmcgZHJvcCksIGFuZCBlbnN1cmVzIHRoYXQgdGhlIGhhbmRsZXJzCisgICAg
ICAgIGFyZSBhbHdheXMgaW52b2tlZCB3aGVuIGNsZWFuaW5nIHVwIHRoZSBkcmFnIHNlc3Npb24u
CisKKyAgICAgICAgKFdlYktpdDo6RHJhZ0Ryb3BJbnRlcmFjdGlvblN0YXRlOjpwcmV2aWV3Rm9y
RHJhZ0l0ZW0gY29uc3QpOgorICAgICAgICAoV2ViS2l0OjpEcmFnRHJvcEludGVyYWN0aW9uU3Rh
dGU6OmRyYWdBbmREcm9wU2Vzc2lvbnNEaWRFbmQpOgorCisgICAgICAgIENhbGwgY2xlYXJBbGxE
ZWxheWVkSXRlbVByZXZpZXdQcm92aWRlcnMuCisKKyAgICAgICAgKiBVSVByb2Nlc3MvaW9zL1Bh
Z2VDbGllbnRJbXBsSU9TLmg6CisgICAgICAgICogVUlQcm9jZXNzL2lvcy9QYWdlQ2xpZW50SW1w
bElPUy5tbToKKyAgICAgICAgKFdlYktpdDo6UGFnZUNsaWVudEltcGw6OndpbGxSZWNlaXZlRWRp
dERyYWdTbmFwc2hvdCk6CisgICAgICAgIChXZWJLaXQ6OlBhZ2VDbGllbnRJbXBsOjpkaWRSZWNl
aXZlRWRpdERyYWdTbmFwc2hvdCk6CisgICAgICAgIChXZWJLaXQ6OlBhZ2VDbGllbnRJbXBsOjpk
aWRDb25jbHVkZUVkaXREcmFnKTogRGVsZXRlZC4KKworICAgICAgICBNb3JlIHBsdW1iaW5nIChz
ZWUgY2hhbmdlcyB0byBEaWRDb25jbHVkZUVkaXREcmFnIGFib3ZlKS4KKworICAgICAgICAqIFVJ
UHJvY2Vzcy9pb3MvV0tDb250ZW50Vmlld0ludGVyYWN0aW9uLmg6CisgICAgICAgICogVUlQcm9j
ZXNzL2lvcy9XS0NvbnRlbnRWaWV3SW50ZXJhY3Rpb24ubW06CisgICAgICAgICgtW1dLQ29udGVu
dFZpZXcgY2xlYW51cEludGVyYWN0aW9uXSk6CisgICAgICAgICgtW1dLQ29udGVudFZpZXcgY2xl
YW5VcERyYWdTb3VyY2VTZXNzaW9uU3RhdGVdKToKKyAgICAgICAgKC1bV0tDb250ZW50VmlldyBf
d2lsbFJlY2VpdmVFZGl0RHJhZ1NuYXBzaG90XSk6CisgICAgICAgICgtW1dLQ29udGVudFZpZXcg
X2RpZFJlY2VpdmVFZGl0RHJhZ1NuYXBzaG90Ol0pOgorCisgICAgICAgIFNldCBfd2FpdGluZ0Zv
ckVkaXREcmFnU25hcHNob3QgdG8gWUVTIGluIHRoZSBnYXAgYmV0d2VlbiB3aGVuIC1fd2lsbFJl
Y2VpdmVFZGl0RHJhZ1NuYXBzaG90IGlzIGludm9rZWQsIGFuZAorICAgICAgICB3aGVuIC1fZGlk
UmVjZWl2ZUVkaXREcmFnU25hcHNob3QgaXMgaW52b2tlZC4gSWYgX3dhaXRpbmdGb3JFZGl0RHJh
Z1NuYXBzaG90IGlzIFlFUywgd2UgYmFpbCBvdXQgb2YKKyAgICAgICAgLWNsZWFuVXBEcmFnU291
cmNlU2Vzc2lvblN0YXRlLCBhbmQgaW5zdGVhZCBjbGVhbiB1cCBkcmFnIHNlc3Npb24gc3RhdGUg
YWZ0ZXIgdGhlIGVkaXQgZHJhZyBzbmFwc2hvdCBpcworICAgICAgICByZWNlaXZlZC4KKworICAg
ICAgICAoLVtXS0NvbnRlbnRWaWV3IF9kZWxpdmVyRGVsYXllZERyb3BQcmV2aWV3SWZQb3NzaWJs
ZTpdKToKKyAgICAgICAgKC1bV0tDb250ZW50VmlldyBfZGlkUGVyZm9ybURyYWdPcGVyYXRpb246
XSk6CisgICAgICAgICgtW1dLQ29udGVudFZpZXcgdGV4dEVmZmVjdHNXaW5kb3ddKToKKworICAg
ICAgICBEcml2ZS1ieSBmaXggdG8gcmVtb3ZlIGEgd29ya2Fyb3VuZCBmb3IgYSBkZXByZWNhdGlv
biB3YXJuaW5nLgorCisgICAgICAgICgtW1dLQ29udGVudFZpZXcgZHJvcEludGVyYWN0aW9uOml0
ZW06d2lsbEFuaW1hdGVEcm9wV2l0aEFuaW1hdG9yOl0pOgorICAgICAgICAoLVtXS0NvbnRlbnRW
aWV3IGRyb3BJbnRlcmFjdGlvbjpjb25jbHVkZURyb3A6XSk6CisKKyAgICAgICAgSW1wbGVtZW50
IHRoaXMgaG9vayB0byBlbnN1cmUgdGhhdCB0aGUgdW5zZWxlY3RlZCBjb250ZW50IHNuYXBzaG90
IHZpZXcgYW5kIHZpc2libGUgY29udGVudCBzbmFwc2hvdCB2aWV3IGFyZQorICAgICAgICBndWFy
YW50ZWVkIHRvIGJlIHJlbW92ZWQgZnJvbSB0aGUgdmlldyBhZnRlciBhIGRyb3AgaW4gZWRpdGFi
bGUgY29udGVudCwgZXZlbiBpZiB0aGUgZHJhZyBlZGl0IHNuYXBzaG90IGFycml2ZXMKKyAgICAg
ICAgYWZ0ZXIgdGhlIGRyb3AgaXMgY29uY2x1ZGVkLgorCisgICAgICAgICgtW1dLQ29udGVudFZp
ZXcgZHJvcEludGVyYWN0aW9uOnByZXZpZXdGb3JEcm9wcGluZ0l0ZW06d2l0aERlZmF1bHQ6XSk6
CisgICAgICAgICgtW1dLQ29udGVudFZpZXcgX2Ryb3BJbnRlcmFjdGlvbjpkZWxheWVkUHJldmll
d1Byb3ZpZGVyRm9yRHJvcHBpbmdJdGVtOnByZXZpZXdQcm92aWRlcjpdKToKKworICAgICAgICBJ
bXBsZW1lbnQgdGhlIG5ldyBVSUtpdCBTUEkgaGVyZS4gVUlLaXQgaGFuZHMgdXMgYSBwcmV2aWV3
IHByb3ZpZGVyIGhlcmUsIHdoaWNoIHdlIGNhbiBpbnZva2UgYXQgYSBsYXRlciB0aW1lCisgICAg
ICAgIHRvIHVwZGF0ZSB0aGUgZHJvcCBwcmV2aWV3LiBXZSBkbyB0aGlzIGluIF9kaWRSZWNlaXZl
RWRpdERyYWdTbmFwc2hvdC4KKworICAgICAgICAoLVtXS0NvbnRlbnRWaWV3IF9kb0FmdGVyUmVj
ZWl2aW5nRWRpdERyYWdTbmFwc2hvdEZvclRlc3Rpbmc6XSk6CisgICAgICAgICgtW1dLQ29udGVu
dFZpZXcgX2RpZENvbmNsdWRlRWRpdERyYWc6XSk6IERlbGV0ZWQuCisgICAgICAgICogVUlQcm9j
ZXNzL2lvcy9XZWJQYWdlUHJveHlJT1MubW06CisgICAgICAgIChXZWJLaXQ6OldlYlBhZ2VQcm94
eTo6d2lsbFJlY2VpdmVFZGl0RHJhZ1NuYXBzaG90KToKKyAgICAgICAgKFdlYktpdDo6V2ViUGFn
ZVByb3h5OjpkaWRSZWNlaXZlRWRpdERyYWdTbmFwc2hvdCk6CisgICAgICAgIChXZWJLaXQ6Oldl
YlBhZ2VQcm94eTo6ZGlkQ29uY2x1ZGVEcm9wKToKKyAgICAgICAgKFdlYktpdDo6V2ViUGFnZVBy
b3h5OjpkaWRDb25jbHVkZUVkaXREcmFnKTogRGVsZXRlZC4KKyAgICAgICAgKiBXZWJQcm9jZXNz
L1dlYkNvcmVTdXBwb3J0L1dlYkNocm9tZUNsaWVudC5jcHA6CisgICAgICAgIChXZWJLaXQ6Oldl
YkNocm9tZUNsaWVudDo6ZGlkRmluaXNoTG9hZGluZ0ltYWdlRm9yRWxlbWVudCk6CisgICAgICAg
ICogV2ViUHJvY2Vzcy9XZWJDb3JlU3VwcG9ydC9XZWJDaHJvbWVDbGllbnQuaDoKKyAgICAgICAg
KiBXZWJQcm9jZXNzL1dlYlBhZ2UvV2ViUGFnZS5jcHA6CisgICAgICAgIChXZWJLaXQ6OldlYlBh
Z2U6OmRpZEZpbmlzaExvYWRpbmdJbWFnZUZvckVsZW1lbnQpOgorICAgICAgICAqIFdlYlByb2Nl
c3MvV2ViUGFnZS9XZWJQYWdlLmg6CisgICAgICAgICogV2ViUHJvY2Vzcy9XZWJQYWdlL1dlYlBh
Z2UubWVzc2FnZXMuaW46CisgICAgICAgICogV2ViUHJvY2Vzcy9XZWJQYWdlL2lvcy9XZWJQYWdl
SU9TLm1tOgorICAgICAgICAoV2ViS2l0OjpXZWJQYWdlOjpkaWRDb25jbHVkZURyb3ApOgorCisg
ICAgICAgIElmIGFuIGVkaXQgZHJhZyBoYXMgYmVlbiBjb25jbHVkZWQsIHRoZXJlJ3Mgbm8gbmVl
ZCB0byBoYW5nIG9uIHRvIHBlbmRpbmcgZHJvcHBlZCBpbWFnZSBlbGVtZW50cyBhbnltb3JlOyBj
bGVhcgorICAgICAgICBvdXQgdGhlIHNldCBoZXJlLgorCisgICAgICAgIChXZWJLaXQ6OldlYlBh
Z2U6OmRpZENvbmNsdWRlRWRpdERyYWcpOgorCisgICAgICAgIEFmdGVyIGNvbmNsdWRpbmcgYW4g
ZWRpdCBkcmFnLCB3ZSB0cnkgdG8gZGVsaXZlciB0d28gd2ViIGNvbnRlbnQgc25hcHNob3RzIHRv
IHRoZSBVSSBwcm9jZXNzLCBzbyB0aGF0IHRoZSBVSQorICAgICAgICBwcm9jZXNzIGNhbiBhc3Nl
bWJsZSBhIHRhcmdldGVkIGRyb3AgcHJldmlldyBmb3IgVUlLaXQuIE9uZSBzbmFwc2hvdCBpcyBv
ZiB0aGUgdmlzaWJsZSBjb250ZW50IGFyZWEsIG5vdAorICAgICAgICBpbmNsdWRpbmcgYW55IHNl
bGVjdGVkIGNvbnRlbnQuIFRoZSBvdGhlciBzbmFwc2hvdCBpcyBvZiB0aGUgc2VsZWN0ZWQgY29u
dGVudCBvbmx5LiBIb3dldmVyLCB3aGVuIGRyb3BwaW5nCisgICAgICAgIGltYWdlcyAob3IgYSB0
ZXh0IHNlbGVjdGlvbiBjb250YWluaW5nIGltYWdlcyksIHRoZXNlIGltYWdlcyBtYXkgbm90IHll
dCBoYXZlIGJlZW4gbG9hZGVkLiBJZiB0aGF0IGlzIHRoZSBjYXNlLAorICAgICAgICB0aGVzZSBp
bWFnZXMgd2lsbCBhcHBlYXIgdG8gYmUgbWlzc2luZyBmcm9tIHRoZXNlIHNuYXBzaG90cy4KKwor
ICAgICAgICBUbyBlbnN1cmUgdGhhdCB3ZSBkb24ndCB0YWtlIHRoaXMgc25hcHNob3QgdG9vIGVh
cmx5LCBkZWZlciBpdCB1bnRpbCBhbGwgaW1hZ2UgZWxlbWVudHMgaW4gdGhlIGRyb3BwZWQgY29u
dGVudAorICAgICAgICByYW5nZSBoYXZlIGZpbmlzaGVkIGxvYWRpbmcuIFdlIGNhbiB0ZWxsIHRo
YXQgYWxsIGRyb3BwZWQgaW1hZ2VzIGhhdmUgZmluaXNoZWQgbG9hZGluZyBieSB1c2luZyBhIG5l
dyBjbGllbnQKKyAgICAgICAgaG9vayB0aGF0IGlzIGludm9rZWQgd2hlbiBhbiBpbWFnZSBoYXMg
ZmluaXNoZWQgbG9hZGluZy4KKworICAgICAgICAoV2ViS2l0OjpXZWJQYWdlOjpkaWRGaW5pc2hM
b2FkaW5nSW1hZ2VGb3JFbGVtZW50KToKKyAgICAgICAgKFdlYktpdDo6V2ViUGFnZTo6Y29tcHV0
ZUFuZFNlbmRFZGl0RHJhZ1NuYXBzaG90KToKKworICAgICAgICBTbmFwc2hvdCB0aGUgc2VsZWN0
ZWQgY29udGVudCBhbmQgc2VuZCBpdCB0byB0aGUgVUkgcHJvY2Vzcy4KKwogMjAxOS0wNS0yNCAg
WW91ZW5uIEZhYmxldCAgPHlvdWVubkBhcHBsZS5jb20+CiAKICAgICAgICAgUkVHUkVTU0lPTiAo
cjI0NTcxNT8pIFtXSzJdIExheW91dCBUZXN0IGh0dHAvd3B0L2NhY2hlLXN0b3JhZ2UvY2FjaGUt
c3RvcmFnZS1uZXR3b3JrcHJvY2Vzcy1jcmFzaC5odG1sIGlzIGEgZmxha3kgZmFpbHVyZQpkaWZm
IC0tZ2l0IGEvU291cmNlL1dlYktpdExlZ2FjeS9tYWMvQ2hhbmdlTG9nIGIvU291cmNlL1dlYktp
dExlZ2FjeS9tYWMvQ2hhbmdlTG9nCmluZGV4IGY5NzAwZjMxZmNkZjg3YTFiMTJmMDFjMWUyYTc0
ZjUwNjc4NzFmYWIuLmQ2MGYzNThlZjBmNjFiZmEwZTBjYzdkMjBhMjBhYmY0YzgwNDVhNTEgMTAw
NjQ0Ci0tLSBhL1NvdXJjZS9XZWJLaXRMZWdhY3kvbWFjL0NoYW5nZUxvZworKysgYi9Tb3VyY2Uv
V2ViS2l0TGVnYWN5L21hYy9DaGFuZ2VMb2cKQEAgLTEsMyArMSwxNyBAQAorMjAxOS0wNS0yNiAg
V2Vuc29uIEhzaWVoICA8d2Vuc29uX2hzaWVoQGFwcGxlLmNvbT4KKworICAgICAgICBbaU9TXSBE
cm9wcGVkIHRleHQsIGF0dGFjaG1lbnRzLCBhbmQgaW1hZ2VzIHNob3VsZCBhbmltYXRlIGludG8g
cGxhY2UKKyAgICAgICAgaHR0cHM6Ly9idWdzLndlYmtpdC5vcmcvc2hvd19idWcuY2dpP2lkPTE5
ODI0MworICAgICAgICA8cmRhcjovL3Byb2JsZW0vMzUyMDUzNzM+CisKKyAgICAgICAgUmV2aWV3
ZWQgYnkgVGltIEhvcnRvbi4KKworICAgICAgICBBZGQgYSBuZXcgY2hyb21lIGNsaWVudCBtZXRo
b2QuIFNlZSBvdGhlciBjaGFuZ2Vsb2dzIGZvciBtb3JlIGRldGFpbC4KKworICAgICAgICAqIFdl
YkNvcmVTdXBwb3J0L1dlYkNocm9tZUNsaWVudC5oOgorICAgICAgICAqIFdlYkNvcmVTdXBwb3J0
L1dlYkNocm9tZUNsaWVudC5tbToKKyAgICAgICAgKFdlYkNocm9tZUNsaWVudDo6ZGlkRmluaXNo
TG9hZGluZ0ltYWdlRm9yRWxlbWVudCk6CisKIDIwMTktMDUtMjEgIEFsZXggQ2hyaXN0ZW5zZW4g
IDxhY2hyaXN0ZW5zZW5Ad2Via2l0Lm9yZz4KIAogICAgICAgICBGaXggSU9TTUFDIGJ1aWxkCmRp
ZmYgLS1naXQgYS9Tb3VyY2UvV2ViS2l0TGVnYWN5L3dpbi9DaGFuZ2VMb2cgYi9Tb3VyY2UvV2Vi
S2l0TGVnYWN5L3dpbi9DaGFuZ2VMb2cKaW5kZXggM2Q1YWRlZDUxOWFlNzViYmVlNWUyZDc0NTgy
NGU0NGJmNjkyYzU1Ni4uOWRjMWYyZWRhMjE1Y2YyMmVmZjJhYzQzMThjZjMyMDczMDcxODc4MiAx
MDA2NDQKLS0tIGEvU291cmNlL1dlYktpdExlZ2FjeS93aW4vQ2hhbmdlTG9nCisrKyBiL1NvdXJj
ZS9XZWJLaXRMZWdhY3kvd2luL0NoYW5nZUxvZwpAQCAtMSwzICsxLDE1IEBACisyMDE5LTA1LTI2
ICBXZW5zb24gSHNpZWggIDx3ZW5zb25faHNpZWhAYXBwbGUuY29tPgorCisgICAgICAgIFtpT1Nd
IERyb3BwZWQgdGV4dCwgYXR0YWNobWVudHMsIGFuZCBpbWFnZXMgc2hvdWxkIGFuaW1hdGUgaW50
byBwbGFjZQorICAgICAgICBodHRwczovL2J1Z3Mud2Via2l0Lm9yZy9zaG93X2J1Zy5jZ2k/aWQ9
MTk4MjQzCisgICAgICAgIDxyZGFyOi8vcHJvYmxlbS8zNTIwNTM3Mz4KKworICAgICAgICBSZXZp
ZXdlZCBieSBUaW0gSG9ydG9uLgorCisgICAgICAgICogV2ViQ29yZVN1cHBvcnQvV2ViQ2hyb21l
Q2xpZW50LmNwcDoKKyAgICAgICAgKFdlYkNocm9tZUNsaWVudDo6ZGlkRmluaXNoTG9hZGluZ0lt
YWdlRm9yRWxlbWVudCk6CisgICAgICAgICogV2ViQ29yZVN1cHBvcnQvV2ViQ2hyb21lQ2xpZW50
Lmg6CisKIDIwMTktMDUtMDMgIERhbmllbCBCYXRlcyAgPGRhYmF0ZXNAYXBwbGUuY29tPgogCiAg
ICAgICAgIFBhc3MgS2V5Ym9hcmRFdmVudCBieSByZWZlcmVuY2UgaW4gbW9yZSBwbGFjZXMKZGlm
ZiAtLWdpdCBhL1NvdXJjZS9XZWJDb3JlL2xvYWRlci9FbXB0eUNsaWVudHMuaCBiL1NvdXJjZS9X
ZWJDb3JlL2xvYWRlci9FbXB0eUNsaWVudHMuaAppbmRleCBkNDUyMjhlZWQyMGViOTk1ZjVkZjJh
NDYyZmI0ZTM0YjczYjk4ZjM1Li5iNjliOTMwNmYxOWI0M2FhYzRkMjUwZmE3MzBiZTg0NWQ5ZGZl
ZTQ5IDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViQ29yZS9sb2FkZXIvRW1wdHlDbGllbnRzLmgKKysr
IGIvU291cmNlL1dlYkNvcmUvbG9hZGVyL0VtcHR5Q2xpZW50cy5oCkBAIC00MCw2ICs0MCw3IEBA
IG5hbWVzcGFjZSBXZWJDb3JlIHsKIAogY2xhc3MgRGlhZ25vc3RpY0xvZ2dpbmdDbGllbnQ7CiBj
bGFzcyBFZGl0b3JDbGllbnQ7CitjbGFzcyBIVE1MSW1hZ2VFbGVtZW50OwogY2xhc3MgUGFnZUNv
bmZpZ3VyYXRpb247CiAKIGNsYXNzIEVtcHR5Q2hyb21lQ2xpZW50IDogcHVibGljIENocm9tZUNs
aWVudCB7CkBAIC0xMTEsNiArMTEyLDggQEAgY2xhc3MgRW1wdHlDaHJvbWVDbGllbnQgOiBwdWJs
aWMgQ2hyb21lQ2xpZW50IHsKICAgICBJbnRQb2ludCBhY2Nlc3NpYmlsaXR5U2NyZWVuVG9Sb290
Vmlldyhjb25zdCBJbnRQb2ludCYgcCkgY29uc3QgZmluYWwgeyByZXR1cm4gcDsgfTsKICAgICBJ
bnRSZWN0IHJvb3RWaWV3VG9BY2Nlc3NpYmlsaXR5U2NyZWVuKGNvbnN0IEludFJlY3QmIHIpIGNv
bnN0IGZpbmFsIHsgcmV0dXJuIHI7IH07CiAKKyAgICB2b2lkIGRpZEZpbmlzaExvYWRpbmdJbWFn
ZUZvckVsZW1lbnQoSFRNTEltYWdlRWxlbWVudCYpIGZpbmFsIHsgfQorCiAgICAgUGxhdGZvcm1Q
YWdlQ2xpZW50IHBsYXRmb3JtUGFnZUNsaWVudCgpIGNvbnN0IGZpbmFsIHsgcmV0dXJuIDA7IH0K
ICAgICB2b2lkIGNvbnRlbnRzU2l6ZUNoYW5nZWQoRnJhbWUmLCBjb25zdCBJbnRTaXplJikgY29u
c3QgZmluYWwgeyB9CiAgICAgdm9pZCBpbnRyaW5zaWNDb250ZW50c1NpemVDaGFuZ2VkKGNvbnN0
IEludFNpemUmKSBjb25zdCBmaW5hbCB7IH0KZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJDb3JlL3Bh
Z2UvQ2hyb21lQ2xpZW50LmggYi9Tb3VyY2UvV2ViQ29yZS9wYWdlL0Nocm9tZUNsaWVudC5oCmlu
ZGV4IGYzNTM5MGM4YzNhZTI3OWY5ZDM2OTVmYTZkZTJlN2Y3OTc2OWM3ZWYuLjE2ZDNmOWMxYWVk
NWE3NWEwYTQ5Zjg0NWZlNDQxMDMwMmRiNGUxN2YgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJDb3Jl
L3BhZ2UvQ2hyb21lQ2xpZW50LmgKKysrIGIvU291cmNlL1dlYkNvcmUvcGFnZS9DaHJvbWVDbGll
bnQuaApAQCAtODcsNiArODcsNyBAQCBjbGFzcyBGcmFtZUxvYWRSZXF1ZXN0OwogY2xhc3MgR2Vv
bG9jYXRpb247CiBjbGFzcyBHcmFwaGljc0xheWVyOwogY2xhc3MgR3JhcGhpY3NMYXllckZhY3Rv
cnk7CitjbGFzcyBIVE1MSW1hZ2VFbGVtZW50OwogY2xhc3MgSFRNTElucHV0RWxlbWVudDsKIGNs
YXNzIEhUTUxNZWRpYUVsZW1lbnQ7CiBjbGFzcyBIVE1MVmlkZW9FbGVtZW50OwpAQCAtMTgyLDYg
KzE4Myw4IEBAIHB1YmxpYzoKICAgICB2aXJ0dWFsIEludFBvaW50IGFjY2Vzc2liaWxpdHlTY3Jl
ZW5Ub1Jvb3RWaWV3KGNvbnN0IEludFBvaW50JikgY29uc3QgPSAwOwogICAgIHZpcnR1YWwgSW50
UmVjdCByb290Vmlld1RvQWNjZXNzaWJpbGl0eVNjcmVlbihjb25zdCBJbnRSZWN0JikgY29uc3Qg
PSAwOwogCisgICAgdmlydHVhbCB2b2lkIGRpZEZpbmlzaExvYWRpbmdJbWFnZUZvckVsZW1lbnQo
SFRNTEltYWdlRWxlbWVudCYpID0gMDsKKwogICAgIHZpcnR1YWwgUGxhdGZvcm1QYWdlQ2xpZW50
IHBsYXRmb3JtUGFnZUNsaWVudCgpIGNvbnN0ID0gMDsKIAogI2lmIEVOQUJMRShDVVJTT1JfU1VQ
UE9SVCkKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJDb3JlL3BhZ2UvUGFnZS5jcHAgYi9Tb3VyY2Uv
V2ViQ29yZS9wYWdlL1BhZ2UuY3BwCmluZGV4IGFhMDEzYmY3NjMzZWNlMDM2ZGU5MGJmZTc0NWJh
NDM3ZGYyNTgwNWQuLjI5OTMyYmE5MzY3MTRmMjc5YjAwNjEzNjlmNGU1MDM3NDE2MTI0OWYgMTAw
NjQ0Ci0tLSBhL1NvdXJjZS9XZWJDb3JlL3BhZ2UvUGFnZS5jcHAKKysrIGIvU291cmNlL1dlYkNv
cmUvcGFnZS9QYWdlLmNwcApAQCAtMjk5Niw0ICsyOTk2LDkgQEAgdm9pZCBQYWdlOjpjb25maWd1
cmVMb2dnaW5nQ2hhbm5lbChjb25zdCBTdHJpbmcmIGNoYW5uZWxOYW1lLCBXVEZMb2dDaGFubmVs
U3RhdGUKICNlbmRpZgogfQogCit2b2lkIFBhZ2U6OmRpZEZpbmlzaExvYWRpbmdJbWFnZUZvckVs
ZW1lbnQoSFRNTEltYWdlRWxlbWVudCYgZWxlbWVudCkKK3sKKyAgICBjaHJvbWUoKS5jbGllbnQo
KS5kaWRGaW5pc2hMb2FkaW5nSW1hZ2VGb3JFbGVtZW50KGVsZW1lbnQpOworfQorCiB9IC8vIG5h
bWVzcGFjZSBXZWJDb3JlCmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9wYWdlL1BhZ2UuaCBi
L1NvdXJjZS9XZWJDb3JlL3BhZ2UvUGFnZS5oCmluZGV4IGVjM2Y1M2M4Mjg4MjY1YmY4ZTZmY2Y5
ZDFiMWNlOTkxMWRjNmRkNDUuLmU3YTFlYWU2MmZmN2NkMjU1MWZhNDBmNjkwOTQwYmZhZmEyN2Fh
NDQgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJDb3JlL3BhZ2UvUGFnZS5oCisrKyBiL1NvdXJjZS9X
ZWJDb3JlL3BhZ2UvUGFnZS5oCkBAIC01MjcsNiArNTI3LDggQEAgcHVibGljOgogICAgIFdFQkNP
UkVfRVhQT1JUIFZpc2liaWxpdHlTdGF0ZSB2aXNpYmlsaXR5U3RhdGUoKSBjb25zdDsKICAgICBX
RUJDT1JFX0VYUE9SVCB2b2lkIHJlc3VtZUFuaW1hdGluZ0ltYWdlcygpOwogCisgICAgdm9pZCBk
aWRGaW5pc2hMb2FkaW5nSW1hZ2VGb3JFbGVtZW50KEhUTUxJbWFnZUVsZW1lbnQmKTsKKwogICAg
IFdFQkNPUkVfRVhQT1JUIHZvaWQgYWRkTGF5b3V0TWlsZXN0b25lcyhPcHRpb25TZXQ8TGF5b3V0
TWlsZXN0b25lPik7CiAgICAgV0VCQ09SRV9FWFBPUlQgdm9pZCByZW1vdmVMYXlvdXRNaWxlc3Rv
bmVzKE9wdGlvblNldDxMYXlvdXRNaWxlc3RvbmU+KTsKICAgICBPcHRpb25TZXQ8TGF5b3V0TWls
ZXN0b25lPiByZXF1ZXN0ZWRMYXlvdXRNaWxlc3RvbmVzKCkgY29uc3QgeyByZXR1cm4gbV9yZXF1
ZXN0ZWRMYXlvdXRNaWxlc3RvbmVzOyB9CmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9yZW5k
ZXJpbmcvUmVuZGVySW1hZ2UuY3BwIGIvU291cmNlL1dlYkNvcmUvcmVuZGVyaW5nL1JlbmRlcklt
YWdlLmNwcAppbmRleCA4ZTg0MDAyMzVhZTE3MmVjODJmNDBhYmQ0ZTA5NDUxOWU0Zjg2ZDFkLi40
ZDZhYTc1N2VhYTM4MWNlMGNhY2Y4ZmU1ZmQxM2I4YjA4NDRkMmYwIDEwMDY0NAotLS0gYS9Tb3Vy
Y2UvV2ViQ29yZS9yZW5kZXJpbmcvUmVuZGVySW1hZ2UuY3BwCisrKyBiL1NvdXJjZS9XZWJDb3Jl
L3JlbmRlcmluZy9SZW5kZXJJbWFnZS5jcHAKQEAgLTM3OCw2ICszNzgsOSBAQCB2b2lkIFJlbmRl
ckltYWdlOjpub3RpZnlGaW5pc2hlZChDYWNoZWRSZXNvdXJjZSYgbmV3SW1hZ2UpCiAgICAgICAg
IC8vIHRoYXQgdGhlIGltYWdlIGlzIGRvbmUgYW5kIHRoZXkgY2FuIHJlZmVyZW5jZSBpdCBkaXJl
Y3RseS4KICAgICAgICAgY29udGVudENoYW5nZWQoSW1hZ2VDaGFuZ2VkKTsKICAgICB9CisKKyAg
ICBpZiAoaXM8SFRNTEltYWdlRWxlbWVudD4oZWxlbWVudCgpKSkKKyAgICAgICAgcGFnZSgpLmRp
ZEZpbmlzaExvYWRpbmdJbWFnZUZvckVsZW1lbnQoZG93bmNhc3Q8SFRNTEltYWdlRWxlbWVudD4o
KmVsZW1lbnQoKSkpOwogfQogCiBib29sIFJlbmRlckltYWdlOjppc1Nob3dpbmdNaXNzaW5nT3JJ
bWFnZUVycm9yKCkgY29uc3QKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJLaXQvVUlQcm9jZXNzL0FQ
SS9Db2NvYS9XS1dlYlZpZXcubW0gYi9Tb3VyY2UvV2ViS2l0L1VJUHJvY2Vzcy9BUEkvQ29jb2Ev
V0tXZWJWaWV3Lm1tCmluZGV4IGY2YTc4NjVkYjczYjExY2Q3NjM4NDllY2YzYmE3NDdiY2EwNTg0
MTMuLmQ4NzNkMTQ4MWE3MGJhZDUzMjIyZTZlZTk4ZjllODQ3NjkyNDc0MGUgMTAwNjQ0Ci0tLSBh
L1NvdXJjZS9XZWJLaXQvVUlQcm9jZXNzL0FQSS9Db2NvYS9XS1dlYlZpZXcubW0KKysrIGIvU291
cmNlL1dlYktpdC9VSVByb2Nlc3MvQVBJL0NvY29hL1dLV2ViVmlldy5tbQpAQCAtNjg4OSw2ICs2
ODg5LDExIEBAIC0gKE5TRGljdGlvbmFyeSAqKV9wcm9wZXJ0aWVzT2ZMYXllcldpdGhJRDoodW5z
aWduZWQgbG9uZyBsb25nKWxheWVySUQKICAgICB9OwogfQogCistICh2b2lkKV9kb0FmdGVyUmVj
ZWl2aW5nRWRpdERyYWdTbmFwc2hvdEZvclRlc3Rpbmc6KGRpc3BhdGNoX2Jsb2NrX3QpYWN0aW9u
Cit7CisgICAgW19jb250ZW50VmlldyBfZG9BZnRlclJlY2VpdmluZ0VkaXREcmFnU25hcHNob3RG
b3JUZXN0aW5nOmFjdGlvbl07Cit9CisKICNlbmRpZiAvLyBQTEFURk9STShJT1NfRkFNSUxZKQog
CiAjaWYgUExBVEZPUk0oTUFDKQpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYktpdC9VSVByb2Nlc3Mv
QVBJL0NvY29hL1dLV2ViVmlld1ByaXZhdGUuaCBiL1NvdXJjZS9XZWJLaXQvVUlQcm9jZXNzL0FQ
SS9Db2NvYS9XS1dlYlZpZXdQcml2YXRlLmgKaW5kZXggMGYxNzhjMDk4M2M3ZWYwZjViNGJlZDFj
NGI3ZDcxODE1ODE2NzBiMy4uYzY3NWJmZmYyNjZiNTc0OGE1NjZkMjc0MGJkNmQ3MzFlZGU2NDkw
OSAxMDA2NDQKLS0tIGEvU291cmNlL1dlYktpdC9VSVByb2Nlc3MvQVBJL0NvY29hL1dLV2ViVmll
d1ByaXZhdGUuaAorKysgYi9Tb3VyY2UvV2ViS2l0L1VJUHJvY2Vzcy9BUEkvQ29jb2EvV0tXZWJW
aWV3UHJpdmF0ZS5oCkBAIC00ODksNiArNDg5LDggQEAgdHlwZWRlZiBOU19PUFRJT05TKE5TVUlu
dGVnZXIsIF9XS1JlY3RFZGdlKSB7CiAKIEBwcm9wZXJ0eSAobm9uYXRvbWljLCByZWFkb25seSkg
Q0dSZWN0IF9kcmFnQ2FyZXRSZWN0IFdLX0FQSV9BVkFJTEFCTEUoaW9zKDExLjApKTsKIAorLSAo
dm9pZClfZG9BZnRlclJlY2VpdmluZ0VkaXREcmFnU25hcHNob3RGb3JUZXN0aW5nOihkaXNwYXRj
aF9ibG9ja190KWFjdGlvbiBXS19BUElfQVZBSUxBQkxFKGlvcyhXS19JT1NfVEJBKSk7CisKIC0g
KHZvaWQpX3JlcXVlc3RBY3RpdmF0ZWRFbGVtZW50QXRQb3NpdGlvbjooQ0dQb2ludClwb3NpdGlv
biBjb21wbGV0aW9uQmxvY2s6KHZvaWQgKF4pKF9XS0FjdGl2YXRlZEVsZW1lbnRJbmZvICopKWJs
b2NrIFdLX0FQSV9BVkFJTEFCTEUoaW9zKDExLjApKTsKIC0gKHZvaWQpX2FjY2Vzc2liaWxpdHlS
ZXRyaWV2ZVJlY3RzQXRTZWxlY3Rpb25PZmZzZXQ6KE5TSW50ZWdlcilvZmZzZXQgd2l0aFRleHQ6
KE5TU3RyaW5nICopdGV4dCBjb21wbGV0aW9uSGFuZGxlcjoodm9pZCAoXikoTlNBcnJheTxOU1Zh
bHVlICo+ICpyZWN0cykpY29tcGxldGlvbkhhbmRsZXIgV0tfQVBJX0FWQUlMQUJMRShpb3MoMTEu
MykpOwogLSAodm9pZClfYWNjZXNzaWJpbGl0eVN0b3JlU2VsZWN0aW9uIFdLX0FQSV9BVkFJTEFC
TEUoaW9zKDExLjMpKTsKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJLaXQvVUlQcm9jZXNzL1BhZ2VD
bGllbnQuaCBiL1NvdXJjZS9XZWJLaXQvVUlQcm9jZXNzL1BhZ2VDbGllbnQuaAppbmRleCBhZmM5
NGNlOTAyZGZkOTEzZTg0ZWI3ZDk2NThkMGQ3NTNhYjA5YmQxLi42NjljMWRhNmRiYjk4ZjY2OTVj
Y2FkZWQyMmI3NDdhZDBlZmNkOWExIDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViS2l0L1VJUHJvY2Vz
cy9QYWdlQ2xpZW50LmgKKysrIGIvU291cmNlL1dlYktpdC9VSVByb2Nlc3MvUGFnZUNsaWVudC5o
CkBAIC00NzksNyArNDc5LDggQEAgcHVibGljOgogI2lmIEVOQUJMRShEQVRBX0lOVEVSQUNUSU9O
KQogICAgIHZpcnR1YWwgdm9pZCBkaWRIYW5kbGVEcmFnU3RhcnRSZXF1ZXN0KGJvb2wgc3RhcnRl
ZCkgPSAwOwogICAgIHZpcnR1YWwgdm9pZCBkaWRIYW5kbGVBZGRpdGlvbmFsRHJhZ0l0ZW1zUmVx
dWVzdChib29sIGFkZGVkKSA9IDA7Ci0gICAgdmlydHVhbCB2b2lkIGRpZENvbmNsdWRlRWRpdERy
YWcoT3B0aW9uYWw8V2ViQ29yZTo6VGV4dEluZGljYXRvckRhdGE+KSA9IDA7CisgICAgdmlydHVh
bCB2b2lkIHdpbGxSZWNlaXZlRWRpdERyYWdTbmFwc2hvdCgpID0gMDsKKyAgICB2aXJ0dWFsIHZv
aWQgZGlkUmVjZWl2ZUVkaXREcmFnU25hcHNob3QoT3B0aW9uYWw8V2ViQ29yZTo6VGV4dEluZGlj
YXRvckRhdGE+KSA9IDA7CiAgICAgdmlydHVhbCB2b2lkIGRpZENoYW5nZURyYWdDYXJldFJlY3Qo
Y29uc3QgV2ViQ29yZTo6SW50UmVjdCYgcHJldmlvdXNDYXJldFJlY3QsIGNvbnN0IFdlYkNvcmU6
OkludFJlY3QmIGNhcmV0UmVjdCkgPSAwOwogI2VuZGlmCiAKZGlmZiAtLWdpdCBhL1NvdXJjZS9X
ZWJLaXQvVUlQcm9jZXNzL1dlYlBhZ2VQcm94eS5oIGIvU291cmNlL1dlYktpdC9VSVByb2Nlc3Mv
V2ViUGFnZVByb3h5LmgKaW5kZXggNmM1YWQ2MjVkMTIwNGM3YzBkODM5Njk5ZTdlMmY2NWE1YmE2
NGUwMy4uNjMxYThmZTU0MDk3M2E3YmVmYTMyYzdmMGIyZjlkZjdjOGY0ZmYwMyAxMDA2NDQKLS0t
IGEvU291cmNlL1dlYktpdC9VSVByb2Nlc3MvV2ViUGFnZVByb3h5LmgKKysrIGIvU291cmNlL1dl
YktpdC9VSVByb2Nlc3MvV2ViUGFnZVByb3h5LmgKQEAgLTcyNiwxMiArNzI2LDE0IEBAIHB1Ymxp
YzoKICAgICB2b2lkIHVwZGF0ZVNlbGVjdGlvbldpdGhEZWx0YShpbnQ2NF90IGxvY2F0aW9uRGVs
dGEsIGludDY0X3QgbGVuZ3RoRGVsdGEsIENvbXBsZXRpb25IYW5kbGVyPHZvaWQoKT4mJik7CiAg
ICAgdm9pZCByZXF1ZXN0RG9jdW1lbnRFZGl0aW5nQ29udGV4dChXZWJLaXQ6OkRvY3VtZW50RWRp
dGluZ0NvbnRleHRSZXF1ZXN0LCBDb21wbGV0aW9uSGFuZGxlcjx2b2lkKFdlYktpdDo6RG9jdW1l
bnRFZGl0aW5nQ29udGV4dCk+JiYpOwogICAgIHZvaWQgZ2VuZXJhdGVTeW50aGV0aWNFZGl0aW5n
Q29tbWFuZChTeW50aGV0aWNFZGl0aW5nQ29tbWFuZFR5cGUpOwotI2lmIEVOQUJMRShEQVRBX0lO
VEVSQUNUSU9OKQorI2lmIEVOQUJMRShEUkFHX1NVUFBPUlQpCiAgICAgdm9pZCBkaWRIYW5kbGVE
cmFnU3RhcnRSZXF1ZXN0KGJvb2wgc3RhcnRlZCk7CiAgICAgdm9pZCBkaWRIYW5kbGVBZGRpdGlv
bmFsRHJhZ0l0ZW1zUmVxdWVzdChib29sIGFkZGVkKTsKICAgICB2b2lkIHJlcXVlc3REcmFnU3Rh
cnQoY29uc3QgV2ViQ29yZTo6SW50UG9pbnQmIGNsaWVudFBvc2l0aW9uLCBjb25zdCBXZWJDb3Jl
OjpJbnRQb2ludCYgZ2xvYmFsUG9zaXRpb24sIFdlYkNvcmU6OkRyYWdTb3VyY2VBY3Rpb24gYWxs
b3dlZEFjdGlvbnMpOwogICAgIHZvaWQgcmVxdWVzdEFkZGl0aW9uYWxJdGVtc0ZvckRyYWdTZXNz
aW9uKGNvbnN0IFdlYkNvcmU6OkludFBvaW50JiBjbGllbnRQb3NpdGlvbiwgY29uc3QgV2ViQ29y
ZTo6SW50UG9pbnQmIGdsb2JhbFBvc2l0aW9uLCBXZWJDb3JlOjpEcmFnU291cmNlQWN0aW9uIGFs
bG93ZWRBY3Rpb25zKTsKLSAgICB2b2lkIGRpZENvbmNsdWRlRWRpdERyYWcoT3B0aW9uYWw8V2Vi
Q29yZTo6VGV4dEluZGljYXRvckRhdGE+KTsKKyAgICB2b2lkIHdpbGxSZWNlaXZlRWRpdERyYWdT
bmFwc2hvdCgpOworICAgIHZvaWQgZGlkUmVjZWl2ZUVkaXREcmFnU25hcHNob3QoT3B0aW9uYWw8
V2ViQ29yZTo6VGV4dEluZGljYXRvckRhdGE+KTsKKyAgICB2b2lkIGRpZENvbmNsdWRlRHJvcCgp
OwogI2VuZGlmCiAjZW5kaWYgLy8gUExBVEZPUk0oSU9TX0ZBTUlMWSkKICNpZiBFTkFCTEUoREFU
QV9ERVRFQ1RJT04pCmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViS2l0L1VJUHJvY2Vzcy9XZWJQYWdl
UHJveHkubWVzc2FnZXMuaW4gYi9Tb3VyY2UvV2ViS2l0L1VJUHJvY2Vzcy9XZWJQYWdlUHJveHku
bWVzc2FnZXMuaW4KaW5kZXggNmZjZWNkYzZiNjVkODhjOWM5ODU4NTM5NWFiNTllN2Q4MTI2YmEw
Ni4uNDA0NmUyZTJiMjQ2MjI5M2UyOWZhNDU4MGYwNzE0YTkwYzM5OTgzMyAxMDA2NDQKLS0tIGEv
U291cmNlL1dlYktpdC9VSVByb2Nlc3MvV2ViUGFnZVByb3h5Lm1lc3NhZ2VzLmluCisrKyBiL1Nv
dXJjZS9XZWJLaXQvVUlQcm9jZXNzL1dlYlBhZ2VQcm94eS5tZXNzYWdlcy5pbgpAQCAtMzMzLDcg
KzMzMyw4IEBAIG1lc3NhZ2VzIC0+IFdlYlBhZ2VQcm94eSB7CiAjaWYgRU5BQkxFKERBVEFfSU5U
RVJBQ1RJT04pCiAgICAgRGlkSGFuZGxlRHJhZ1N0YXJ0UmVxdWVzdChib29sIHN0YXJ0ZWQpCiAg
ICAgRGlkSGFuZGxlQWRkaXRpb25hbERyYWdJdGVtc1JlcXVlc3QoYm9vbCBhZGRlZCkKLSAgICBE
aWRDb25jbHVkZUVkaXREcmFnKE9wdGlvbmFsPFdlYkNvcmU6OlRleHRJbmRpY2F0b3JEYXRhPiB0
ZXh0SW5kaWNhdG9yKQorICAgIFdpbGxSZWNlaXZlRWRpdERyYWdTbmFwc2hvdCgpCisgICAgRGlk
UmVjZWl2ZUVkaXREcmFnU25hcHNob3QoT3B0aW9uYWw8V2ViQ29yZTo6VGV4dEluZGljYXRvckRh
dGE+IHRleHRJbmRpY2F0b3IpCiAjZW5kaWYKIAogI2lmIFBMQVRGT1JNKENPQ09BKQpkaWZmIC0t
Z2l0IGEvU291cmNlL1dlYktpdC9VSVByb2Nlc3MvaW9zL0RyYWdEcm9wSW50ZXJhY3Rpb25TdGF0
ZS5oIGIvU291cmNlL1dlYktpdC9VSVByb2Nlc3MvaW9zL0RyYWdEcm9wSW50ZXJhY3Rpb25TdGF0
ZS5oCmluZGV4IGYxODQ5YTI1MmNkOTk3MmM2ZTAyYjc4YmZkOTFjYzc5YTM4MGUxN2YuLmY1N2Ri
OWYwOWUxNWRiYzRlM2JkYzBiOTQwOTViNTA4MTdlODE0ODkgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9X
ZWJLaXQvVUlQcm9jZXNzL2lvcy9EcmFnRHJvcEludGVyYWN0aW9uU3RhdGUuaAorKysgYi9Tb3Vy
Y2UvV2ViS2l0L1VJUHJvY2Vzcy9pb3MvRHJhZ0Ryb3BJbnRlcmFjdGlvblN0YXRlLmgKQEAgLTQw
LDYgKzQwLDcgQEAKIAogbmFtZXNwYWNlIFdlYkNvcmUgewogc3RydWN0IERyYWdJdGVtOworc3Ry
dWN0IFRleHRJbmRpY2F0b3JEYXRhOwogfQogCiBuYW1lc3BhY2UgV2ViS2l0IHsKQEAgLTU4LDYg
KzU5LDExIEBAIHN0cnVjdCBEcmFnU291cmNlU3RhdGUgewogICAgIE5TSW50ZWdlciBpdGVtSWRl
bnRpZmllciB7IDAgfTsKIH07CiAKK3N0cnVjdCBJdGVtQW5kUHJldmlld1Byb3ZpZGVyIHsKKyAg
ICBSZXRhaW5QdHI8VUlEcmFnSXRlbT4gaXRlbTsKKyAgICBCbG9ja1B0cjx2b2lkKFVJVGFyZ2V0
ZWREcmFnUHJldmlldyAqKT4gcHJvdmlkZXI7Cit9OworCiBjbGFzcyBEcmFnRHJvcEludGVyYWN0
aW9uU3RhdGUgewogcHVibGljOgogICAgIGJvb2wgYW55QWN0aXZlRHJhZ1NvdXJjZUlzKFdlYkNv
cmU6OkRyYWdTb3VyY2VBY3Rpb24pIGNvbnN0OwpAQCAtOTIsNiArOTgsMTAgQEAgcHVibGljOgog
ICAgIEJsb2NrUHRyPHZvaWQoKT4gdGFrZURyYWdDYW5jZWxTZXREb3duQmxvY2soKSB7IHJldHVy
biBXVEZNb3ZlKG1fZHJhZ0NhbmNlbFNldERvd25CbG9jayk7IH0KICAgICBCbG9ja1B0cjx2b2lk
KE5TQXJyYXk8VUlEcmFnSXRlbSAqPiAqKT4gdGFrZUFkZERyYWdJdGVtQ29tcGxldGlvbkJsb2Nr
KCkgeyByZXR1cm4gV1RGTW92ZShtX2FkZERyYWdJdGVtQ29tcGxldGlvbkJsb2NrKTsgfQogCisg
ICAgdm9pZCBwcmVwYXJlRm9yRGVsYXllZERyb3BQcmV2aWV3KFVJRHJhZ0l0ZW0gKiwgdm9pZChe
cHJvdmlkZXIpKFVJVGFyZ2V0ZWREcmFnUHJldmlldyAqcHJldmlldykpOworICAgIHZvaWQgZGVs
aXZlckRlbGF5ZWREcm9wUHJldmlldyhVSVZpZXcgKmNvbnRlbnRWaWV3LCBVSVZpZXcgKnByZXZp
ZXdDb250YWluZXIsIGNvbnN0IFdlYkNvcmU6OlRleHRJbmRpY2F0b3JEYXRhJik7CisgICAgdm9p
ZCBjbGVhckFsbERlbGF5ZWRJdGVtUHJldmlld1Byb3ZpZGVycygpOworCiBwcml2YXRlOgogICAg
IHZvaWQgdXBkYXRlUHJldmlld3NGb3JBY3RpdmVEcmFnU291cmNlcygpOwogICAgIE9wdGlvbmFs
PERyYWdTb3VyY2VTdGF0ZT4gYWN0aXZlRHJhZ1NvdXJjZUZvckl0ZW0oVUlEcmFnSXRlbSAqKSBj
b25zdDsKQEAgLTEwOCw2ICsxMTgsNyBAQCBwcml2YXRlOgogCiAgICAgT3B0aW9uYWw8RHJhZ1Nv
dXJjZVN0YXRlPiBtX3N0YWdlZERyYWdTb3VyY2U7CiAgICAgVmVjdG9yPERyYWdTb3VyY2VTdGF0
ZT4gbV9hY3RpdmVEcmFnU291cmNlczsKKyAgICBWZWN0b3I8SXRlbUFuZFByZXZpZXdQcm92aWRl
cj4gbV9kZWxheWVkSXRlbVByZXZpZXdQcm92aWRlcnM7CiB9OwogCiB9IC8vIG5hbWVzcGFjZSBX
ZWJLaXQKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJLaXQvVUlQcm9jZXNzL2lvcy9EcmFnRHJvcElu
dGVyYWN0aW9uU3RhdGUubW0gYi9Tb3VyY2UvV2ViS2l0L1VJUHJvY2Vzcy9pb3MvRHJhZ0Ryb3BJ
bnRlcmFjdGlvblN0YXRlLm1tCmluZGV4IDA2NzBjNDU5YzZhODUxYzQwN2JjOWIyNzY4MTFiYThk
ZGVjNjgxNTYuLjhmMjgwN2IyMzBlYjMxNDA3ODhjY2Q5Y2NjOWY2MjNiZGRmNTE2YmEgMTAwNjQ0
Ci0tLSBhL1NvdXJjZS9XZWJLaXQvVUlQcm9jZXNzL2lvcy9EcmFnRHJvcEludGVyYWN0aW9uU3Rh
dGUubW0KKysrIGIvU291cmNlL1dlYktpdC9VSVByb2Nlc3MvaW9zL0RyYWdEcm9wSW50ZXJhY3Rp
b25TdGF0ZS5tbQpAQCAtNDQsNyArNDQsNyBAQCBzdGF0aWMgVUlEcmFnSXRlbSAqZHJhZ0l0ZW1N
YXRjaGluZ0lkZW50aWZpZXIoaWQgPFVJRHJhZ1Nlc3Npb24+IHNlc3Npb24sIE5TSW50ZQogICAg
IHJldHVybiBuaWw7CiB9CiAKLXN0YXRpYyBVSVRhcmdldGVkRHJhZ1ByZXZpZXcgKmNyZWF0ZVRh
cmdldGVkRHJhZ1ByZXZpZXcoVUlJbWFnZSAqaW1hZ2UsIFVJVmlldyAqcm9vdFZpZXcsIFVJVmll
dyAqcHJldmlld0NvbnRhaW5lciwgY29uc3QgRmxvYXRSZWN0JiBmcmFtZUluUm9vdFZpZXdDb29y
ZGluYXRlcywgY29uc3QgVmVjdG9yPEZsb2F0UmVjdD4mIGNsaXBwaW5nUmVjdHNJbkZyYW1lQ29v
cmRpbmF0ZXMsIFVJQ29sb3IgKmJhY2tncm91bmRDb2xvciwgVUlCZXppZXJQYXRoICp2aXNpYmxl
UGF0aCkKK3N0YXRpYyBSZXRhaW5QdHI8VUlUYXJnZXRlZERyYWdQcmV2aWV3PiBjcmVhdGVUYXJn
ZXRlZERyYWdQcmV2aWV3KFVJSW1hZ2UgKmltYWdlLCBVSVZpZXcgKnJvb3RWaWV3LCBVSVZpZXcg
KnByZXZpZXdDb250YWluZXIsIGNvbnN0IEZsb2F0UmVjdCYgZnJhbWVJblJvb3RWaWV3Q29vcmRp
bmF0ZXMsIGNvbnN0IFZlY3RvcjxGbG9hdFJlY3Q+JiBjbGlwcGluZ1JlY3RzSW5GcmFtZUNvb3Jk
aW5hdGVzLCBVSUNvbG9yICpiYWNrZ3JvdW5kQ29sb3IsIFVJQmV6aWVyUGF0aCAqdmlzaWJsZVBh
dGgpCiB7CiAgICAgaWYgKGZyYW1lSW5Sb290Vmlld0Nvb3JkaW5hdGVzLmlzRW1wdHkoKSB8fCAh
aW1hZ2UpCiAgICAgICAgIHJldHVybiBudWxscHRyOwpAQCAtNzgsOCArNzgsNyBAQCBzdGF0aWMg
VUlUYXJnZXRlZERyYWdQcmV2aWV3ICpjcmVhdGVUYXJnZXRlZERyYWdQcmV2aWV3KFVJSW1hZ2Ug
KmltYWdlLCBVSVZpZXcgKgogCiAgICAgQ0dQb2ludCBjZW50ZXJJbkNvbnRhaW5lckNvb3JkaW5h
dGVzID0geyBDR1JlY3RHZXRNaWRYKGZyYW1lSW5Db250YWluZXJDb29yZGluYXRlcyksIENHUmVj
dEdldE1pZFkoZnJhbWVJbkNvbnRhaW5lckNvb3JkaW5hdGVzKSB9OwogICAgIGF1dG8gdGFyZ2V0
ID0gYWRvcHROUyhbW1VJRHJhZ1ByZXZpZXdUYXJnZXQgYWxsb2NdIGluaXRXaXRoQ29udGFpbmVy
OnByZXZpZXdDb250YWluZXIgY2VudGVyOmNlbnRlckluQ29udGFpbmVyQ29vcmRpbmF0ZXNdKTsK
LSAgICBhdXRvIGRyYWdQcmV2aWV3ID0gYWRvcHROUyhbW1VJVGFyZ2V0ZWREcmFnUHJldmlldyBh
bGxvY10gaW5pdFdpdGhWaWV3OmltYWdlVmlldy5nZXQoKSBwYXJhbWV0ZXJzOnBhcmFtZXRlcnMu
Z2V0KCkgdGFyZ2V0OnRhcmdldC5nZXQoKV0pOwotICAgIHJldHVybiBkcmFnUHJldmlldy5hdXRv
cmVsZWFzZSgpOworICAgIHJldHVybiBhZG9wdE5TKFtbVUlUYXJnZXRlZERyYWdQcmV2aWV3IGFs
bG9jXSBpbml0V2l0aFZpZXc6aW1hZ2VWaWV3LmdldCgpIHBhcmFtZXRlcnM6cGFyYW1ldGVycy5n
ZXQoKSB0YXJnZXQ6dGFyZ2V0LmdldCgpXSk7CiB9CiAKIHN0YXRpYyBSZXRhaW5QdHI8VUlJbWFn
ZT4gdWlJbWFnZUZvckltYWdlKEltYWdlKiBpbWFnZSkKQEAgLTE4Niw2ICsxODUsMzAgQEAgdm9p
ZCBEcmFnRHJvcEludGVyYWN0aW9uU3RhdGU6OmRyYWdTZXNzaW9uV2lsbEJlZ2luKCkKICAgICB1
cGRhdGVQcmV2aWV3c0ZvckFjdGl2ZURyYWdTb3VyY2VzKCk7CiB9CiAKK3ZvaWQgRHJhZ0Ryb3BJ
bnRlcmFjdGlvblN0YXRlOjpwcmVwYXJlRm9yRGVsYXllZERyb3BQcmV2aWV3KFVJRHJhZ0l0ZW0g
Kml0ZW0sIHZvaWQoXnByb3ZpZGVyKShVSVRhcmdldGVkRHJhZ1ByZXZpZXcgKnByZXZpZXcpKQor
eworICAgIG1fZGVsYXllZEl0ZW1QcmV2aWV3UHJvdmlkZXJzLmFwcGVuZCh7IGl0ZW0sIHByb3Zp
ZGVyIH0pOworfQorCit2b2lkIERyYWdEcm9wSW50ZXJhY3Rpb25TdGF0ZTo6ZGVsaXZlckRlbGF5
ZWREcm9wUHJldmlldyhVSVZpZXcgKmNvbnRlbnRWaWV3LCBVSVZpZXcgKnByZXZpZXdDb250YWlu
ZXIsIGNvbnN0IFdlYkNvcmU6OlRleHRJbmRpY2F0b3JEYXRhJiBpbmRpY2F0b3IpCit7CisgICAg
aWYgKG1fZGVsYXllZEl0ZW1QcmV2aWV3UHJvdmlkZXJzLmlzRW1wdHkoKSkKKyAgICAgICAgcmV0
dXJuOworCisgICAgYXV0byB0ZXh0SW5kaWNhdG9ySW1hZ2UgPSB1aUltYWdlRm9ySW1hZ2UoaW5k
aWNhdG9yLmNvbnRlbnRJbWFnZS5nZXQoKSk7CisgICAgYXV0byBwcmV2aWV3ID0gY3JlYXRlVGFy
Z2V0ZWREcmFnUHJldmlldyh0ZXh0SW5kaWNhdG9ySW1hZ2UuZ2V0KCksIGNvbnRlbnRWaWV3LCBw
cmV2aWV3Q29udGFpbmVyLCBpbmRpY2F0b3IudGV4dEJvdW5kaW5nUmVjdEluUm9vdFZpZXdDb29y
ZGluYXRlcywgaW5kaWNhdG9yLnRleHRSZWN0c0luQm91bmRpbmdSZWN0Q29vcmRpbmF0ZXMsIFtV
SUNvbG9yIGNvbG9yV2l0aENHQ29sb3I6Y2FjaGVkQ0dDb2xvcihpbmRpY2F0b3IuZXN0aW1hdGVk
QmFja2dyb3VuZENvbG9yKV0sIG5pbCk7CisgICAgZm9yIChhdXRvJiBpdGVtQW5kUHJldmlld1By
b3ZpZGVyIDogbV9kZWxheWVkSXRlbVByZXZpZXdQcm92aWRlcnMpCisgICAgICAgIGl0ZW1BbmRQ
cmV2aWV3UHJvdmlkZXIucHJvdmlkZXIocHJldmlldy5nZXQoKSk7CisgICAgbV9kZWxheWVkSXRl
bVByZXZpZXdQcm92aWRlcnMuY2xlYXIoKTsKK30KKwordm9pZCBEcmFnRHJvcEludGVyYWN0aW9u
U3RhdGU6OmNsZWFyQWxsRGVsYXllZEl0ZW1QcmV2aWV3UHJvdmlkZXJzKCkKK3sKKyAgICBmb3Ig
KGF1dG8mIGl0ZW1BbmRQcmV2aWV3UHJvdmlkZXIgOiBtX2RlbGF5ZWRJdGVtUHJldmlld1Byb3Zp
ZGVycykKKyAgICAgICAgaXRlbUFuZFByZXZpZXdQcm92aWRlci5wcm92aWRlcihuaWwpOworICAg
IG1fZGVsYXllZEl0ZW1QcmV2aWV3UHJvdmlkZXJzLmNsZWFyKCk7Cit9CisKIFVJVGFyZ2V0ZWRE
cmFnUHJldmlldyAqRHJhZ0Ryb3BJbnRlcmFjdGlvblN0YXRlOjpwcmV2aWV3Rm9yRHJhZ0l0ZW0o
VUlEcmFnSXRlbSAqaXRlbSwgVUlWaWV3ICpjb250ZW50VmlldywgVUlWaWV3ICpwcmV2aWV3Q29u
dGFpbmVyKSBjb25zdAogewogICAgIGF1dG8gZm91bmRTb3VyY2UgPSBhY3RpdmVEcmFnU291cmNl
Rm9ySXRlbShpdGVtKTsKQEAgLTE5NywxNSArMjIwLDE1IEBAIFVJVGFyZ2V0ZWREcmFnUHJldmll
dyAqRHJhZ0Ryb3BJbnRlcmFjdGlvblN0YXRlOjpwcmV2aWV3Rm9yRHJhZ0l0ZW0oVUlEcmFnSXRl
bSAqCiAgICAgICAgIGlmIChzaG91bGRVc2VWaXNpYmxlUGF0aFRvQ3JlYXRlUHJldmlld0ZvckRy
YWdTb3VyY2Uoc291cmNlKSkgewogICAgICAgICAgICAgYXV0byBwYXRoID0gc291cmNlLnZpc2li
bGVQYXRoLnZhbHVlKCk7CiAgICAgICAgICAgICBVSUJlemllclBhdGggKnZpc2libGVQYXRoID0g
W1VJQmV6aWVyUGF0aCBiZXppZXJQYXRoV2l0aENHUGF0aDpwYXRoLmVuc3VyZVBsYXRmb3JtUGF0
aCgpXTsKLSAgICAgICAgICAgIHJldHVybiBjcmVhdGVUYXJnZXRlZERyYWdQcmV2aWV3KHNvdXJj
ZS5pbWFnZS5nZXQoKSwgY29udGVudFZpZXcsIHByZXZpZXdDb250YWluZXIsIHNvdXJjZS5kcmFn
UHJldmlld0ZyYW1lSW5Sb290Vmlld0Nvb3JkaW5hdGVzLCB7IH0sIG5pbCwgdmlzaWJsZVBhdGgp
OworICAgICAgICAgICAgcmV0dXJuIGNyZWF0ZVRhcmdldGVkRHJhZ1ByZXZpZXcoc291cmNlLmlt
YWdlLmdldCgpLCBjb250ZW50VmlldywgcHJldmlld0NvbnRhaW5lciwgc291cmNlLmRyYWdQcmV2
aWV3RnJhbWVJblJvb3RWaWV3Q29vcmRpbmF0ZXMsIHsgfSwgbmlsLCB2aXNpYmxlUGF0aCkuYXV0
b3JlbGVhc2UoKTsKICAgICAgICAgfQotICAgICAgICByZXR1cm4gY3JlYXRlVGFyZ2V0ZWREcmFn
UHJldmlldyhzb3VyY2UuaW1hZ2UuZ2V0KCksIGNvbnRlbnRWaWV3LCBwcmV2aWV3Q29udGFpbmVy
LCBzb3VyY2UuZHJhZ1ByZXZpZXdGcmFtZUluUm9vdFZpZXdDb29yZGluYXRlcywgeyB9LCBuaWws
IG5pbCk7CisgICAgICAgIHJldHVybiBjcmVhdGVUYXJnZXRlZERyYWdQcmV2aWV3KHNvdXJjZS5p
bWFnZS5nZXQoKSwgY29udGVudFZpZXcsIHByZXZpZXdDb250YWluZXIsIHNvdXJjZS5kcmFnUHJl
dmlld0ZyYW1lSW5Sb290Vmlld0Nvb3JkaW5hdGVzLCB7IH0sIG5pbCwgbmlsKS5hdXRvcmVsZWFz
ZSgpOwogICAgIH0KIAogICAgIGlmIChzaG91bGRVc2VUZXh0SW5kaWNhdG9yVG9DcmVhdGVQcmV2
aWV3Rm9yRHJhZ1NvdXJjZShzb3VyY2UpKSB7CiAgICAgICAgIGF1dG8gaW5kaWNhdG9yID0gc291
cmNlLmluZGljYXRvckRhdGEudmFsdWUoKTsKICAgICAgICAgYXV0byB0ZXh0SW5kaWNhdG9ySW1h
Z2UgPSB1aUltYWdlRm9ySW1hZ2UoaW5kaWNhdG9yLmNvbnRlbnRJbWFnZS5nZXQoKSk7Ci0gICAg
ICAgIHJldHVybiBjcmVhdGVUYXJnZXRlZERyYWdQcmV2aWV3KHRleHRJbmRpY2F0b3JJbWFnZS5n
ZXQoKSwgY29udGVudFZpZXcsIHByZXZpZXdDb250YWluZXIsIGluZGljYXRvci50ZXh0Qm91bmRp
bmdSZWN0SW5Sb290Vmlld0Nvb3JkaW5hdGVzLCBpbmRpY2F0b3IudGV4dFJlY3RzSW5Cb3VuZGlu
Z1JlY3RDb29yZGluYXRlcywgW1VJQ29sb3IgY29sb3JXaXRoQ0dDb2xvcjpjYWNoZWRDR0NvbG9y
KGluZGljYXRvci5lc3RpbWF0ZWRCYWNrZ3JvdW5kQ29sb3IpXSwgbmlsKTsKKyAgICAgICAgcmV0
dXJuIGNyZWF0ZVRhcmdldGVkRHJhZ1ByZXZpZXcodGV4dEluZGljYXRvckltYWdlLmdldCgpLCBj
b250ZW50VmlldywgcHJldmlld0NvbnRhaW5lciwgaW5kaWNhdG9yLnRleHRCb3VuZGluZ1JlY3RJ
blJvb3RWaWV3Q29vcmRpbmF0ZXMsIGluZGljYXRvci50ZXh0UmVjdHNJbkJvdW5kaW5nUmVjdENv
b3JkaW5hdGVzLCBbVUlDb2xvciBjb2xvcldpdGhDR0NvbG9yOmNhY2hlZENHQ29sb3IoaW5kaWNh
dG9yLmVzdGltYXRlZEJhY2tncm91bmRDb2xvcildLCBuaWwpLmF1dG9yZWxlYXNlKCk7CiAgICAg
fQogCiAgICAgcmV0dXJuIG5pbDsKQEAgLTI2Niw2ICsyODksOCBAQCB2b2lkIERyYWdEcm9wSW50
ZXJhY3Rpb25TdGF0ZTo6Y2xlYXJTdGFnZWREcmFnU291cmNlKERpZEJlY29tZUFjdGl2ZSBkaWRC
ZWNvbWVBYwogCiB2b2lkIERyYWdEcm9wSW50ZXJhY3Rpb25TdGF0ZTo6ZHJhZ0FuZERyb3BTZXNz
aW9uc0RpZEVuZCgpCiB7CisgICAgY2xlYXJBbGxEZWxheWVkSXRlbVByZXZpZXdQcm92aWRlcnMo
KTsKKwogICAgIC8vIElmIGFueSBvZiBVSUtpdCdzIGNvbXBsZXRpb24gYmxvY2tzIGFyZSBzdGls
bCBpbi1mbGlnaHQgd2hlbiB0aGUgZHJhZyBpbnRlcmFjdGlvbiBlbmRzLCB3ZSBuZWVkIHRvIGVu
c3VyZSB0aGF0IHRoZXkgYXJlIHN0aWxsIGludm9rZWQKICAgICAvLyB0byBwcmV2ZW50IFVJS2l0
IGZyb20gZ2V0dGluZyBpbnRvIGFuIGluY29uc2lzdGVudCBzdGF0ZS4KICAgICBpZiAoYXV0byBj
b21wbGV0aW9uQmxvY2sgPSB0YWtlRHJhZ0NhbmNlbFNldERvd25CbG9jaygpKQpkaWZmIC0tZ2l0
IGEvU291cmNlL1dlYktpdC9VSVByb2Nlc3MvaW9zL1BhZ2VDbGllbnRJbXBsSU9TLmggYi9Tb3Vy
Y2UvV2ViS2l0L1VJUHJvY2Vzcy9pb3MvUGFnZUNsaWVudEltcGxJT1MuaAppbmRleCA4NzZhYzkx
MDgwOGQyZTk3ZDAxOGVjNjJlZWQ3OWQzYzcwNTA3OTFiLi40MTNjOTNiM2FjMDVlNmM1ZjY1Mzdk
NDlmNTEyODIzNWVmNWM0YTBmIDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViS2l0L1VJUHJvY2Vzcy9p
b3MvUGFnZUNsaWVudEltcGxJT1MuaAorKysgYi9Tb3VyY2UvV2ViS2l0L1VJUHJvY2Vzcy9pb3Mv
UGFnZUNsaWVudEltcGxJT1MuaApAQCAtMjM3LDcgKzIzNyw4IEBAIHByaXZhdGU6CiAgICAgdm9p
ZCBkaWRIYW5kbGVEcmFnU3RhcnRSZXF1ZXN0KGJvb2wgc3RhcnRlZCkgb3ZlcnJpZGU7CiAgICAg
dm9pZCBkaWRIYW5kbGVBZGRpdGlvbmFsRHJhZ0l0ZW1zUmVxdWVzdChib29sIGFkZGVkKSBvdmVy
cmlkZTsKICAgICB2b2lkIHN0YXJ0RHJhZyhjb25zdCBXZWJDb3JlOjpEcmFnSXRlbSYsIGNvbnN0
IFNoYXJlYWJsZUJpdG1hcDo6SGFuZGxlJiBpbWFnZSkgb3ZlcnJpZGU7Ci0gICAgdm9pZCBkaWRD
b25jbHVkZUVkaXREcmFnKE9wdGlvbmFsPFdlYkNvcmU6OlRleHRJbmRpY2F0b3JEYXRhPikgb3Zl
cnJpZGU7CisgICAgdm9pZCB3aWxsUmVjZWl2ZUVkaXREcmFnU25hcHNob3QoKSBvdmVycmlkZTsK
KyAgICB2b2lkIGRpZFJlY2VpdmVFZGl0RHJhZ1NuYXBzaG90KE9wdGlvbmFsPFdlYkNvcmU6OlRl
eHRJbmRpY2F0b3JEYXRhPikgb3ZlcnJpZGU7CiAgICAgdm9pZCBkaWRDaGFuZ2VEcmFnQ2FyZXRS
ZWN0KGNvbnN0IFdlYkNvcmU6OkludFJlY3QmIHByZXZpb3VzQ2FyZXRSZWN0LCBjb25zdCBXZWJD
b3JlOjpJbnRSZWN0JiBjYXJldFJlY3QpIG92ZXJyaWRlOwogI2VuZGlmCiAKZGlmZiAtLWdpdCBh
L1NvdXJjZS9XZWJLaXQvVUlQcm9jZXNzL2lvcy9QYWdlQ2xpZW50SW1wbElPUy5tbSBiL1NvdXJj
ZS9XZWJLaXQvVUlQcm9jZXNzL2lvcy9QYWdlQ2xpZW50SW1wbElPUy5tbQppbmRleCAwOTUzMmZm
MjdlOTlmNGU5Yzg5M2FkYzgxOGRmOTBkMjRmYTE2MjFhLi4yNjdiZDQzYmRkMTAxY2RhOTQ2Zjg0
ODhhMTc1MzMzMzQ2Y2RkMTEwIDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViS2l0L1VJUHJvY2Vzcy9p
b3MvUGFnZUNsaWVudEltcGxJT1MubW0KKysrIGIvU291cmNlL1dlYktpdC9VSVByb2Nlc3MvaW9z
L1BhZ2VDbGllbnRJbXBsSU9TLm1tCkBAIC04MjAsOSArODIwLDE0IEBAIHZvaWQgUGFnZUNsaWVu
dEltcGw6OnN0YXJ0RHJhZyhjb25zdCBEcmFnSXRlbSYgaXRlbSwgY29uc3QgU2hhcmVhYmxlQml0
bWFwOjpIYW5kCiAgICAgW21fY29udGVudFZpZXcgX3N0YXJ0RHJhZzpTaGFyZWFibGVCaXRtYXA6
OmNyZWF0ZShpbWFnZSktPm1ha2VDR0ltYWdlQ29weSgpIGl0ZW06aXRlbV07CiB9CiAKLXZvaWQg
UGFnZUNsaWVudEltcGw6OmRpZENvbmNsdWRlRWRpdERyYWcoT3B0aW9uYWw8VGV4dEluZGljYXRv
ckRhdGE+IGRhdGEpCit2b2lkIFBhZ2VDbGllbnRJbXBsOjp3aWxsUmVjZWl2ZUVkaXREcmFnU25h
cHNob3QoKQogewotICAgIFttX2NvbnRlbnRWaWV3IF9kaWRDb25jbHVkZUVkaXREcmFnOmRhdGFd
OworICAgIFttX2NvbnRlbnRWaWV3IF93aWxsUmVjZWl2ZUVkaXREcmFnU25hcHNob3RdOworfQor
Cit2b2lkIFBhZ2VDbGllbnRJbXBsOjpkaWRSZWNlaXZlRWRpdERyYWdTbmFwc2hvdChPcHRpb25h
bDxUZXh0SW5kaWNhdG9yRGF0YT4gZGF0YSkKK3sKKyAgICBbbV9jb250ZW50VmlldyBfZGlkUmVj
ZWl2ZUVkaXREcmFnU25hcHNob3Q6ZGF0YV07CiB9CiAKIHZvaWQgUGFnZUNsaWVudEltcGw6OmRp
ZENoYW5nZURyYWdDYXJldFJlY3QoY29uc3QgSW50UmVjdCYgcHJldmlvdXNDYXJldFJlY3QsIGNv
bnN0IEludFJlY3QmIGNhcmV0UmVjdCkKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJLaXQvVUlQcm9j
ZXNzL2lvcy9XS0NvbnRlbnRWaWV3SW50ZXJhY3Rpb24uaCBiL1NvdXJjZS9XZWJLaXQvVUlQcm9j
ZXNzL2lvcy9XS0NvbnRlbnRWaWV3SW50ZXJhY3Rpb24uaAppbmRleCBjOTJiM2Y5ZDIyMDg3MjBh
Y2IzMWFiOTg5NGNkNzQyZjliZGY5NWVmLi4wOGI2NGQyYjFmYzUwNWM5ZDQxYzAyZjM5MzcyZDQw
YzI4YjYwM2E3IDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViS2l0L1VJUHJvY2Vzcy9pb3MvV0tDb250
ZW50Vmlld0ludGVyYWN0aW9uLmgKKysrIGIvU291cmNlL1dlYktpdC9VSVByb2Nlc3MvaW9zL1dL
Q29udGVudFZpZXdJbnRlcmFjdGlvbi5oCkBAIC0zMzQsNiArMzM0LDcgQEAgc3RydWN0IFdLQXV0
b0NvcnJlY3Rpb25EYXRhIHsKICAgICBCT09MIF9pc0JsdXJyaW5nRm9jdXNlZEVsZW1lbnQ7CiAK
ICAgICBCT09MIF9mb2N1c1JlcXVpcmVzU3Ryb25nUGFzc3dvcmRBc3Npc3RhbmNlOworICAgIEJP
T0wgX3dhaXRpbmdGb3JFZGl0RHJhZ1NuYXBzaG90OwogCiAgICAgQk9PTCBfaGFzU2V0VXBJbnRl
cmFjdGlvbnM7CiAgICAgTlNVSW50ZWdlciBfaWdub3JlU2VsZWN0aW9uQ29tbWFuZEZhZGVDb3Vu
dDsKQEAgLTM0NSw5ICszNDYsMTAgQEAgc3RydWN0IFdLQXV0b0NvcnJlY3Rpb25EYXRhIHsKICAg
ICBSZXRhaW5QdHI8VUlEcmFnSW50ZXJhY3Rpb24+IF9kcmFnSW50ZXJhY3Rpb247CiAgICAgUmV0
YWluUHRyPFVJRHJvcEludGVyYWN0aW9uPiBfZHJvcEludGVyYWN0aW9uOwogICAgIEJPT0wgX3No
b3VsZFJlc3RvcmVDYWxsb3V0QmFyQWZ0ZXJEcm9wOwotICAgIEJPT0wgX2lzQW5pbWF0aW5nQ29u
Y2x1ZGVFZGl0RHJhZzsKICAgICBSZXRhaW5QdHI8VUlWaWV3PiBfdmlzaWJsZUNvbnRlbnRWaWV3
U25hcHNob3Q7CisgICAgUmV0YWluUHRyPFVJVmlldz4gX3Vuc2VsZWN0ZWRDb250ZW50U25hcHNo
b3Q7CiAgICAgUmV0YWluUHRyPF9VSVRleHREcmFnQ2FyZXRWaWV3PiBfZWRpdERyb3BDYXJldFZp
ZXc7CisgICAgQmxvY2tQdHI8dm9pZCgpPiBfYWN0aW9uVG9QZXJmb3JtQWZ0ZXJSZWNlaXZpbmdF
ZGl0RHJhZ1NuYXBzaG90OwogI2VuZGlmCiAKICNpZiBQTEFURk9STShXQVRDSE9TKQpAQCAtNDkw
LDcgKzQ5Miw4IEBAIEZPUl9FQUNIX1BSSVZBVEVfV0tDT05URU5UVklFV19BQ1RJT04oREVDTEFS
RV9XS0NPTlRFTlRWSUVXX0FDVElPTl9GT1JfV0VCX1ZJRVcpCiAtICh2b2lkKV9kaWRIYW5kbGVE
cmFnU3RhcnRSZXF1ZXN0OihCT09MKXN0YXJ0ZWQ7CiAtICh2b2lkKV9kaWRIYW5kbGVBZGRpdGlv
bmFsRHJhZ0l0ZW1zUmVxdWVzdDooQk9PTClhZGRlZDsKIC0gKHZvaWQpX3N0YXJ0RHJhZzooUmV0
YWluUHRyPENHSW1hZ2VSZWY+KWltYWdlIGl0ZW06KGNvbnN0IFdlYkNvcmU6OkRyYWdJdGVtJilp
dGVtOwotLSAodm9pZClfZGlkQ29uY2x1ZGVFZGl0RHJhZzooT3B0aW9uYWw8V2ViQ29yZTo6VGV4
dEluZGljYXRvckRhdGE+KWRhdGE7CistICh2b2lkKV93aWxsUmVjZWl2ZUVkaXREcmFnU25hcHNo
b3Q7CistICh2b2lkKV9kaWRSZWNlaXZlRWRpdERyYWdTbmFwc2hvdDooT3B0aW9uYWw8V2ViQ29y
ZTo6VGV4dEluZGljYXRvckRhdGE+KWRhdGE7CiAtICh2b2lkKV9kaWRDaGFuZ2VEcmFnQ2FyZXRS
ZWN0OihDR1JlY3QpcHJldmlvdXNSZWN0IGN1cnJlbnRSZWN0OihDR1JlY3QpcmVjdDsKICNlbmRp
ZgogCkBAIC01MTcsNiArNTIwLDcgQEAgRk9SX0VBQ0hfUFJJVkFURV9XS0NPTlRFTlRWSUVXX0FD
VElPTihERUNMQVJFX1dLQ09OVEVOVFZJRVdfQUNUSU9OX0ZPUl9XRUJfVklFVykKIC0gKHZvaWQp
c2VsZWN0Rm9ybUFjY2Vzc29yeVBpY2tlclJvdzooTlNJbnRlZ2VyKXJvd0luZGV4OwogLSAodm9p
ZClzZXRUaW1lUGlja2VyVmFsdWVUb0hvdXI6KE5TSW50ZWdlcilob3VyIG1pbnV0ZTooTlNJbnRl
Z2VyKW1pbnV0ZTsKIC0gKE5TRGljdGlvbmFyeSAqKV9jb250ZW50c09mVXNlckludGVyZmFjZUl0
ZW06KE5TU3RyaW5nICopdXNlckludGVyZmFjZUl0ZW07CistICh2b2lkKV9kb0FmdGVyUmVjZWl2
aW5nRWRpdERyYWdTbmFwc2hvdEZvclRlc3Rpbmc6KGRpc3BhdGNoX2Jsb2NrX3QpYWN0aW9uOwog
CiBAcHJvcGVydHkgKG5vbmF0b21pYywgcmVhZG9ubHkpIE5TU3RyaW5nICp0ZXh0Q29udGVudFR5
cGVGb3JUZXN0aW5nOwogQHByb3BlcnR5IChub25hdG9taWMsIHJlYWRvbmx5KSBOU1N0cmluZyAq
c2VsZWN0Rm9ybVBvcG92ZXJUaXRsZTsKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJLaXQvVUlQcm9j
ZXNzL2lvcy9XS0NvbnRlbnRWaWV3SW50ZXJhY3Rpb24ubW0gYi9Tb3VyY2UvV2ViS2l0L1VJUHJv
Y2Vzcy9pb3MvV0tDb250ZW50Vmlld0ludGVyYWN0aW9uLm1tCmluZGV4IDI0MDc3ZGFmOTM4N2Ux
ZWVkZDNjMzdlNDYyMGIyYmY5YWI4NmJmMzQuLjZjYjVhNTNmNTkwOTQ0ZDQxNGFjZDNjMDRhMTZl
ZmVlMzg4MDgzN2UgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJLaXQvVUlQcm9jZXNzL2lvcy9XS0Nv
bnRlbnRWaWV3SW50ZXJhY3Rpb24ubW0KKysrIGIvU291cmNlL1dlYktpdC9VSVByb2Nlc3MvaW9z
L1dLQ29udGVudFZpZXdJbnRlcmFjdGlvbi5tbQpAQCAtODQxLDYgKzg0MSw3IEBAIC0gKHZvaWQp
Y2xlYW51cEludGVyYWN0aW9uCiAgICAgX291dHN0YW5kaW5nUG9zaXRpb25JbmZvcm1hdGlvblJl
cXVlc3QgPSBXVEY6Om51bGxvcHQ7CiAKICAgICBfZm9jdXNSZXF1aXJlc1N0cm9uZ1Bhc3N3b3Jk
QXNzaXN0YW5jZSA9IE5POworICAgIF93YWl0aW5nRm9yRWRpdERyYWdTbmFwc2hvdCA9IE5POwog
CiAjaWYgVVNFKFVJS0lUX0tFWUJPQVJEX0FERElUSU9OUykKICAgICBfY2FuZGlkYXRlVmlld05l
ZWRzVXBkYXRlID0gTk87CkBAIC02MjY5LDYgKzYyNzAsOSBAQCAtIChXZWJDb3JlOjpEcmFnRGF0
YSlkcmFnRGF0YUZvckRyb3BTZXNzaW9uOihpZCA8VUlEcm9wU2Vzc2lvbj4pc2Vzc2lvbiBkcmFn
RGVzdAogCiAtICh2b2lkKWNsZWFuVXBEcmFnU291cmNlU2Vzc2lvblN0YXRlCiB7CisgICAgaWYg
KF93YWl0aW5nRm9yRWRpdERyYWdTbmFwc2hvdCkKKyAgICAgICAgcmV0dXJuOworCiAgICAgaWYg
KF9kcmFnRHJvcEludGVyYWN0aW9uU3RhdGUuZHJhZ1Nlc3Npb24oKSB8fCBfZHJhZ0Ryb3BJbnRl
cmFjdGlvblN0YXRlLmlzUGVyZm9ybWluZ0Ryb3AoKSkKICAgICAgICAgUkVMRUFTRV9MT0coRHJh
Z0FuZERyb3AsICJDbGVhbmluZyB1cCBkcmFnZ2luZyBzdGF0ZSAoaGFzIHBlbmRpbmcgb3BlcmF0
aW9uOiAlZCkiLCBbW1dlYkl0ZW1Qcm92aWRlclBhc3RlYm9hcmQgc2hhcmVkSW5zdGFuY2VdIGhh
c1BlbmRpbmdPcGVyYXRpb25dKTsKIApAQCAtNjI4MSwxMSArNjI4NSw5IEBAIC0gKHZvaWQpY2xl
YW5VcERyYWdTb3VyY2VTZXNzaW9uU3RhdGUKICAgICBbW1dlYkl0ZW1Qcm92aWRlclBhc3RlYm9h
cmQgc2hhcmVkSW5zdGFuY2VdIHN0YWdlUmVnaXN0cmF0aW9uTGlzdDpuaWxdOwogICAgIFtzZWxm
IF9yZXN0b3JlQ2FsbG91dEJhcklmTmVlZGVkXTsKIAotICAgIFtfdmlzaWJsZUNvbnRlbnRWaWV3
U25hcHNob3QgcmVtb3ZlRnJvbVN1cGVydmlld107Ci0gICAgX3Zpc2libGVDb250ZW50Vmlld1Nu
YXBzaG90ID0gbmlsOworICAgIFtzdGQ6OmV4Y2hhbmdlKF92aXNpYmxlQ29udGVudFZpZXdTbmFw
c2hvdCwgbmlsKSByZW1vdmVGcm9tU3VwZXJ2aWV3XTsKICAgICBbX2VkaXREcm9wQ2FyZXRWaWV3
IHJlbW92ZV07CiAgICAgX2VkaXREcm9wQ2FyZXRWaWV3ID0gbmlsOwotICAgIF9pc0FuaW1hdGlu
Z0NvbmNsdWRlRWRpdERyYWcgPSBOTzsKICAgICBfc2hvdWxkUmVzdG9yZUNhbGxvdXRCYXJBZnRl
ckRyb3AgPSBOTzsKIAogICAgIF9kcmFnRHJvcEludGVyYWN0aW9uU3RhdGUuZHJhZ0FuZERyb3BT
ZXNzaW9uc0RpZEVuZCgpOwpAQCAtNjMwNywxMSArNjMwOSwzMyBAQCBzdGF0aWMgTlNBcnJheTxO
U0l0ZW1Qcm92aWRlciAqPiAqZXh0cmFjdEl0ZW1Qcm92aWRlcnNGcm9tRHJvcFNlc3Npb24oaWQg
PFVJRHJvcAogICAgIHJldHVybiBleHRyYWN0SXRlbVByb3ZpZGVyc0Zyb21EcmFnSXRlbXMoc2Vz
c2lvbi5pdGVtcyk7CiB9CiAKLS0gKHZvaWQpX2RpZENvbmNsdWRlRWRpdERyYWc6KE9wdGlvbmFs
PFdlYkNvcmU6OlRleHRJbmRpY2F0b3JEYXRhPilkYXRhCistICh2b2lkKV93aWxsUmVjZWl2ZUVk
aXREcmFnU25hcHNob3QKK3sKKyAgICBfd2FpdGluZ0ZvckVkaXREcmFnU25hcHNob3QgPSBZRVM7
Cit9CisKKy0gKHZvaWQpX2RpZFJlY2VpdmVFZGl0RHJhZ1NuYXBzaG90OihPcHRpb25hbDxXZWJD
b3JlOjpUZXh0SW5kaWNhdG9yRGF0YT4pZGF0YQoreworICAgIF93YWl0aW5nRm9yRWRpdERyYWdT
bmFwc2hvdCA9IE5POworCisgICAgW3NlbGYgX2RlbGl2ZXJEZWxheWVkRHJvcFByZXZpZXdJZlBv
c3NpYmxlOmRhdGFdOworICAgIFtzZWxmIGNsZWFuVXBEcmFnU291cmNlU2Vzc2lvblN0YXRlXTsK
KworICAgIGlmIChhdXRvIGFjdGlvbiA9IFdURk1vdmUoX2FjdGlvblRvUGVyZm9ybUFmdGVyUmVj
ZWl2aW5nRWRpdERyYWdTbmFwc2hvdCkpCisgICAgICAgIGFjdGlvbigpOworfQorCistICh2b2lk
KV9kZWxpdmVyRGVsYXllZERyb3BQcmV2aWV3SWZQb3NzaWJsZTooT3B0aW9uYWw8V2ViQ29yZTo6
VGV4dEluZGljYXRvckRhdGE+KWRhdGEKIHsKKyAgICBpZiAoIV92aXNpYmxlQ29udGVudFZpZXdT
bmFwc2hvdCkKKyAgICAgICAgcmV0dXJuOworCiAgICAgaWYgKCFkYXRhKQogICAgICAgICByZXR1
cm47CiAKKyAgICBpZiAoIWRhdGEtPmNvbnRlbnRJbWFnZSkKKyAgICAgICAgcmV0dXJuOworCiAg
ICAgYXV0byBzbmFwc2hvdFdpdGhvdXRTZWxlY3Rpb24gPSBkYXRhLT5jb250ZW50SW1hZ2VXaXRo
b3V0U2VsZWN0aW9uOwogICAgIGlmICghc25hcHNob3RXaXRob3V0U2VsZWN0aW9uKQogICAgICAg
ICByZXR1cm47CkBAIC02MzIxLDI1ICs2MzQ1LDExIEBAIC0gKHZvaWQpX2RpZENvbmNsdWRlRWRp
dERyYWc6KE9wdGlvbmFsPFdlYkNvcmU6OlRleHRJbmRpY2F0b3JEYXRhPilkYXRhCiAgICAgICAg
IHJldHVybjsKIAogICAgIGF1dG8gdW5zZWxlY3RlZENvbnRlbnRJbWFnZUZvckVkaXREcmFnID0g
YWRvcHROUyhbW1VJSW1hZ2UgYWxsb2NdIGluaXRXaXRoQ0dJbWFnZTp1bnNlbGVjdGVkU25hcHNo
b3RJbWFnZS5nZXQoKSBzY2FsZTpfcGFnZS0+ZGV2aWNlU2NhbGVGYWN0b3IoKSBvcmllbnRhdGlv
bjpVSUltYWdlT3JpZW50YXRpb25VcF0pOwotICAgIGF1dG8gdW5zZWxlY3RlZENvbnRlbnRTbmFw
c2hvdCA9IGFkb3B0TlMoW1tVSUltYWdlVmlldyBhbGxvY10gaW5pdFdpdGhJbWFnZTp1bnNlbGVj
dGVkQ29udGVudEltYWdlRm9yRWRpdERyYWcuZ2V0KCldKTsKLSAgICBbdW5zZWxlY3RlZENvbnRl
bnRTbmFwc2hvdCBzZXRGcmFtZTpkYXRhLT5jb250ZW50SW1hZ2VXaXRob3V0U2VsZWN0aW9uUmVj
dEluUm9vdFZpZXdDb29yZGluYXRlc107Ci0KLSAgICBhdXRvIHByb3RlY3RlZFNlbGYgPSByZXRh
aW5QdHIoc2VsZik7Ci0gICAgYXV0byB2aXNpYmxlQ29udGVudFZpZXdTbmFwc2hvdCA9IGFkb3B0
TlMoX3Zpc2libGVDb250ZW50Vmlld1NuYXBzaG90LmxlYWtSZWYoKSk7Ci0KLSAgICBfaXNBbmlt
YXRpbmdDb25jbHVkZUVkaXREcmFnID0gWUVTOwotICAgIFtzZWxmIGluc2VydFN1YnZpZXc6dW5z
ZWxlY3RlZENvbnRlbnRTbmFwc2hvdC5nZXQoKSBiZWxvd1N1YnZpZXc6dmlzaWJsZUNvbnRlbnRW
aWV3U25hcHNob3QuZ2V0KCldOwotICAgIFtVSVZpZXcgYW5pbWF0ZVdpdGhEdXJhdGlvbjowLjI1
IGFuaW1hdGlvbnM6XigpIHsKLSAgICAgICAgW3Zpc2libGVDb250ZW50Vmlld1NuYXBzaG90IHNl
dEFscGhhOjBdOwotICAgIH0gY29tcGxldGlvbjpeKEJPT0wgY29tcGxldGVkKSB7Ci0gICAgICAg
IFt2aXNpYmxlQ29udGVudFZpZXdTbmFwc2hvdCByZW1vdmVGcm9tU3VwZXJ2aWV3XTsKLSAgICAg
ICAgW1VJVmlldyBhbmltYXRlV2l0aER1cmF0aW9uOjAuMjUgYW5pbWF0aW9uczpeKCkgewotICAg
ICAgICAgICAgW3Byb3RlY3RlZFNlbGYgX3N0b3BTdXBwcmVzc2luZ1NlbGVjdGlvbkFzc2lzdGFu
dEZvclJlYXNvbjpXZWJLaXQ6OkRyb3BBbmltYXRpb25Jc1J1bm5pbmddOwotICAgICAgICAgICAg
W3Vuc2VsZWN0ZWRDb250ZW50U25hcHNob3Qgc2V0QWxwaGE6MF07Ci0gICAgICAgIH0gY29tcGxl
dGlvbjpeKEJPT0wgY29tcGxldGVkKSB7Ci0gICAgICAgICAgICBbdW5zZWxlY3RlZENvbnRlbnRT
bmFwc2hvdCByZW1vdmVGcm9tU3VwZXJ2aWV3XTsKLSAgICAgICAgfV07Ci0gICAgfV07CisgICAg
X3Vuc2VsZWN0ZWRDb250ZW50U25hcHNob3QgPSBhZG9wdE5TKFtbVUlJbWFnZVZpZXcgYWxsb2Nd
IGluaXRXaXRoSW1hZ2U6dW5zZWxlY3RlZENvbnRlbnRJbWFnZUZvckVkaXREcmFnLmdldCgpXSk7
CisgICAgW191bnNlbGVjdGVkQ29udGVudFNuYXBzaG90IHNldEZyYW1lOmRhdGEtPmNvbnRlbnRJ
bWFnZVdpdGhvdXRTZWxlY3Rpb25SZWN0SW5Sb290Vmlld0Nvb3JkaW5hdGVzXTsKKworICAgIFtz
ZWxmIGluc2VydFN1YnZpZXc6X3Vuc2VsZWN0ZWRDb250ZW50U25hcHNob3QuZ2V0KCkgYmVsb3dT
dWJ2aWV3Ol92aXNpYmxlQ29udGVudFZpZXdTbmFwc2hvdC5nZXQoKV07CisgICAgX2RyYWdEcm9w
SW50ZXJhY3Rpb25TdGF0ZS5kZWxpdmVyRGVsYXllZERyb3BQcmV2aWV3KHNlbGYsIHNlbGYudW5z
Y2FsZWRWaWV3LCBkYXRhLnZhbHVlKCkpOwogfQogCiAtICh2b2lkKV9kaWRQZXJmb3JtRHJhZ09w
ZXJhdGlvbjooQk9PTCloYW5kbGVkCkBAIC02MzUwLDkgKzYzNjAsNiBAQCAtICh2b2lkKV9kaWRQ
ZXJmb3JtRHJhZ09wZXJhdGlvbjooQk9PTCloYW5kbGVkCiAgICAgaWYgKFtzZWxmLndlYlZpZXdV
SURlbGVnYXRlIHJlc3BvbmRzVG9TZWxlY3RvcjpAc2VsZWN0b3IoX3dlYlZpZXc6ZGF0YUludGVy
YWN0aW9uT3BlcmF0aW9uV2FzSGFuZGxlZDpmb3JTZXNzaW9uOml0ZW1Qcm92aWRlcnM6KV0pCiAg
ICAgICAgIFtzZWxmLndlYlZpZXdVSURlbGVnYXRlIF93ZWJWaWV3Ol93ZWJWaWV3IGRhdGFJbnRl
cmFjdGlvbk9wZXJhdGlvbldhc0hhbmRsZWQ6aGFuZGxlZCBmb3JTZXNzaW9uOmRyb3BTZXNzaW9u
IGl0ZW1Qcm92aWRlcnM6W1dlYkl0ZW1Qcm92aWRlclBhc3RlYm9hcmQgc2hhcmVkSW5zdGFuY2Vd
Lml0ZW1Qcm92aWRlcnNdOwogCi0gICAgaWYgKCFfaXNBbmltYXRpbmdDb25jbHVkZUVkaXREcmFn
KQotICAgICAgICBbc2VsZiBfc3RvcFN1cHByZXNzaW5nU2VsZWN0aW9uQXNzaXN0YW50Rm9yUmVh
c29uOldlYktpdDo6RHJvcEFuaW1hdGlvbklzUnVubmluZ107Ci0KICAgICBDR1BvaW50IGdsb2Jh
bDsKICAgICBDR1BvaW50IGNsaWVudDsKICAgICBbc2VsZiBjb21wdXRlQ2xpZW50QW5kR2xvYmFs
UG9pbnRzRm9yRHJvcFNlc3Npb246ZHJvcFNlc3Npb24gb3V0Q2xpZW50UG9pbnQ6JmNsaWVudCBv
dXRHbG9iYWxQb2ludDomZ2xvYmFsXTsKQEAgLTY1MDksNiArNjUxNiwxNSBAQCAtIChOU0FycmF5
PFVJRHJhZ0l0ZW0gKj4gKilfaXRlbXNGb3JCZWdpbm5pbmdPckFkZGluZ1RvU2Vzc2lvbldpdGhS
ZWdpc3RyYXRpb25MaQogICAgIHJldHVybiBkcmFnSXRlbXM7CiB9CiAKKy0gKFVJVmlldyAqKXRl
eHRFZmZlY3RzV2luZG93Cit7CisjaWYgSEFWRShVSVNDRU5FKQorICAgIHJldHVybiBbVUlUZXh0
RWZmZWN0c1dpbmRvdyBzaGFyZWRUZXh0RWZmZWN0c1dpbmRvd0ZvcldpbmRvd1NjZW5lOnNlbGYu
d2luZG93LndpbmRvd1NjZW5lXTsKKyNlbHNlCisgICAgcmV0dXJuIFtVSVRleHRFZmZlY3RzV2lu
ZG93IHNoYXJlZFRleHRFZmZlY3RzV2luZG93XTsKKyNlbmRpZgorfQorCiAtIChOU0RpY3Rpb25h
cnkgKilfYXV0b2ZpbGxDb250ZXh0CiB7CiAgICAgQk9PTCBwcm92aWRlU3Ryb25nUGFzc3dvcmRB
c3Npc3RhbmNlID0gX2ZvY3VzUmVxdWlyZXNTdHJvbmdQYXNzd29yZEFzc2lzdGFuY2UgJiYgX2Zv
Y3VzZWRFbGVtZW50SW5mb3JtYXRpb24uZWxlbWVudFR5cGUgPT0gV2ViS2l0OjpJbnB1dFR5cGU6
OlBhc3N3b3JkOwpAQCAtNjg5MCwyMyArNjkwNiw0MiBAQCAtICh2b2lkKWRyb3BJbnRlcmFjdGlv
bjooVUlEcm9wSW50ZXJhY3Rpb24gKilpbnRlcmFjdGlvbiBwZXJmb3JtRHJvcDooaWQgPFVJRHJv
cAogICAgIH1dOwogfQogCistICh2b2lkKWRyb3BJbnRlcmFjdGlvbjooVUlEcm9wSW50ZXJhY3Rp
b24gKilpbnRlcmFjdGlvbiBpdGVtOihVSURyYWdJdGVtICopaXRlbSB3aWxsQW5pbWF0ZURyb3BX
aXRoQW5pbWF0b3I6KGlkIDxVSURyYWdBbmltYXRpbmc+KWFuaW1hdG9yCit7CisgICAgW2FuaW1h
dG9yIGFkZENvbXBsZXRpb246W3N0cm9uZ1NlbGYgPSByZXRhaW5QdHIoc2VsZildIChVSVZpZXdB
bmltYXRpbmdQb3NpdGlvbikgeworICAgICAgICBbc3RkOjpleGNoYW5nZShzdHJvbmdTZWxmLT5f
dW5zZWxlY3RlZENvbnRlbnRTbmFwc2hvdCwgbmlsKSByZW1vdmVGcm9tU3VwZXJ2aWV3XTsKKyAg
ICB9XTsKK30KKworLSAodm9pZClkcm9wSW50ZXJhY3Rpb246KFVJRHJvcEludGVyYWN0aW9uICop
aW50ZXJhY3Rpb24gY29uY2x1ZGVEcm9wOihpZCA8VUlEcm9wU2Vzc2lvbj4pc2Vzc2lvbgorewor
ICAgIFtzZWxmIF9zdG9wU3VwcHJlc3NpbmdTZWxlY3Rpb25Bc3Npc3RhbnRGb3JSZWFzb246V2Vi
S2l0OjpEcm9wQW5pbWF0aW9uSXNSdW5uaW5nXTsKKyAgICBbc3RkOjpleGNoYW5nZShfdmlzaWJs
ZUNvbnRlbnRWaWV3U25hcHNob3QsIG5pbCkgcmVtb3ZlRnJvbVN1cGVydmlld107CisgICAgW3N0
ZDo6ZXhjaGFuZ2UoX3Vuc2VsZWN0ZWRDb250ZW50U25hcHNob3QsIG5pbCkgcmVtb3ZlRnJvbVN1
cGVydmlld107CisgICAgX2RyYWdEcm9wSW50ZXJhY3Rpb25TdGF0ZS5jbGVhckFsbERlbGF5ZWRJ
dGVtUHJldmlld1Byb3ZpZGVycygpOworICAgIF9wYWdlLT5kaWRDb25jbHVkZURyb3AoKTsKK30K
KwogLSAoVUlUYXJnZXRlZERyYWdQcmV2aWV3ICopZHJvcEludGVyYWN0aW9uOihVSURyb3BJbnRl
cmFjdGlvbiAqKWludGVyYWN0aW9uIHByZXZpZXdGb3JEcm9wcGluZ0l0ZW06KFVJRHJhZ0l0ZW0g
KilpdGVtIHdpdGhEZWZhdWx0OihVSVRhcmdldGVkRHJhZ1ByZXZpZXcgKilkZWZhdWx0UHJldmll
dwogewogICAgIENHUmVjdCBjYXJldFJlY3QgPSBfcGFnZS0+Y3VycmVudERyYWdDYXJldFJlY3Qo
KTsKICAgICBpZiAoQ0dSZWN0SXNFbXB0eShjYXJldFJlY3QpKQogICAgICAgICByZXR1cm4gbmls
OwogCi1BTExPV19ERVBSRUNBVEVEX0RFQ0xBUkFUSU9OU19CRUdJTgotICAgIC8vIEZJWE1FOiA8
cmRhcjovL3Byb2JsZW0vMzEwNzQzNzY+IFtXSzJdIFBlcmZvcm1pbmcgYW4gZWRpdCBkcmFnIHNo
b3VsZCB0cmFuc2l0aW9uIGZyb20gdGhlIGluaXRpYWwgZHJhZyBwcmV2aWV3IHRvIHRoZSBmaW5h
bCBkcm9wIHByZXZpZXcKLSAgICAvLyBUaGlzIGlzIGJsb2NrZWQgb24gVUlLaXQgc3VwcG9ydCwg
c2luY2Ugd2UgYXJlbid0IGFibGUgdG8gdXBkYXRlIHRoZSB0ZXh0IGNsaXBwaW5nIHJlY3RzIG9m
IGEgVUlUYXJnZXRlZERyYWdQcmV2aWV3IG1pZC1mbGlnaHQuIEZvciBub3csCi0gICAgLy8ganVz
dCB6b29tIHRvIHRoZSBjZW50ZXIgb2YgdGhlIGNhcmV0IHJlY3Qgd2hpbGUgc2hyaW5raW5nIHRo
ZSBkcm9wIHByZXZpZXcuCi0gICAgYXV0byBjYXJldFJlY3RJbldpbmRvd0Nvb3JkaW5hdGVzID0g
W3NlbGYgY29udmVydFJlY3Q6Y2FyZXRSZWN0IHRvVmlldzpbVUlUZXh0RWZmZWN0c1dpbmRvdyBz
aGFyZWRUZXh0RWZmZWN0c1dpbmRvd11dOworICAgIFVJVmlldyAqdGV4dEVmZmVjdHNXaW5kb3cg
PSBzZWxmLnRleHRFZmZlY3RzV2luZG93OworICAgIGF1dG8gY2FyZXRSZWN0SW5XaW5kb3dDb29y
ZGluYXRlcyA9IFtzZWxmIGNvbnZlcnRSZWN0OmNhcmV0UmVjdCB0b1ZpZXc6dGV4dEVmZmVjdHNX
aW5kb3ddOwogICAgIGF1dG8gY2FyZXRDZW50ZXJJbldpbmRvd0Nvb3JkaW5hdGVzID0gQ0dQb2lu
dE1ha2UoQ0dSZWN0R2V0TWlkWChjYXJldFJlY3RJbldpbmRvd0Nvb3JkaW5hdGVzKSwgQ0dSZWN0
R2V0TWlkWShjYXJldFJlY3RJbldpbmRvd0Nvb3JkaW5hdGVzKSk7Ci0gICAgYXV0byB0YXJnZXQg
PSBhZG9wdE5TKFtbVUlEcmFnUHJldmlld1RhcmdldCBhbGxvY10gaW5pdFdpdGhDb250YWluZXI6
W1VJVGV4dEVmZmVjdHNXaW5kb3cgc2hhcmVkVGV4dEVmZmVjdHNXaW5kb3ddIGNlbnRlcjpjYXJl
dENlbnRlckluV2luZG93Q29vcmRpbmF0ZXMgdHJhbnNmb3JtOkNHQWZmaW5lVHJhbnNmb3JtTWFr
ZVNjYWxlKDAsIDApXSk7Ci1BTExPV19ERVBSRUNBVEVEX0RFQ0xBUkFUSU9OU19FTkQKKyAgICBh
dXRvIHRhcmdldFByZXZpZXdDZW50ZXJJbldpbmRvd0Nvb3JkaW5hdGVzID0gQ0dQb2ludE1ha2Uo
Y2FyZXRDZW50ZXJJbldpbmRvd0Nvb3JkaW5hdGVzLnggKyBkZWZhdWx0UHJldmlldy5zaXplLndp
ZHRoIC8gMiwgY2FyZXRDZW50ZXJJbldpbmRvd0Nvb3JkaW5hdGVzLnkgKyBkZWZhdWx0UHJldmll
dy5zaXplLmhlaWdodCAvIDIpOworICAgIGF1dG8gdGFyZ2V0ID0gYWRvcHROUyhbW1VJRHJhZ1By
ZXZpZXdUYXJnZXQgYWxsb2NdIGluaXRXaXRoQ29udGFpbmVyOnRleHRFZmZlY3RzV2luZG93IGNl
bnRlcjp0YXJnZXRQcmV2aWV3Q2VudGVySW5XaW5kb3dDb29yZGluYXRlcyB0cmFuc2Zvcm06Q0dB
ZmZpbmVUcmFuc2Zvcm1JZGVudGl0eV0pOwogICAgIHJldHVybiBbZGVmYXVsdFByZXZpZXcgcmV0
YXJnZXRlZFByZXZpZXdXaXRoVGFyZ2V0OnRhcmdldC5nZXQoKV07CiB9CiAKKy0gKHZvaWQpX2Ry
b3BJbnRlcmFjdGlvbjooVUlEcm9wSW50ZXJhY3Rpb24gKilpbnRlcmFjdGlvbiBkZWxheWVkUHJl
dmlld1Byb3ZpZGVyRm9yRHJvcHBpbmdJdGVtOihVSURyYWdJdGVtICopaXRlbSBwcmV2aWV3UHJv
dmlkZXI6KHZvaWQoXikoVUlUYXJnZXRlZERyYWdQcmV2aWV3ICpwcmV2aWV3KSlwcmV2aWV3UHJv
dmlkZXIKK3sKKyAgICAvLyBGSVhNRTogVGhpcyBkb2Vzbid0IGN1cnJlbnRseSBoYW5kbGUgbXVs
dGlwbGUgaXRlbXMgaW4gYSBkcm9wIHNlc3Npb24uCisgICAgX2RyYWdEcm9wSW50ZXJhY3Rpb25T
dGF0ZS5wcmVwYXJlRm9yRGVsYXllZERyb3BQcmV2aWV3KGl0ZW0sIHByZXZpZXdQcm92aWRlcik7
Cit9CisKIC0gKHZvaWQpZHJvcEludGVyYWN0aW9uOihVSURyb3BJbnRlcmFjdGlvbiAqKWludGVy
YWN0aW9uIHNlc3Npb25EaWRFbmQ6KGlkIDxVSURyb3BTZXNzaW9uPilzZXNzaW9uCiB7CiAgICAg
UkVMRUFTRV9MT0coRHJhZ0FuZERyb3AsICJEcm9wIHNlc3Npb24gZW5kZWQ6ICVwIChwZXJmb3Jt
aW5nIG9wZXJhdGlvbjogJWQsIGJlZ2FuIGRyYWdnaW5nOiAlZCkiLCBzZXNzaW9uLCBfZHJhZ0Ry
b3BJbnRlcmFjdGlvblN0YXRlLmlzUGVyZm9ybWluZ0Ryb3AoKSwgX2RyYWdEcm9wSW50ZXJhY3Rp
b25TdGF0ZS5kaWRCZWdpbkRyYWdnaW5nKCkpOwpAQCAtNzE2Niw2ICs3MjAxLDE4IEBAIEBlbmQK
IAogQGltcGxlbWVudGF0aW9uIFdLQ29udGVudFZpZXcgKFdLVGVzdGluZykKIAorLSAodm9pZClf
ZG9BZnRlclJlY2VpdmluZ0VkaXREcmFnU25hcHNob3RGb3JUZXN0aW5nOihkaXNwYXRjaF9ibG9j
a190KWFjdGlvbgoreworI2lmIEVOQUJMRShEUkFHX1NVUFBPUlQpCisgICAgQVNTRVJUKCFfYWN0
aW9uVG9QZXJmb3JtQWZ0ZXJSZWNlaXZpbmdFZGl0RHJhZ1NuYXBzaG90KTsKKyAgICBpZiAoX3dh
aXRpbmdGb3JFZGl0RHJhZ1NuYXBzaG90KSB7CisgICAgICAgIF9hY3Rpb25Ub1BlcmZvcm1BZnRl
clJlY2VpdmluZ0VkaXREcmFnU25hcHNob3QgPSBhY3Rpb247CisgICAgICAgIHJldHVybjsKKyAg
ICB9CisjZW5kaWYKKyAgICBhY3Rpb24oKTsKK30KKwogLSAoV0tGb3JtSW5wdXRDb250cm9sICop
Zm9ybUlucHV0Q29udHJvbAogewogICAgIGlmIChbX2lucHV0UGVyaXBoZXJhbCBpc0tpbmRPZkNs
YXNzOldLRm9ybUlucHV0Q29udHJvbC5jbGFzc10pCmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViS2l0
L1VJUHJvY2Vzcy9pb3MvV2ViUGFnZVByb3h5SU9TLm1tIGIvU291cmNlL1dlYktpdC9VSVByb2Nl
c3MvaW9zL1dlYlBhZ2VQcm94eUlPUy5tbQppbmRleCAwMzU4NGI1NTAzODczZWEwMmUxNWRiMzc3
ZTU0YTZmOGUxM2RlNmQ0Li44ZTliZWQ1ZWZmZDQzZjc3ZThhZTg1ZWQ4NThhOTAxNWRkMTg0NTYw
IDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViS2l0L1VJUHJvY2Vzcy9pb3MvV2ViUGFnZVByb3h5SU9T
Lm1tCisrKyBiL1NvdXJjZS9XZWJLaXQvVUlQcm9jZXNzL2lvcy9XZWJQYWdlUHJveHlJT1MubW0K
QEAgLTEyMTksOSArMTIxOSwxOSBAQCB2b2lkIFdlYlBhZ2VQcm94eTo6cmVxdWVzdEFkZGl0aW9u
YWxJdGVtc0ZvckRyYWdTZXNzaW9uKGNvbnN0IEludFBvaW50JiBjbGllbnRQbwogICAgICAgICBt
X3Byb2Nlc3MtPnNlbmQoTWVzc2FnZXM6OldlYlBhZ2U6OlJlcXVlc3RBZGRpdGlvbmFsSXRlbXNG
b3JEcmFnU2Vzc2lvbihjbGllbnRQb3NpdGlvbiwgZ2xvYmFsUG9zaXRpb24sIGFsbG93ZWRBY3Rp
b25zKSwgbV9wYWdlSUQpOwogfQogCi12b2lkIFdlYlBhZ2VQcm94eTo6ZGlkQ29uY2x1ZGVFZGl0
RHJhZyhPcHRpb25hbDxUZXh0SW5kaWNhdG9yRGF0YT4gZGF0YSkKK3ZvaWQgV2ViUGFnZVByb3h5
Ojp3aWxsUmVjZWl2ZUVkaXREcmFnU25hcHNob3QoKQogewotICAgIHBhZ2VDbGllbnQoKS5kaWRD
b25jbHVkZUVkaXREcmFnKGRhdGEpOworICAgIHBhZ2VDbGllbnQoKS53aWxsUmVjZWl2ZUVkaXRE
cmFnU25hcHNob3QoKTsKK30KKwordm9pZCBXZWJQYWdlUHJveHk6OmRpZFJlY2VpdmVFZGl0RHJh
Z1NuYXBzaG90KE9wdGlvbmFsPFRleHRJbmRpY2F0b3JEYXRhPiBkYXRhKQoreworICAgIHBhZ2VD
bGllbnQoKS5kaWRSZWNlaXZlRWRpdERyYWdTbmFwc2hvdChkYXRhKTsKK30KKwordm9pZCBXZWJQ
YWdlUHJveHk6OmRpZENvbmNsdWRlRHJvcCgpCit7CisgICAgbV9wcm9jZXNzLT5zZW5kKE1lc3Nh
Z2VzOjpXZWJQYWdlOjpEaWRDb25jbHVkZURyb3AoKSwgbV9wYWdlSUQpOwogfQogCiAjZW5kaWYK
ZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJLaXQvV2ViUHJvY2Vzcy9XZWJDb3JlU3VwcG9ydC9XZWJD
aHJvbWVDbGllbnQuY3BwIGIvU291cmNlL1dlYktpdC9XZWJQcm9jZXNzL1dlYkNvcmVTdXBwb3J0
L1dlYkNocm9tZUNsaWVudC5jcHAKaW5kZXggNDk2Mjk2ZjZkODgxMDUyMzkyNDUxNjAxMzA1NjQ2
YmI2ZDZiMWNjYS4uMjcyNmMyM2QyYTRmNDg0NTEwYWIwMTgzMjJlN2Q5MDI3OWIxNGY2NyAxMDA2
NDQKLS0tIGEvU291cmNlL1dlYktpdC9XZWJQcm9jZXNzL1dlYkNvcmVTdXBwb3J0L1dlYkNocm9t
ZUNsaWVudC5jcHAKKysrIGIvU291cmNlL1dlYktpdC9XZWJQcm9jZXNzL1dlYkNvcmVTdXBwb3J0
L1dlYkNocm9tZUNsaWVudC5jcHAKQEAgLTU4Nyw2ICs1ODcsMTEgQEAgSW50UmVjdCBXZWJDaHJv
bWVDbGllbnQ6OnJvb3RWaWV3VG9BY2Nlc3NpYmlsaXR5U2NyZWVuKGNvbnN0IEludFJlY3QmIHJl
Y3QpIGNvbnMKICAgICByZXR1cm4gbV9wYWdlLnJvb3RWaWV3VG9BY2Nlc3NpYmlsaXR5U2NyZWVu
KHJlY3QpOwogfQogCit2b2lkIFdlYkNocm9tZUNsaWVudDo6ZGlkRmluaXNoTG9hZGluZ0ltYWdl
Rm9yRWxlbWVudChIVE1MSW1hZ2VFbGVtZW50JiBlbGVtZW50KQoreworICAgIG1fcGFnZS5kaWRG
aW5pc2hMb2FkaW5nSW1hZ2VGb3JFbGVtZW50KGVsZW1lbnQpOworfQorCiBQbGF0Zm9ybVBhZ2VD
bGllbnQgV2ViQ2hyb21lQ2xpZW50OjpwbGF0Zm9ybVBhZ2VDbGllbnQoKSBjb25zdAogewogICAg
IG5vdEltcGxlbWVudGVkKCk7CmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViS2l0L1dlYlByb2Nlc3Mv
V2ViQ29yZVN1cHBvcnQvV2ViQ2hyb21lQ2xpZW50LmggYi9Tb3VyY2UvV2ViS2l0L1dlYlByb2Nl
c3MvV2ViQ29yZVN1cHBvcnQvV2ViQ2hyb21lQ2xpZW50LmgKaW5kZXggZGQzYjIyNTQzNWQ5MjYz
NDQxNTk5YzgwNWMzNjM3M2NmMjYyNjFjZS4uYjI4OWZiMjNmZTQxYWJiYmNhMWNlMTcyY2U4YTRm
MjVhY2NkNWVjMCAxMDA2NDQKLS0tIGEvU291cmNlL1dlYktpdC9XZWJQcm9jZXNzL1dlYkNvcmVT
dXBwb3J0L1dlYkNocm9tZUNsaWVudC5oCisrKyBiL1NvdXJjZS9XZWJLaXQvV2ViUHJvY2Vzcy9X
ZWJDb3JlU3VwcG9ydC9XZWJDaHJvbWVDbGllbnQuaApAQCAtMjksNiArMjksNyBAQAogI2luY2x1
ZGUgPFdlYkNvcmUvQ2hyb21lQ2xpZW50Lmg+CiAKIG5hbWVzcGFjZSBXZWJDb3JlIHsKK2NsYXNz
IEhUTUxJbWFnZUVsZW1lbnQ7CiBjbGFzcyBSZWdpc3RyYWJsZURvbWFpbjsKIGVudW0gY2xhc3Mg
U3RvcmFnZUFjY2Vzc1Byb21wdFdhc1Nob3duIDogYm9vbDsKIGVudW0gY2xhc3MgU3RvcmFnZUFj
Y2Vzc1dhc0dyYW50ZWQgOiBib29sOwpAQCAtMTIxLDYgKzEyMiw4IEBAIHByaXZhdGU6CiAgICAg
V2ViQ29yZTo6SW50UG9pbnQgYWNjZXNzaWJpbGl0eVNjcmVlblRvUm9vdFZpZXcoY29uc3QgV2Vi
Q29yZTo6SW50UG9pbnQmKSBjb25zdCBmaW5hbDsKICAgICBXZWJDb3JlOjpJbnRSZWN0IHJvb3RW
aWV3VG9BY2Nlc3NpYmlsaXR5U2NyZWVuKGNvbnN0IFdlYkNvcmU6OkludFJlY3QmKSBjb25zdCBm
aW5hbDsKIAorICAgIHZvaWQgZGlkRmluaXNoTG9hZGluZ0ltYWdlRm9yRWxlbWVudChXZWJDb3Jl
OjpIVE1MSW1hZ2VFbGVtZW50JikgZmluYWw7CisKICAgICBQbGF0Zm9ybVBhZ2VDbGllbnQgcGxh
dGZvcm1QYWdlQ2xpZW50KCkgY29uc3QgZmluYWw7CiAgICAgdm9pZCBjb250ZW50c1NpemVDaGFu
Z2VkKFdlYkNvcmU6OkZyYW1lJiwgY29uc3QgV2ViQ29yZTo6SW50U2l6ZSYpIGNvbnN0IGZpbmFs
OwogICAgIHZvaWQgaW50cmluc2ljQ29udGVudHNTaXplQ2hhbmdlZChjb25zdCBXZWJDb3JlOjpJ
bnRTaXplJikgY29uc3QgZmluYWw7CmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViS2l0L1dlYlByb2Nl
c3MvV2ViUGFnZS9XZWJQYWdlLmNwcCBiL1NvdXJjZS9XZWJLaXQvV2ViUHJvY2Vzcy9XZWJQYWdl
L1dlYlBhZ2UuY3BwCmluZGV4IDNiYWFmZDE4NTRjYmM5OTVjYTRlODk4MDNlM2I0NDE4MjNlYjYx
NjUuLjI2NjgyZmYyNDdiYmQ0OWZhYzQzOGFjOGY2NmI2NTQ3ZmRmNjU3NGQgMTAwNjQ0Ci0tLSBh
L1NvdXJjZS9XZWJLaXQvV2ViUHJvY2Vzcy9XZWJQYWdlL1dlYlBhZ2UuY3BwCisrKyBiL1NvdXJj
ZS9XZWJLaXQvV2ViUHJvY2Vzcy9XZWJQYWdlL1dlYlBhZ2UuY3BwCkBAIC02NzQwLDYgKzY3NDAs
MTQgQEAgdm9pZCBXZWJQYWdlOjp1cGRhdGVNb2NrQWNjZXNzaWJpbGl0eUVsZW1lbnRBZnRlckNv
bW1pdHRpbmdMb2FkKCkKIH0KICNlbmRpZgogCisjaWYgIVBMQVRGT1JNKElPU19GQU1JTFkpIHx8
ICFFTkFCTEUoRFJBR19TVVBQT1JUKQorCit2b2lkIFdlYlBhZ2U6OmRpZEZpbmlzaExvYWRpbmdJ
bWFnZUZvckVsZW1lbnQoV2ViQ29yZTo6SFRNTEltYWdlRWxlbWVudCYpCit7Cit9CisKKyNlbmRp
ZgorCiB9IC8vIG5hbWVzcGFjZSBXZWJLaXQKIAogI3VuZGVmIFJFTEVBU0VfTE9HX0lGX0FMTE9X
RUQKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJLaXQvV2ViUHJvY2Vzcy9XZWJQYWdlL1dlYlBhZ2Uu
aCBiL1NvdXJjZS9XZWJLaXQvV2ViUHJvY2Vzcy9XZWJQYWdlL1dlYlBhZ2UuaAppbmRleCA4Njhh
ZTkyZjJmYjMyOTM1MTAxMTBiYWVlOGNjYjY3ODIzMWMzM2FkLi4yYTgxNDZiNzQ1MDc3MzAyZTIz
ZTQzZTZhNzY0YjEyNmM5ZTQxYmJlIDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViS2l0L1dlYlByb2Nl
c3MvV2ViUGFnZS9XZWJQYWdlLmgKKysrIGIvU291cmNlL1dlYktpdC9XZWJQcm9jZXNzL1dlYlBh
Z2UvV2ViUGFnZS5oCkBAIC0xNTQsNiArMTU0LDcgQEAgY2xhc3MgRnJhbWU7CiBjbGFzcyBGcmFt
ZVNlbGVjdGlvbjsKIGNsYXNzIEZyYW1lVmlldzsKIGNsYXNzIEdyYXBoaWNzQ29udGV4dDsKK2Ns
YXNzIEhUTUxJbWFnZUVsZW1lbnQ7CiBjbGFzcyBIVE1MTWVudUVsZW1lbnQ7CiBjbGFzcyBIVE1M
TWVudUl0ZW1FbGVtZW50OwogY2xhc3MgSFRNTFBsdWdJbkVsZW1lbnQ7CkBAIC0xMTEzLDEwICsx
MTE0LDEzIEBAIHB1YmxpYzoKICAgICB2b2lkIGRpZEdldExvYWREZWNpc2lvbkZvckljb24oYm9v
bCBkZWNpc2lvbiwgQ2FsbGJhY2tJRCBsb2FkSWRlbnRpZmllciwgT3B0aW9uYWxDYWxsYmFja0lE
KTsKICAgICB2b2lkIHNldFVzZUljb25Mb2FkaW5nQ2xpZW50KGJvb2wpOwogCi0jaWYgRU5BQkxF
KERBVEFfSU5URVJBQ1RJT04pCisjaWYgUExBVEZPUk0oSU9TX0ZBTUlMWSkgJiYgRU5BQkxFKERS
QUdfU1VQUE9SVCkKICAgICB2b2lkIGRpZENvbmNsdWRlRWRpdERyYWcoKTsKKyAgICB2b2lkIGRp
ZENvbmNsdWRlRHJvcCgpOwogI2VuZGlmCiAKKyAgICB2b2lkIGRpZEZpbmlzaExvYWRpbmdJbWFn
ZUZvckVsZW1lbnQoV2ViQ29yZTo6SFRNTEltYWdlRWxlbWVudCYpOworCiAgICAgV2ViVVJMU2No
ZW1lSGFuZGxlclByb3h5KiB1cmxTY2hlbWVIYW5kbGVyRm9yU2NoZW1lKGNvbnN0IFN0cmluZyYp
OwogICAgIHZvaWQgc3RvcEFsbFVSTFNjaGVtZVRhc2tzKCk7CiAKQEAgLTEyNTgsNiArMTI2Miw3
IEBAIHByaXZhdGU6CiAjaWYgUExBVEZPUk0oSU9TX0ZBTUlMWSkgJiYgRU5BQkxFKERBVEFfSU5U
RVJBQ1RJT04pCiAgICAgdm9pZCByZXF1ZXN0RHJhZ1N0YXJ0KGNvbnN0IFdlYkNvcmU6OkludFBv
aW50JiBjbGllbnRQb3NpdGlvbiwgY29uc3QgV2ViQ29yZTo6SW50UG9pbnQmIGdsb2JhbFBvc2l0
aW9uLCB1aW50NjRfdCBhbGxvd2VkQWN0aW9ucyk7CiAgICAgdm9pZCByZXF1ZXN0QWRkaXRpb25h
bEl0ZW1zRm9yRHJhZ1Nlc3Npb24oY29uc3QgV2ViQ29yZTo6SW50UG9pbnQmIGNsaWVudFBvc2l0
aW9uLCBjb25zdCBXZWJDb3JlOjpJbnRQb2ludCYgZ2xvYmFsUG9zaXRpb24sIHVpbnQ2NF90IGFs
bG93ZWRBY3Rpb25zKTsKKyAgICB2b2lkIGNvbXB1dGVBbmRTZW5kRWRpdERyYWdTbmFwc2hvdCgp
OwogI2VuZGlmCiAKICNpZiAhUExBVEZPUk0oQ09DT0EpICYmICFQTEFURk9STShXUEUpCkBAIC0x
NzcwLDYgKzE3NzUsMTAgQEAgcHJpdmF0ZToKICAgICBXZWJDb3JlOjpEcmFnU291cmNlQWN0aW9u
IG1fYWxsb3dlZERyYWdTb3VyY2VBY3Rpb25zIHsgV2ViQ29yZTo6RHJhZ1NvdXJjZUFjdGlvbkFu
eSB9OwogI2VuZGlmCiAKKyNpZiBFTkFCTEUoRFJBR19TVVBQT1JUKSAmJiBQTEFURk9STShJT1Nf
RkFNSUxZKQorICAgIEhhc2hTZXQ8UmVmUHRyPFdlYkNvcmU6OkhUTUxJbWFnZUVsZW1lbnQ+PiBt
X3BlbmRpbmdJbWFnZUVsZW1lbnRzRm9yRHJvcFNuYXBzaG90OworI2VuZGlmCisKICAgICBib29s
IG1fY2FjaGVkTWFpbkZyYW1lSXNQaW5uZWRUb0xlZnRTaWRlIHsgdHJ1ZSB9OwogICAgIGJvb2wg
bV9jYWNoZWRNYWluRnJhbWVJc1Bpbm5lZFRvUmlnaHRTaWRlIHsgdHJ1ZSB9OwogICAgIGJvb2wg
bV9jYWNoZWRNYWluRnJhbWVJc1Bpbm5lZFRvVG9wU2lkZSB7IHRydWUgfTsKZGlmZiAtLWdpdCBh
L1NvdXJjZS9XZWJLaXQvV2ViUHJvY2Vzcy9XZWJQYWdlL1dlYlBhZ2UubWVzc2FnZXMuaW4gYi9T
b3VyY2UvV2ViS2l0L1dlYlByb2Nlc3MvV2ViUGFnZS9XZWJQYWdlLm1lc3NhZ2VzLmluCmluZGV4
IDE4ZjA2Zjg4NGUxOTc3NGZmY2ExZDc4MWI2ODgwOWZmZWUxNzBkMDguLmY3ZmViM2E1YTMzZGM4
Y2E5N2IwNjdiZmI0ZmZmOWE1YWZhNGFhY2EgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJLaXQvV2Vi
UHJvY2Vzcy9XZWJQYWdlL1dlYlBhZ2UubWVzc2FnZXMuaW4KKysrIGIvU291cmNlL1dlYktpdC9X
ZWJQcm9jZXNzL1dlYlBhZ2UvV2ViUGFnZS5tZXNzYWdlcy5pbgpAQCAtMzAzLDkgKzMwMywxMCBA
QCBHZW5lcmF0ZVN5bnRoZXRpY0VkaXRpbmdDb21tYW5kKGVudW06dWludDhfdCBXZWJLaXQ6OlN5
bnRoZXRpY0VkaXRpbmdDb21tYW5kVHlwZQogICAgIERyYWdDYW5jZWxsZWQoKQogI2VuZGlmCiAK
LSNpZiBFTkFCTEUoREFUQV9JTlRFUkFDVElPTikKKyNpZiBQTEFURk9STShJT1NfRkFNSUxZKSAm
JiBFTkFCTEUoRFJBR19TVVBQT1JUKQogICAgIFJlcXVlc3REcmFnU3RhcnQoV2ViQ29yZTo6SW50
UG9pbnQgY2xpZW50UG9zaXRpb24sIFdlYkNvcmU6OkludFBvaW50IGdsb2JhbFBvc2l0aW9uLCB1
aW50NjRfdCBhbGxvd2VkQWN0aW9ucykKICAgICBSZXF1ZXN0QWRkaXRpb25hbEl0ZW1zRm9yRHJh
Z1Nlc3Npb24oV2ViQ29yZTo6SW50UG9pbnQgY2xpZW50UG9zaXRpb24sIFdlYkNvcmU6OkludFBv
aW50IGdsb2JhbFBvc2l0aW9uLCB1aW50NjRfdCBhbGxvd2VkQWN0aW9ucykKKyAgICBEaWRDb25j
bHVkZURyb3AoKQogI2VuZGlmCiAKICAgICAjIFBvcHVwIG1lbnUuCmRpZmYgLS1naXQgYS9Tb3Vy
Y2UvV2ViS2l0L1dlYlByb2Nlc3MvV2ViUGFnZS9pb3MvV2ViUGFnZUlPUy5tbSBiL1NvdXJjZS9X
ZWJLaXQvV2ViUHJvY2Vzcy9XZWJQYWdlL2lvcy9XZWJQYWdlSU9TLm1tCmluZGV4IGMxMTlkNGYx
MjQ3ZWY2NWM2Yjg4ZGFjZWRjY2I3ZTgxZTcxZTJmYjAuLjliYWU3ZDQ1YTQyZTlhZTFmZTBkZjcw
NzM3Y2ZiZDRhYmQyNjNlNjcgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJLaXQvV2ViUHJvY2Vzcy9X
ZWJQYWdlL2lvcy9XZWJQYWdlSU9TLm1tCisrKyBiL1NvdXJjZS9XZWJLaXQvV2ViUHJvY2Vzcy9X
ZWJQYWdlL2lvcy9XZWJQYWdlSU9TLm1tCkBAIC04MjUsMTkgKzgyNSw2MyBAQCB2b2lkIFdlYlBh
Z2U6OnJlcXVlc3RBZGRpdGlvbmFsSXRlbXNGb3JEcmFnU2Vzc2lvbihjb25zdCBJbnRQb2ludCYg
Y2xpZW50UG9zaXRpbwogICAgIHNlbmQoTWVzc2FnZXM6OldlYlBhZ2VQcm94eTo6RGlkSGFuZGxl
QWRkaXRpb25hbERyYWdJdGVtc1JlcXVlc3QoZGlkSGFuZGxlRHJhZykpOwogfQogCit2b2lkIFdl
YlBhZ2U6OmRpZENvbmNsdWRlRHJvcCgpCit7CisgICAgbV9wZW5kaW5nSW1hZ2VFbGVtZW50c0Zv
ckRyb3BTbmFwc2hvdC5jbGVhcigpOworfQorCiB2b2lkIFdlYlBhZ2U6OmRpZENvbmNsdWRlRWRp
dERyYWcoKQogewotICAgIE9wdGlvbmFsPFRleHRJbmRpY2F0b3JEYXRhPiB0ZXh0SW5kaWNhdG9y
RGF0YTsKKyAgICBzZW5kKE1lc3NhZ2VzOjpXZWJQYWdlUHJveHk6OldpbGxSZWNlaXZlRWRpdERy
YWdTbmFwc2hvdCgpKTsKKworICAgIGxheW91dElmTmVlZGVkKCk7CisKKyAgICBtX3BlbmRpbmdJ
bWFnZUVsZW1lbnRzRm9yRHJvcFNuYXBzaG90LmNsZWFyKCk7CiAKKyAgICBib29sIHdhaXRpbmdG
b3JBbnlJbWFnZVRvTG9hZCA9IGZhbHNlOworICAgIGF1dG8mIGZyYW1lID0gbV9wYWdlLT5mb2N1
c0NvbnRyb2xsZXIoKS5mb2N1c2VkT3JNYWluRnJhbWUoKTsKKyAgICBpZiAoYXV0byByYW5nZSA9
IGZyYW1lLnNlbGVjdGlvbigpLnNlbGVjdGlvbigpLnRvTm9ybWFsaXplZFJhbmdlKCkpIHsKKyAg
ICAgICAgZm9yIChUZXh0SXRlcmF0b3IgaXRlcmF0b3IocmFuZ2UuZ2V0KCkpOyAhaXRlcmF0b3Iu
YXRFbmQoKTsgaXRlcmF0b3IuYWR2YW5jZSgpKSB7CisgICAgICAgICAgICBhdXRvKiBub2RlID0g
aXRlcmF0b3Iubm9kZSgpOworICAgICAgICAgICAgaWYgKCFpczxIVE1MSW1hZ2VFbGVtZW50Pihu
b2RlKSkKKyAgICAgICAgICAgICAgICBjb250aW51ZTsKKworICAgICAgICAgICAgYXV0byYgaW1h
Z2VFbGVtZW50ID0gZG93bmNhc3Q8SFRNTEltYWdlRWxlbWVudD4oKm5vZGUpOworICAgICAgICAg
ICAgYXV0byogY2FjaGVkSW1hZ2UgPSBpbWFnZUVsZW1lbnQuY2FjaGVkSW1hZ2UoKTsKKyAgICAg
ICAgICAgIGlmIChjYWNoZWRJbWFnZSAmJiBjYWNoZWRJbWFnZS0+aW1hZ2UoKSAmJiBjYWNoZWRJ
bWFnZS0+aW1hZ2UoKS0+aXNOdWxsKCkpIHsKKyAgICAgICAgICAgICAgICBtX3BlbmRpbmdJbWFn
ZUVsZW1lbnRzRm9yRHJvcFNuYXBzaG90LmFkZCgmaW1hZ2VFbGVtZW50KTsKKyAgICAgICAgICAg
ICAgICB3YWl0aW5nRm9yQW55SW1hZ2VUb0xvYWQgPSB0cnVlOworICAgICAgICAgICAgfQorICAg
ICAgICB9CisgICAgfQorCisgICAgaWYgKCF3YWl0aW5nRm9yQW55SW1hZ2VUb0xvYWQpCisgICAg
ICAgIGNvbXB1dGVBbmRTZW5kRWRpdERyYWdTbmFwc2hvdCgpOworfQorCit2b2lkIFdlYlBhZ2U6
OmRpZEZpbmlzaExvYWRpbmdJbWFnZUZvckVsZW1lbnQoV2ViQ29yZTo6SFRNTEltYWdlRWxlbWVu
dCYgZWxlbWVudCkKK3sKKyAgICBpZiAobV9wZW5kaW5nSW1hZ2VFbGVtZW50c0ZvckRyb3BTbmFw
c2hvdC5pc0VtcHR5KCkpCisgICAgICAgIHJldHVybjsKKworICAgIG1fcGVuZGluZ0ltYWdlRWxl
bWVudHNGb3JEcm9wU25hcHNob3QucmVtb3ZlKCZlbGVtZW50KTsKKworICAgIGlmIChtX3BlbmRp
bmdJbWFnZUVsZW1lbnRzRm9yRHJvcFNuYXBzaG90LmlzRW1wdHkoKSkKKyAgICAgICAgY29tcHV0
ZUFuZFNlbmRFZGl0RHJhZ1NuYXBzaG90KCk7Cit9CisKK3ZvaWQgV2ViUGFnZTo6Y29tcHV0ZUFu
ZFNlbmRFZGl0RHJhZ1NuYXBzaG90KCkKK3sKKyAgICBPcHRpb25hbDxUZXh0SW5kaWNhdG9yRGF0
YT4gdGV4dEluZGljYXRvckRhdGE7CiAgICAgc3RhdGljIGF1dG8gZGVmYXVsdFRleHRJbmRpY2F0
b3JPcHRpb25zRm9yRWRpdERyYWcgPSBUZXh0SW5kaWNhdG9yT3B0aW9uSW5jbHVkZVNuYXBzaG90
T2ZBbGxWaXNpYmxlQ29udGVudFdpdGhvdXRTZWxlY3Rpb24gfCBUZXh0SW5kaWNhdG9yT3B0aW9u
RXhwYW5kQ2xpcEJleW9uZFZpc2libGVSZWN0IHwgVGV4dEluZGljYXRvck9wdGlvblBhaW50QWxs
Q29udGVudCB8IFRleHRJbmRpY2F0b3JPcHRpb25JbmNsdWRlTWFyZ2luSWZSYW5nZU1hdGNoZXNT
ZWxlY3Rpb24gfCBUZXh0SW5kaWNhdG9yT3B0aW9uUGFpbnRCYWNrZ3JvdW5kcyB8IFRleHRJbmRp
Y2F0b3JPcHRpb25Db21wdXRlRXN0aW1hdGVkQmFja2dyb3VuZENvbG9yfCBUZXh0SW5kaWNhdG9y
T3B0aW9uVXNlU2VsZWN0aW9uUmVjdEZvclNpemluZyB8IFRleHRJbmRpY2F0b3JPcHRpb25JbmNs
dWRlU25hcHNob3RXaXRoU2VsZWN0aW9uSGlnaGxpZ2h0OwogICAgIGF1dG8mIGZyYW1lID0gbV9w
YWdlLT5mb2N1c0NvbnRyb2xsZXIoKS5mb2N1c2VkT3JNYWluRnJhbWUoKTsKICAgICBpZiAoYXV0
byByYW5nZSA9IGZyYW1lLnNlbGVjdGlvbigpLnNlbGVjdGlvbigpLnRvTm9ybWFsaXplZFJhbmdl
KCkpIHsKLSAgICAgICAgaWYgKGF1dG8gdGV4dEluZGljYXRvciA9IFRleHRJbmRpY2F0b3I6OmNy
ZWF0ZVdpdGhSYW5nZSgqcmFuZ2UsIGRlZmF1bHRUZXh0SW5kaWNhdG9yT3B0aW9uc0ZvckVkaXRE
cmFnLCBUZXh0SW5kaWNhdG9yUHJlc2VudGF0aW9uVHJhbnNpdGlvbjo6Tm9uZSwgRmxvYXRTaXpl
KCkpKQorICAgICAgICBpZiAoYXV0byB0ZXh0SW5kaWNhdG9yID0gVGV4dEluZGljYXRvcjo6Y3Jl
YXRlV2l0aFJhbmdlKCpyYW5nZSwgZGVmYXVsdFRleHRJbmRpY2F0b3JPcHRpb25zRm9yRWRpdERy
YWcsIFRleHRJbmRpY2F0b3JQcmVzZW50YXRpb25UcmFuc2l0aW9uOjpOb25lLCB7IH0pKQogICAg
ICAgICAgICAgdGV4dEluZGljYXRvckRhdGEgPSB0ZXh0SW5kaWNhdG9yLT5kYXRhKCk7CiAgICAg
fQotCi0gICAgc2VuZChNZXNzYWdlczo6V2ViUGFnZVByb3h5OjpEaWRDb25jbHVkZUVkaXREcmFn
KFdURk1vdmUodGV4dEluZGljYXRvckRhdGEpKSk7CisgICAgc2VuZChNZXNzYWdlczo6V2ViUGFn
ZVByb3h5OjpEaWRSZWNlaXZlRWRpdERyYWdTbmFwc2hvdChXVEZNb3ZlKHRleHRJbmRpY2F0b3JE
YXRhKSkpOwogfQorCiAjZW5kaWYKIAogdm9pZCBXZWJQYWdlOjpzZW5kVGFwSGlnaGxpZ2h0Rm9y
Tm9kZUlmTmVjZXNzYXJ5KHVpbnQ2NF90IHJlcXVlc3RJRCwgTm9kZSogbm9kZSkKZGlmZiAtLWdp
dCBhL1NvdXJjZS9XZWJLaXRMZWdhY3kvbWFjL1dlYkNvcmVTdXBwb3J0L1dlYkNocm9tZUNsaWVu
dC5oIGIvU291cmNlL1dlYktpdExlZ2FjeS9tYWMvV2ViQ29yZVN1cHBvcnQvV2ViQ2hyb21lQ2xp
ZW50LmgKaW5kZXggNjQwZmU1OGZkMTA0Nzk0YjNjNTgzZTY1OWFiNjFhY2RmMTdjMmUyMC4uN2Uw
YTYyNThhYzAyYTg3Y2E5YzEwY2U0YTlmODVjZjQzMjc1OTk5NiAxMDA2NDQKLS0tIGEvU291cmNl
L1dlYktpdExlZ2FjeS9tYWMvV2ViQ29yZVN1cHBvcnQvV2ViQ2hyb21lQ2xpZW50LmgKKysrIGIv
U291cmNlL1dlYktpdExlZ2FjeS9tYWMvV2ViQ29yZVN1cHBvcnQvV2ViQ2hyb21lQ2xpZW50LmgK
QEAgLTMxLDYgKzMxLDEwIEBACiAjaW1wb3J0IDxXZWJDb3JlL0ZvY3VzRGlyZWN0aW9uLmg+CiAj
aW1wb3J0IDx3dGYvRm9yd2FyZC5oPgogCituYW1lc3BhY2UgV2ViQ29yZSB7CitjbGFzcyBIVE1M
SW1hZ2VFbGVtZW50OworfQorCiBAY2xhc3MgV2ViVmlldzsKIAogLy8gRklYTUU6IFRoaXMgY2xh
c3MgaXMgdXNlZCBhcyBhIGNvbmNyZXRlIGNsYXNzIG9uIE1hYywgYnV0IG9uIGlPUyB0aGlzIGlz
IGFuIGFic3RyYWN0CkBAIC0xMDIsNiArMTA2LDggQEAgcHJpdmF0ZToKICAgICBXZWJDb3JlOjpJ
bnRQb2ludCBhY2Nlc3NpYmlsaXR5U2NyZWVuVG9Sb290Vmlldyhjb25zdCBXZWJDb3JlOjpJbnRQ
b2ludCYpIGNvbnN0IGZpbmFsOwogICAgIFdlYkNvcmU6OkludFJlY3Qgcm9vdFZpZXdUb0FjY2Vz
c2liaWxpdHlTY3JlZW4oY29uc3QgV2ViQ29yZTo6SW50UmVjdCYpIGNvbnN0IGZpbmFsOwogCisg
ICAgdm9pZCBkaWRGaW5pc2hMb2FkaW5nSW1hZ2VGb3JFbGVtZW50KFdlYkNvcmU6OkhUTUxJbWFn
ZUVsZW1lbnQmKSBmaW5hbDsKKwogICAgIFBsYXRmb3JtUGFnZUNsaWVudCBwbGF0Zm9ybVBhZ2VD
bGllbnQoKSBjb25zdCBmaW5hbDsKICAgICB2b2lkIGNvbnRlbnRzU2l6ZUNoYW5nZWQoV2ViQ29y
ZTo6RnJhbWUmLCBjb25zdCBXZWJDb3JlOjpJbnRTaXplJikgY29uc3QgZmluYWw7CiAgICAgdm9p
ZCBpbnRyaW5zaWNDb250ZW50c1NpemVDaGFuZ2VkKGNvbnN0IFdlYkNvcmU6OkludFNpemUmKSBj
b25zdCBmaW5hbCB7IH0KZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJLaXRMZWdhY3kvbWFjL1dlYkNv
cmVTdXBwb3J0L1dlYkNocm9tZUNsaWVudC5tbSBiL1NvdXJjZS9XZWJLaXRMZWdhY3kvbWFjL1dl
YkNvcmVTdXBwb3J0L1dlYkNocm9tZUNsaWVudC5tbQppbmRleCBhYWM4NzE1NjY0ZjJjYmU3Y2U3
MGRmMjc0NjNlYzRmMTc1ZDgyYzc5Li5hYmUyZmIzMjk4ZDE2ZGU0MTRjYmY5M2M4YmVkOGJlYzE4
YjIxMDdlIDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViS2l0TGVnYWN5L21hYy9XZWJDb3JlU3VwcG9y
dC9XZWJDaHJvbWVDbGllbnQubW0KKysrIGIvU291cmNlL1dlYktpdExlZ2FjeS9tYWMvV2ViQ29y
ZVN1cHBvcnQvV2ViQ2hyb21lQ2xpZW50Lm1tCkBAIC02MTAsNiArNjEwLDEwIEBAIEludFJlY3Qg
V2ViQ2hyb21lQ2xpZW50Ojpyb290Vmlld1RvQWNjZXNzaWJpbGl0eVNjcmVlbihjb25zdCBJbnRS
ZWN0JiByKSBjb25zdAogICAgIHJldHVybiByb290Vmlld1RvU2NyZWVuKHIpOwogfQogCit2b2lk
IFdlYkNocm9tZUNsaWVudDo6ZGlkRmluaXNoTG9hZGluZ0ltYWdlRm9yRWxlbWVudChIVE1MSW1h
Z2VFbGVtZW50JikKK3sKK30KKwogUGxhdGZvcm1QYWdlQ2xpZW50IFdlYkNocm9tZUNsaWVudDo6
cGxhdGZvcm1QYWdlQ2xpZW50KCkgY29uc3QKIHsKICAgICByZXR1cm4gMDsKZGlmZiAtLWdpdCBh
L1NvdXJjZS9XZWJLaXRMZWdhY3kvd2luL1dlYkNvcmVTdXBwb3J0L1dlYkNocm9tZUNsaWVudC5j
cHAgYi9Tb3VyY2UvV2ViS2l0TGVnYWN5L3dpbi9XZWJDb3JlU3VwcG9ydC9XZWJDaHJvbWVDbGll
bnQuY3BwCmluZGV4IDkzN2VmNjk0Yjc0MmM1MGU2YWEwMTMwZjYzMDBiNDA5Njc4ZmYyYTIuLjRh
NDliOTRiYmE1OGQwYzU0NjMzMjljM2Y2ZWYyM2U4NDg4YjdhZjMgMTAwNjQ0Ci0tLSBhL1NvdXJj
ZS9XZWJLaXRMZWdhY3kvd2luL1dlYkNvcmVTdXBwb3J0L1dlYkNocm9tZUNsaWVudC5jcHAKKysr
IGIvU291cmNlL1dlYktpdExlZ2FjeS93aW4vV2ViQ29yZVN1cHBvcnQvV2ViQ2hyb21lQ2xpZW50
LmNwcApAQCAtNzAzLDYgKzcwMywxMCBAQCBSZWZQdHI8SWNvbj4gV2ViQ2hyb21lQ2xpZW50Ojpj
cmVhdGVJY29uRm9yRmlsZXMoY29uc3QgVmVjdG9yPFN0cmluZz4mIGZpbGVuYW1lcwogICAgIHJl
dHVybiBJY29uOjpjcmVhdGVJY29uRm9yRmlsZXMoZmlsZW5hbWVzKTsKIH0KIAordm9pZCBXZWJD
aHJvbWVDbGllbnQ6OmRpZEZpbmlzaExvYWRpbmdJbWFnZUZvckVsZW1lbnQoV2ViQ29yZTo6SFRN
TEltYWdlRWxlbWVudCYpCit7Cit9CisKIHZvaWQgV2ViQ2hyb21lQ2xpZW50OjpzZXRDdXJzb3Io
Y29uc3QgQ3Vyc29yJiBjdXJzb3IpCiB7CiAgICAgaWYgKCFjdXJzb3IucGxhdGZvcm1DdXJzb3Io
KSkKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJLaXRMZWdhY3kvd2luL1dlYkNvcmVTdXBwb3J0L1dl
YkNocm9tZUNsaWVudC5oIGIvU291cmNlL1dlYktpdExlZ2FjeS93aW4vV2ViQ29yZVN1cHBvcnQv
V2ViQ2hyb21lQ2xpZW50LmgKaW5kZXggYWVmMTY3YTVkZTBlNzIxNDM0NDM2YzA1ZDMyNDk1NmE2
MjAwYTc3Ni4uNDFkNWYwNmFlYWNiN2UxNDE3ZDRiNzAyNDAwNjBiYmU1N2Y2OTMwZiAxMDA2NDQK
LS0tIGEvU291cmNlL1dlYktpdExlZ2FjeS93aW4vV2ViQ29yZVN1cHBvcnQvV2ViQ2hyb21lQ2xp
ZW50LmgKKysrIGIvU291cmNlL1dlYktpdExlZ2FjeS93aW4vV2ViQ29yZVN1cHBvcnQvV2ViQ2hy
b21lQ2xpZW50LmgKQEAgLTE3Miw2ICsxNzIsOCBAQCBwdWJsaWM6CiAKICAgICBSZWZQdHI8V2Vi
Q29yZTo6SWNvbj4gY3JlYXRlSWNvbkZvckZpbGVzKGNvbnN0IFZlY3RvcjxTdHJpbmc+JikgZmlu
YWw7CiAKKyAgICB2b2lkIGRpZEZpbmlzaExvYWRpbmdJbWFnZUZvckVsZW1lbnQoV2ViQ29yZTo6
SFRNTEltYWdlRWxlbWVudCYpIGZpbmFsOworCiBwcml2YXRlOgogICAgIENPTVB0cjxJV2ViVUlE
ZWxlZ2F0ZT4gdWlEZWxlZ2F0ZSgpOwogCmRpZmYgLS1naXQgYS9Ub29scy9DaGFuZ2VMb2cgYi9U
b29scy9DaGFuZ2VMb2cKaW5kZXggZTgyNDI2MDdiZGIyZDFmNGE4ZGQwMzg3YWVkOGI0ZjRmMWU5
OTQ0MS4uYzU5OGYwNTQ0NzI0MmMxN2ZhNWY3MjZlNTk0NmRjNjQ4MWIwOTkxNiAxMDA2NDQKLS0t
IGEvVG9vbHMvQ2hhbmdlTG9nCisrKyBiL1Rvb2xzL0NoYW5nZUxvZwpAQCAtMSwzICsxLDQxIEBA
CisyMDE5LTA1LTI2ICBXZW5zb24gSHNpZWggIDx3ZW5zb25faHNpZWhAYXBwbGUuY29tPgorCisg
ICAgICAgIFtpT1NdIERyb3BwZWQgdGV4dCwgYXR0YWNobWVudHMsIGFuZCBpbWFnZXMgc2hvdWxk
IGFuaW1hdGUgaW50byBwbGFjZQorICAgICAgICBodHRwczovL2J1Z3Mud2Via2l0Lm9yZy9zaG93
X2J1Zy5jZ2k/aWQ9MTk4MjQzCisgICAgICAgIDxyZGFyOi8vcHJvYmxlbS8zNTIwNTM3Mz4KKwor
ICAgICAgICBSZXZpZXdlZCBieSBUaW0gSG9ydG9uLgorCisgICAgICAgIEFkanVzdHMgdGhlIGlP
UyBkcmFnZ2luZyBzaW11bGF0b3IsIGFuZCBhZGRzIGEgbmV3IEFQSSB0ZXN0LiBTZWUgYmVsb3cg
Zm9yIG1vcmUgZGV0YWlsLgorCisgICAgICAgICogVGVzdFdlYktpdEFQSS9UZXN0cy9pb3MvRHJh
Z0FuZERyb3BUZXN0c0lPUy5tbToKKyAgICAgICAgKFRlc3RXZWJLaXRBUEk6OmlzQ29tcGxldGVs
eVdoaXRlKToKKyAgICAgICAgKFRlc3RXZWJLaXRBUEk6OlRFU1QpOgorCisgICAgICAgIEFkZCBh
IHRlc3QgdGhhdCBkcmFncyBhbmQgZHJvcHMgYW4gaW1hZ2UgaW50byBhIGNvbnRlbnRlZGl0YWJs
ZSBlbGVtZW50LCBhbmQgdGhlbiBvYnNlcnZlcyB0aGUgcmVzdWx0aW5nCisgICAgICAgIFVJVGFy
Z2V0ZWREcmFnUHJldmlld3MgdXBvbiBkcm9wLgorCisgICAgICAgICogVGVzdFdlYktpdEFQSS9j
b2NvYS9EcmFnQW5kRHJvcFNpbXVsYXRvci5oOgorICAgICAgICAqIFRlc3RXZWJLaXRBUEkvaW9z
L0RyYWdBbmREcm9wU2ltdWxhdG9ySU9TLm1tOgorICAgICAgICAoLVtEcmFnQW5kRHJvcFNpbXVs
YXRvciBfcmVzZXRTaW11bGF0ZWRTdGF0ZV0pOgorICAgICAgICAoLVtEcmFnQW5kRHJvcFNpbXVs
YXRvciBydW5Gcm9tOnRvOmFkZGl0aW9uYWxJdGVtUmVxdWVzdExvY2F0aW9uczpdKToKKyAgICAg
ICAgKC1bRHJhZ0FuZERyb3BTaW11bGF0b3IgX2NvbmNsdWRlRHJvcEFuZFBlcmZvcm1PcGVyYXRp
b25JZk5lY2Vzc2FyeV0pOgorCisgICAgICAgIFRlYWNoIHRoZSBpT1MgdmVyc2lvbiBvZiBEcmFn
QW5kRHJvcFNpbXVsYXRvciB0byBpbnZva2UgLWRyb3BJbnRlcmFjdGlvbjpjb25jbHVkZURyb3A6
IG9uIHRoZSBkcm9wIGludGVyYWN0aW9uCisgICAgICAgIGRlbGVnYXRlIHdoZW4gdGhlIGRyb3Ag
ZmluaXNoZXMuIFRoaXMgYWRkaXRpb25hbGx5IHVzZXMgX2RvQWZ0ZXJSZWNlaXZpbmdFZGl0RHJh
Z1NuYXBzaG90Rm9yVGVzdGluZzogdG8gZGVmZXIKKyAgICAgICAgdGhlIGVuZCBvZiB0aGUgc2lt
dWxhdGVkIGRyYWcgYW5kIGRyb3AgdW50aWwgYWZ0ZXIgZHJhZyBwcmV2aWV3cyBoYXZlIGJlZW4g
cmVjZWl2ZWQgZHVyaW5nIGFuIGVkaXQgZHJhZy4KKworICAgICAgICAoLVtEcmFnQW5kRHJvcFNp
bXVsYXRvciBkcm9wUHJldmlld3NdKToKKyAgICAgICAgKC1bRHJhZ0FuZERyb3BTaW11bGF0b3Ig
ZGVsYXllZERyb3BQcmV2aWV3c10pOgorCisgICAgICAgIEhhdmUgdGhlIGRyYWcgYW5kIGRyb3Ag
c2ltdWxhdG9yIHJlbWVtYmVyIHdoaWNoIHByZXZpZXdzIHdlcmUgcmV0dXJuZWQgYnkgdGhlIGRl
bGVnYXRlIG9uIGRyb3AsIGFzIHdlbGwgYXMgd2hpY2gKKyAgICAgICAgcHJldmlld3Mgd2VyZSBw
cm92aWRlZCBhc3luY2hyb25vdXNseS4KKworICAgICAgICAoLVtEcmFnQW5kRHJvcFNpbXVsYXRv
ciBfd2ViVmlldzpkYXRhSW50ZXJhY3Rpb25PcGVyYXRpb25XYXNIYW5kbGVkOmZvclNlc3Npb246
aXRlbVByb3ZpZGVyczpdKToKKyAgICAgICAgKiBUZXN0V2ViS2l0QVBJL2lvcy9VSUtpdFNQSS5o
OgorCisgICAgICAgIFN0YWdlIHRoZSBuZXcgcHJpdmF0ZSBkcm9wIGludGVyYWN0b24gZGVsZWdh
dGUgbWV0aG9kLgorCiAyMDE5LTA1LTI1ICBTaW1vbiBGcmFzZXIgIDxzaW1vbi5mcmFzZXJAYXBw
bGUuY29tPgogCiAgICAgICAgIE1vYmlsZU1pbmlCcm93c2VyOiBBZGQgaVBhZCBzdXBwb3J0LCBh
bmQgYWxsb3cgaW5zZWN1cmUgbG9hZHMKZGlmZiAtLWdpdCBhL1Rvb2xzL1Rlc3RXZWJLaXRBUEkv
VGVzdHMvaW9zL0RyYWdBbmREcm9wVGVzdHNJT1MubW0gYi9Ub29scy9UZXN0V2ViS2l0QVBJL1Rl
c3RzL2lvcy9EcmFnQW5kRHJvcFRlc3RzSU9TLm1tCmluZGV4IDIxOTM2YmQ2MzAxNWRhYWZkODNm
MDE3YmU5NGMwOTQyMmQwMmJlYWYuLmYxY2MyNDBlNTM5YzgxN2YzODhjMzFhZmQxZTk4MTg0NmIz
ZTUzNzMgMTAwNjQ0Ci0tLSBhL1Rvb2xzL1Rlc3RXZWJLaXRBUEkvVGVzdHMvaW9zL0RyYWdBbmRE
cm9wVGVzdHNJT1MubW0KKysrIGIvVG9vbHMvVGVzdFdlYktpdEFQSS9UZXN0cy9pb3MvRHJhZ0Fu
ZERyb3BUZXN0c0lPUy5tbQpAQCAtMjEwNyw2ICsyMTA3LDQ0IEBAIFRFU1QoRHJhZ0FuZERyb3BU
ZXN0cywgRGF0YVRyYW5zZmVyU2FuaXRpemVIVE1MKQogICAgIFRlc3RXZWJLaXRBUEk6OlV0aWw6
OnJ1bigmZG9uZSk7CiB9CiAKK3N0YXRpYyBCT09MIGlzQ29tcGxldGVseVdoaXRlKFVJSW1hZ2Ug
KmltYWdlKQoreworICAgIGF1dG8gZGF0YSA9IGFkb3B0Q0YoQ0dEYXRhUHJvdmlkZXJDb3B5RGF0
YShDR0ltYWdlR2V0RGF0YVByb3ZpZGVyKGltYWdlLkNHSW1hZ2UpKSk7CisgICAgYXV0byogZGF0
YVB0ciA9IENGRGF0YUdldEJ5dGVQdHIoZGF0YS5nZXQoKSk7CisgICAgaW50IGltYWdlV2lkdGgg
PSBpbWFnZS5zaXplLndpZHRoOworICAgIGZvciAoaW50IHJvdyA9IDA7IHJvdyA8IGltYWdlLnNp
emUuaGVpZ2h0OyArK3JvdykgeworICAgICAgICBmb3IgKGludCBjb2x1bW4gPSAwOyBjb2x1bW4g
PCBpbWFnZVdpZHRoOyArK2NvbHVtbikgeworICAgICAgICAgICAgaW50IHBpeGVsT2Zmc2V0ID0g
KChpbWFnZVdpZHRoICogcm93KSArIGNvbHVtbikgKiA0OworICAgICAgICAgICAgaWYgKGRhdGFQ
dHJbcGl4ZWxPZmZzZXRdICE9IDB4RkYgfHwgZGF0YVB0cltwaXhlbE9mZnNldCArIDFdICE9IDB4
RkYgfHwgZGF0YVB0cltwaXhlbE9mZnNldCArIDJdICE9IDB4RkYpCisgICAgICAgICAgICAgICAg
cmV0dXJuIE5POworICAgICAgICB9CisgICAgfQorICAgIHJldHVybiBZRVM7Cit9CisKK1RFU1Qo
RHJhZ0FuZERyb3BUZXN0cywgRHJvcFByZXZpZXdGb3JJbWFnZUluRWRpdGFibGVBcmVhKQorewor
ICAgIGF1dG8gd2ViVmlldyA9IGFkb3B0TlMoW1tUZXN0V0tXZWJWaWV3IGFsbG9jXSBpbml0V2l0
aEZyYW1lOkNHUmVjdE1ha2UoMCwgMCwgMzIwLCA1MDApXSk7CisgICAgW3dlYlZpZXcgc3luY2hy
b25vdXNseUxvYWRUZXN0UGFnZU5hbWVkOkAiaW1hZ2UtYW5kLWNvbnRlbnRlZGl0YWJsZSJdOwor
CisgICAgLy8gRW5zdXJlIHRoYXQgdGhlIHJlc3VsdGluZyBzbmFwc2hvdCBvbiBkcm9wIGNvbnRh
aW5zIG9ubHkgdGhlIGRyYWdnZWQgaW1hZ2UuCisgICAgW3dlYlZpZXcgc3RyaW5nQnlFdmFsdWF0
aW5nSmF2YVNjcmlwdDpAImVkaXRvci5zdHlsZS5ib3JkZXIgPSAnbm9uZSc7IGVkaXRvci5zdHls
ZS5vdXRsaW5lID0gJ25vbmUnIl07CisKKyAgICBhdXRvIHNpbXVsYXRvciA9IGFkb3B0TlMoW1tE
cmFnQW5kRHJvcFNpbXVsYXRvciBhbGxvY10gaW5pdFdpdGhXZWJWaWV3OndlYlZpZXcuZ2V0KCld
KTsKKyAgICBbc2ltdWxhdG9yIHJ1bkZyb206Q0dQb2ludE1ha2UoMTAwLCA1MCkgdG86Q0dQb2lu
dE1ha2UoMTAwLCAzMDApXTsKKworICAgIE5TQXJyYXkgKmRyb3BQcmV2aWV3cyA9IFtzaW11bGF0
b3IgZHJvcFByZXZpZXdzXTsKKyAgICBOU0FycmF5ICpkZWxheWVkRHJvcFByZXZpZXdzID0gW3Np
bXVsYXRvciBkZWxheWVkRHJvcFByZXZpZXdzXTsKKyAgICBFWFBFQ1RfRVEoMVUsIGRyb3BQcmV2
aWV3cy5jb3VudCk7CisgICAgRVhQRUNUX0VRKDFVLCBkZWxheWVkRHJvcFByZXZpZXdzLmNvdW50
KTsKKyAgICBFWFBFQ1RfRVEoVUlUYXJnZXRlZERyYWdQcmV2aWV3LmNsYXNzLCBbZHJvcFByZXZp
ZXdzLmZpcnN0T2JqZWN0IGNsYXNzXSk7CisgICAgRVhQRUNUX0VRKFVJVGFyZ2V0ZWREcmFnUHJl
dmlldy5jbGFzcywgW2RlbGF5ZWREcm9wUHJldmlld3MuZmlyc3RPYmplY3QgY2xhc3NdKTsKKwor
ICAgIFVJVGFyZ2V0ZWREcmFnUHJldmlldyAqZmluYWxQcmV2aWV3ID0gKFVJVGFyZ2V0ZWREcmFn
UHJldmlldyAqKWRlbGF5ZWREcm9wUHJldmlld3MuZmlyc3RPYmplY3Q7CisgICAgRVhQRUNUX0VR
KFVJSW1hZ2VWaWV3LmNsYXNzLCBmaW5hbFByZXZpZXcudmlldy5jbGFzcyk7CisgICAgRVhQRUNU
X0ZBTFNFKGlzQ29tcGxldGVseVdoaXRlKFsoVUlJbWFnZVZpZXcgKilmaW5hbFByZXZpZXcudmll
dyBpbWFnZV0pKTsKK30KKwogfSAvLyBuYW1lc3BhY2UgVGVzdFdlYktpdEFQSQogCiAjZW5kaWYg
Ly8gRU5BQkxFKERSQUdfU1VQUE9SVCkgJiYgUExBVEZPUk0oSU9TX0ZBTUlMWSkKZGlmZiAtLWdp
dCBhL1Rvb2xzL1Rlc3RXZWJLaXRBUEkvY29jb2EvRHJhZ0FuZERyb3BTaW11bGF0b3IuaCBiL1Rv
b2xzL1Rlc3RXZWJLaXRBUEkvY29jb2EvRHJhZ0FuZERyb3BTaW11bGF0b3IuaAppbmRleCA4NDdj
Nzc2YWRjZmU2OGE3MDQ1M2NkZjQ4NzY1N2I4ZmEzNjQxZmY3Li5jNWJjMGRlNzkyZjhmMzYzOWYz
Y2ViMWMxZTBkOGFlMDBmMWQ1NjA5IDEwMDY0NAotLS0gYS9Ub29scy9UZXN0V2ViS2l0QVBJL2Nv
Y29hL0RyYWdBbmREcm9wU2ltdWxhdG9yLmgKKysrIGIvVG9vbHMvVGVzdFdlYktpdEFQSS9jb2Nv
YS9EcmFnQW5kRHJvcFNpbXVsYXRvci5oCkBAIC0xMTEsNiArMTExLDggQEAgdHlwZWRlZiBOU0Rp
Y3Rpb25hcnk8TlNOdW1iZXIgKiwgTlNWYWx1ZSAqPiAqUHJvZ3Jlc3NUb0NHUG9pbnRWYWx1ZU1h
cDsKIEBwcm9wZXJ0eSAobm9uYXRvbWljLCByZWFkb25seSkgTlNBcnJheSAqZmluYWxTZWxlY3Rp
b25SZWN0czsKIEBwcm9wZXJ0eSAobm9uYXRvbWljLCByZWFkb25seSkgQ0dSZWN0IGxhc3RLbm93
bkRyYWdDYXJldFJlY3Q7CiBAcHJvcGVydHkgKG5vbmF0b21pYywgcmVhZG9ubHkpIE5TQXJyYXk8
VUlUYXJnZXRlZERyYWdQcmV2aWV3ICo+ICpsaWZ0UHJldmlld3M7CitAcHJvcGVydHkgKG5vbmF0
b21pYywgcmVhZG9ubHkpIE5TQXJyYXkgKmRyb3BQcmV2aWV3czsKK0Bwcm9wZXJ0eSAobm9uYXRv
bWljLCByZWFkb25seSkgTlNBcnJheSAqZGVsYXllZERyb3BQcmV2aWV3czsKIEBwcm9wZXJ0eSAo
bm9uYXRvbWljLCByZWFkb25seSkgQk9PTCBzdXBwcmVzc2VkU2VsZWN0aW9uQ29tbWFuZHNEdXJp
bmdEcm9wOwogCiAjZW5kaWYgLy8gUExBVEZPUk0oSU9TX0ZBTUlMWSkKZGlmZiAtLWdpdCBhL1Rv
b2xzL1Rlc3RXZWJLaXRBUEkvaW9zL0RyYWdBbmREcm9wU2ltdWxhdG9ySU9TLm1tIGIvVG9vbHMv
VGVzdFdlYktpdEFQSS9pb3MvRHJhZ0FuZERyb3BTaW11bGF0b3JJT1MubW0KaW5kZXggZmYwMTg3
ZGM0ZTZjMDVmNTFmYzkwYTUxNWFmZTVkNzhjNzAwMjkzYi4uOGVkYWU4Y2U4YTk0ODQzNTg1MzI3
MjdlNjY4NWYwMWE3NTBjZmEyMCAxMDA2NDQKLS0tIGEvVG9vbHMvVGVzdFdlYktpdEFQSS9pb3Mv
RHJhZ0FuZERyb3BTaW11bGF0b3JJT1MubW0KKysrIGIvVG9vbHMvVGVzdFdlYktpdEFQSS9pb3Mv
RHJhZ0FuZERyb3BTaW11bGF0b3JJT1MubW0KQEAgLTM0LDYgKzM0LDcgQEAKIAogI2ltcG9ydCA8
VUlLaXQvVUlEcmFnSW50ZXJhY3Rpb24uaD4KICNpbXBvcnQgPFVJS2l0L1VJRHJhZ0l0ZW0uaD4K
KyNpbXBvcnQgPFVJS2l0L1VJRHJvcEludGVyYWN0aW9uLmg+CiAjaW1wb3J0IDxVSUtpdC9VSUlu
dGVyYWN0aW9uLmg+CiAjaW1wb3J0IDxXZWJLaXQvV0tXZWJWaWV3UHJpdmF0ZS5oPgogI2ltcG9y
dCA8V2ViS2l0L19XS0ZvY3VzZWRFbGVtZW50SW5mby5oPgpAQCAtMzEwLDYgKzMxMSw4IEBAIEBp
bXBsZW1lbnRhdGlvbiBEcmFnQW5kRHJvcFNpbXVsYXRvciB7CiAgICAgUmV0YWluUHRyPE5TTXV0
YWJsZURpY3Rpb25hcnk8TlNOdW1iZXIgKiwgTlNWYWx1ZSAqPj5fcmVtYWluaW5nQWRkaXRpb25h
bEl0ZW1SZXF1ZXN0TG9jYXRpb25zQnlQcm9ncmVzczsKICAgICBSZXRhaW5QdHI8TlNNdXRhYmxl
QXJyYXk8TlNWYWx1ZSAqPj5fcXVldWVkQWRkaXRpb25hbEl0ZW1SZXF1ZXN0TG9jYXRpb25zOwog
ICAgIFJldGFpblB0cjxOU011dGFibGVBcnJheTxVSVRhcmdldGVkRHJhZ1ByZXZpZXcgKj4+IF9s
aWZ0UHJldmlld3M7CisgICAgUmV0YWluUHRyPE5TTXV0YWJsZUFycmF5PiBfZHJvcFByZXZpZXdz
OworICAgIFJldGFpblB0cjxOU011dGFibGVBcnJheT4gX2RlbGF5ZWREcm9wUHJldmlld3M7CiAK
ICAgICBSZXRhaW5QdHI8TlNNdXRhYmxlQXJyYXk8X1dLQXR0YWNobWVudCAqPj4gX2luc2VydGVk
QXR0YWNobWVudHM7CiAgICAgUmV0YWluUHRyPE5TTXV0YWJsZUFycmF5PF9XS0F0dGFjaG1lbnQg
Kj4+IF9yZW1vdmVkQXR0YWNobWVudHM7CkBAIC0zMTcsNiArMzIwLDcgQEAgQGltcGxlbWVudGF0
aW9uIERyYWdBbmREcm9wU2ltdWxhdG9yIHsKICAgICBib29sIF9oYXNTdGFydGVkSW5wdXRTZXNz
aW9uOwogICAgIGRvdWJsZSBfY3VycmVudFByb2dyZXNzOwogICAgIGJvb2wgX2lzRG9uZVdpdGhD
dXJyZW50UnVuOworICAgIGJvb2wgX2lzRG9uZVdhaXRpbmdGb3JEZWxheWVkRHJvcFByZXZpZXdz
OwogICAgIERyYWdBbmREcm9wUGhhc2UgX3BoYXNlOwogCiAgICAgQk9PTCBfc3VwcHJlc3NlZFNl
bGVjdGlvbkNvbW1hbmRzRHVyaW5nRHJvcDsKQEAgLTM3Myw2ICszNzcsNyBAQCAtICh2b2lkKV9y
ZXNldFNpbXVsYXRlZFN0YXRlCiAgICAgX3BoYXNlID0gRHJhZ0FuZERyb3BQaGFzZUJlZ2lubmlu
ZzsKICAgICBfY3VycmVudFByb2dyZXNzID0gMDsKICAgICBfaXNEb25lV2l0aEN1cnJlbnRSdW4g
PSBmYWxzZTsKKyAgICBfaXNEb25lV2FpdGluZ0ZvckRlbGF5ZWREcm9wUHJldmlld3MgPSB0cnVl
OwogICAgIF9vYnNlcnZlZEV2ZW50TmFtZXMgPSBhZG9wdE5TKFtbTlNNdXRhYmxlQXJyYXkgYWxs
b2NdIGluaXRdKTsKICAgICBfaW5zZXJ0ZWRBdHRhY2htZW50cyA9IGFkb3B0TlMoW1tOU011dGFi
bGVBcnJheSBhbGxvY10gaW5pdF0pOwogICAgIF9yZW1vdmVkQXR0YWNobWVudHMgPSBhZG9wdE5T
KFtbTlNNdXRhYmxlQXJyYXkgYWxsb2NdIGluaXRdKTsKQEAgLTM4NCw2ICszODksOCBAQCAtICh2
b2lkKV9yZXNldFNpbXVsYXRlZFN0YXRlCiAgICAgX3JlbWFpbmluZ0FkZGl0aW9uYWxJdGVtUmVx
dWVzdExvY2F0aW9uc0J5UHJvZ3Jlc3MgPSBuaWw7CiAgICAgX3F1ZXVlZEFkZGl0aW9uYWxJdGVt
UmVxdWVzdExvY2F0aW9ucyA9IGFkb3B0TlMoW1tOU011dGFibGVBcnJheSBhbGxvY10gaW5pdF0p
OwogICAgIF9saWZ0UHJldmlld3MgPSBhZG9wdE5TKFtbTlNNdXRhYmxlQXJyYXkgYWxsb2NdIGlu
aXRdKTsKKyAgICBfZHJvcFByZXZpZXdzID0gYWRvcHROUyhbW05TTXV0YWJsZUFycmF5IGFsbG9j
XSBpbml0XSk7CisgICAgX2RlbGF5ZWREcm9wUHJldmlld3MgPSBhZG9wdE5TKFtbTlNNdXRhYmxl
QXJyYXkgYWxsb2NdIGluaXRdKTsKICAgICBfaGFzU3RhcnRlZElucHV0U2Vzc2lvbiA9IGZhbHNl
OwogfQogCkBAIC00NTQsNiArNDYxLDcgQEAgLSAodm9pZClydW5Gcm9tOihDR1BvaW50KXN0YXJ0
TG9jYXRpb24gdG86KENHUG9pbnQpZW5kTG9jYXRpb24gYWRkaXRpb25hbEl0ZW1SZXEKICAgICB9
CiAKICAgICBVdGlsOjpydW4oJl9pc0RvbmVXaXRoQ3VycmVudFJ1bik7CisgICAgVXRpbDo6cnVu
KCZfaXNEb25lV2FpdGluZ0ZvckRlbGF5ZWREcm9wUHJldmlld3MpOwogICAgIFtfd2ViVmlldyBj
bGVhck1lc3NhZ2VIYW5kbGVyczpkcmFnQW5kRHJvcEV2ZW50TmFtZXMoKV07CiAgICAgX2ZpbmFs
U2VsZWN0aW9uUmVjdHMgPSBbX3dlYlZpZXcgc2VsZWN0aW9uUmVjdHNBZnRlclByZXNlbnRhdGlv
blVwZGF0ZV07CiAKQEAgLTQ3MCwxMSArNDc4LDMwIEBAIC0gKHZvaWQpX2NvbmNsdWRlRHJvcEFu
ZFBlcmZvcm1PcGVyYXRpb25JZk5lY2Vzc2FyeQogICAgIF9sYXN0S25vd25EcmFnQ2FyZXRSZWN0
ID0gW193ZWJWaWV3IF9kcmFnQ2FyZXRSZWN0XTsKICAgICBhdXRvIG9wZXJhdGlvbiA9IFtfbGFz
dEtub3duRHJvcFByb3Bvc2FsIG9wZXJhdGlvbl07CiAgICAgaWYgKG9wZXJhdGlvbiAhPSBVSURy
b3BPcGVyYXRpb25DYW5jZWwgJiYgb3BlcmF0aW9uICE9IFVJRHJvcE9wZXJhdGlvbkZvcmJpZGRl
bikgeworICAgICAgICBOU0ludGVnZXIgZHJvcFByZXZpZXdJbmRleCA9IDA7CisgICAgICAgIF9f
YmxvY2sgTlNVSW50ZWdlciBudW1iZXJPZlBlbmRpbmdQcmV2aWV3cyA9IFtfZHJvcFNlc3Npb24g
aXRlbXNdLmNvdW50OworICAgICAgICBfaXNEb25lV2FpdGluZ0ZvckRlbGF5ZWREcm9wUHJldmll
d3MgPSAhbnVtYmVyT2ZQZW5kaW5nUHJldmlld3M7CisgICAgICAgIGZvciAoVUlEcmFnSXRlbSAq
aXRlbSBpbiBbX2Ryb3BTZXNzaW9uIGl0ZW1zXSkgeworICAgICAgICAgICAgYXV0byBkZWZhdWx0
UHJldmlldyA9IGFkb3B0TlMoW1tVSVRhcmdldGVkRHJhZ1ByZXZpZXcgYWxsb2NdIGluaXRXaXRo
Vmlldzpfd2ViVmlldy5nZXQoKV0pOworICAgICAgICAgICAgaWQgPFVJRHJvcEludGVyYWN0aW9u
RGVsZWdhdGVfU3RhZ2luZ18zMTA3NTAwNT4gZGVsZWdhdGUgPSAoaWQgPFVJRHJvcEludGVyYWN0
aW9uRGVsZWdhdGVfU3RhZ2luZ18zMTA3NTAwNT4pW193ZWJWaWV3IGRyb3BJbnRlcmFjdGlvbkRl
bGVnYXRlXTsKKyAgICAgICAgICAgIFVJRHJvcEludGVyYWN0aW9uICppbnRlcmFjdGlvbiA9IFtf
d2ViVmlldyBkcm9wSW50ZXJhY3Rpb25dOworICAgICAgICAgICAgW19kcm9wUHJldmlld3MgYWRk
T2JqZWN0OltkZWxlZ2F0ZSBkcm9wSW50ZXJhY3Rpb246aW50ZXJhY3Rpb24gcHJldmlld0ZvckRy
b3BwaW5nSXRlbTppdGVtIHdpdGhEZWZhdWx0OmRlZmF1bHRQcmV2aWV3LmdldCgpXSA/OiBOU051
bGwubnVsbF07CisgICAgICAgICAgICBbX2RlbGF5ZWREcm9wUHJldmlld3MgYWRkT2JqZWN0Ok5T
TnVsbC5udWxsXTsKKyAgICAgICAgICAgIFtkZWxlZ2F0ZSBfZHJvcEludGVyYWN0aW9uOmludGVy
YWN0aW9uIGRlbGF5ZWRQcmV2aWV3UHJvdmlkZXJGb3JEcm9wcGluZ0l0ZW06aXRlbSBwcmV2aWV3
UHJvdmlkZXI6XihVSVRhcmdldGVkRHJhZ1ByZXZpZXcgKnByZXZpZXcpIHsKKyAgICAgICAgICAg
ICAgICBpZiAocHJldmlldykKKyAgICAgICAgICAgICAgICAgICAgW19kZWxheWVkRHJvcFByZXZp
ZXdzIHNldE9iamVjdDpwcmV2aWV3IGF0SW5kZXhlZFN1YnNjcmlwdDpkcm9wUHJldmlld0luZGV4
XTsKKworICAgICAgICAgICAgICAgIGlmICghLS1udW1iZXJPZlBlbmRpbmdQcmV2aWV3cykKKyAg
ICAgICAgICAgICAgICAgICAgX2lzRG9uZVdhaXRpbmdGb3JEZWxheWVkRHJvcFByZXZpZXdzID0g
dHJ1ZTsKKyAgICAgICAgICAgIH1dOworICAgICAgICAgICAgKytkcm9wUHJldmlld0luZGV4Owor
ICAgICAgICB9CiAgICAgICAgIFtbX3dlYlZpZXcgZHJvcEludGVyYWN0aW9uRGVsZWdhdGVdIGRy
b3BJbnRlcmFjdGlvbjpbX3dlYlZpZXcgZHJvcEludGVyYWN0aW9uXSBwZXJmb3JtRHJvcDpfZHJv
cFNlc3Npb24uZ2V0KCldOwogICAgICAgICBfcGhhc2UgPSBEcmFnQW5kRHJvcFBoYXNlUGVyZm9y
bWluZ0Ryb3A7CiAgICAgfSBlbHNlIHsKLSAgICAgICAgX2lzRG9uZVdpdGhDdXJyZW50UnVuID0g
WUVTOworICAgICAgICBfaXNEb25lV2l0aEN1cnJlbnRSdW4gPSB0cnVlOwogICAgICAgICBfcGhh
c2UgPSBEcmFnQW5kRHJvcFBoYXNlQ2FuY2VsbGVkOworICAgICAgICBbW193ZWJWaWV3IGRyb3BJ
bnRlcmFjdGlvbkRlbGVnYXRlXSBkcm9wSW50ZXJhY3Rpb246W193ZWJWaWV3IGRyb3BJbnRlcmFj
dGlvbl0gY29uY2x1ZGVEcm9wOl9kcm9wU2Vzc2lvbi5nZXQoKV07CiAgICAgfQogCiAgICAgW1tf
d2ViVmlldyBkcm9wSW50ZXJhY3Rpb25EZWxlZ2F0ZV0gZHJvcEludGVyYWN0aW9uOltfd2ViVmll
dyBkcm9wSW50ZXJhY3Rpb25dIHNlc3Npb25EaWRFbmQ6X2Ryb3BTZXNzaW9uLmdldCgpXTsKQEAg
LTY0NCw2ICs2NzEsMTYgQEAgLSAoTlNBcnJheTxVSVRhcmdldGVkRHJhZ1ByZXZpZXcgKj4gKils
aWZ0UHJldmlld3MKICAgICByZXR1cm4gX2xpZnRQcmV2aWV3cy5nZXQoKTsKIH0KIAorLSAoTlNB
cnJheTxVSVRhcmdldGVkRHJhZ1ByZXZpZXcgKj4gKilkcm9wUHJldmlld3MKK3sKKyAgICByZXR1
cm4gX2Ryb3BQcmV2aWV3cy5nZXQoKTsKK30KKworLSAoTlNBcnJheTxVSVRhcmdldGVkRHJhZ1By
ZXZpZXcgKj4gKilkZWxheWVkRHJvcFByZXZpZXdzCit7CisgICAgcmV0dXJuIF9kZWxheWVkRHJv
cFByZXZpZXdzLmdldCgpOworfQorCiAtIChDR1JlY3QpbGFzdEtub3duRHJhZ0NhcmV0UmVjdAog
ewogICAgIHJldHVybiBfbGFzdEtub3duRHJhZ0NhcmV0UmVjdDsKQEAgLTcyOSwxMCArNzY2LDE0
IEBAIC0gKHZvaWQoXikoQk9PTCwgTlNBcnJheSAqKSlkcm9wQ29tcGxldGlvbkJsb2NrCiAtICh2
b2lkKV93ZWJWaWV3OihXS1dlYlZpZXcgKil3ZWJWaWV3IGRhdGFJbnRlcmFjdGlvbk9wZXJhdGlv
bldhc0hhbmRsZWQ6KEJPT0wpaGFuZGxlZCBmb3JTZXNzaW9uOihpZClzZXNzaW9uIGl0ZW1Qcm92
aWRlcnM6KE5TQXJyYXk8TlNJdGVtUHJvdmlkZXIgKj4gKilpdGVtUHJvdmlkZXJzCiB7CiAgICAg
X3N1cHByZXNzZWRTZWxlY3Rpb25Db21tYW5kc0R1cmluZ0Ryb3AgPSBbX3dlYlZpZXcgdGV4dElu
cHV0Q29udGVudFZpZXddLl9zaG91bGRTdXBwcmVzc1NlbGVjdGlvbkNvbW1hbmRzOwotICAgIF9p
c0RvbmVXaXRoQ3VycmVudFJ1biA9IHRydWU7CiAKICAgICBpZiAoc2VsZi5kcm9wQ29tcGxldGlv
bkJsb2NrKQogICAgICAgICBzZWxmLmRyb3BDb21wbGV0aW9uQmxvY2soaGFuZGxlZCwgaXRlbVBy
b3ZpZGVycyk7CisKKyAgICBbX3dlYlZpZXcgX2RvQWZ0ZXJSZWNlaXZpbmdFZGl0RHJhZ1NuYXBz
aG90Rm9yVGVzdGluZzpeeworICAgICAgICBbW193ZWJWaWV3IGRyb3BJbnRlcmFjdGlvbkRlbGVn
YXRlXSBkcm9wSW50ZXJhY3Rpb246W193ZWJWaWV3IGRyb3BJbnRlcmFjdGlvbl0gY29uY2x1ZGVE
cm9wOl9kcm9wU2Vzc2lvbi5nZXQoKV07CisgICAgICAgIF9pc0RvbmVXaXRoQ3VycmVudFJ1biA9
IHRydWU7CisgICAgfV07CiB9CiAKIC0gKFVJRHJvcFByb3Bvc2FsICopX3dlYlZpZXc6KFdLV2Vi
VmlldyAqKXdlYlZpZXcgd2lsbFVwZGF0ZURyb3BQcm9wb3NhbFRvUHJvcG9zYWw6KFVJRHJvcFBy
b3Bvc2FsICopcHJvcG9zYWwgZm9yU2Vzc2lvbjooaWQgPFVJRHJvcFNlc3Npb24+KXNlc3Npb24K
ZGlmZiAtLWdpdCBhL1Rvb2xzL1Rlc3RXZWJLaXRBUEkvaW9zL1VJS2l0U1BJLmggYi9Ub29scy9U
ZXN0V2ViS2l0QVBJL2lvcy9VSUtpdFNQSS5oCmluZGV4IDNmYTY2ODQzN2QyZDYyZGJkNzNiOTg3
YjAxNDdiOTE3YjZlMDNjYjYuLjcwMjczZThlNzY0OTFjYTg3OWRiMGZkMWQyMGVmNTU5MWJiNDBh
ZTEgMTAwNjQ0Ci0tLSBhL1Rvb2xzL1Rlc3RXZWJLaXRBUEkvaW9zL1VJS2l0U1BJLmgKKysrIGIv
VG9vbHMvVGVzdFdlYktpdEFQSS9pb3MvVUlLaXRTUEkuaApAQCAtMTgzLDQgKzE4MywxMiBAQCB0
eXBlZGVmIE5TX09QVElPTlMoTlNJbnRlZ2VyLCBVSVdLRG9jdW1lbnRSZXF1ZXN0RmxhZ3MpIHsK
IC0gKHZvaWQpc2V0TmV4dFByZXZpb3VzSXRlbXNWaXNpYmxlOihCT09MKXZpc2libGU7CiBAZW5k
CiAKKyNpZiBQTEFURk9STShJT1MpCisKK0Bwcm90b2NvbCBVSURyb3BJbnRlcmFjdGlvbkRlbGVn
YXRlX1N0YWdpbmdfMzEwNzUwMDUgPFVJRHJvcEludGVyYWN0aW9uRGVsZWdhdGU+CistICh2b2lk
KV9kcm9wSW50ZXJhY3Rpb246KFVJRHJvcEludGVyYWN0aW9uICopaW50ZXJhY3Rpb24gZGVsYXll
ZFByZXZpZXdQcm92aWRlckZvckRyb3BwaW5nSXRlbTooVUlEcmFnSXRlbSAqKWl0ZW0gcHJldmll
d1Byb3ZpZGVyOih2b2lkKF4pKFVJVGFyZ2V0ZWREcmFnUHJldmlldyAqcHJldmlldykpcHJldmll
d1Byb3ZpZGVyOworQGVuZAorCisjZW5kaWYgLy8gUExBVEZPUk0oSU9TKQorCiAjZW5kaWYgLy8g
UExBVEZPUk0oSU9TX0ZBTUlMWSkK
</data>

          </attachment>
      

    </bug>

</bugzilla>