<?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>109083</bug_id>
          
          <creation_ts>2013-02-06 12:05:33 -0800</creation_ts>
          <short_desc>[EFL][WK2] Add C API for popup menu and popup item</short_desc>
          <delta_ts>2013-02-18 16:42:31 -0800</delta_ts>
          <reporter_accessible>1</reporter_accessible>
          <cclist_accessible>1</cclist_accessible>
          <classification_id>1</classification_id>
          <classification>Unclassified</classification>
          <product>WebKit</product>
          <component>WebKit EFL</component>
          <version>528+ (Nightly build)</version>
          <rep_platform>Unspecified</rep_platform>
          <op_sys>Unspecified</op_sys>
          <bug_status>RESOLVED</bug_status>
          <resolution>FIXED</resolution>
          
          
          <bug_file_loc></bug_file_loc>
          <status_whiteboard></status_whiteboard>
          <keywords></keywords>
          <priority>P2</priority>
          <bug_severity>Normal</bug_severity>
          <target_milestone>---</target_milestone>
          
          <blocked>108798</blocked>
          <everconfirmed>1</everconfirmed>
          <reporter name="Chris Dumez">cdumez</reporter>
          <assigned_to name="Chris Dumez">cdumez</assigned_to>
          <cc>andersca</cc>
    
    <cc>benjamin</cc>
    
    <cc>cmarcelo</cc>
    
    <cc>gyuyoung.kim</cc>
    
    <cc>hausmann</cc>
    
    <cc>kenneth</cc>
    
    <cc>laszlo.gombos</cc>
    
    <cc>lucas.de.marchi</cc>
    
    <cc>mikhail.pozdnyakov</cc>
    
    <cc>pierre.rossi</cc>
    
    <cc>rakuco</cc>
    
    <cc>sam</cc>
    
    <cc>webkit.review.bot</cc>
          

      

      

      

          <comment_sort_order>oldest_to_newest</comment_sort_order>  
          <long_desc isprivate="0" >
    <commentid>826621</commentid>
    <comment_count>0</comment_count>
    <who name="Chris Dumez">cdumez</who>
    <bug_when>2013-02-06 12:05:33 -0800</bug_when>
    <thetext>EFL WK2 delegates the display of the popup menu to the browser. As a consequence, we currently have a strong dependency between our Ewk API implementation (EwkPopupMenu, EwkPopupMenuItem, EwkView) and internal WK2 C++ classes (WebPopupMenuProxyEfl, WebPopupMenu, WebPopupItem). To break this dependency, we should add a C API for the popup menu and the popup item.</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>826622</commentid>
    <comment_count>1</comment_count>
      <attachid>186890</attachid>
    <who name="Chris Dumez">cdumez</who>
    <bug_when>2013-02-06 12:10:01 -0800</bug_when>
    <thetext>Created attachment 186890
WIP Patch</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>826631</commentid>
    <comment_count>2</comment_count>
    <who name="WebKit Review Bot">webkit.review.bot</who>
    <bug_when>2013-02-06 12:14:10 -0800</bug_when>
    <thetext>Attachment 186890 did not pass style-queue:

Failed to run &quot;[&apos;Tools/Scripts/check-webkit-style&apos;, &apos;--diff-files&apos;, u&apos;Source/WebKit2/PlatformEfl.cmake&apos;, u&apos;Source/WebKit2/Shared/API/c/efl/WKBaseEfl.h&apos;, u&apos;Source/WebKit2/Shared/APIObject.h&apos;, u&apos;Source/WebKit2/UIProcess/API/C/efl/WKAPICastEfl.h&apos;, u&apos;Source/WebKit2/UIProcess/API/C/efl/WKPopupItem.cpp&apos;, u&apos;Source/WebKit2/UIProcess/API/C/efl/WKPopupItem.h&apos;, u&apos;Source/WebKit2/UIProcess/API/C/efl/WKPopupMenu.cpp&apos;, u&apos;Source/WebKit2/UIProcess/API/C/efl/WKPopupMenu.h&apos;, u&apos;Source/WebKit2/UIProcess/efl/PageClientBase.cpp&apos;, u&apos;Source/WebKit2/UIProcess/efl/WebPopupItemEfl.cpp&apos;, u&apos;Source/WebKit2/UIProcess/efl/WebPopupItemEfl.h&apos;, u&apos;Source/WebKit2/UIProcess/efl/WebPopupMenuClient.cpp&apos;, u&apos;Source/WebKit2/UIProcess/efl/WebPopupMenuClient.h&apos;, u&apos;Source/WebKit2/UIProcess/efl/WebPopupMenuProxyEfl.cpp&apos;, u&apos;Source/WebKit2/UIProcess/efl/WebPopupMenuProxyEfl.h&apos;]&quot; exit_code: 1
Source/WebKit2/UIProcess/API/C/efl/WKPopupItem.h:36:  enum members should use InterCaps with an initial capital letter.  [readability/enum_casing] [4]
Source/WebKit2/UIProcess/API/C/efl/WKPopupItem.h:37:  enum members should use InterCaps with an initial capital letter.  [readability/enum_casing] [4]
Source/WebKit2/UIProcess/API/C/efl/WKPopupItem.h:42:  enum members should use InterCaps with an initial capital letter.  [readability/enum_casing] [4]
Source/WebKit2/UIProcess/API/C/efl/WKPopupItem.h:43:  enum members should use InterCaps with an initial capital letter.  [readability/enum_casing] [4]
Source/WebKit2/UIProcess/API/C/efl/WKPopupMenu.h:48:  enum members should use InterCaps with an initial capital letter.  [readability/enum_casing] [4]
Total errors found: 5 in 15 files


If any of these errors are false positives, please file a bug against check-webkit-style.</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>826726</commentid>
    <comment_count>3</comment_count>
      <attachid>186890</attachid>
    <who name="Kenneth Rohde Christiansen">kenneth</who>
    <bug_when>2013-02-06 13:46:24 -0800</bug_when>
    <thetext>Comment on attachment 186890
WIP Patch

Should probably have an API test. Would be nice to see how this would work for multi selects</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>827509</commentid>
    <comment_count>4</comment_count>
      <attachid>187110</attachid>
    <who name="Chris Dumez">cdumez</who>
    <bug_when>2013-02-07 07:43:55 -0800</bug_when>
    <thetext>Created attachment 187110
Patch</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>827511</commentid>
    <comment_count>5</comment_count>
    <who name="WebKit Review Bot">webkit.review.bot</who>
    <bug_when>2013-02-07 07:47:58 -0800</bug_when>
    <thetext>Attachment 187110 did not pass style-queue:

Failed to run &quot;[&apos;Tools/Scripts/check-webkit-style&apos;, &apos;--diff-files&apos;, u&apos;Source/WebKit2/ChangeLog&apos;, u&apos;Source/WebKit2/PlatformEfl.cmake&apos;, u&apos;Source/WebKit2/Shared/API/c/efl/WKBaseEfl.h&apos;, u&apos;Source/WebKit2/Shared/APIObject.h&apos;, u&apos;Source/WebKit2/UIProcess/API/C/efl/WKAPICastEfl.h&apos;, u&apos;Source/WebKit2/UIProcess/API/C/efl/WKPageEfl.cpp&apos;, u&apos;Source/WebKit2/UIProcess/API/C/efl/WKPageEfl.h&apos;, u&apos;Source/WebKit2/UIProcess/API/C/efl/WKPopupItem.cpp&apos;, u&apos;Source/WebKit2/UIProcess/API/C/efl/WKPopupItem.h&apos;, u&apos;Source/WebKit2/UIProcess/API/C/efl/WKPopupMenuListener.cpp&apos;, u&apos;Source/WebKit2/UIProcess/API/C/efl/WKPopupMenuListener.h&apos;, u&apos;Source/WebKit2/UIProcess/API/efl/EwkView.cpp&apos;, u&apos;Source/WebKit2/UIProcess/API/efl/EwkView.h&apos;, u&apos;Source/WebKit2/UIProcess/API/efl/ewk_popup_menu.cpp&apos;, u&apos;Source/WebKit2/UIProcess/API/efl/ewk_popup_menu_private.h&apos;, u&apos;Source/WebKit2/UIProcess/WebPageProxy.cpp&apos;, u&apos;Source/WebKit2/UIProcess/WebPageProxy.h&apos;, u&apos;Source/WebKit2/UIProcess/WebPopupMenuProxy.h&apos;, u&apos;Source/WebKit2/UIProcess/efl/PageClientBase.cpp&apos;, u&apos;Source/WebKit2/UIProcess/efl/PageUIClientEfl.cpp&apos;, u&apos;Source/WebKit2/UIProcess/efl/PageUIClientEfl.h&apos;, u&apos;Source/WebKit2/UIProcess/efl/WebPageProxyEfl.cpp&apos;, u&apos;Source/WebKit2/UIProcess/efl/WebPopupItemEfl.cpp&apos;, u&apos;Source/WebKit2/UIProcess/efl/WebPopupItemEfl.h&apos;, u&apos;Source/WebKit2/UIProcess/efl/WebPopupMenuListenerEfl.cpp&apos;, u&apos;Source/WebKit2/UIProcess/efl/WebPopupMenuListenerEfl.h&apos;, u&apos;Source/WebKit2/UIProcess/efl/WebPopupMenuProxyEfl.cpp&apos;, u&apos;Source/WebKit2/UIProcess/efl/WebPopupMenuProxyEfl.h&apos;, u&apos;Source/WebKit2/UIProcess/efl/WebUIPopupMenuClient.cpp&apos;, u&apos;Source/WebKit2/UIProcess/efl/WebUIPopupMenuClient.h&apos;]&quot; exit_code: 1
Source/WebKit2/UIProcess/API/C/efl/WKPageEfl.h:48:  enum members should use InterCaps with an initial capital letter.  [readability/enum_casing] [4]
Source/WebKit2/UIProcess/API/C/efl/WKPopupItem.h:36:  enum members should use InterCaps with an initial capital letter.  [readability/enum_casing] [4]
Source/WebKit2/UIProcess/API/C/efl/WKPopupItem.h:37:  enum members should use InterCaps with an initial capital letter.  [readability/enum_casing] [4]
Source/WebKit2/UIProcess/API/C/efl/WKPopupItem.h:42:  enum members should use InterCaps with an initial capital letter.  [readability/enum_casing] [4]
Source/WebKit2/UIProcess/API/C/efl/WKPopupItem.h:43:  enum members should use InterCaps with an initial capital letter.  [readability/enum_casing] [4]
Total errors found: 5 in 28 files


If any of these errors are false positives, please file a bug against check-webkit-style.</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>835678</commentid>
    <comment_count>6</comment_count>
      <attachid>187110</attachid>
    <who name="WebKit Review Bot">webkit.review.bot</who>
    <bug_when>2013-02-18 12:13:18 -0800</bug_when>
    <thetext>Comment on attachment 187110
Patch

Rejecting attachment 187110 from commit-queue.

Failed to run &quot;[&apos;/mnt/git/webkit-commit-queue/Tools/Scripts/webkit-patch&apos;, &apos;--status-host=queues.webkit.org&apos;, &apos;--bot-id=gce-cq-03&apos;, &apos;apply-attachment&apos;, &apos;--no-update&apos;, &apos;--non-interactive&apos;, 187110, &apos;--port=chromium-xvfb&apos;]&quot; exit_code: 2 cwd: /mnt/git/webkit-commit-queue

Last 500 characters of output:
pMenuProxyEfl.cpp
rm &apos;Source/WebKit2/UIProcess/efl/WebPopupMenuProxyEfl.cpp&apos;
patching file Source/WebKit2/UIProcess/efl/WebPopupMenuProxyEfl.h
rm &apos;Source/WebKit2/UIProcess/efl/WebPopupMenuProxyEfl.h&apos;
patching file Source/WebKit2/UIProcess/efl/WebUIPopupMenuClient.cpp
patching file Source/WebKit2/UIProcess/efl/WebUIPopupMenuClient.h

Failed to run &quot;[u&apos;/mnt/git/webkit-commit-queue/Tools/Scripts/svn-apply&apos;, &apos;--force&apos;, &apos;--reviewer&apos;, &apos;Anders Carlsson&apos;]&quot; exit_code: 1 cwd: /mnt/git/webkit-commit-queue

Full output: http://queues.webkit.org/results/16611352</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>835685</commentid>
    <comment_count>7</comment_count>
    <who name="Simon Hausmann">hausmann</who>
    <bug_when>2013-02-18 12:20:47 -0800</bug_when>
    <thetext>It would&apos;ve been nice if this wasn&apos;t all EFL&apos;ed - naturally the other ports need the same functionality</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>835695</commentid>
    <comment_count>8</comment_count>
    <who name="Chris Dumez">cdumez</who>
    <bug_when>2013-02-18 12:45:22 -0800</bug_when>
    <thetext>(In reply to comment #7)
&gt; It would&apos;ve been nice if this wasn&apos;t all EFL&apos;ed - naturally the other ports need the same functionality

I see. I wasn&apos;t sure other ports needed this. It would be nice to share code with other ports as much as possible. Do you think it would be OK to land this and then later move / rename files as needed when Qt port needs it?

The thing is that some things are port specific. For example, the WKPopupMenuListener API is likely going to be different on Qt port. However, things like WKPopupItem, WebPopupItemEfl and likely WebUIPopupMenuClient can certainly be shared.</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>835730</commentid>
    <comment_count>9</comment_count>
      <attachid>188939</attachid>
    <who name="Chris Dumez">cdumez</who>
    <bug_when>2013-02-18 13:44:28 -0800</bug_when>
    <thetext>Created attachment 188939
Patch for landing</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>835828</commentid>
    <comment_count>10</comment_count>
      <attachid>188939</attachid>
    <who name="WebKit Review Bot">webkit.review.bot</who>
    <bug_when>2013-02-18 16:42:26 -0800</bug_when>
    <thetext>Comment on attachment 188939
Patch for landing

Clearing flags on attachment: 188939

Committed r143275: &lt;http://trac.webkit.org/changeset/143275&gt;</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>835829</commentid>
    <comment_count>11</comment_count>
    <who name="WebKit Review Bot">webkit.review.bot</who>
    <bug_when>2013-02-18 16:42:31 -0800</bug_when>
    <thetext>All reviewed patches have been landed.  Closing bug.</thetext>
  </long_desc>
      
          <attachment
              isobsolete="1"
              ispatch="1"
              isprivate="0"
          >
            <attachid>186890</attachid>
            <date>2013-02-06 12:10:01 -0800</date>
            <delta_ts>2013-02-07 07:43:55 -0800</delta_ts>
            <desc>WIP Patch</desc>
            <filename>109083_popup_menu_capi.patch</filename>
            <type>text/plain</type>
            <size>27386</size>
            <attacher name="Chris Dumez">cdumez</attacher>
            
              <data encoding="base64">ZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJLaXQyL1BsYXRmb3JtRWZsLmNtYWtlIGIvU291cmNlL1dl
YktpdDIvUGxhdGZvcm1FZmwuY21ha2UKaW5kZXggZjZjZTE3Ni4uOWMwMDg1MSAxMDA2NDQKLS0t
IGEvU291cmNlL1dlYktpdDIvUGxhdGZvcm1FZmwuY21ha2UKKysrIGIvU291cmNlL1dlYktpdDIv
UGxhdGZvcm1FZmwuY21ha2UKQEAgLTM3LDYgKzM3LDggQEAgbGlzdChBUFBFTkQgV2ViS2l0Ml9T
T1VSQ0VTCiAKICAgICBVSVByb2Nlc3MvQVBJL0MvY2Fpcm8vV0tJY29uRGF0YWJhc2VDYWlyby5j
cHAKIAorICAgIFVJUHJvY2Vzcy9BUEkvQy9lZmwvV0tQb3B1cEl0ZW0uY3BwCisgICAgVUlQcm9j
ZXNzL0FQSS9DL2VmbC9XS1BvcHVwTWVudS5jcHAKICAgICBVSVByb2Nlc3MvQVBJL0MvZWZsL1dL
Vmlldy5jcHAKIAogICAgIFVJUHJvY2Vzcy9BUEkvY3BwL2VmbC9XS0VpbmFTaGFyZWRTdHJpbmcu
Y3BwCkBAIC0xMDQsNiArMTA2LDggQEAgbGlzdChBUFBFTkQgV2ViS2l0Ml9TT1VSQ0VTCiAgICAg
VUlQcm9jZXNzL2VmbC9XZWJGdWxsU2NyZWVuTWFuYWdlclByb3h5RWZsLmNwcAogICAgIFVJUHJv
Y2Vzcy9lZmwvV2ViSW5zcGVjdG9yUHJveHlFZmwuY3BwCiAgICAgVUlQcm9jZXNzL2VmbC9XZWJQ
YWdlUHJveHlFZmwuY3BwCisgICAgVUlQcm9jZXNzL2VmbC9XZWJQb3B1cEl0ZW1FZmwuY3BwCisg
ICAgVUlQcm9jZXNzL2VmbC9XZWJQb3B1cE1lbnVDbGllbnQuY3BwCiAgICAgVUlQcm9jZXNzL2Vm
bC9XZWJQb3B1cE1lbnVQcm94eUVmbC5jcHAKICAgICBVSVByb2Nlc3MvZWZsL1dlYlByZWZlcmVu
Y2VzRWZsLmNwcAogICAgIFVJUHJvY2Vzcy9lZmwvV2ViUHJvY2Vzc1Byb3h5RWZsLmNwcApkaWZm
IC0tZ2l0IGEvU291cmNlL1dlYktpdDIvU2hhcmVkL0FQSS9jL2VmbC9XS0Jhc2VFZmwuaCBiL1Nv
dXJjZS9XZWJLaXQyL1NoYXJlZC9BUEkvYy9lZmwvV0tCYXNlRWZsLmgKaW5kZXggNjE4NGM4MS4u
MWMyMWJmZSAxMDA2NDQKLS0tIGEvU291cmNlL1dlYktpdDIvU2hhcmVkL0FQSS9jL2VmbC9XS0Jh
c2VFZmwuaAorKysgYi9Tb3VyY2UvV2ViS2l0Mi9TaGFyZWQvQVBJL2MvZWZsL1dLQmFzZUVmbC5o
CkBAIC0yNSw1ICsyNSw3IEBACiAjZW5kaWYKIAogdHlwZWRlZiBjb25zdCBzdHJ1Y3QgT3BhcXVl
V0tWaWV3KiBXS1ZpZXdSZWY7Cit0eXBlZGVmIGNvbnN0IHN0cnVjdCBPcGFxdWVXS1BvcHVwSXRl
bSogV0tQb3B1cEl0ZW1SZWY7Cit0eXBlZGVmIGNvbnN0IHN0cnVjdCBPcGFxdWVXS1BvcHVwTWVu
dSogV0tQb3B1cE1lbnVSZWY7CiAKICNlbmRpZiAvKiBXS0Jhc2VFZmxfaCAqLwpkaWZmIC0tZ2l0
IGEvU291cmNlL1dlYktpdDIvU2hhcmVkL0FQSU9iamVjdC5oIGIvU291cmNlL1dlYktpdDIvU2hh
cmVkL0FQSU9iamVjdC5oCmluZGV4IDg1OWZiOGUuLjVlY2ViNTYyIDEwMDY0NAotLS0gYS9Tb3Vy
Y2UvV2ViS2l0Mi9TaGFyZWQvQVBJT2JqZWN0LmgKKysrIGIvU291cmNlL1dlYktpdDIvU2hhcmVk
L0FQSU9iamVjdC5oCkBAIC0xMzMsNiArMTMzLDkgQEAgcHVibGljOgogI2lmIFVTRShTT1VQKQog
ICAgICAgICBUeXBlU291cFJlcXVlc3RNYW5hZ2VyLAogI2VuZGlmCisjaWYgUExBVEZPUk0oRUZM
KQorICAgICAgICBUeXBlUG9wdXBNZW51SXRlbSwKKyNlbmRpZgogICAgIH07CiAKICAgICB2aXJ0
dWFsIH5BUElPYmplY3QoKQpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYktpdDIvVUlQcm9jZXNzL0FQ
SS9DL2VmbC9XS0FQSUNhc3RFZmwuaCBiL1NvdXJjZS9XZWJLaXQyL1VJUHJvY2Vzcy9BUEkvQy9l
ZmwvV0tBUElDYXN0RWZsLmgKaW5kZXggMTg4OWZjNC4uOTZkYjc3NyAxMDA2NDQKLS0tIGEvU291
cmNlL1dlYktpdDIvVUlQcm9jZXNzL0FQSS9DL2VmbC9XS0FQSUNhc3RFZmwuaAorKysgYi9Tb3Vy
Y2UvV2ViS2l0Mi9VSVByb2Nlc3MvQVBJL0MvZWZsL1dLQVBJQ2FzdEVmbC5oCkBAIC0yNCwxMSAr
MjQsMzUgQEAKICNlcnJvciAiUGxlYXNlICNpbmNsdWRlIFwiV0tBUElDYXN0LmhcIiBpbnN0ZWFk
IG9mIHRoaXMgZmlsZSBkaXJlY3RseS4iCiAjZW5kaWYKIAorI2luY2x1ZGUgPFdlYkNvcmUvVGV4
dERpcmVjdGlvbi5oPgorI2luY2x1ZGUgPFdlYktpdDIvV0tQb3B1cEl0ZW0uaD4KKwogbmFtZXNw
YWNlIFdlYktpdCB7CiAKIGNsYXNzIFdlYlZpZXc7CitjbGFzcyBXZWJQb3B1cEl0ZW1FZmw7Citj
bGFzcyBXZWJQb3B1cE1lbnVQcm94eUVmbDsKIAogV0tfQUREX0FQSV9NQVBQSU5HKFdLVmlld1Jl
ZiwgV2ViVmlldykKK1dLX0FERF9BUElfTUFQUElORyhXS1BvcHVwSXRlbVJlZiwgV2ViUG9wdXBJ
dGVtRWZsKQorV0tfQUREX0FQSV9NQVBQSU5HKFdLUG9wdXBNZW51UmVmLCBXZWJQb3B1cE1lbnVQ
cm94eUVmbCkKKworLy8gRW51bSBjb252ZXJzaW9ucy4KK2lubGluZSBXS1BvcHVwSXRlbVRleHRE
aXJlY3Rpb24gdG9BUEkoV2ViQ29yZTo6VGV4dERpcmVjdGlvbiBkaXJlY3Rpb24pCit7CisgICAg
V0tQb3B1cEl0ZW1UZXh0RGlyZWN0aW9uIHdrRGlyZWN0aW9uID0ga1dLUG9wdXBJdGVtVGV4dERp
cmVjdGlvbkxUUjsKKworICAgIHN3aXRjaCAoZGlyZWN0aW9uKSB7CisgICAgY2FzZSBXZWJDb3Jl
OjpSVEw6CisgICAgICAgIHdrRGlyZWN0aW9uID0ga1dLUG9wdXBJdGVtVGV4dERpcmVjdGlvblJU
TDsKKyAgICAgICAgYnJlYWs7CisgICAgY2FzZSBXZWJDb3JlOjpMVFI6CisgICAgICAgIHdrRGly
ZWN0aW9uID0ga1dLUG9wdXBJdGVtVGV4dERpcmVjdGlvbkxUUjsKKyAgICAgICAgYnJlYWs7Cisg
ICAgfQorCisgICAgcmV0dXJuIHdrRGlyZWN0aW9uOworfQogCiB9CiAKZGlmZiAtLWdpdCBhL1Nv
dXJjZS9XZWJLaXQyL1VJUHJvY2Vzcy9BUEkvQy9lZmwvV0tQb3B1cEl0ZW0uY3BwIGIvU291cmNl
L1dlYktpdDIvVUlQcm9jZXNzL0FQSS9DL2VmbC9XS1BvcHVwSXRlbS5jcHAKbmV3IGZpbGUgbW9k
ZSAxMDA2NDQKaW5kZXggMDAwMDAwMC4uN2IwZWE0NQotLS0gL2Rldi9udWxsCisrKyBiL1NvdXJj
ZS9XZWJLaXQyL1VJUHJvY2Vzcy9BUEkvQy9lZmwvV0tQb3B1cEl0ZW0uY3BwCkBAIC0wLDAgKzEs
OTQgQEAKKy8qCisgKiBDb3B5cmlnaHQgKEMpIDIwMTMgU2Ftc3VuZyBFbGVjdHJvbmljcy4gQWxs
IHJpZ2h0cyByZXNlcnZlZC4KKyAqCisgKiBSZWRpc3RyaWJ1dGlvbiBhbmQgdXNlIGluIHNvdXJj
ZSBhbmQgYmluYXJ5IGZvcm1zLCB3aXRoIG9yIHdpdGhvdXQKKyAqIG1vZGlmaWNhdGlvbiwgYXJl
IHBlcm1pdHRlZCBwcm92aWRlZCB0aGF0IHRoZSBmb2xsb3dpbmcgY29uZGl0aW9ucworICogYXJl
IG1ldDoKKyAqIDEuIFJlZGlzdHJpYnV0aW9ucyBvZiBzb3VyY2UgY29kZSBtdXN0IHJldGFpbiB0
aGUgYWJvdmUgY29weXJpZ2h0CisgKiAgICBub3RpY2UsIHRoaXMgbGlzdCBvZiBjb25kaXRpb25z
IGFuZCB0aGUgZm9sbG93aW5nIGRpc2NsYWltZXIuCisgKiAyLiBSZWRpc3RyaWJ1dGlvbnMgaW4g
YmluYXJ5IGZvcm0gbXVzdCByZXByb2R1Y2UgdGhlIGFib3ZlIGNvcHlyaWdodAorICogICAgbm90
aWNlLCB0aGlzIGxpc3Qgb2YgY29uZGl0aW9ucyBhbmQgdGhlIGZvbGxvd2luZyBkaXNjbGFpbWVy
IGluIHRoZQorICogICAgZG9jdW1lbnRhdGlvbiBhbmQvb3Igb3RoZXIgbWF0ZXJpYWxzIHByb3Zp
ZGVkIHdpdGggdGhlIGRpc3RyaWJ1dGlvbi4KKyAqCisgKiBUSElTIFNPRlRXQVJFIElTIFBST1ZJ
REVEIEJZIEFQUExFIElOQy4gQU5EIElUUyBDT05UUklCVVRPUlMgYGBBUyBJUycnCisgKiBBTkQg
QU5ZIEVYUFJFU1MgT1IgSU1QTElFRCBXQVJSQU5USUVTLCBJTkNMVURJTkcsIEJVVCBOT1QgTElN
SVRFRCBUTywKKyAqIFRIRSBJTVBMSUVEIFdBUlJBTlRJRVMgT0YgTUVSQ0hBTlRBd0JJTElUWSBB
TkQgRklUTkVTUyBGT1IgQSBQQVJUSUNVTEFSCisgKiBQVVJQT1NFIEFSRSBESVNDTEFJTUVELiBJ
TiBOTyBFVkVOVCBTSEFMTCBBUFBMRSBJTkMuIE9SIElUUyBDT05UUklCVVRPUlMKKyAqIEJFIExJ
QUJMRSBGT1IgQU5ZIERJUkVDVCwgSU5ESVJFQ1QsIElOQ0lERU5UQUwsIFNQRUNJQUwsIEVYRU1Q
TEFSWSwgT1IKKyAqIENPTlNFUVVFTlRJQUwgREFNQUdFUyAoSU5DTFVESU5HLCBCVVQgTk9UIExJ
TUlURUQgVE8sIFBST0NVUkVNRU5UIE9GCisgKiBTVUJTVElUVVRFIEdPT0RTIE9SIFNFUlZJQ0VT
OyBMT1NTIE9GIFVTRSwgREFUQSwgT1IgUFJPRklUUzsgT1IgQlVTSU5FU1MKKyAqIElOVEVSUlVQ
VElPTikgSE9XRVZFUiBDQVVTRUQgQU5EIE9OIEFOWSBUSEVPUlkgT0YgTElBQklMSVRZLCBXSEVU
SEVSIElOCisgKiBDT05UUkFDVCwgU1RSSUNUIExJQUJJTElUWSwgT1IgVE9SVCAoSU5DTFVESU5H
IE5FR0xJR0VOQ0UgT1IgT1RIRVJXSVNFKQorICogQVJJU0lORyBJTiBBTlkgV0FZIE9VVCBPRiBU
SEUgVVNFIE9GIFRISVMgU09GVFdBUkUsIEVWRU4gSUYgQURWSVNFRCBPRgorICogVEhFIFBPU1NJ
QklMSVRZIE9GIFNVQ0ggREFNQUdFLgorICovCisKKyNpbmNsdWRlICJjb25maWcuaCIKKyNpbmNs
dWRlICJXS1BvcHVwSXRlbS5oIgorCisjaW5jbHVkZSAiV0tBUElDYXN0LmgiCisjaW5jbHVkZSAi
V2ViUG9wdXBJdGVtRWZsLmgiCisKK3VzaW5nIG5hbWVzcGFjZSBXZWJLaXQ7Cit1c2luZyBuYW1l
c3BhY2UgV2ViQ29yZTsKKworV0tQb3B1cEl0ZW1UeXBlIFdLUG9wdXBJdGVtR2V0VHlwZShXS1Bv
cHVwSXRlbVJlZiBpdGVtUmVmKQoreworICAgIHN3aXRjaCAodG9JbXBsKGl0ZW1SZWYpLT5pdGVt
VHlwZSgpKSB7CisgICAgY2FzZSBXZWJQb3B1cEl0ZW06OlNlcGFyYXRvcjoKKyAgICAgICAgcmV0
dXJuIGtXS1BvcHVwSXRlbVR5cGVTZXBhcmF0b3I7CisgICAgY2FzZSBXZWJQb3B1cEl0ZW06Okl0
ZW06CisgICAgICAgIHJldHVybiBrV0tQb3B1cEl0ZW1UeXBlSXRlbTsKKyAgICBkZWZhdWx0Ogor
ICAgICAgICBBU1NFUlRfTk9UX1JFQUNIRUQoKTsKKyAgICAgICAgcmV0dXJuIGtXS1BvcHVwSXRl
bVR5cGVJdGVtOworICAgIH0KK30KKworV0tQb3B1cEl0ZW1UZXh0RGlyZWN0aW9uIFdLUG9wdXBJ
dGVtR2V0VGV4dERpcmVjdGlvbihXS1BvcHVwSXRlbVJlZiBpdGVtUmVmKQoreworICAgIHN3aXRj
aCAodG9JbXBsKGl0ZW1SZWYpLT50ZXh0RGlyZWN0aW9uKCkpIHsKKyAgICBjYXNlIFJUTDoKKyAg
ICAgICAgcmV0dXJuIGtXS1BvcHVwSXRlbVRleHREaXJlY3Rpb25SVEw7CisgICAgY2FzZSBMVFI6
CisgICAgICAgIHJldHVybiBrV0tQb3B1cEl0ZW1UZXh0RGlyZWN0aW9uTFRSOworICAgIGRlZmF1
bHQ6CisgICAgICAgIEFTU0VSVF9OT1RfUkVBQ0hFRCgpOworICAgICAgICByZXR1cm4ga1dLUG9w
dXBJdGVtVGV4dERpcmVjdGlvbkxUUjsKKyAgICB9Cit9CisKK2Jvb2wgV0tQb3B1cEl0ZW1IYXNU
ZXh0RGlyZWN0aW9uT3ZlcnJpZGUoV0tQb3B1cEl0ZW1SZWYgaXRlbVJlZikKK3sKKyAgICByZXR1
cm4gdG9JbXBsKGl0ZW1SZWYpLT5oYXNUZXh0RGlyZWN0aW9uT3ZlcnJpZGUoKTsKK30KKworV0tT
dHJpbmdSZWYgV0tQb3B1cEl0ZW1Db3B5VGV4dChXS1BvcHVwSXRlbVJlZiBpdGVtUmVmKQorewor
ICAgIHJldHVybiB0b0NvcGllZEFQSSh0b0ltcGwoaXRlbVJlZiktPnRleHQoKSk7Cit9CisKK1dL
U3RyaW5nUmVmIFdLUG9wdXBJdGVtQ29weVRvb2xUaXBUZXh0KFdLUG9wdXBJdGVtUmVmIGl0ZW1S
ZWYpCit7CisgICAgcmV0dXJuIHRvQ29waWVkQVBJKHRvSW1wbChpdGVtUmVmKS0+dG9vbFRpcFRl
eHQoKSk7Cit9CisKK1dLU3RyaW5nUmVmIFdLUG9wdXBJdGVtQ29weUFjY2Vzc2liaWxpdHlUZXh0
KFdLUG9wdXBJdGVtUmVmIGl0ZW1SZWYpCit7CisgICAgcmV0dXJuIHRvQ29waWVkQVBJKHRvSW1w
bChpdGVtUmVmKS0+YWNjZXNzaWJpbGl0eVRleHQoKSk7Cit9CisKK2Jvb2wgV0tQb3B1cEl0ZW1J
c0VuYWJsZWQoV0tQb3B1cEl0ZW1SZWYgaXRlbVJlZikKK3sKKyAgICByZXR1cm4gdG9JbXBsKGl0
ZW1SZWYpLT5pc0VuYWJsZWQoKTsKK30KKworYm9vbCBXS1BvcHVwSXRlbUlzTGFiZWwoV0tQb3B1
cEl0ZW1SZWYgaXRlbVJlZikKK3sKKyAgICByZXR1cm4gdG9JbXBsKGl0ZW1SZWYpLT5pc0xhYmVs
KCk7Cit9CisKK2Jvb2wgV0tQb3B1cEl0ZW1Jc1NlbGVjdGVkKFdLUG9wdXBJdGVtUmVmIGl0ZW1S
ZWYpCit7CisgICAgcmV0dXJuIHRvSW1wbChpdGVtUmVmKS0+aXNTZWxlY3RlZCgpOworfQpkaWZm
IC0tZ2l0IGEvU291cmNlL1dlYktpdDIvVUlQcm9jZXNzL0FQSS9DL2VmbC9XS1BvcHVwSXRlbS5o
IGIvU291cmNlL1dlYktpdDIvVUlQcm9jZXNzL0FQSS9DL2VmbC9XS1BvcHVwSXRlbS5oCm5ldyBm
aWxlIG1vZGUgMTAwNjQ0CmluZGV4IDAwMDAwMDAuLmI0MThlZDUKLS0tIC9kZXYvbnVsbAorKysg
Yi9Tb3VyY2UvV2ViS2l0Mi9VSVByb2Nlc3MvQVBJL0MvZWZsL1dLUG9wdXBJdGVtLmgKQEAgLTAs
MCArMSw2NCBAQAorLyoKKyAqIENvcHlyaWdodCAoQykgMjAxMyBTYW1zdW5nIEVsZWN0cm9uaWNz
LiBBbGwgcmlnaHRzIHJlc2VydmVkLgorICoKKyAqIFJlZGlzdHJpYnV0aW9uIGFuZCB1c2UgaW4g
c291cmNlIGFuZCBiaW5hcnkgZm9ybXMsIHdpdGggb3Igd2l0aG91dAorICogbW9kaWZpY2F0aW9u
LCBhcmUgcGVybWl0dGVkIHByb3ZpZGVkIHRoYXQgdGhlIGZvbGxvd2luZyBjb25kaXRpb25zCisg
KiBhcmUgbWV0OgorICogMS4gUmVkaXN0cmlidXRpb25zIG9mIHNvdXJjZSBjb2RlIG11c3QgcmV0
YWluIHRoZSBhYm92ZSBjb3B5cmlnaHQKKyAqICAgIG5vdGljZSwgdGhpcyBsaXN0IG9mIGNvbmRp
dGlvbnMgYW5kIHRoZSBmb2xsb3dpbmcgZGlzY2xhaW1lci4KKyAqIDIuIFJlZGlzdHJpYnV0aW9u
cyBpbiBiaW5hcnkgZm9ybSBtdXN0IHJlcHJvZHVjZSB0aGUgYWJvdmUgY29weXJpZ2h0CisgKiAg
ICBub3RpY2UsIHRoaXMgbGlzdCBvZiBjb25kaXRpb25zIGFuZCB0aGUgZm9sbG93aW5nIGRpc2Ns
YWltZXIgaW4gdGhlCisgKiAgICBkb2N1bWVudGF0aW9uIGFuZC9vciBvdGhlciBtYXRlcmlhbHMg
cHJvdmlkZWQgd2l0aCB0aGUgZGlzdHJpYnV0aW9uLgorICoKKyAqIFRISVMgU09GVFdBUkUgSVMg
UFJPVklERUQgQlkgQVBQTEUgSU5DLiBBTkQgSVRTIENPTlRSSUJVVE9SUyBgYEFTIElTJycKKyAq
IEFORCBBTlkgRVhQUkVTUyBPUiBJTVBMSUVEIFdBUlJBTlRJRVMsIElOQ0xVRElORywgQlVUIE5P
VCBMSU1JVEVEIFRPLAorICogVEhFIElNUExJRUQgV0FSUkFOVElFUyBPRiBNRVJDSEFOVEF3QklM
SVRZIEFORCBGSVRORVNTIEZPUiBBIFBBUlRJQ1VMQVIKKyAqIFBVUlBPU0UgQVJFIERJU0NMQUlN
RUQuIElOIE5PIEVWRU5UIFNIQUxMIEFQUExFIElOQy4gT1IgSVRTIENPTlRSSUJVVE9SUworICog
QkUgTElBQkxFIEZPUiBBTlkgRElSRUNULCBJTkRJUkVDVCwgSU5DSURFTlRBTCwgU1BFQ0lBTCwg
RVhFTVBMQVJZLCBPUgorICogQ09OU0VRVUVOVElBTCBEQU1BR0VTIChJTkNMVURJTkcsIEJVVCBO
T1QgTElNSVRFRCBUTywgUFJPQ1VSRU1FTlQgT0YKKyAqIFNVQlNUSVRVVEUgR09PRFMgT1IgU0VS
VklDRVM7IExPU1MgT0YgVVNFLCBEQVRBLCBPUiBQUk9GSVRTOyBPUiBCVVNJTkVTUworICogSU5U
RVJSVVBUSU9OKSBIT1dFVkVSIENBVVNFRCBBTkQgT04gQU5ZIFRIRU9SWSBPRiBMSUFCSUxJVFks
IFdIRVRIRVIgSU4KKyAqIENPTlRSQUNULCBTVFJJQ1QgTElBQklMSVRZLCBPUiBUT1JUIChJTkNM
VURJTkcgTkVHTElHRU5DRSBPUiBPVEhFUldJU0UpCisgKiBBUklTSU5HIElOIEFOWSBXQVkgT1VU
IE9GIFRIRSBVU0UgT0YgVEhJUyBTT0ZUV0FSRSwgRVZFTiBJRiBBRFZJU0VEIE9GCisgKiBUSEUg
UE9TU0lCSUxJVFkgT0YgU1VDSCBEQU1BR0UuCisgKi8KKworI2lmbmRlZiBXS1BvcHVwSXRlbV9o
CisjZGVmaW5lIFdLUG9wdXBJdGVtX2gKKworI2luY2x1ZGUgPFdlYktpdDIvV0tCYXNlLmg+CisK
KyNpZmRlZiBfX2NwbHVzcGx1cworZXh0ZXJuICJDIiB7CisjZW5kaWYKKworZW51bSB7CisgICAg
a1dLUG9wdXBJdGVtVHlwZVNlcGFyYXRvciwKKyAgICBrV0tQb3B1cEl0ZW1UeXBlSXRlbQorfTsK
K3R5cGVkZWYgdWludDMyX3QgV0tQb3B1cEl0ZW1UeXBlOworCitlbnVtIHsKKyAgICBrV0tQb3B1
cEl0ZW1UZXh0RGlyZWN0aW9uUlRMLAorICAgIGtXS1BvcHVwSXRlbVRleHREaXJlY3Rpb25MVFIK
K307Cit0eXBlZGVmIHVpbnQzMl90IFdLUG9wdXBJdGVtVGV4dERpcmVjdGlvbjsKKworV0tfRVhQ
T1JUIFdLUG9wdXBJdGVtVHlwZSBXS1BvcHVwSXRlbUdldFR5cGUoV0tQb3B1cEl0ZW1SZWYgaXRl
bSk7CisKK1dLX0VYUE9SVCBXS1BvcHVwSXRlbVRleHREaXJlY3Rpb24gV0tQb3B1cEl0ZW1HZXRU
ZXh0RGlyZWN0aW9uKFdLUG9wdXBJdGVtUmVmIGl0ZW0pOworV0tfRVhQT1JUIGJvb2wgV0tQb3B1
cEl0ZW1IYXNUZXh0RGlyZWN0aW9uT3ZlcnJpZGUoV0tQb3B1cEl0ZW1SZWYgaXRlbSk7CisKK1dL
X0VYUE9SVCBXS1N0cmluZ1JlZiBXS1BvcHVwSXRlbUNvcHlUZXh0KFdLUG9wdXBJdGVtUmVmIGl0
ZW0pOworV0tfRVhQT1JUIFdLU3RyaW5nUmVmIFdLUG9wdXBJdGVtQ29weVRvb2xUaXBUZXh0KFdL
UG9wdXBJdGVtUmVmIGl0ZW0pOworV0tfRVhQT1JUIFdLU3RyaW5nUmVmIFdLUG9wdXBJdGVtQ29w
eUFjY2Vzc2liaWxpdHlUZXh0KFdLUG9wdXBJdGVtUmVmIGl0ZW0pOworCitXS19FWFBPUlQgYm9v
bCBXS1BvcHVwSXRlbUlzRW5hYmxlZChXS1BvcHVwSXRlbVJlZiBpdGVtKTsKK1dLX0VYUE9SVCBi
b29sIFdLUG9wdXBJdGVtSXNMYWJlbChXS1BvcHVwSXRlbVJlZiBpdGVtKTsKK1dLX0VYUE9SVCBi
b29sIFdLUG9wdXBJdGVtSXNTZWxlY3RlZChXS1BvcHVwSXRlbVJlZiBpdGVtKTsKKworI2lmZGVm
IF9fY3BsdXNwbHVzCit9CisjZW5kaWYKKworI2VuZGlmIC8qIFdLUG9wdXBJdGVtX2ggKi8KZGlm
ZiAtLWdpdCBhL1NvdXJjZS9XZWJLaXQyL1VJUHJvY2Vzcy9BUEkvQy9lZmwvV0tQb3B1cE1lbnUu
Y3BwIGIvU291cmNlL1dlYktpdDIvVUlQcm9jZXNzL0FQSS9DL2VmbC9XS1BvcHVwTWVudS5jcHAK
bmV3IGZpbGUgbW9kZSAxMDA2NDQKaW5kZXggMDAwMDAwMC4uMjM5OWI3MwotLS0gL2Rldi9udWxs
CisrKyBiL1NvdXJjZS9XZWJLaXQyL1VJUHJvY2Vzcy9BUEkvQy9lZmwvV0tQb3B1cE1lbnUuY3Bw
CkBAIC0wLDAgKzEsNDIgQEAKKy8qCisgKiBDb3B5cmlnaHQgKEMpIDIwMTMgU2Ftc3VuZyBFbGVj
dHJvbmljcy4gQWxsIHJpZ2h0cyByZXNlcnZlZC4KKyAqCisgKiBSZWRpc3RyaWJ1dGlvbiBhbmQg
dXNlIGluIHNvdXJjZSBhbmQgYmluYXJ5IGZvcm1zLCB3aXRoIG9yIHdpdGhvdXQKKyAqIG1vZGlm
aWNhdGlvbiwgYXJlIHBlcm1pdHRlZCBwcm92aWRlZCB0aGF0IHRoZSBmb2xsb3dpbmcgY29uZGl0
aW9ucworICogYXJlIG1ldDoKKyAqIDEuIFJlZGlzdHJpYnV0aW9ucyBvZiBzb3VyY2UgY29kZSBt
dXN0IHJldGFpbiB0aGUgYWJvdmUgY29weXJpZ2h0CisgKiAgICBub3RpY2UsIHRoaXMgbGlzdCBv
ZiBjb25kaXRpb25zIGFuZCB0aGUgZm9sbG93aW5nIGRpc2NsYWltZXIuCisgKiAyLiBSZWRpc3Ry
aWJ1dGlvbnMgaW4gYmluYXJ5IGZvcm0gbXVzdCByZXByb2R1Y2UgdGhlIGFib3ZlIGNvcHlyaWdo
dAorICogICAgbm90aWNlLCB0aGlzIGxpc3Qgb2YgY29uZGl0aW9ucyBhbmQgdGhlIGZvbGxvd2lu
ZyBkaXNjbGFpbWVyIGluIHRoZQorICogICAgZG9jdW1lbnRhdGlvbiBhbmQvb3Igb3RoZXIgbWF0
ZXJpYWxzIHByb3ZpZGVkIHdpdGggdGhlIGRpc3RyaWJ1dGlvbi4KKyAqCisgKiBUSElTIFNPRlRX
QVJFIElTIFBST1ZJREVEIEJZIEFQUExFIElOQy4gQU5EIElUUyBDT05UUklCVVRPUlMgYGBBUyBJ
UycnCisgKiBBTkQgQU5ZIEVYUFJFU1MgT1IgSU1QTElFRCBXQVJSQU5USUVTLCBJTkNMVURJTkcs
IEJVVCBOT1QgTElNSVRFRCBUTywKKyAqIFRIRSBJTVBMSUVEIFdBUlJBTlRJRVMgT0YgTUVSQ0hB
TlRBd0JJTElUWSBBTkQgRklUTkVTUyBGT1IgQSBQQVJUSUNVTEFSCisgKiBQVVJQT1NFIEFSRSBE
SVNDTEFJTUVELiBJTiBOTyBFVkVOVCBTSEFMTCBBUFBMRSBJTkMuIE9SIElUUyBDT05UUklCVVRP
UlMKKyAqIEJFIExJQUJMRSBGT1IgQU5ZIERJUkVDVCwgSU5ESVJFQ1QsIElOQ0lERU5UQUwsIFNQ
RUNJQUwsIEVYRU1QTEFSWSwgT1IKKyAqIENPTlNFUVVFTlRJQUwgREFNQUdFUyAoSU5DTFVESU5H
LCBCVVQgTk9UIExJTUlURUQgVE8sIFBST0NVUkVNRU5UIE9GCisgKiBTVUJTVElUVVRFIEdPT0RT
IE9SIFNFUlZJQ0VTOyBMT1NTIE9GIFVTRSwgREFUQSwgT1IgUFJPRklUUzsgT1IgQlVTSU5FU1MK
KyAqIElOVEVSUlVQVElPTikgSE9XRVZFUiBDQVVTRUQgQU5EIE9OIEFOWSBUSEVPUlkgT0YgTElB
QklMSVRZLCBXSEVUSEVSIElOCisgKiBDT05UUkFDVCwgU1RSSUNUIExJQUJJTElUWSwgT1IgVE9S
VCAoSU5DTFVESU5HIE5FR0xJR0VOQ0UgT1IgT1RIRVJXSVNFKQorICogQVJJU0lORyBJTiBBTlkg
V0FZIE9VVCBPRiBUSEUgVVNFIE9GIFRISVMgU09GVFdBUkUsIEVWRU4gSUYgQURWSVNFRCBPRgor
ICogVEhFIFBPU1NJQklMSVRZIE9GIFNVQ0ggREFNQUdFLgorICovCisKKyNpbmNsdWRlICJjb25m
aWcuaCIKKyNpbmNsdWRlICJXS1BvcHVwTWVudS5oIgorCisjaW5jbHVkZSAiV0tBUElDYXN0Lmgi
CisjaW5jbHVkZSAiV2ViUG9wdXBNZW51UHJveHlFZmwuaCIKKwordXNpbmcgbmFtZXNwYWNlIFdl
YktpdDsKKwordm9pZCBXS1BvcHVwTWVudVNldENsaWVudChXS1BvcHVwTWVudVJlZiBtZW51UmVm
LCBjb25zdCBXS1BvcHVwTWVudUNsaWVudCogd2tDbGllbnQpCit7CisgICAgdG9JbXBsKG1lbnVS
ZWYpLT5pbml0aWFsaXplQ2xpZW50KHdrQ2xpZW50KTsKK30KKwordm9pZCBXS1BvcHVwTWVudVVw
ZGF0ZVNlbGVjdGlvbihXS1BvcHVwTWVudVJlZiBtZW51UmVmLCBpbnQgc2VsZWN0ZWRJbmRleCkK
K3sKKyAgICB0b0ltcGwobWVudVJlZiktPnZhbHVlQ2hhbmdlZChzZWxlY3RlZEluZGV4KTsKK30K
ZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJLaXQyL1VJUHJvY2Vzcy9BUEkvQy9lZmwvV0tQb3B1cE1l
bnUuaCBiL1NvdXJjZS9XZWJLaXQyL1VJUHJvY2Vzcy9BUEkvQy9lZmwvV0tQb3B1cE1lbnUuaApu
ZXcgZmlsZSBtb2RlIDEwMDY0NAppbmRleCAwMDAwMDAwLi5mNTAwMzFlCi0tLSAvZGV2L251bGwK
KysrIGIvU291cmNlL1dlYktpdDIvVUlQcm9jZXNzL0FQSS9DL2VmbC9XS1BvcHVwTWVudS5oCkBA
IC0wLDAgKzEsNTggQEAKKy8qCisgKiBDb3B5cmlnaHQgKEMpIDIwMTMgU2Ftc3VuZyBFbGVjdHJv
bmljcy4gQWxsIHJpZ2h0cyByZXNlcnZlZC4KKyAqCisgKiBSZWRpc3RyaWJ1dGlvbiBhbmQgdXNl
IGluIHNvdXJjZSBhbmQgYmluYXJ5IGZvcm1zLCB3aXRoIG9yIHdpdGhvdXQKKyAqIG1vZGlmaWNh
dGlvbiwgYXJlIHBlcm1pdHRlZCBwcm92aWRlZCB0aGF0IHRoZSBmb2xsb3dpbmcgY29uZGl0aW9u
cworICogYXJlIG1ldDoKKyAqIDEuIFJlZGlzdHJpYnV0aW9ucyBvZiBzb3VyY2UgY29kZSBtdXN0
IHJldGFpbiB0aGUgYWJvdmUgY29weXJpZ2h0CisgKiAgICBub3RpY2UsIHRoaXMgbGlzdCBvZiBj
b25kaXRpb25zIGFuZCB0aGUgZm9sbG93aW5nIGRpc2NsYWltZXIuCisgKiAyLiBSZWRpc3RyaWJ1
dGlvbnMgaW4gYmluYXJ5IGZvcm0gbXVzdCByZXByb2R1Y2UgdGhlIGFib3ZlIGNvcHlyaWdodAor
ICogICAgbm90aWNlLCB0aGlzIGxpc3Qgb2YgY29uZGl0aW9ucyBhbmQgdGhlIGZvbGxvd2luZyBk
aXNjbGFpbWVyIGluIHRoZQorICogICAgZG9jdW1lbnRhdGlvbiBhbmQvb3Igb3RoZXIgbWF0ZXJp
YWxzIHByb3ZpZGVkIHdpdGggdGhlIGRpc3RyaWJ1dGlvbi4KKyAqCisgKiBUSElTIFNPRlRXQVJF
IElTIFBST1ZJREVEIEJZIEFQUExFIElOQy4gQU5EIElUUyBDT05UUklCVVRPUlMgYGBBUyBJUycn
CisgKiBBTkQgQU5ZIEVYUFJFU1MgT1IgSU1QTElFRCBXQVJSQU5USUVTLCBJTkNMVURJTkcsIEJV
VCBOT1QgTElNSVRFRCBUTywKKyAqIFRIRSBJTVBMSUVEIFdBUlJBTlRJRVMgT0YgTUVSQ0hBTlRB
d0JJTElUWSBBTkQgRklUTkVTUyBGT1IgQSBQQVJUSUNVTEFSCisgKiBQVVJQT1NFIEFSRSBESVND
TEFJTUVELiBJTiBOTyBFVkVOVCBTSEFMTCBBUFBMRSBJTkMuIE9SIElUUyBDT05UUklCVVRPUlMK
KyAqIEJFIExJQUJMRSBGT1IgQU5ZIERJUkVDVCwgSU5ESVJFQ1QsIElOQ0lERU5UQUwsIFNQRUNJ
QUwsIEVYRU1QTEFSWSwgT1IKKyAqIENPTlNFUVVFTlRJQUwgREFNQUdFUyAoSU5DTFVESU5HLCBC
VVQgTk9UIExJTUlURUQgVE8sIFBST0NVUkVNRU5UIE9GCisgKiBTVUJTVElUVVRFIEdPT0RTIE9S
IFNFUlZJQ0VTOyBMT1NTIE9GIFVTRSwgREFUQSwgT1IgUFJPRklUUzsgT1IgQlVTSU5FU1MKKyAq
IElOVEVSUlVQVElPTikgSE9XRVZFUiBDQVVTRUQgQU5EIE9OIEFOWSBUSEVPUlkgT0YgTElBQklM
SVRZLCBXSEVUSEVSIElOCisgKiBDT05UUkFDVCwgU1RSSUNUIExJQUJJTElUWSwgT1IgVE9SVCAo
SU5DTFVESU5HIE5FR0xJR0VOQ0UgT1IgT1RIRVJXSVNFKQorICogQVJJU0lORyBJTiBBTlkgV0FZ
IE9VVCBPRiBUSEUgVVNFIE9GIFRISVMgU09GVFdBUkUsIEVWRU4gSUYgQURWSVNFRCBPRgorICog
VEhFIFBPU1NJQklMSVRZIE9GIFNVQ0ggREFNQUdFLgorICovCisKKyNpZm5kZWYgV0tQb3B1cE1l
bnVfaAorI2RlZmluZSBXS1BvcHVwTWVudV9oCisKKyNpbmNsdWRlIDxXZWJLaXQyL1dLQmFzZS5o
PgorI2luY2x1ZGUgPFdlYktpdDIvV0tHZW9tZXRyeS5oPgorI2luY2x1ZGUgPFdlYktpdDIvV0tQ
b3B1cEl0ZW0uaD4KKworI2lmZGVmIF9fY3BsdXNwbHVzCitleHRlcm4gIkMiIHsKKyNlbmRpZgor
Cit0eXBlZGVmIHZvaWQgKCpXS1BvcHVwTWVudVNob3dQb3B1cE1lbnVDYWxsYmFjaykoV0tQb3B1
cE1lbnVSZWYgcG9wdXBNZW51UmVmLCBXS1JlY3QgcmVjdCwgV0tQb3B1cEl0ZW1UZXh0RGlyZWN0
aW9uIHRleHREaXJlY3Rpb24sIGRvdWJsZSBwYWdlU2NhbGVGYWN0b3IsIFdLQXJyYXlSZWYgaXRl
bXNSZWYsIGludDMyX3Qgc2VsZWN0ZWRJbmRleCwgY29uc3Qgdm9pZCogY2xpZW50SW5mbyk7Cit0
eXBlZGVmIHZvaWQgKCpXS1BvcHVwTWVudUhpZGVQb3B1cE1lbnVDYWxsYmFjaykoV0tQb3B1cE1l
bnVSZWYgcG9wdXBNZW51UmVmLCBjb25zdCB2b2lkKiBjbGllbnRJbmZvKTsKKworc3RydWN0IFdL
UG9wdXBNZW51Q2xpZW50IHsKKyAgICBpbnQgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg
ICAgICAgICAgICAgICAgICAgdmVyc2lvbjsKKyAgICBjb25zdCB2b2lkKiAgICAgICAgICAgICAg
ICAgICAgICAgICAgICAgICAgICAgICAgICAgY2xpZW50SW5mbzsKKyAgICBXS1BvcHVwTWVudVNo
b3dQb3B1cE1lbnVDYWxsYmFjayAgICAgICAgICAgICAgICAgICAgc2hvd1BvcHVwTWVudTsKKyAg
ICBXS1BvcHVwTWVudUhpZGVQb3B1cE1lbnVDYWxsYmFjayAgICAgICAgICAgICAgICAgICAgaGlk
ZVBvcHVwTWVudTsKK307Cit0eXBlZGVmIHN0cnVjdCBXS1BvcHVwTWVudUNsaWVudCBXS1BvcHVw
TWVudUNsaWVudDsKKworZW51bSB7IGtXS1BvcHVwTWVudUNsaWVudEN1cnJlbnRWZXJzaW9uID0g
MCB9OworCitXS19FWFBPUlQgdm9pZCBXS1BvcHVwTWVudVNldENsaWVudChXS1BvcHVwTWVudVJl
ZiBtZW51LCBjb25zdCBXS1BvcHVwTWVudUNsaWVudCogY2xpZW50KTsKKworV0tfRVhQT1JUIHZv
aWQgV0tQb3B1cE1lbnVVcGRhdGVTZWxlY3Rpb24oV0tQb3B1cE1lbnVSZWYgbWVudSwgaW50IHNl
bGVjdGVkSW5kZXgpOworCisjaWZkZWYgX19jcGx1c3BsdXMKK30KKyNlbmRpZgorCisjZW5kaWYg
LyogV0tQb3B1cE1lbnVfaCAqLwpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYktpdDIvVUlQcm9jZXNz
L2VmbC9QYWdlQ2xpZW50QmFzZS5jcHAgYi9Tb3VyY2UvV2ViS2l0Mi9VSVByb2Nlc3MvZWZsL1Bh
Z2VDbGllbnRCYXNlLmNwcAppbmRleCAyNmI3ZTRmLi42OTQzM2Y1IDEwMDY0NAotLS0gYS9Tb3Vy
Y2UvV2ViS2l0Mi9VSVByb2Nlc3MvZWZsL1BhZ2VDbGllbnRCYXNlLmNwcAorKysgYi9Tb3VyY2Uv
V2ViS2l0Mi9VSVByb2Nlc3MvZWZsL1BhZ2VDbGllbnRCYXNlLmNwcApAQCAtMjE0LDcgKzIxNCw3
IEBAIHZvaWQgUGFnZUNsaWVudEJhc2U6OmRvbmVXaXRoVG91Y2hFdmVudChjb25zdCBOYXRpdmVX
ZWJUb3VjaEV2ZW50JiwgYm9vbCAvKndhc0V2CiAKIFBhc3NSZWZQdHI8V2ViUG9wdXBNZW51UHJv
eHk+IFBhZ2VDbGllbnRCYXNlOjpjcmVhdGVQb3B1cE1lbnVQcm94eShXZWJQYWdlUHJveHkqIHBh
Z2UpCiB7Ci0gICAgcmV0dXJuIFdlYlBvcHVwTWVudVByb3h5RWZsOjpjcmVhdGUobV92aWV3LCBw
YWdlKTsKKyAgICByZXR1cm4gV2ViUG9wdXBNZW51UHJveHlFZmw6OmNyZWF0ZShwYWdlKTsKIH0K
IAogUGFzc1JlZlB0cjxXZWJDb250ZXh0TWVudVByb3h5PiBQYWdlQ2xpZW50QmFzZTo6Y3JlYXRl
Q29udGV4dE1lbnVQcm94eShXZWJQYWdlUHJveHkqIHBhZ2UpCmRpZmYgLS1naXQgYS9Tb3VyY2Uv
V2ViS2l0Mi9VSVByb2Nlc3MvZWZsL1dlYlBvcHVwSXRlbUVmbC5jcHAgYi9Tb3VyY2UvV2ViS2l0
Mi9VSVByb2Nlc3MvZWZsL1dlYlBvcHVwSXRlbUVmbC5jcHAKbmV3IGZpbGUgbW9kZSAxMDA2NDQK
aW5kZXggMDAwMDAwMC4uZjQyMGMwZQotLS0gL2Rldi9udWxsCisrKyBiL1NvdXJjZS9XZWJLaXQy
L1VJUHJvY2Vzcy9lZmwvV2ViUG9wdXBJdGVtRWZsLmNwcApAQCAtMCwwICsxLDQwIEBACisvKgor
ICogQ29weXJpZ2h0IChDKSAyMDEzIFNhbXN1bmcgRWxlY3Ryb25pY3MuIEFsbCByaWdodHMgcmVz
ZXJ2ZWQuCisgKgorICogUmVkaXN0cmlidXRpb24gYW5kIHVzZSBpbiBzb3VyY2UgYW5kIGJpbmFy
eSBmb3Jtcywgd2l0aCBvciB3aXRob3V0CisgKiBtb2RpZmljYXRpb24sIGFyZSBwZXJtaXR0ZWQg
cHJvdmlkZWQgdGhhdCB0aGUgZm9sbG93aW5nIGNvbmRpdGlvbnMKKyAqIGFyZSBtZXQ6CisgKiAx
LiBSZWRpc3RyaWJ1dGlvbnMgb2Ygc291cmNlIGNvZGUgbXVzdCByZXRhaW4gdGhlIGFib3ZlIGNv
cHlyaWdodAorICogICAgbm90aWNlLCB0aGlzIGxpc3Qgb2YgY29uZGl0aW9ucyBhbmQgdGhlIGZv
bGxvd2luZyBkaXNjbGFpbWVyLgorICogMi4gUmVkaXN0cmlidXRpb25zIGluIGJpbmFyeSBmb3Jt
IG11c3QgcmVwcm9kdWNlIHRoZSBhYm92ZSBjb3B5cmlnaHQKKyAqICAgIG5vdGljZSwgdGhpcyBs
aXN0IG9mIGNvbmRpdGlvbnMgYW5kIHRoZSBmb2xsb3dpbmcgZGlzY2xhaW1lciBpbiB0aGUKKyAq
ICAgIGRvY3VtZW50YXRpb24gYW5kL29yIG90aGVyIG1hdGVyaWFscyBwcm92aWRlZCB3aXRoIHRo
ZSBkaXN0cmlidXRpb24uCisgKgorICogVEhJUyBTT0ZUV0FSRSBJUyBQUk9WSURFRCBCWSBBUFBM
RSBJTkMuIEFORCBJVFMgQ09OVFJJQlVUT1JTIGBgQVMgSVMnJworICogQU5EIEFOWSBFWFBSRVNT
IE9SIElNUExJRUQgV0FSUkFOVElFUywgSU5DTFVESU5HLCBCVVQgTk9UIExJTUlURUQgVE8sCisg
KiBUSEUgSU1QTElFRCBXQVJSQU5USUVTIE9GIE1FUkNIQU5UQXdCSUxJVFkgQU5EIEZJVE5FU1Mg
Rk9SIEEgUEFSVElDVUxBUgorICogUFVSUE9TRSBBUkUgRElTQ0xBSU1FRC4gSU4gTk8gRVZFTlQg
U0hBTEwgQVBQTEUgSU5DLiBPUiBJVFMgQ09OVFJJQlVUT1JTCisgKiBCRSBMSUFCTEUgRk9SIEFO
WSBESVJFQ1QsIElORElSRUNULCBJTkNJREVOVEFMLCBTUEVDSUFMLCBFWEVNUExBUlksIE9SCisg
KiBDT05TRVFVRU5USUFMIERBTUFHRVMgKElOQ0xVRElORywgQlVUIE5PVCBMSU1JVEVEIFRPLCBQ
Uk9DVVJFTUVOVCBPRgorICogU1VCU1RJVFVURSBHT09EUyBPUiBTRVJWSUNFUzsgTE9TUyBPRiBV
U0UsIERBVEEsIE9SIFBST0ZJVFM7IE9SIEJVU0lORVNTCisgKiBJTlRFUlJVUFRJT04pIEhPV0VW
RVIgQ0FVU0VEIEFORCBPTiBBTlkgVEhFT1JZIE9GIExJQUJJTElUWSwgV0hFVEhFUiBJTgorICog
Q09OVFJBQ1QsIFNUUklDVCBMSUFCSUxJVFksIE9SIFRPUlQgKElOQ0xVRElORyBORUdMSUdFTkNF
IE9SIE9USEVSV0lTRSkKKyAqIEFSSVNJTkcgSU4gQU5ZIFdBWSBPVVQgT0YgVEhFIFVTRSBPRiBU
SElTIFNPRlRXQVJFLCBFVkVOIElGIEFEVklTRUQgT0YKKyAqIFRIRSBQT1NTSUJJTElUWSBPRiBT
VUNIIERBTUFHRS4KKyAqLworCisjaW5jbHVkZSAiY29uZmlnLmgiCisjaW5jbHVkZSAiV2ViUG9w
dXBJdGVtRWZsLmgiCisKK25hbWVzcGFjZSBXZWJLaXQgeworCitXZWJQb3B1cEl0ZW1FZmw6Oldl
YlBvcHVwSXRlbUVmbChjb25zdCBXZWJQb3B1cEl0ZW0mIGRhdGEpCisgICAgOiBtX2RhdGEoZGF0
YSkKK3sKK30KKworV2ViUG9wdXBJdGVtRWZsOjp+V2ViUG9wdXBJdGVtRWZsKCkKK3sKK30KKwor
fSAvLyBuYW1lc3BhY2UgV2ViS2l0CmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViS2l0Mi9VSVByb2Nl
c3MvZWZsL1dlYlBvcHVwSXRlbUVmbC5oIGIvU291cmNlL1dlYktpdDIvVUlQcm9jZXNzL2VmbC9X
ZWJQb3B1cEl0ZW1FZmwuaApuZXcgZmlsZSBtb2RlIDEwMDY0NAppbmRleCAwMDAwMDAwLi5kNTQ4
ZjM3Ci0tLSAvZGV2L251bGwKKysrIGIvU291cmNlL1dlYktpdDIvVUlQcm9jZXNzL2VmbC9XZWJQ
b3B1cEl0ZW1FZmwuaApAQCAtMCwwICsxLDY2IEBACisvKgorICogQ29weXJpZ2h0IChDKSAyMDEz
IFNhbXN1bmcgRWxlY3Ryb25pY3MuIEFsbCByaWdodHMgcmVzZXJ2ZWQuCisgKgorICogUmVkaXN0
cmlidXRpb24gYW5kIHVzZSBpbiBzb3VyY2UgYW5kIGJpbmFyeSBmb3Jtcywgd2l0aCBvciB3aXRo
b3V0CisgKiBtb2RpZmljYXRpb24sIGFyZSBwZXJtaXR0ZWQgcHJvdmlkZWQgdGhhdCB0aGUgZm9s
bG93aW5nIGNvbmRpdGlvbnMKKyAqIGFyZSBtZXQ6CisgKiAxLiBSZWRpc3RyaWJ1dGlvbnMgb2Yg
c291cmNlIGNvZGUgbXVzdCByZXRhaW4gdGhlIGFib3ZlIGNvcHlyaWdodAorICogICAgbm90aWNl
LCB0aGlzIGxpc3Qgb2YgY29uZGl0aW9ucyBhbmQgdGhlIGZvbGxvd2luZyBkaXNjbGFpbWVyLgor
ICogMi4gUmVkaXN0cmlidXRpb25zIGluIGJpbmFyeSBmb3JtIG11c3QgcmVwcm9kdWNlIHRoZSBh
Ym92ZSBjb3B5cmlnaHQKKyAqICAgIG5vdGljZSwgdGhpcyBsaXN0IG9mIGNvbmRpdGlvbnMgYW5k
IHRoZSBmb2xsb3dpbmcgZGlzY2xhaW1lciBpbiB0aGUKKyAqICAgIGRvY3VtZW50YXRpb24gYW5k
L29yIG90aGVyIG1hdGVyaWFscyBwcm92aWRlZCB3aXRoIHRoZSBkaXN0cmlidXRpb24uCisgKgor
ICogVEhJUyBTT0ZUV0FSRSBJUyBQUk9WSURFRCBCWSBBUFBMRSBJTkMuIEFORCBJVFMgQ09OVFJJ
QlVUT1JTIGBgQVMgSVMnJworICogQU5EIEFOWSBFWFBSRVNTIE9SIElNUExJRUQgV0FSUkFOVElF
UywgSU5DTFVESU5HLCBCVVQgTk9UIExJTUlURUQgVE8sCisgKiBUSEUgSU1QTElFRCBXQVJSQU5U
SUVTIE9GIE1FUkNIQU5UQXdCSUxJVFkgQU5EIEZJVE5FU1MgRk9SIEEgUEFSVElDVUxBUgorICog
UFVSUE9TRSBBUkUgRElTQ0xBSU1FRC4gSU4gTk8gRVZFTlQgU0hBTEwgQVBQTEUgSU5DLiBPUiBJ
VFMgQ09OVFJJQlVUT1JTCisgKiBCRSBMSUFCTEUgRk9SIEFOWSBESVJFQ1QsIElORElSRUNULCBJ
TkNJREVOVEFMLCBTUEVDSUFMLCBFWEVNUExBUlksIE9SCisgKiBDT05TRVFVRU5USUFMIERBTUFH
RVMgKElOQ0xVRElORywgQlVUIE5PVCBMSU1JVEVEIFRPLCBQUk9DVVJFTUVOVCBPRgorICogU1VC
U1RJVFVURSBHT09EUyBPUiBTRVJWSUNFUzsgTE9TUyBPRiBVU0UsIERBVEEsIE9SIFBST0ZJVFM7
IE9SIEJVU0lORVNTCisgKiBJTlRFUlJVUFRJT04pIEhPV0VWRVIgQ0FVU0VEIEFORCBPTiBBTlkg
VEhFT1JZIE9GIExJQUJJTElUWSwgV0hFVEhFUiBJTgorICogQ09OVFJBQ1QsIFNUUklDVCBMSUFC
SUxJVFksIE9SIFRPUlQgKElOQ0xVRElORyBORUdMSUdFTkNFIE9SIE9USEVSV0lTRSkKKyAqIEFS
SVNJTkcgSU4gQU5ZIFdBWSBPVVQgT0YgVEhFIFVTRSBPRiBUSElTIFNPRlRXQVJFLCBFVkVOIElG
IEFEVklTRUQgT0YKKyAqIFRIRSBQT1NTSUJJTElUWSBPRiBTVUNIIERBTUFHRS4KKyAqLworCisj
aWZuZGVmIFdlYlBvcHVwSXRlbUVmbF9oCisjZGVmaW5lIFdlYlBvcHVwSXRlbUVmbF9oCisKKyNp
bmNsdWRlICJBUElPYmplY3QuaCIKKyNpbmNsdWRlICJXZWJQb3B1cEl0ZW0uaCIKKyNpbmNsdWRl
IDx3dGYvUGFzc1JlZlB0ci5oPgorCituYW1lc3BhY2UgV2ViS2l0IHsKKworY2xhc3MgV2ViUG9w
dXBJdGVtRWZsIDogcHVibGljIEFQSU9iamVjdCB7CitwdWJsaWM6CisgICAgc3RhdGljIGNvbnN0
IFR5cGUgQVBJVHlwZSA9IFR5cGVQb3B1cE1lbnVJdGVtOworCisgICAgc3RhdGljIFBhc3NSZWZQ
dHI8V2ViUG9wdXBJdGVtRWZsPiBjcmVhdGUoY29uc3QgV2ViUG9wdXBJdGVtJiBkYXRhKQorICAg
IHsKKyAgICAgICAgcmV0dXJuIGFkb3B0UmVmKG5ldyBXZWJQb3B1cEl0ZW1FZmwoZGF0YSkpOwor
ICAgIH0KKworICAgIHZpcnR1YWwgfldlYlBvcHVwSXRlbUVmbCgpOworCisgICAgV2ViUG9wdXBJ
dGVtOjpUeXBlIGl0ZW1UeXBlKCkgY29uc3QgeyByZXR1cm4gbV9kYXRhLm1fdHlwZTsgfQorICAg
IFN0cmluZyB0ZXh0KCkgY29uc3QgeyByZXR1cm4gbV9kYXRhLm1fdGV4dDsgfQorICAgIFdlYkNv
cmU6OlRleHREaXJlY3Rpb24gdGV4dERpcmVjdGlvbigpIGNvbnN0IHsgcmV0dXJuIG1fZGF0YS5t
X3RleHREaXJlY3Rpb247IH0KKyAgICBib29sIGhhc1RleHREaXJlY3Rpb25PdmVycmlkZSgpIGNv
bnN0IHsgcmV0dXJuIG1fZGF0YS5tX2hhc1RleHREaXJlY3Rpb25PdmVycmlkZTsgfQorICAgIFN0
cmluZyB0b29sVGlwVGV4dCgpIGNvbnN0IHsgcmV0dXJuIG1fZGF0YS5tX3Rvb2xUaXA7IH0KKyAg
ICBTdHJpbmcgYWNjZXNzaWJpbGl0eVRleHQoKSBjb25zdCB7IHJldHVybiBtX2RhdGEubV9hY2Nl
c3NpYmlsaXR5VGV4dDsgfQorICAgIGJvb2wgaXNFbmFibGVkKCkgY29uc3QgeyByZXR1cm4gbV9k
YXRhLm1faXNFbmFibGVkOyB9CisgICAgYm9vbCBpc0xhYmVsKCkgY29uc3QgeyByZXR1cm4gbV9k
YXRhLm1faXNMYWJlbDsgfQorICAgIGJvb2wgaXNTZWxlY3RlZCgpIGNvbnN0IHsgcmV0dXJuIG1f
ZGF0YS5tX2lzU2VsZWN0ZWQ7IH0KKworcHJpdmF0ZToKKyAgICBleHBsaWNpdCBXZWJQb3B1cEl0
ZW1FZmwoY29uc3QgV2ViUG9wdXBJdGVtJik7CisKKyAgICB2aXJ0dWFsIFR5cGUgdHlwZSgpIGNv
bnN0IHsgcmV0dXJuIEFQSVR5cGU7IH0KKworICAgIFdlYlBvcHVwSXRlbSBtX2RhdGE7Cit9Owor
Cit9IC8vIG5hbWVzcGFjZSBXZWJLaXQKKworI2VuZGlmIC8vIFdlYlBvcHVwSXRlbUVmbF9oCmRp
ZmYgLS1naXQgYS9Tb3VyY2UvV2ViS2l0Mi9VSVByb2Nlc3MvZWZsL1dlYlBvcHVwTWVudUNsaWVu
dC5jcHAgYi9Tb3VyY2UvV2ViS2l0Mi9VSVByb2Nlc3MvZWZsL1dlYlBvcHVwTWVudUNsaWVudC5j
cHAKbmV3IGZpbGUgbW9kZSAxMDA2NDQKaW5kZXggMDAwMDAwMC4uNzBmZmQ2MQotLS0gL2Rldi9u
dWxsCisrKyBiL1NvdXJjZS9XZWJLaXQyL1VJUHJvY2Vzcy9lZmwvV2ViUG9wdXBNZW51Q2xpZW50
LmNwcApAQCAtMCwwICsxLDUyIEBACisvKgorICogQ29weXJpZ2h0IChDKSAyMDEzIFNhbXN1bmcg
RWxlY3Ryb25pY3MuIEFsbCByaWdodHMgcmVzZXJ2ZWQuCisgKgorICogUmVkaXN0cmlidXRpb24g
YW5kIHVzZSBpbiBzb3VyY2UgYW5kIGJpbmFyeSBmb3Jtcywgd2l0aCBvciB3aXRob3V0CisgKiBt
b2RpZmljYXRpb24sIGFyZSBwZXJtaXR0ZWQgcHJvdmlkZWQgdGhhdCB0aGUgZm9sbG93aW5nIGNv
bmRpdGlvbnMKKyAqIGFyZSBtZXQ6CisgKiAxLiBSZWRpc3RyaWJ1dGlvbnMgb2Ygc291cmNlIGNv
ZGUgbXVzdCByZXRhaW4gdGhlIGFib3ZlIGNvcHlyaWdodAorICogICAgbm90aWNlLCB0aGlzIGxp
c3Qgb2YgY29uZGl0aW9ucyBhbmQgdGhlIGZvbGxvd2luZyBkaXNjbGFpbWVyLgorICogMi4gUmVk
aXN0cmlidXRpb25zIGluIGJpbmFyeSBmb3JtIG11c3QgcmVwcm9kdWNlIHRoZSBhYm92ZSBjb3B5
cmlnaHQKKyAqICAgIG5vdGljZSwgdGhpcyBsaXN0IG9mIGNvbmRpdGlvbnMgYW5kIHRoZSBmb2xs
b3dpbmcgZGlzY2xhaW1lciBpbiB0aGUKKyAqICAgIGRvY3VtZW50YXRpb24gYW5kL29yIG90aGVy
IG1hdGVyaWFscyBwcm92aWRlZCB3aXRoIHRoZSBkaXN0cmlidXRpb24uCisgKgorICogVEhJUyBT
T0ZUV0FSRSBJUyBQUk9WSURFRCBCWSBBUFBMRSBJTkMuIEFORCBJVFMgQ09OVFJJQlVUT1JTIGBg
QVMgSVMnJworICogQU5EIEFOWSBFWFBSRVNTIE9SIElNUExJRUQgV0FSUkFOVElFUywgSU5DTFVE
SU5HLCBCVVQgTk9UIExJTUlURUQgVE8sCisgKiBUSEUgSU1QTElFRCBXQVJSQU5USUVTIE9GIE1F
UkNIQU5UQXdCSUxJVFkgQU5EIEZJVE5FU1MgRk9SIEEgUEFSVElDVUxBUgorICogUFVSUE9TRSBB
UkUgRElTQ0xBSU1FRC4gSU4gTk8gRVZFTlQgU0hBTEwgQVBQTEUgSU5DLiBPUiBJVFMgQ09OVFJJ
QlVUT1JTCisgKiBCRSBMSUFCTEUgRk9SIEFOWSBESVJFQ1QsIElORElSRUNULCBJTkNJREVOVEFM
LCBTUEVDSUFMLCBFWEVNUExBUlksIE9SCisgKiBDT05TRVFVRU5USUFMIERBTUFHRVMgKElOQ0xV
RElORywgQlVUIE5PVCBMSU1JVEVEIFRPLCBQUk9DVVJFTUVOVCBPRgorICogU1VCU1RJVFVURSBH
T09EUyBPUiBTRVJWSUNFUzsgTE9TUyBPRiBVU0UsIERBVEEsIE9SIFBST0ZJVFM7IE9SIEJVU0lO
RVNTCisgKiBJTlRFUlJVUFRJT04pIEhPV0VWRVIgQ0FVU0VEIEFORCBPTiBBTlkgVEhFT1JZIE9G
IExJQUJJTElUWSwgV0hFVEhFUiBJTgorICogQ09OVFJBQ1QsIFNUUklDVCBMSUFCSUxJVFksIE9S
IFRPUlQgKElOQ0xVRElORyBORUdMSUdFTkNFIE9SIE9USEVSV0lTRSkKKyAqIEFSSVNJTkcgSU4g
QU5ZIFdBWSBPVVQgT0YgVEhFIFVTRSBPRiBUSElTIFNPRlRXQVJFLCBFVkVOIElGIEFEVklTRUQg
T0YKKyAqIFRIRSBQT1NTSUJJTElUWSBPRiBTVUNIIERBTUFHRS4KKyAqLworCisjaW5jbHVkZSAi
Y29uZmlnLmgiCisjaW5jbHVkZSAiV2ViUG9wdXBNZW51Q2xpZW50LmgiCisKKyNpbmNsdWRlICJJ
bW11dGFibGVBcnJheS5oIgorI2luY2x1ZGUgIldLQVBJQ2FzdC5oIgorI2luY2x1ZGUgIldlYlBv
cHVwTWVudVByb3h5RWZsLmgiCisKK3VzaW5nIG5hbWVzcGFjZSBXZWJDb3JlOwordXNpbmcgbmFt
ZXNwYWNlIFdlYktpdDsKKwordm9pZCBXZWJQb3B1cE1lbnVDbGllbnQ6OnNob3dQb3B1cE1lbnUo
V2ViUG9wdXBNZW51UHJveHlFZmwqIHBvcHVwTWVudVByb3h5LCBjb25zdCBJbnRSZWN0JiByZWN0
LCBUZXh0RGlyZWN0aW9uIHRleHREaXJlY3Rpb24sIGRvdWJsZSBwYWdlU2NhbGVGYWN0b3IsIFZl
Y3RvcjxSZWZQdHI8QVBJT2JqZWN0PiA+KiBpdGVtcywgaW50MzJfdCBzZWxlY3RlZEluZGV4KQor
eworICAgIGlmICghbV9jbGllbnQuc2hvd1BvcHVwTWVudSkKKyAgICAgICAgcmV0dXJuOworCisg
ICAgUmVmUHRyPEltbXV0YWJsZUFycmF5PiBJdGVtc0FycmF5OworICAgIGlmIChpdGVtcyAmJiAh
aXRlbXMtPmlzRW1wdHkoKSkKKyAgICAgICAgSXRlbXNBcnJheSA9IEltbXV0YWJsZUFycmF5Ojph
ZG9wdCgqaXRlbXMpOworCisgICAgbV9jbGllbnQuc2hvd1BvcHVwTWVudSh0b0FQSShwb3B1cE1l
bnVQcm94eSksIHRvQVBJKHJlY3QpLCB0b0FQSSh0ZXh0RGlyZWN0aW9uKSwgcGFnZVNjYWxlRmFj
dG9yLCB0b0FQSShJdGVtc0FycmF5LmdldCgpKSwgc2VsZWN0ZWRJbmRleCwgbV9jbGllbnQuY2xp
ZW50SW5mbyk7Cit9CisKK3ZvaWQgV2ViUG9wdXBNZW51Q2xpZW50OjpoaWRlUG9wdXBNZW51KFdl
YlBvcHVwTWVudVByb3h5RWZsKiBwb3B1cE1lbnVQcm94eSkKK3sKKyAgICBpZiAobV9jbGllbnQu
aGlkZVBvcHVwTWVudSkKKyAgICAgICAgbV9jbGllbnQuaGlkZVBvcHVwTWVudSh0b0FQSShwb3B1
cE1lbnVQcm94eSksIG1fY2xpZW50LmNsaWVudEluZm8pOworfQpkaWZmIC0tZ2l0IGEvU291cmNl
L1dlYktpdDIvVUlQcm9jZXNzL2VmbC9XZWJQb3B1cE1lbnVDbGllbnQuaCBiL1NvdXJjZS9XZWJL
aXQyL1VJUHJvY2Vzcy9lZmwvV2ViUG9wdXBNZW51Q2xpZW50LmgKbmV3IGZpbGUgbW9kZSAxMDA2
NDQKaW5kZXggMDAwMDAwMC4uZjNlYzUyOAotLS0gL2Rldi9udWxsCisrKyBiL1NvdXJjZS9XZWJL
aXQyL1VJUHJvY2Vzcy9lZmwvV2ViUG9wdXBNZW51Q2xpZW50LmgKQEAgLTAsMCArMSw0NyBAQAor
LyoKKyAqIENvcHlyaWdodCAoQykgMjAxMyBTYW1zdW5nIEVsZWN0cm9uaWNzLiBBbGwgcmlnaHRz
IHJlc2VydmVkLgorICoKKyAqIFJlZGlzdHJpYnV0aW9uIGFuZCB1c2UgaW4gc291cmNlIGFuZCBi
aW5hcnkgZm9ybXMsIHdpdGggb3Igd2l0aG91dAorICogbW9kaWZpY2F0aW9uLCBhcmUgcGVybWl0
dGVkIHByb3ZpZGVkIHRoYXQgdGhlIGZvbGxvd2luZyBjb25kaXRpb25zCisgKiBhcmUgbWV0Ogor
ICogMS4gUmVkaXN0cmlidXRpb25zIG9mIHNvdXJjZSBjb2RlIG11c3QgcmV0YWluIHRoZSBhYm92
ZSBjb3B5cmlnaHQKKyAqICAgIG5vdGljZSwgdGhpcyBsaXN0IG9mIGNvbmRpdGlvbnMgYW5kIHRo
ZSBmb2xsb3dpbmcgZGlzY2xhaW1lci4KKyAqIDIuIFJlZGlzdHJpYnV0aW9ucyBpbiBiaW5hcnkg
Zm9ybSBtdXN0IHJlcHJvZHVjZSB0aGUgYWJvdmUgY29weXJpZ2h0CisgKiAgICBub3RpY2UsIHRo
aXMgbGlzdCBvZiBjb25kaXRpb25zIGFuZCB0aGUgZm9sbG93aW5nIGRpc2NsYWltZXIgaW4gdGhl
CisgKiAgICBkb2N1bWVudGF0aW9uIGFuZC9vciBvdGhlciBtYXRlcmlhbHMgcHJvdmlkZWQgd2l0
aCB0aGUgZGlzdHJpYnV0aW9uLgorICoKKyAqIFRISVMgU09GVFdBUkUgSVMgUFJPVklERUQgQlkg
QVBQTEUgSU5DLiBBTkQgSVRTIENPTlRSSUJVVE9SUyBgYEFTIElTJycKKyAqIEFORCBBTlkgRVhQ
UkVTUyBPUiBJTVBMSUVEIFdBUlJBTlRJRVMsIElOQ0xVRElORywgQlVUIE5PVCBMSU1JVEVEIFRP
LAorICogVEhFIElNUExJRUQgV0FSUkFOVElFUyBPRiBNRVJDSEFOVEF3QklMSVRZIEFORCBGSVRO
RVNTIEZPUiBBIFBBUlRJQ1VMQVIKKyAqIFBVUlBPU0UgQVJFIERJU0NMQUlNRUQuIElOIE5PIEVW
RU5UIFNIQUxMIEFQUExFIElOQy4gT1IgSVRTIENPTlRSSUJVVE9SUworICogQkUgTElBQkxFIEZP
UiBBTlkgRElSRUNULCBJTkRJUkVDVCwgSU5DSURFTlRBTCwgU1BFQ0lBTCwgRVhFTVBMQVJZLCBP
UgorICogQ09OU0VRVUVOVElBTCBEQU1BR0VTIChJTkNMVURJTkcsIEJVVCBOT1QgTElNSVRFRCBU
TywgUFJPQ1VSRU1FTlQgT0YKKyAqIFNVQlNUSVRVVEUgR09PRFMgT1IgU0VSVklDRVM7IExPU1Mg
T0YgVVNFLCBEQVRBLCBPUiBQUk9GSVRTOyBPUiBCVVNJTkVTUworICogSU5URVJSVVBUSU9OKSBI
T1dFVkVSIENBVVNFRCBBTkQgT04gQU5ZIFRIRU9SWSBPRiBMSUFCSUxJVFksIFdIRVRIRVIgSU4K
KyAqIENPTlRSQUNULCBTVFJJQ1QgTElBQklMSVRZLCBPUiBUT1JUIChJTkNMVURJTkcgTkVHTElH
RU5DRSBPUiBPVEhFUldJU0UpCisgKiBBUklTSU5HIElOIEFOWSBXQVkgT1VUIE9GIFRIRSBVU0Ug
T0YgVEhJUyBTT0ZUV0FSRSwgRVZFTiBJRiBBRFZJU0VEIE9GCisgKiBUSEUgUE9TU0lCSUxJVFkg
T0YgU1VDSCBEQU1BR0UuCisgKi8KKworI2lmbmRlZiBXZWJQb3B1cE1lbnVDbGllbnRfaAorI2Rl
ZmluZSBXZWJQb3B1cE1lbnVDbGllbnRfaAorCisjaW5jbHVkZSAiQVBJQ2xpZW50LmgiCisjaW5j
bHVkZSAiQVBJT2JqZWN0LmgiCisjaW5jbHVkZSAiV0tQb3B1cE1lbnUuaCIKKyNpbmNsdWRlIDxX
ZWJDb3JlL0ludFJlY3QuaD4KKyNpbmNsdWRlIDxXZWJDb3JlL1RleHREaXJlY3Rpb24uaD4KKwor
bmFtZXNwYWNlIFdlYktpdCB7CisKK2NsYXNzIFdlYlBvcHVwTWVudVByb3h5RWZsOworY2xhc3Mg
V2ViVVJMOworCitjbGFzcyBXZWJQb3B1cE1lbnVDbGllbnQgOiBwdWJsaWMgQVBJQ2xpZW50PFdL
UG9wdXBNZW51Q2xpZW50LCBrV0tQb3B1cE1lbnVDbGllbnRDdXJyZW50VmVyc2lvbj4geworcHVi
bGljOgorICAgIHZvaWQgc2hvd1BvcHVwTWVudShXZWJQb3B1cE1lbnVQcm94eUVmbCosIGNvbnN0
IFdlYkNvcmU6OkludFJlY3QmLCBXZWJDb3JlOjpUZXh0RGlyZWN0aW9uLCBkb3VibGUgcGFnZVNj
YWxlRmFjdG9yLCBWZWN0b3I8UmVmUHRyPEFQSU9iamVjdD4gPiogaXRlbXMsIGludDMyX3Qgc2Vs
ZWN0ZWRJbmRleCk7CisgICAgdm9pZCBoaWRlUG9wdXBNZW51KFdlYlBvcHVwTWVudVByb3h5RWZs
Kik7Cit9OworCit9IC8vIG5hbWVzcGFjZSBXZWJLaXQKKyNlbmRpZiAvLyBXZWJQb3B1cE1lbnVD
bGllbnRfaApkaWZmIC0tZ2l0IGEvU291cmNlL1dlYktpdDIvVUlQcm9jZXNzL2VmbC9XZWJQb3B1
cE1lbnVQcm94eUVmbC5jcHAgYi9Tb3VyY2UvV2ViS2l0Mi9VSVByb2Nlc3MvZWZsL1dlYlBvcHVw
TWVudVByb3h5RWZsLmNwcAppbmRleCBhNTk1NTM3Li5iZWMyMjZmIDEwMDY0NAotLS0gYS9Tb3Vy
Y2UvV2ViS2l0Mi9VSVByb2Nlc3MvZWZsL1dlYlBvcHVwTWVudVByb3h5RWZsLmNwcAorKysgYi9T
b3VyY2UvV2ViS2l0Mi9VSVByb2Nlc3MvZWZsL1dlYlBvcHVwTWVudVByb3h5RWZsLmNwcApAQCAt
MjYsMzUgKzI2LDQ4IEBACiAjaW5jbHVkZSAiY29uZmlnLmgiCiAjaW5jbHVkZSAiV2ViUG9wdXBN
ZW51UHJveHlFZmwuaCIKIAotI2luY2x1ZGUgIkV3a1ZpZXcuaCIKLSNpbmNsdWRlICJOYXRpdmVX
ZWJNb3VzZUV2ZW50LmgiCisjaW5jbHVkZSAiV0tBUElDYXN0LmgiCiAjaW5jbHVkZSAiV2ViUG9w
dXBJdGVtLmgiCi0jaW5jbHVkZSAiZXdrX3ZpZXcuaCIKLSNpbmNsdWRlIDx3dGYvdGV4dC9DU3Ry
aW5nLmg+CisjaW5jbHVkZSAiV2ViUG9wdXBJdGVtRWZsLmgiCisjaW5jbHVkZSAiV2ViUG9wdXBN
ZW51Q2xpZW50LmgiCiAKIHVzaW5nIG5hbWVzcGFjZSBXZWJDb3JlOwogCiBuYW1lc3BhY2UgV2Vi
S2l0IHsKIAotV2ViUG9wdXBNZW51UHJveHlFZmw6OldlYlBvcHVwTWVudVByb3h5RWZsKEV3a1Zp
ZXcqIHZpZXcsIFdlYlBvcHVwTWVudVByb3h5OjpDbGllbnQqIGNsaWVudCkKK1dlYlBvcHVwTWVu
dVByb3h5RWZsOjpXZWJQb3B1cE1lbnVQcm94eUVmbChXZWJQb3B1cE1lbnVQcm94eTo6Q2xpZW50
KiBjbGllbnQpCiAgICAgOiBXZWJQb3B1cE1lbnVQcm94eShjbGllbnQpCi0gICAgLCBtX3ZpZXco
dmlldykKIHsKIH0KIAordm9pZCBXZWJQb3B1cE1lbnVQcm94eUVmbDo6aW5pdGlhbGl6ZUNsaWVu
dChjb25zdCBXS1BvcHVwTWVudUNsaWVudCogY2xpZW50KQoreworICAgIG1fcG9wdXBDbGllbnQu
aW5pdGlhbGl6ZShjbGllbnQpOworfQorCiB2b2lkIFdlYlBvcHVwTWVudVByb3h5RWZsOjpzaG93
UG9wdXBNZW51KGNvbnN0IEludFJlY3QmIHJlY3QsIFRleHREaXJlY3Rpb24gdGV4dERpcmVjdGlv
biwgZG91YmxlIHBhZ2VTY2FsZUZhY3RvciwgY29uc3QgVmVjdG9yPFdlYlBvcHVwSXRlbT4mIGl0
ZW1zLCBjb25zdCBQbGF0Zm9ybVBvcHVwTWVudURhdGEmLCBpbnQzMl90IHNlbGVjdGVkSW5kZXgp
CiB7Ci0gICAgbV92aWV3LT5yZXF1ZXN0UG9wdXBNZW51KHRoaXMsIHJlY3QsIHRleHREaXJlY3Rp
b24sIHBhZ2VTY2FsZUZhY3RvciwgaXRlbXMsIHNlbGVjdGVkSW5kZXgpOworICAgIFZlY3RvcjxS
ZWZQdHI8QVBJT2JqZWN0PiA+IHdlYlBvcHVwSXRlbXM7CisgICAgc2l6ZV90IHNpemUgPSBpdGVt
cy5zaXplKCk7CisgICAgZm9yIChzaXplX3QgaSA9IDA7IGkgPCBzaXplOyArK2kpCisgICAgICAg
IHdlYlBvcHVwSXRlbXMuYXBwZW5kKFdlYlBvcHVwSXRlbUVmbDo6Y3JlYXRlKGl0ZW1zW2ldKSk7
CisKKyAgICBtX3BvcHVwQ2xpZW50LnNob3dQb3B1cE1lbnUodGhpcywgcmVjdCwgdGV4dERpcmVj
dGlvbiwgcGFnZVNjYWxlRmFjdG9yLCAmd2ViUG9wdXBJdGVtcywgc2VsZWN0ZWRJbmRleCk7CiB9
CiAKIHZvaWQgV2ViUG9wdXBNZW51UHJveHlFZmw6OmhpZGVQb3B1cE1lbnUoKQogewotICAgIG1f
dmlldy0+Y2xvc2VQb3B1cE1lbnUoKTsKKyAgICBtX3BvcHVwQ2xpZW50LmhpZGVQb3B1cE1lbnUo
dGhpcyk7CisgICAgaW52YWxpZGF0ZSgpOwogfQogCiB2b2lkIFdlYlBvcHVwTWVudVByb3h5RWZs
Ojp2YWx1ZUNoYW5nZWQoaW50IG5ld1NlbGVjdGVkSW5kZXgpCiB7CisgICAgaWYgKCFtX2NsaWVu
dCkKKyAgICAgICAgcmV0dXJuOworCiAgICAgbV9jbGllbnQtPnZhbHVlQ2hhbmdlZEZvclBvcHVw
TWVudSh0aGlzLCBuZXdTZWxlY3RlZEluZGV4KTsKKyAgICBpbnZhbGlkYXRlKCk7CiB9CiAKIH0g
Ly8gbmFtZXNwYWNlIFdlYktpdApkaWZmIC0tZ2l0IGEvU291cmNlL1dlYktpdDIvVUlQcm9jZXNz
L2VmbC9XZWJQb3B1cE1lbnVQcm94eUVmbC5oIGIvU291cmNlL1dlYktpdDIvVUlQcm9jZXNzL2Vm
bC9XZWJQb3B1cE1lbnVQcm94eUVmbC5oCmluZGV4IDAxOTMzYzMuLjI4ZmRmNTIgMTAwNjQ0Ci0t
LSBhL1NvdXJjZS9XZWJLaXQyL1VJUHJvY2Vzcy9lZmwvV2ViUG9wdXBNZW51UHJveHlFZmwuaAor
KysgYi9Tb3VyY2UvV2ViS2l0Mi9VSVByb2Nlc3MvZWZsL1dlYlBvcHVwTWVudVByb3h5RWZsLmgK
QEAgLTI2LDM0ICsyNiwzNCBAQAogI2lmbmRlZiBXZWJQb3B1cE1lbnVQcm94eUVmbF9oCiAjZGVm
aW5lIFdlYlBvcHVwTWVudVByb3h5RWZsX2gKIAorI2luY2x1ZGUgIldlYlBvcHVwTWVudUNsaWVu
dC5oIgogI2luY2x1ZGUgIldlYlBvcHVwTWVudVByb3h5LmgiCisjaW5jbHVkZSA8d3RmL093blB0
ci5oPgogCiBuYW1lc3BhY2UgV2ViQ29yZSB7CiBjbGFzcyBJbnRSZWN0OwogfQogCi1jbGFzcyBF
d2tWaWV3OwotCiBuYW1lc3BhY2UgV2ViS2l0IHsKIAotY2xhc3MgV2ViUGFnZVByb3h5OwotCiBj
bGFzcyBXZWJQb3B1cE1lbnVQcm94eUVmbCA6IHB1YmxpYyBXZWJQb3B1cE1lbnVQcm94eSB7CiBw
dWJsaWM6Ci0gICAgc3RhdGljIFBhc3NSZWZQdHI8V2ViUG9wdXBNZW51UHJveHlFZmw+IGNyZWF0
ZShFd2tWaWV3KiB2aWV3SW1wbCwgV2ViUG9wdXBNZW51UHJveHk6OkNsaWVudCogY2xpZW50KQor
ICAgIHN0YXRpYyBQYXNzUmVmUHRyPFdlYlBvcHVwTWVudVByb3h5RWZsPiBjcmVhdGUoV2ViUG9w
dXBNZW51UHJveHk6OkNsaWVudCogY2xpZW50KQogICAgIHsKLSAgICAgICAgcmV0dXJuIGFkb3B0
UmVmKG5ldyBXZWJQb3B1cE1lbnVQcm94eUVmbCh2aWV3SW1wbCwgY2xpZW50KSk7CisgICAgICAg
IHJldHVybiBhZG9wdFJlZihuZXcgV2ViUG9wdXBNZW51UHJveHlFZmwoY2xpZW50KSk7CiAgICAg
fQogCiAgICAgdm9pZCBzaG93UG9wdXBNZW51KGNvbnN0IFdlYkNvcmU6OkludFJlY3QmLCBXZWJD
b3JlOjpUZXh0RGlyZWN0aW9uLCBkb3VibGUgcGFnZVNjYWxlRmFjdG9yLCBjb25zdCBWZWN0b3I8
V2ViUG9wdXBJdGVtPiYsIGNvbnN0IFBsYXRmb3JtUG9wdXBNZW51RGF0YSYsIGludDMyX3Qgc2Vs
ZWN0ZWRJbmRleCk7CiAgICAgdm9pZCBoaWRlUG9wdXBNZW51KCk7CiAKKyAgICB2b2lkIGluaXRp
YWxpemVDbGllbnQoY29uc3QgV0tQb3B1cE1lbnVDbGllbnQqKTsKKwogICAgIHZvaWQgdmFsdWVD
aGFuZ2VkKGludCBuZXdTZWxlY3RlZEluZGV4KTsKIAogcHJpdmF0ZToKLSAgICBXZWJQb3B1cE1l
bnVQcm94eUVmbChFd2tWaWV3KiwgV2ViUG9wdXBNZW51UHJveHk6OkNsaWVudCopOworICAgIFdl
YlBvcHVwTWVudVByb3h5RWZsKFdlYlBvcHVwTWVudVByb3h5OjpDbGllbnQqKTsKIAotICAgIEV3
a1ZpZXcqIG1fdmlldzsKKyAgICBXZWJQb3B1cE1lbnVDbGllbnQgbV9wb3B1cENsaWVudDsKIH07
CiAKIH0gLy8gbmFtZXNwYWNlIFdlYktpdAo=
</data>

          </attachment>
          <attachment
              isobsolete="1"
              ispatch="1"
              isprivate="0"
          >
            <attachid>187110</attachid>
            <date>2013-02-07 07:43:55 -0800</date>
            <delta_ts>2013-02-18 13:44:28 -0800</delta_ts>
            <desc>Patch</desc>
            <filename>109083_popup_menu_capi.patch</filename>
            <type>text/plain</type>
            <size>58523</size>
            <attacher name="Chris Dumez">cdumez</attacher>
            
              <data encoding="base64">ZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJLaXQyL0NoYW5nZUxvZyBiL1NvdXJjZS9XZWJLaXQyL0No
YW5nZUxvZwppbmRleCAzMzljZDQzLi5kNTdhNzk5IDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViS2l0
Mi9DaGFuZ2VMb2cKKysrIGIvU291cmNlL1dlYktpdDIvQ2hhbmdlTG9nCkBAIC0xLDMgKzEsMTI4
IEBACisyMDEzLTAyLTA3ICBDaHJpc3RvcGhlIER1bWV6ICA8Y2guZHVtZXpAc2lzYS5zYW1zdW5n
LmNvbT4KKworICAgICAgICBbRUZMXVtXSzJdIEFkZCBDIEFQSSBmb3IgcG9wdXAgbWVudSBhbmQg
cG9wdXAgaXRlbQorICAgICAgICBodHRwczovL2J1Z3Mud2Via2l0Lm9yZy9zaG93X2J1Zy5jZ2k/
aWQ9MTA5MDgzCisKKyAgICAgICAgUmV2aWV3ZWQgYnkgTk9CT0RZIChPT1BTISkuCisKKyAgICAg
ICAgV0syIEVGTCBkZWxlZ2F0ZXMgZGlzcGxheSBvZiB0aGUgcG9wdXAgbWVudSB0byB0aGUgYnJv
d3NlciB3aGljaCBjYXVzZXMKKyAgICAgICAgdXMgdG8gaGF2ZSBhIHN0cm9uZyBpbnRlcmRlcGVu
ZGVuY3kgYmV0d2VlbiBpbnRlcm5hbCBDKysgY2xhc3NlcworICAgICAgICAoV2ViUG9wdXBNZW51
UHJveHlFZmwsIFdlYlBvcHVwSXRlbSkgYW5kIG91ciBFRkwgQVBJIGltcGxlbWVudGF0aW9uCisg
ICAgICAgIChFd2tWaWV3LCBFd2tQb3B1cE1lbnUsIEV3a1BvcHVwTWVudUl0ZW0pLgorCisgICAg
ICAgIFNpbmNlIHdlIHdhbnQgdG8gcmVtb3ZlIHRoaXMgaW50ZXJkZXBlbmRlbmN5LCB0aGlzIHBh
dGNoIGludHJvZHVjZXMgYQorICAgICAgICBmb3IgV2ViUG9wdXBNZW51UHJveHlFZmwgKFdLUG9w
dXBNZW51TGlzdGVuZXIpIGFuZCBmb3IgV2ViUG9wdXBJdGVtCisgICAgICAgIChXS1BvcHVwSXRl
bSkuIEl0IGFsc28gaW50cm9kdWNlcyBhIFdLUGFnZSBjbGllbnQgd2l0aCBjYWxsYmFja3MgZm9y
CisgICAgICAgIHNob3dQb3B1cE1lbnUgYW5kIGhpZGVQb3B1cE1lbnUuCisKKyAgICAgICAgTm90
ZSB0aGF0IHRoZSBwb3B1cCBtZW51IGZ1bmN0aW9uYWxpdHkgaXMgY292ZXJlZCBieSBld2tfcG9w
dXBfbWVudSBBUEkKKyAgICAgICAgdGVzdHMgYW5kIG5vIGZ1bmN0aW9uYWxpdHkgaXMgbG9zdC4K
KworICAgICAgICAqIFBsYXRmb3JtRWZsLmNtYWtlOiBBZGQgbmV3IGZpbGVzIHRvIEVGTCBDTWFr
ZSBjb25maWcuCisgICAgICAgICogU2hhcmVkL0FQSS9jL2VmbC9XS0Jhc2VFZmwuaDogQWRkIHR5
cGVkZWZzIGZvciBXS1BvcHVwSXRlbVJlZiBhbmQKKyAgICAgICAgV0tQb3B1cE1lbnVMaXN0ZW5l
clJlZi4KKyAgICAgICAgKiBTaGFyZWQvQVBJT2JqZWN0Lmg6IEFkZCBuZXcgVHlwZVBvcHVwTWVu
dUl0ZW0gQVBJT2JqZWN0IHR5cGUgZm9yIEVGTAorICAgICAgICBwbGF0Zm9ybS4KKyAgICAgICAg
KiBVSVByb2Nlc3MvQVBJL0MvZWZsL1dLQVBJQ2FzdEVmbC5oOiBBZGQgbWFwcGluZyBmb3IgV0tQ
b3B1cEl0ZW1SZWYKKyAgICAgICAgYW5kIFdLUG9wdXBNZW51TGlzdGVuZXJSZWYgQVBJIHR5cGVz
LgorICAgICAgICAoV2ViS2l0KToKKyAgICAgICAgKFdlYktpdDo6dG9BUEkpOgorICAgICAgICAq
IFVJUHJvY2Vzcy9BUEkvQy9lZmwvV0tQYWdlRWZsLmNwcDogQWRkZWQuCisgICAgICAgIChXS1Bh
Z2VTZXRVSVBvcHVwTWVudUNsaWVudCk6IEFkZCBuZXcgQyBBUEkgdG8gc2V0IHRoZSBVSSBQb3B1
cCBNZW51CisgICAgICAgIGNsaWVudCBvbiB0aGUgcGFnZS4KKyAgICAgICAgKiBVSVByb2Nlc3Mv
QVBJL0MvZWZsL1dLUGFnZUVmbC5oOiBBZGRlZC4KKyAgICAgICAgKiBVSVByb2Nlc3MvQVBJL0Mv
ZWZsL1dLUG9wdXBJdGVtLmNwcDogQWRkZWQuIEFkZCBDIEFQSSBmb3IgV2ViUG9wdXBJdGVtLgor
ICAgICAgICAoV0tQb3B1cEl0ZW1HZXRUeXBlKToKKyAgICAgICAgKFdLUG9wdXBJdGVtR2V0VGV4
dERpcmVjdGlvbik6CisgICAgICAgIChXS1BvcHVwSXRlbUhhc1RleHREaXJlY3Rpb25PdmVycmlk
ZSk6CisgICAgICAgIChXS1BvcHVwSXRlbUNvcHlUZXh0KToKKyAgICAgICAgKFdLUG9wdXBJdGVt
Q29weVRvb2xUaXBUZXh0KToKKyAgICAgICAgKFdLUG9wdXBJdGVtQ29weUFjY2Vzc2liaWxpdHlU
ZXh0KToKKyAgICAgICAgKFdLUG9wdXBJdGVtSXNFbmFibGVkKToKKyAgICAgICAgKFdLUG9wdXBJ
dGVtSXNMYWJlbCk6CisgICAgICAgIChXS1BvcHVwSXRlbUlzU2VsZWN0ZWQpOgorICAgICAgICAq
IFVJUHJvY2Vzcy9BUEkvQy9lZmwvV0tQb3B1cEl0ZW0uaDogQWRkZWQuCisgICAgICAgICogVUlQ
cm9jZXNzL0FQSS9DL2VmbC9XS1BvcHVwTWVudUxpc3RlbmVyLmNwcDogQWRkZWQuIEFkZCBDIEFQ
SSBmb3IKKyAgICAgICAgV2ViUG9wdXBNZW51TGlzdGVuZXJFZmwgKGZvcm1lcmx5IFdlYlBvcHVw
TWVudVByb3h5RWZsKSBzbyB0aGF0IHRoZQorICAgICAgICBjbGllbnQgY2FuIHJlcG9ydCB3aGlj
aCBwb3B1cCBtZW51IGl0ZW0gd2FzIHNlbGVjdGVkLgorICAgICAgICAoV0tQb3B1cE1lbnVMaXN0
ZW5lclNldFNlbGVjdGlvbik6CisgICAgICAgICogVUlQcm9jZXNzL0FQSS9DL2VmbC9XS1BvcHVw
TWVudUxpc3RlbmVyLmg6IEFkZGVkLgorICAgICAgICAqIFVJUHJvY2Vzcy9BUEkvZWZsL0V3a1Zp
ZXcuY3BwOiBSZW1vdmUgZGVwZW5kZW5jeSBvbiBpbnRlcm5hbCBDKysgdHlwZXMKKyAgICAgICAg
KFdlYlBvcHVwTWVudVByb3h5RWZsIGFuZCBXZWJQb3B1cEl0ZW0pIGFuZCB1c2UgQyBBUEkgdHlw
ZXMgaW5zdGVhZC4KKyAgICAgICAgKEV3a1ZpZXc6OnJlcXVlc3RQb3B1cE1lbnUpOgorICAgICAg
ICAqIFVJUHJvY2Vzcy9BUEkvZWZsL0V3a1ZpZXcuaDoKKyAgICAgICAgKFdlYktpdCk6CisgICAg
ICAgIChFd2tWaWV3KToKKyAgICAgICAgKiBVSVByb2Nlc3MvQVBJL2VmbC9ld2tfcG9wdXBfbWVu
dS5jcHA6IFVzZSBDIEFQSSBmb3IgUG9wdXAgbWVudS4KKyAgICAgICAgKEV3a1BvcHVwTWVudTo6
RXdrUG9wdXBNZW51KToKKyAgICAgICAgKEV3a1BvcHVwTWVudTo6c2V0U2VsZWN0ZWRJbmRleCk6
CisgICAgICAgICogVUlQcm9jZXNzL0FQSS9lZmwvZXdrX3BvcHVwX21lbnVfcHJpdmF0ZS5oOgor
ICAgICAgICAoRXdrUG9wdXBNZW51OjpjcmVhdGUpOgorICAgICAgICAoRXdrUG9wdXBNZW51KToK
KyAgICAgICAgKiBVSVByb2Nlc3MvV2ViUGFnZVByb3h5LmNwcDogVXNlIFdLUGFnZVVJUG9wdXBN
ZW51Q2xpZW50IHRvIHNob3cgLyBoaWRlCisgICAgICAgIHRoZSBwb3B1cCBtZW51IG9uIEVGTCBw
b3J0IGluc3RlYWQgb2YgYXNraW5nIHRoZSBXZWJQb3B1cE1lbnVQcm94eS4KKyAgICAgICAgKFdl
YktpdDo6V2ViUGFnZVByb3h5OjpjbG9zZSk6CisgICAgICAgIChXZWJLaXQ6OldlYlBhZ2VQcm94
eTo6c2hvd1BvcHVwTWVudSk6CisgICAgICAgIChXZWJLaXQ6OldlYlBhZ2VQcm94eTo6aGlkZVBv
cHVwTWVudSk6CisgICAgICAgICogVUlQcm9jZXNzL1dlYlBhZ2VQcm94eS5oOiBBZGQgbmV3IFdL
UGFnZVVJUG9wdXBNZW51Q2xpZW50IG1lbWJlciBhbmQKKyAgICAgICAgY29ycmVzcG9uZGluZyBp
bml0aWFsaXphdGlvbiBtZXRob2QuCisgICAgICAgIChXZWJQYWdlUHJveHkpOgorICAgICAgICAq
IFVJUHJvY2Vzcy9XZWJQb3B1cE1lbnVQcm94eS5oOiBEaXNhYmxlIHNob3dQb3B1cE1lbnUgLyBo
aWRlUG9wdXBNZW51CisgICAgICAgIHZpcnR1YWwgbWV0aG9kcyBvbiBFRkwgcG9ydCBzaW5jZSB3
ZSBnbyB2aWEgV0tQYWdlVUlQb3B1cE1lbnVDbGllbnQKKyAgICAgICAgZm9yIHRoaXMgbm93Lgor
ICAgICAgICAoV2ViUG9wdXBNZW51UHJveHkpOgorICAgICAgICAqIFVJUHJvY2Vzcy9lZmwvUGFn
ZUNsaWVudEJhc2UuY3BwOgorICAgICAgICAoV2ViS2l0OjpQYWdlQ2xpZW50QmFzZTo6Y3JlYXRl
UG9wdXBNZW51UHJveHkpOgorICAgICAgICAqIFVJUHJvY2Vzcy9lZmwvUGFnZVVJQ2xpZW50RWZs
LmNwcDoKKyAgICAgICAgKFdlYktpdDo6UGFnZVVJQ2xpZW50RWZsOjpQYWdlVUlDbGllbnRFZmwp
OiBIYW5kbGUgV0tQYWdlVUlQb3B1cE1lbnVDbGllbnQKKyAgICAgICAgY2FsbGJhY2tzIGFuZCBj
YWxsIGNvcnJlc3BvbmRpbmcgRXdrVmlldyBtZXRob2RzLiBQcmV2aW91c2x5LCB0aGUgRXdrVmll
dworICAgICAgICBtZXRob2RzIHdlcmUgY2FsbGVkIGJ5IHRoZSBpbnRlcm5hbCBXZWJQYWdlUHJv
eHlFZmwgY2xhc3Mgd2hpY2ggaXMgbm8KKyAgICAgICAgbG9uZ2VyIG5lZWRlZC4KKyAgICAgICAg
KFdlYktpdDo6UGFnZVVJQ2xpZW50RWZsOjpzaG93UG9wdXBNZW51KToKKyAgICAgICAgKFdlYktp
dCk6CisgICAgICAgIChXZWJLaXQ6OlBhZ2VVSUNsaWVudEVmbDo6aGlkZVBvcHVwTWVudSk6Cisg
ICAgICAgICogVUlQcm9jZXNzL2VmbC9QYWdlVUlDbGllbnRFZmwuaDoKKyAgICAgICAgKFBhZ2VV
SUNsaWVudEVmbCk6CisgICAgICAgICogVUlQcm9jZXNzL2VmbC9XZWJQYWdlUHJveHlFZmwuY3Bw
OgorICAgICAgICAoV2ViS2l0OjpXZWJQYWdlUHJveHk6OmluaXRpYWxpemVVSVBvcHVwTWVudUNs
aWVudCk6CisgICAgICAgIChXZWJLaXQpOgorICAgICAgICAqIFVJUHJvY2Vzcy9lZmwvV2ViUG9w
dXBJdGVtRWZsLmNwcDogQWRkZWQuIEFkZCBBUElPYmplY3Qgd3JhcHBlciBmb3IKKyAgICAgICAg
V2ViUG9wdXBJdGVtIHNvIHRoYXQgd2UgY2FuIHVzZSBpdCBpbiBXS1BhZ2VVSVBvcHVwTWVudUNs
aWVudC4KKyAgICAgICAgKFdlYktpdCk6CisgICAgICAgIChXZWJLaXQ6OldlYlBvcHVwSXRlbUVm
bDo6V2ViUG9wdXBJdGVtRWZsKToKKyAgICAgICAgKFdlYktpdDo6V2ViUG9wdXBJdGVtRWZsOjp+
V2ViUG9wdXBJdGVtRWZsKToKKyAgICAgICAgKiBVSVByb2Nlc3MvZWZsL1dlYlBvcHVwSXRlbUVm
bC5oOiBBZGRlZC4KKyAgICAgICAgKFdlYktpdCk6CisgICAgICAgIChXZWJQb3B1cEl0ZW1FZmwp
OgorICAgICAgICAoV2ViS2l0OjpXZWJQb3B1cEl0ZW1FZmw6OmNyZWF0ZSk6CisgICAgICAgIChX
ZWJLaXQ6OldlYlBvcHVwSXRlbUVmbDo6ZGF0YSk6CisgICAgICAgIChXZWJLaXQ6OldlYlBvcHVw
SXRlbUVmbDo6aXRlbVR5cGUpOgorICAgICAgICAoV2ViS2l0OjpXZWJQb3B1cEl0ZW1FZmw6OnRl
eHQpOgorICAgICAgICAoV2ViS2l0OjpXZWJQb3B1cEl0ZW1FZmw6OnRleHREaXJlY3Rpb24pOgor
ICAgICAgICAoV2ViS2l0OjpXZWJQb3B1cEl0ZW1FZmw6Omhhc1RleHREaXJlY3Rpb25PdmVycmlk
ZSk6CisgICAgICAgIChXZWJLaXQ6OldlYlBvcHVwSXRlbUVmbDo6dG9vbFRpcFRleHQpOgorICAg
ICAgICAoV2ViS2l0OjpXZWJQb3B1cEl0ZW1FZmw6OmFjY2Vzc2liaWxpdHlUZXh0KToKKyAgICAg
ICAgKFdlYktpdDo6V2ViUG9wdXBJdGVtRWZsOjppc0VuYWJsZWQpOgorICAgICAgICAoV2ViS2l0
OjpXZWJQb3B1cEl0ZW1FZmw6OmlzTGFiZWwpOgorICAgICAgICAoV2ViS2l0OjpXZWJQb3B1cEl0
ZW1FZmw6OmlzU2VsZWN0ZWQpOgorICAgICAgICAoV2ViS2l0OjpXZWJQb3B1cEl0ZW1FZmw6OnR5
cGUpOgorICAgICAgICAqIFVJUHJvY2Vzcy9lZmwvV2ViUG9wdXBNZW51TGlzdGVuZXJFZmwuY3Bw
OiBSZW5hbWVkIGZyb20gU291cmNlL1dlYktpdDIvVUlQcm9jZXNzL2VmbC9XZWJQb3B1cE1lbnVQ
cm94eUVmbC5jcHAuCisgICAgICAgIFVzZSBXZWJQb3B1cE1lbnVMaXN0ZW5lckVmbCBuYW1lIGlu
c3RlYWQgb2YgV2ViUG9wdXBNZW51UHJveHlFZmwgc2luY2UKKyAgICAgICAgaXQgbW9yZSBhY2N1
cmF0ZWx5IHJlcHJlc2VudHMgaXRzIGZ1bmN0aW9uYWxpdHkgbm93LgorICAgICAgICAoV2ViS2l0
KToKKyAgICAgICAgKFdlYktpdDo6V2ViUG9wdXBNZW51TGlzdGVuZXJFZmw6OldlYlBvcHVwTWVu
dUxpc3RlbmVyRWZsKToKKyAgICAgICAgKFdlYktpdDo6V2ViUG9wdXBNZW51TGlzdGVuZXJFZmw6
OnZhbHVlQ2hhbmdlZCk6CisgICAgICAgICogVUlQcm9jZXNzL2VmbC9XZWJQb3B1cE1lbnVMaXN0
ZW5lckVmbC5oOiBSZW5hbWVkIGZyb20gU291cmNlL1dlYktpdDIvVUlQcm9jZXNzL2VmbC9XZWJQ
b3B1cE1lbnVQcm94eUVmbC5oLgorICAgICAgICAoV2ViS2l0KToKKyAgICAgICAgKFdlYlBvcHVw
TWVudUxpc3RlbmVyRWZsKToKKyAgICAgICAgKFdlYktpdDo6V2ViUG9wdXBNZW51TGlzdGVuZXJF
Zmw6OmNyZWF0ZSk6CisgICAgICAgICogVUlQcm9jZXNzL2VmbC9XZWJVSVBvcHVwTWVudUNsaWVu
dC5jcHA6IEFkZGVkLgorICAgICAgICAoV2ViVUlQb3B1cE1lbnVDbGllbnQ6OnNob3dQb3B1cE1l
bnUpOgorICAgICAgICAoV2ViVUlQb3B1cE1lbnVDbGllbnQ6OmhpZGVQb3B1cE1lbnUpOgorICAg
ICAgICAqIFVJUHJvY2Vzcy9lZmwvV2ViVUlQb3B1cE1lbnVDbGllbnQuaDogQWRkZWQuCisgICAg
ICAgIChXZWJLaXQpOgorICAgICAgICAoV2ViVUlQb3B1cE1lbnVDbGllbnQpOgorCiAyMDEzLTAy
LTA3ICBHeXV5b3VuZyBLaW0gIDxneXV5b3VuZy5raW1Ac2Ftc3VuZy5jb20+CiAKICAgICAgICAg
VW5yZXZpZXdlZCBidWlsZCBmaXguCmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViS2l0Mi9QbGF0Zm9y
bUVmbC5jbWFrZSBiL1NvdXJjZS9XZWJLaXQyL1BsYXRmb3JtRWZsLmNtYWtlCmluZGV4IGY2Y2Ux
NzYuLjE1YmIzNWYgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJLaXQyL1BsYXRmb3JtRWZsLmNtYWtl
CisrKyBiL1NvdXJjZS9XZWJLaXQyL1BsYXRmb3JtRWZsLmNtYWtlCkBAIC0zNyw2ICszNyw5IEBA
IGxpc3QoQVBQRU5EIFdlYktpdDJfU09VUkNFUwogCiAgICAgVUlQcm9jZXNzL0FQSS9DL2NhaXJv
L1dLSWNvbkRhdGFiYXNlQ2Fpcm8uY3BwCiAKKyAgICBVSVByb2Nlc3MvQVBJL0MvZWZsL1dLUGFn
ZUVmbC5jcHAKKyAgICBVSVByb2Nlc3MvQVBJL0MvZWZsL1dLUG9wdXBJdGVtLmNwcAorICAgIFVJ
UHJvY2Vzcy9BUEkvQy9lZmwvV0tQb3B1cE1lbnVMaXN0ZW5lci5jcHAKICAgICBVSVByb2Nlc3Mv
QVBJL0MvZWZsL1dLVmlldy5jcHAKIAogICAgIFVJUHJvY2Vzcy9BUEkvY3BwL2VmbC9XS0VpbmFT
aGFyZWRTdHJpbmcuY3BwCkBAIC0xMDQsOSArMTA3LDExIEBAIGxpc3QoQVBQRU5EIFdlYktpdDJf
U09VUkNFUwogICAgIFVJUHJvY2Vzcy9lZmwvV2ViRnVsbFNjcmVlbk1hbmFnZXJQcm94eUVmbC5j
cHAKICAgICBVSVByb2Nlc3MvZWZsL1dlYkluc3BlY3RvclByb3h5RWZsLmNwcAogICAgIFVJUHJv
Y2Vzcy9lZmwvV2ViUGFnZVByb3h5RWZsLmNwcAotICAgIFVJUHJvY2Vzcy9lZmwvV2ViUG9wdXBN
ZW51UHJveHlFZmwuY3BwCisgICAgVUlQcm9jZXNzL2VmbC9XZWJQb3B1cEl0ZW1FZmwuY3BwCisg
ICAgVUlQcm9jZXNzL2VmbC9XZWJQb3B1cE1lbnVMaXN0ZW5lckVmbC5jcHAKICAgICBVSVByb2Nl
c3MvZWZsL1dlYlByZWZlcmVuY2VzRWZsLmNwcAogICAgIFVJUHJvY2Vzcy9lZmwvV2ViUHJvY2Vz
c1Byb3h5RWZsLmNwcAorICAgIFVJUHJvY2Vzcy9lZmwvV2ViVUlQb3B1cE1lbnVDbGllbnQuY3Bw
CiAgICAgVUlQcm9jZXNzL2VmbC9XZWJWaWV3LmNwcAogCiAgICAgVUlQcm9jZXNzL0luc3BlY3Rv
clNlcnZlci9lZmwvV2ViSW5zcGVjdG9yU2VydmVyRWZsLmNwcApkaWZmIC0tZ2l0IGEvU291cmNl
L1dlYktpdDIvU2hhcmVkL0FQSS9jL2VmbC9XS0Jhc2VFZmwuaCBiL1NvdXJjZS9XZWJLaXQyL1No
YXJlZC9BUEkvYy9lZmwvV0tCYXNlRWZsLmgKaW5kZXggNjE4NGM4MS4uNzJmYmZkMyAxMDA2NDQK
LS0tIGEvU291cmNlL1dlYktpdDIvU2hhcmVkL0FQSS9jL2VmbC9XS0Jhc2VFZmwuaAorKysgYi9T
b3VyY2UvV2ViS2l0Mi9TaGFyZWQvQVBJL2MvZWZsL1dLQmFzZUVmbC5oCkBAIC0yNSw1ICsyNSw3
IEBACiAjZW5kaWYKIAogdHlwZWRlZiBjb25zdCBzdHJ1Y3QgT3BhcXVlV0tWaWV3KiBXS1ZpZXdS
ZWY7Cit0eXBlZGVmIGNvbnN0IHN0cnVjdCBPcGFxdWVXS1BvcHVwSXRlbSogV0tQb3B1cEl0ZW1S
ZWY7Cit0eXBlZGVmIGNvbnN0IHN0cnVjdCBPcGFxdWVXS1BvcHVwTWVudUxpc3RlbmVyKiBXS1Bv
cHVwTWVudUxpc3RlbmVyUmVmOwogCiAjZW5kaWYgLyogV0tCYXNlRWZsX2ggKi8KZGlmZiAtLWdp
dCBhL1NvdXJjZS9XZWJLaXQyL1NoYXJlZC9BUElPYmplY3QuaCBiL1NvdXJjZS9XZWJLaXQyL1No
YXJlZC9BUElPYmplY3QuaAppbmRleCA4NTlmYjhlLi41ZWNlYjU2MiAxMDA2NDQKLS0tIGEvU291
cmNlL1dlYktpdDIvU2hhcmVkL0FQSU9iamVjdC5oCisrKyBiL1NvdXJjZS9XZWJLaXQyL1NoYXJl
ZC9BUElPYmplY3QuaApAQCAtMTMzLDYgKzEzMyw5IEBAIHB1YmxpYzoKICNpZiBVU0UoU09VUCkK
ICAgICAgICAgVHlwZVNvdXBSZXF1ZXN0TWFuYWdlciwKICNlbmRpZgorI2lmIFBMQVRGT1JNKEVG
TCkKKyAgICAgICAgVHlwZVBvcHVwTWVudUl0ZW0sCisjZW5kaWYKICAgICB9OwogCiAgICAgdmly
dHVhbCB+QVBJT2JqZWN0KCkKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJLaXQyL1VJUHJvY2Vzcy9B
UEkvQy9lZmwvV0tBUElDYXN0RWZsLmggYi9Tb3VyY2UvV2ViS2l0Mi9VSVByb2Nlc3MvQVBJL0Mv
ZWZsL1dLQVBJQ2FzdEVmbC5oCmluZGV4IDE4ODlmYzQuLmQzYmNhOTIgMTAwNjQ0Ci0tLSBhL1Nv
dXJjZS9XZWJLaXQyL1VJUHJvY2Vzcy9BUEkvQy9lZmwvV0tBUElDYXN0RWZsLmgKKysrIGIvU291
cmNlL1dlYktpdDIvVUlQcm9jZXNzL0FQSS9DL2VmbC9XS0FQSUNhc3RFZmwuaApAQCAtMjQsMTEg
KzI0LDM1IEBACiAjZXJyb3IgIlBsZWFzZSAjaW5jbHVkZSBcIldLQVBJQ2FzdC5oXCIgaW5zdGVh
ZCBvZiB0aGlzIGZpbGUgZGlyZWN0bHkuIgogI2VuZGlmCiAKKyNpbmNsdWRlIDxXZWJDb3JlL1Rl
eHREaXJlY3Rpb24uaD4KKyNpbmNsdWRlIDxXZWJLaXQyL1dLUG9wdXBJdGVtLmg+CisKIG5hbWVz
cGFjZSBXZWJLaXQgewogCiBjbGFzcyBXZWJWaWV3OworY2xhc3MgV2ViUG9wdXBJdGVtRWZsOwor
Y2xhc3MgV2ViUG9wdXBNZW51TGlzdGVuZXJFZmw7CiAKIFdLX0FERF9BUElfTUFQUElORyhXS1Zp
ZXdSZWYsIFdlYlZpZXcpCitXS19BRERfQVBJX01BUFBJTkcoV0tQb3B1cEl0ZW1SZWYsIFdlYlBv
cHVwSXRlbUVmbCkKK1dLX0FERF9BUElfTUFQUElORyhXS1BvcHVwTWVudUxpc3RlbmVyUmVmLCBX
ZWJQb3B1cE1lbnVMaXN0ZW5lckVmbCkKKworLy8gRW51bSBjb252ZXJzaW9ucy4KK2lubGluZSBX
S1BvcHVwSXRlbVRleHREaXJlY3Rpb24gdG9BUEkoV2ViQ29yZTo6VGV4dERpcmVjdGlvbiBkaXJl
Y3Rpb24pCit7CisgICAgV0tQb3B1cEl0ZW1UZXh0RGlyZWN0aW9uIHdrRGlyZWN0aW9uID0ga1dL
UG9wdXBJdGVtVGV4dERpcmVjdGlvbkxUUjsKKworICAgIHN3aXRjaCAoZGlyZWN0aW9uKSB7Cisg
ICAgY2FzZSBXZWJDb3JlOjpSVEw6CisgICAgICAgIHdrRGlyZWN0aW9uID0ga1dLUG9wdXBJdGVt
VGV4dERpcmVjdGlvblJUTDsKKyAgICAgICAgYnJlYWs7CisgICAgY2FzZSBXZWJDb3JlOjpMVFI6
CisgICAgICAgIHdrRGlyZWN0aW9uID0ga1dLUG9wdXBJdGVtVGV4dERpcmVjdGlvbkxUUjsKKyAg
ICAgICAgYnJlYWs7CisgICAgfQorCisgICAgcmV0dXJuIHdrRGlyZWN0aW9uOworfQogCiB9CiAK
ZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJLaXQyL1VJUHJvY2Vzcy9BUEkvQy9lZmwvV0tQYWdlRWZs
LmNwcCBiL1NvdXJjZS9XZWJLaXQyL1VJUHJvY2Vzcy9BUEkvQy9lZmwvV0tQYWdlRWZsLmNwcApu
ZXcgZmlsZSBtb2RlIDEwMDY0NAppbmRleCAwMDAwMDAwLi4yZDVlYzkxCi0tLSAvZGV2L251bGwK
KysrIGIvU291cmNlL1dlYktpdDIvVUlQcm9jZXNzL0FQSS9DL2VmbC9XS1BhZ2VFZmwuY3BwCkBA
IC0wLDAgKzEsMzcgQEAKKy8qCisgKiBDb3B5cmlnaHQgKEMpIDIwMTMgU2Ftc3VuZyBFbGVjdHJv
bmljcy4gQWxsIHJpZ2h0cyByZXNlcnZlZC4KKyAqCisgKiBSZWRpc3RyaWJ1dGlvbiBhbmQgdXNl
IGluIHNvdXJjZSBhbmQgYmluYXJ5IGZvcm1zLCB3aXRoIG9yIHdpdGhvdXQKKyAqIG1vZGlmaWNh
dGlvbiwgYXJlIHBlcm1pdHRlZCBwcm92aWRlZCB0aGF0IHRoZSBmb2xsb3dpbmcgY29uZGl0aW9u
cworICogYXJlIG1ldDoKKyAqIDEuIFJlZGlzdHJpYnV0aW9ucyBvZiBzb3VyY2UgY29kZSBtdXN0
IHJldGFpbiB0aGUgYWJvdmUgY29weXJpZ2h0CisgKiAgICBub3RpY2UsIHRoaXMgbGlzdCBvZiBj
b25kaXRpb25zIGFuZCB0aGUgZm9sbG93aW5nIGRpc2NsYWltZXIuCisgKiAyLiBSZWRpc3RyaWJ1
dGlvbnMgaW4gYmluYXJ5IGZvcm0gbXVzdCByZXByb2R1Y2UgdGhlIGFib3ZlIGNvcHlyaWdodAor
ICogICAgbm90aWNlLCB0aGlzIGxpc3Qgb2YgY29uZGl0aW9ucyBhbmQgdGhlIGZvbGxvd2luZyBk
aXNjbGFpbWVyIGluIHRoZQorICogICAgZG9jdW1lbnRhdGlvbiBhbmQvb3Igb3RoZXIgbWF0ZXJp
YWxzIHByb3ZpZGVkIHdpdGggdGhlIGRpc3RyaWJ1dGlvbi4KKyAqCisgKiBUSElTIFNPRlRXQVJF
IElTIFBST1ZJREVEIEJZIEFQUExFIElOQy4gQU5EIElUUyBDT05UUklCVVRPUlMgYGBBUyBJUycn
CisgKiBBTkQgQU5ZIEVYUFJFU1MgT1IgSU1QTElFRCBXQVJSQU5USUVTLCBJTkNMVURJTkcsIEJV
VCBOT1QgTElNSVRFRCBUTywKKyAqIFRIRSBJTVBMSUVEIFdBUlJBTlRJRVMgT0YgTUVSQ0hBTlRB
d0JJTElUWSBBTkQgRklUTkVTUyBGT1IgQSBQQVJUSUNVTEFSCisgKiBQVVJQT1NFIEFSRSBESVND
TEFJTUVELiBJTiBOTyBFVkVOVCBTSEFMTCBBUFBMRSBJTkMuIE9SIElUUyBDT05UUklCVVRPUlMK
KyAqIEJFIExJQUJMRSBGT1IgQU5ZIERJUkVDVCwgSU5ESVJFQ1QsIElOQ0lERU5UQUwsIFNQRUNJ
QUwsIEVYRU1QTEFSWSwgT1IKKyAqIENPTlNFUVVFTlRJQUwgREFNQUdFUyAoSU5DTFVESU5HLCBC
VVQgTk9UIExJTUlURUQgVE8sIFBST0NVUkVNRU5UIE9GCisgKiBTVUJTVElUVVRFIEdPT0RTIE9S
IFNFUlZJQ0VTOyBMT1NTIE9GIFVTRSwgREFUQSwgT1IgUFJPRklUUzsgT1IgQlVTSU5FU1MKKyAq
IElOVEVSUlVQVElPTikgSE9XRVZFUiBDQVVTRUQgQU5EIE9OIEFOWSBUSEVPUlkgT0YgTElBQklM
SVRZLCBXSEVUSEVSIElOCisgKiBDT05UUkFDVCwgU1RSSUNUIExJQUJJTElUWSwgT1IgVE9SVCAo
SU5DTFVESU5HIE5FR0xJR0VOQ0UgT1IgT1RIRVJXSVNFKQorICogQVJJU0lORyBJTiBBTlkgV0FZ
IE9VVCBPRiBUSEUgVVNFIE9GIFRISVMgU09GVFdBUkUsIEVWRU4gSUYgQURWSVNFRCBPRgorICog
VEhFIFBPU1NJQklMSVRZIE9GIFNVQ0ggREFNQUdFLgorICovCisKKyNpbmNsdWRlICJjb25maWcu
aCIKKyNpbmNsdWRlICJXS1BhZ2VFZmwuaCIKKworI2luY2x1ZGUgIldLQVBJQ2FzdC5oIgorI2lu
Y2x1ZGUgIldlYlBhZ2VQcm94eS5oIgorCit1c2luZyBuYW1lc3BhY2UgV2ViS2l0OworCit2b2lk
IFdLUGFnZVNldFVJUG9wdXBNZW51Q2xpZW50KFdLUGFnZVJlZiBwYWdlUmVmLCBjb25zdCBXS1Bh
Z2VVSVBvcHVwTWVudUNsaWVudCogd2tDbGllbnQpCit7CisgICAgdG9JbXBsKHBhZ2VSZWYpLT5p
bml0aWFsaXplVUlQb3B1cE1lbnVDbGllbnQod2tDbGllbnQpOworfQpkaWZmIC0tZ2l0IGEvU291
cmNlL1dlYktpdDIvVUlQcm9jZXNzL0FQSS9DL2VmbC9XS1BhZ2VFZmwuaCBiL1NvdXJjZS9XZWJL
aXQyL1VJUHJvY2Vzcy9BUEkvQy9lZmwvV0tQYWdlRWZsLmgKbmV3IGZpbGUgbW9kZSAxMDA2NDQK
aW5kZXggMDAwMDAwMC4uNzdiOWQxNAotLS0gL2Rldi9udWxsCisrKyBiL1NvdXJjZS9XZWJLaXQy
L1VJUHJvY2Vzcy9BUEkvQy9lZmwvV0tQYWdlRWZsLmgKQEAgLTAsMCArMSw1NiBAQAorLyoKKyAq
IENvcHlyaWdodCAoQykgMjAxMyBTYW1zdW5nIEVsZWN0cm9uaWNzLiBBbGwgcmlnaHRzIHJlc2Vy
dmVkLgorICoKKyAqIFJlZGlzdHJpYnV0aW9uIGFuZCB1c2UgaW4gc291cmNlIGFuZCBiaW5hcnkg
Zm9ybXMsIHdpdGggb3Igd2l0aG91dAorICogbW9kaWZpY2F0aW9uLCBhcmUgcGVybWl0dGVkIHBy
b3ZpZGVkIHRoYXQgdGhlIGZvbGxvd2luZyBjb25kaXRpb25zCisgKiBhcmUgbWV0OgorICogMS4g
UmVkaXN0cmlidXRpb25zIG9mIHNvdXJjZSBjb2RlIG11c3QgcmV0YWluIHRoZSBhYm92ZSBjb3B5
cmlnaHQKKyAqICAgIG5vdGljZSwgdGhpcyBsaXN0IG9mIGNvbmRpdGlvbnMgYW5kIHRoZSBmb2xs
b3dpbmcgZGlzY2xhaW1lci4KKyAqIDIuIFJlZGlzdHJpYnV0aW9ucyBpbiBiaW5hcnkgZm9ybSBt
dXN0IHJlcHJvZHVjZSB0aGUgYWJvdmUgY29weXJpZ2h0CisgKiAgICBub3RpY2UsIHRoaXMgbGlz
dCBvZiBjb25kaXRpb25zIGFuZCB0aGUgZm9sbG93aW5nIGRpc2NsYWltZXIgaW4gdGhlCisgKiAg
ICBkb2N1bWVudGF0aW9uIGFuZC9vciBvdGhlciBtYXRlcmlhbHMgcHJvdmlkZWQgd2l0aCB0aGUg
ZGlzdHJpYnV0aW9uLgorICoKKyAqIFRISVMgU09GVFdBUkUgSVMgUFJPVklERUQgQlkgQVBQTEUg
SU5DLiBBTkQgSVRTIENPTlRSSUJVVE9SUyBgYEFTIElTJycKKyAqIEFORCBBTlkgRVhQUkVTUyBP
UiBJTVBMSUVEIFdBUlJBTlRJRVMsIElOQ0xVRElORywgQlVUIE5PVCBMSU1JVEVEIFRPLAorICog
VEhFIElNUExJRUQgV0FSUkFOVElFUyBPRiBNRVJDSEFOVEF3QklMSVRZIEFORCBGSVRORVNTIEZP
UiBBIFBBUlRJQ1VMQVIKKyAqIFBVUlBPU0UgQVJFIERJU0NMQUlNRUQuIElOIE5PIEVWRU5UIFNI
QUxMIEFQUExFIElOQy4gT1IgSVRTIENPTlRSSUJVVE9SUworICogQkUgTElBQkxFIEZPUiBBTlkg
RElSRUNULCBJTkRJUkVDVCwgSU5DSURFTlRBTCwgU1BFQ0lBTCwgRVhFTVBMQVJZLCBPUgorICog
Q09OU0VRVUVOVElBTCBEQU1BR0VTIChJTkNMVURJTkcsIEJVVCBOT1QgTElNSVRFRCBUTywgUFJP
Q1VSRU1FTlQgT0YKKyAqIFNVQlNUSVRVVEUgR09PRFMgT1IgU0VSVklDRVM7IExPU1MgT0YgVVNF
LCBEQVRBLCBPUiBQUk9GSVRTOyBPUiBCVVNJTkVTUworICogSU5URVJSVVBUSU9OKSBIT1dFVkVS
IENBVVNFRCBBTkQgT04gQU5ZIFRIRU9SWSBPRiBMSUFCSUxJVFksIFdIRVRIRVIgSU4KKyAqIENP
TlRSQUNULCBTVFJJQ1QgTElBQklMSVRZLCBPUiBUT1JUIChJTkNMVURJTkcgTkVHTElHRU5DRSBP
UiBPVEhFUldJU0UpCisgKiBBUklTSU5HIElOIEFOWSBXQVkgT1VUIE9GIFRIRSBVU0UgT0YgVEhJ
UyBTT0ZUV0FSRSwgRVZFTiBJRiBBRFZJU0VEIE9GCisgKiBUSEUgUE9TU0lCSUxJVFkgT0YgU1VD
SCBEQU1BR0UuCisgKi8KKworI2lmbmRlZiBXS1BhZ2VFZmxfaAorI2RlZmluZSBXS1BhZ2VFZmxf
aAorCisjaW5jbHVkZSA8V2ViS2l0Mi9XS0Jhc2UuaD4KKyNpbmNsdWRlIDxXZWJLaXQyL1dLR2Vv
bWV0cnkuaD4KKyNpbmNsdWRlIDxXZWJLaXQyL1dLUG9wdXBJdGVtLmg+CisKKyNpZmRlZiBfX2Nw
bHVzcGx1cworZXh0ZXJuICJDIiB7CisjZW5kaWYKKwordHlwZWRlZiB2b2lkICgqV0tQYWdlU2hv
d1BvcHVwTWVudUNhbGxiYWNrKShXS1BhZ2VSZWYgcGFnZSwgV0tQb3B1cE1lbnVMaXN0ZW5lclJl
ZiBtZW51TGlzdGVuZXJSZWYsIFdLUmVjdCByZWN0LCBXS1BvcHVwSXRlbVRleHREaXJlY3Rpb24g
dGV4dERpcmVjdGlvbiwgZG91YmxlIHBhZ2VTY2FsZUZhY3RvciwgV0tBcnJheVJlZiBpdGVtc1Jl
ZiwgaW50MzJfdCBzZWxlY3RlZEluZGV4LCBjb25zdCB2b2lkKiBjbGllbnRJbmZvKTsKK3R5cGVk
ZWYgdm9pZCAoKldLUGFnZUhpZGVQb3B1cE1lbnVDYWxsYmFjaykoV0tQYWdlUmVmIHBhZ2UsIGNv
bnN0IHZvaWQqIGNsaWVudEluZm8pOworCitzdHJ1Y3QgV0tQYWdlVUlQb3B1cE1lbnVDbGllbnQg
eworICAgIGludCAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgdmVy
c2lvbjsKKyAgICBjb25zdCB2b2lkKiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg
IGNsaWVudEluZm87CisgICAgV0tQYWdlU2hvd1BvcHVwTWVudUNhbGxiYWNrICAgICAgICAgICAg
ICAgICAgICBzaG93UG9wdXBNZW51OworICAgIFdLUGFnZUhpZGVQb3B1cE1lbnVDYWxsYmFjayAg
ICAgICAgICAgICAgICAgICAgaGlkZVBvcHVwTWVudTsKK307Cit0eXBlZGVmIHN0cnVjdCBXS1Bh
Z2VVSVBvcHVwTWVudUNsaWVudCBXS1BhZ2VVSVBvcHVwTWVudUNsaWVudDsKKworZW51bSB7IGtX
S1BhZ2VVSVBvcHVwTWVudUNsaWVudEN1cnJlbnRWZXJzaW9uID0gMCB9OworCitXS19FWFBPUlQg
dm9pZCBXS1BhZ2VTZXRVSVBvcHVwTWVudUNsaWVudChXS1BhZ2VSZWYgcGFnZSwgY29uc3QgV0tQ
YWdlVUlQb3B1cE1lbnVDbGllbnQqIGNsaWVudCk7CisKKyNpZmRlZiBfX2NwbHVzcGx1cworfQor
I2VuZGlmCisKKyNlbmRpZiAvKiBXS1BhZ2VFZmxfaCAqLwpkaWZmIC0tZ2l0IGEvU291cmNlL1dl
YktpdDIvVUlQcm9jZXNzL0FQSS9DL2VmbC9XS1BvcHVwSXRlbS5jcHAgYi9Tb3VyY2UvV2ViS2l0
Mi9VSVByb2Nlc3MvQVBJL0MvZWZsL1dLUG9wdXBJdGVtLmNwcApuZXcgZmlsZSBtb2RlIDEwMDY0
NAppbmRleCAwMDAwMDAwLi43YjBlYTQ1Ci0tLSAvZGV2L251bGwKKysrIGIvU291cmNlL1dlYktp
dDIvVUlQcm9jZXNzL0FQSS9DL2VmbC9XS1BvcHVwSXRlbS5jcHAKQEAgLTAsMCArMSw5NCBAQAor
LyoKKyAqIENvcHlyaWdodCAoQykgMjAxMyBTYW1zdW5nIEVsZWN0cm9uaWNzLiBBbGwgcmlnaHRz
IHJlc2VydmVkLgorICoKKyAqIFJlZGlzdHJpYnV0aW9uIGFuZCB1c2UgaW4gc291cmNlIGFuZCBi
aW5hcnkgZm9ybXMsIHdpdGggb3Igd2l0aG91dAorICogbW9kaWZpY2F0aW9uLCBhcmUgcGVybWl0
dGVkIHByb3ZpZGVkIHRoYXQgdGhlIGZvbGxvd2luZyBjb25kaXRpb25zCisgKiBhcmUgbWV0Ogor
ICogMS4gUmVkaXN0cmlidXRpb25zIG9mIHNvdXJjZSBjb2RlIG11c3QgcmV0YWluIHRoZSBhYm92
ZSBjb3B5cmlnaHQKKyAqICAgIG5vdGljZSwgdGhpcyBsaXN0IG9mIGNvbmRpdGlvbnMgYW5kIHRo
ZSBmb2xsb3dpbmcgZGlzY2xhaW1lci4KKyAqIDIuIFJlZGlzdHJpYnV0aW9ucyBpbiBiaW5hcnkg
Zm9ybSBtdXN0IHJlcHJvZHVjZSB0aGUgYWJvdmUgY29weXJpZ2h0CisgKiAgICBub3RpY2UsIHRo
aXMgbGlzdCBvZiBjb25kaXRpb25zIGFuZCB0aGUgZm9sbG93aW5nIGRpc2NsYWltZXIgaW4gdGhl
CisgKiAgICBkb2N1bWVudGF0aW9uIGFuZC9vciBvdGhlciBtYXRlcmlhbHMgcHJvdmlkZWQgd2l0
aCB0aGUgZGlzdHJpYnV0aW9uLgorICoKKyAqIFRISVMgU09GVFdBUkUgSVMgUFJPVklERUQgQlkg
QVBQTEUgSU5DLiBBTkQgSVRTIENPTlRSSUJVVE9SUyBgYEFTIElTJycKKyAqIEFORCBBTlkgRVhQ
UkVTUyBPUiBJTVBMSUVEIFdBUlJBTlRJRVMsIElOQ0xVRElORywgQlVUIE5PVCBMSU1JVEVEIFRP
LAorICogVEhFIElNUExJRUQgV0FSUkFOVElFUyBPRiBNRVJDSEFOVEF3QklMSVRZIEFORCBGSVRO
RVNTIEZPUiBBIFBBUlRJQ1VMQVIKKyAqIFBVUlBPU0UgQVJFIERJU0NMQUlNRUQuIElOIE5PIEVW
RU5UIFNIQUxMIEFQUExFIElOQy4gT1IgSVRTIENPTlRSSUJVVE9SUworICogQkUgTElBQkxFIEZP
UiBBTlkgRElSRUNULCBJTkRJUkVDVCwgSU5DSURFTlRBTCwgU1BFQ0lBTCwgRVhFTVBMQVJZLCBP
UgorICogQ09OU0VRVUVOVElBTCBEQU1BR0VTIChJTkNMVURJTkcsIEJVVCBOT1QgTElNSVRFRCBU
TywgUFJPQ1VSRU1FTlQgT0YKKyAqIFNVQlNUSVRVVEUgR09PRFMgT1IgU0VSVklDRVM7IExPU1Mg
T0YgVVNFLCBEQVRBLCBPUiBQUk9GSVRTOyBPUiBCVVNJTkVTUworICogSU5URVJSVVBUSU9OKSBI
T1dFVkVSIENBVVNFRCBBTkQgT04gQU5ZIFRIRU9SWSBPRiBMSUFCSUxJVFksIFdIRVRIRVIgSU4K
KyAqIENPTlRSQUNULCBTVFJJQ1QgTElBQklMSVRZLCBPUiBUT1JUIChJTkNMVURJTkcgTkVHTElH
RU5DRSBPUiBPVEhFUldJU0UpCisgKiBBUklTSU5HIElOIEFOWSBXQVkgT1VUIE9GIFRIRSBVU0Ug
T0YgVEhJUyBTT0ZUV0FSRSwgRVZFTiBJRiBBRFZJU0VEIE9GCisgKiBUSEUgUE9TU0lCSUxJVFkg
T0YgU1VDSCBEQU1BR0UuCisgKi8KKworI2luY2x1ZGUgImNvbmZpZy5oIgorI2luY2x1ZGUgIldL
UG9wdXBJdGVtLmgiCisKKyNpbmNsdWRlICJXS0FQSUNhc3QuaCIKKyNpbmNsdWRlICJXZWJQb3B1
cEl0ZW1FZmwuaCIKKwordXNpbmcgbmFtZXNwYWNlIFdlYktpdDsKK3VzaW5nIG5hbWVzcGFjZSBX
ZWJDb3JlOworCitXS1BvcHVwSXRlbVR5cGUgV0tQb3B1cEl0ZW1HZXRUeXBlKFdLUG9wdXBJdGVt
UmVmIGl0ZW1SZWYpCit7CisgICAgc3dpdGNoICh0b0ltcGwoaXRlbVJlZiktPml0ZW1UeXBlKCkp
IHsKKyAgICBjYXNlIFdlYlBvcHVwSXRlbTo6U2VwYXJhdG9yOgorICAgICAgICByZXR1cm4ga1dL
UG9wdXBJdGVtVHlwZVNlcGFyYXRvcjsKKyAgICBjYXNlIFdlYlBvcHVwSXRlbTo6SXRlbToKKyAg
ICAgICAgcmV0dXJuIGtXS1BvcHVwSXRlbVR5cGVJdGVtOworICAgIGRlZmF1bHQ6CisgICAgICAg
IEFTU0VSVF9OT1RfUkVBQ0hFRCgpOworICAgICAgICByZXR1cm4ga1dLUG9wdXBJdGVtVHlwZUl0
ZW07CisgICAgfQorfQorCitXS1BvcHVwSXRlbVRleHREaXJlY3Rpb24gV0tQb3B1cEl0ZW1HZXRU
ZXh0RGlyZWN0aW9uKFdLUG9wdXBJdGVtUmVmIGl0ZW1SZWYpCit7CisgICAgc3dpdGNoICh0b0lt
cGwoaXRlbVJlZiktPnRleHREaXJlY3Rpb24oKSkgeworICAgIGNhc2UgUlRMOgorICAgICAgICBy
ZXR1cm4ga1dLUG9wdXBJdGVtVGV4dERpcmVjdGlvblJUTDsKKyAgICBjYXNlIExUUjoKKyAgICAg
ICAgcmV0dXJuIGtXS1BvcHVwSXRlbVRleHREaXJlY3Rpb25MVFI7CisgICAgZGVmYXVsdDoKKyAg
ICAgICAgQVNTRVJUX05PVF9SRUFDSEVEKCk7CisgICAgICAgIHJldHVybiBrV0tQb3B1cEl0ZW1U
ZXh0RGlyZWN0aW9uTFRSOworICAgIH0KK30KKworYm9vbCBXS1BvcHVwSXRlbUhhc1RleHREaXJl
Y3Rpb25PdmVycmlkZShXS1BvcHVwSXRlbVJlZiBpdGVtUmVmKQoreworICAgIHJldHVybiB0b0lt
cGwoaXRlbVJlZiktPmhhc1RleHREaXJlY3Rpb25PdmVycmlkZSgpOworfQorCitXS1N0cmluZ1Jl
ZiBXS1BvcHVwSXRlbUNvcHlUZXh0KFdLUG9wdXBJdGVtUmVmIGl0ZW1SZWYpCit7CisgICAgcmV0
dXJuIHRvQ29waWVkQVBJKHRvSW1wbChpdGVtUmVmKS0+dGV4dCgpKTsKK30KKworV0tTdHJpbmdS
ZWYgV0tQb3B1cEl0ZW1Db3B5VG9vbFRpcFRleHQoV0tQb3B1cEl0ZW1SZWYgaXRlbVJlZikKK3sK
KyAgICByZXR1cm4gdG9Db3BpZWRBUEkodG9JbXBsKGl0ZW1SZWYpLT50b29sVGlwVGV4dCgpKTsK
K30KKworV0tTdHJpbmdSZWYgV0tQb3B1cEl0ZW1Db3B5QWNjZXNzaWJpbGl0eVRleHQoV0tQb3B1
cEl0ZW1SZWYgaXRlbVJlZikKK3sKKyAgICByZXR1cm4gdG9Db3BpZWRBUEkodG9JbXBsKGl0ZW1S
ZWYpLT5hY2Nlc3NpYmlsaXR5VGV4dCgpKTsKK30KKworYm9vbCBXS1BvcHVwSXRlbUlzRW5hYmxl
ZChXS1BvcHVwSXRlbVJlZiBpdGVtUmVmKQoreworICAgIHJldHVybiB0b0ltcGwoaXRlbVJlZikt
PmlzRW5hYmxlZCgpOworfQorCitib29sIFdLUG9wdXBJdGVtSXNMYWJlbChXS1BvcHVwSXRlbVJl
ZiBpdGVtUmVmKQoreworICAgIHJldHVybiB0b0ltcGwoaXRlbVJlZiktPmlzTGFiZWwoKTsKK30K
KworYm9vbCBXS1BvcHVwSXRlbUlzU2VsZWN0ZWQoV0tQb3B1cEl0ZW1SZWYgaXRlbVJlZikKK3sK
KyAgICByZXR1cm4gdG9JbXBsKGl0ZW1SZWYpLT5pc1NlbGVjdGVkKCk7Cit9CmRpZmYgLS1naXQg
YS9Tb3VyY2UvV2ViS2l0Mi9VSVByb2Nlc3MvQVBJL0MvZWZsL1dLUG9wdXBJdGVtLmggYi9Tb3Vy
Y2UvV2ViS2l0Mi9VSVByb2Nlc3MvQVBJL0MvZWZsL1dLUG9wdXBJdGVtLmgKbmV3IGZpbGUgbW9k
ZSAxMDA2NDQKaW5kZXggMDAwMDAwMC4uYjQxOGVkNQotLS0gL2Rldi9udWxsCisrKyBiL1NvdXJj
ZS9XZWJLaXQyL1VJUHJvY2Vzcy9BUEkvQy9lZmwvV0tQb3B1cEl0ZW0uaApAQCAtMCwwICsxLDY0
IEBACisvKgorICogQ29weXJpZ2h0IChDKSAyMDEzIFNhbXN1bmcgRWxlY3Ryb25pY3MuIEFsbCBy
aWdodHMgcmVzZXJ2ZWQuCisgKgorICogUmVkaXN0cmlidXRpb24gYW5kIHVzZSBpbiBzb3VyY2Ug
YW5kIGJpbmFyeSBmb3Jtcywgd2l0aCBvciB3aXRob3V0CisgKiBtb2RpZmljYXRpb24sIGFyZSBw
ZXJtaXR0ZWQgcHJvdmlkZWQgdGhhdCB0aGUgZm9sbG93aW5nIGNvbmRpdGlvbnMKKyAqIGFyZSBt
ZXQ6CisgKiAxLiBSZWRpc3RyaWJ1dGlvbnMgb2Ygc291cmNlIGNvZGUgbXVzdCByZXRhaW4gdGhl
IGFib3ZlIGNvcHlyaWdodAorICogICAgbm90aWNlLCB0aGlzIGxpc3Qgb2YgY29uZGl0aW9ucyBh
bmQgdGhlIGZvbGxvd2luZyBkaXNjbGFpbWVyLgorICogMi4gUmVkaXN0cmlidXRpb25zIGluIGJp
bmFyeSBmb3JtIG11c3QgcmVwcm9kdWNlIHRoZSBhYm92ZSBjb3B5cmlnaHQKKyAqICAgIG5vdGlj
ZSwgdGhpcyBsaXN0IG9mIGNvbmRpdGlvbnMgYW5kIHRoZSBmb2xsb3dpbmcgZGlzY2xhaW1lciBp
biB0aGUKKyAqICAgIGRvY3VtZW50YXRpb24gYW5kL29yIG90aGVyIG1hdGVyaWFscyBwcm92aWRl
ZCB3aXRoIHRoZSBkaXN0cmlidXRpb24uCisgKgorICogVEhJUyBTT0ZUV0FSRSBJUyBQUk9WSURF
RCBCWSBBUFBMRSBJTkMuIEFORCBJVFMgQ09OVFJJQlVUT1JTIGBgQVMgSVMnJworICogQU5EIEFO
WSBFWFBSRVNTIE9SIElNUExJRUQgV0FSUkFOVElFUywgSU5DTFVESU5HLCBCVVQgTk9UIExJTUlU
RUQgVE8sCisgKiBUSEUgSU1QTElFRCBXQVJSQU5USUVTIE9GIE1FUkNIQU5UQXdCSUxJVFkgQU5E
IEZJVE5FU1MgRk9SIEEgUEFSVElDVUxBUgorICogUFVSUE9TRSBBUkUgRElTQ0xBSU1FRC4gSU4g
Tk8gRVZFTlQgU0hBTEwgQVBQTEUgSU5DLiBPUiBJVFMgQ09OVFJJQlVUT1JTCisgKiBCRSBMSUFC
TEUgRk9SIEFOWSBESVJFQ1QsIElORElSRUNULCBJTkNJREVOVEFMLCBTUEVDSUFMLCBFWEVNUExB
UlksIE9SCisgKiBDT05TRVFVRU5USUFMIERBTUFHRVMgKElOQ0xVRElORywgQlVUIE5PVCBMSU1J
VEVEIFRPLCBQUk9DVVJFTUVOVCBPRgorICogU1VCU1RJVFVURSBHT09EUyBPUiBTRVJWSUNFUzsg
TE9TUyBPRiBVU0UsIERBVEEsIE9SIFBST0ZJVFM7IE9SIEJVU0lORVNTCisgKiBJTlRFUlJVUFRJ
T04pIEhPV0VWRVIgQ0FVU0VEIEFORCBPTiBBTlkgVEhFT1JZIE9GIExJQUJJTElUWSwgV0hFVEhF
UiBJTgorICogQ09OVFJBQ1QsIFNUUklDVCBMSUFCSUxJVFksIE9SIFRPUlQgKElOQ0xVRElORyBO
RUdMSUdFTkNFIE9SIE9USEVSV0lTRSkKKyAqIEFSSVNJTkcgSU4gQU5ZIFdBWSBPVVQgT0YgVEhF
IFVTRSBPRiBUSElTIFNPRlRXQVJFLCBFVkVOIElGIEFEVklTRUQgT0YKKyAqIFRIRSBQT1NTSUJJ
TElUWSBPRiBTVUNIIERBTUFHRS4KKyAqLworCisjaWZuZGVmIFdLUG9wdXBJdGVtX2gKKyNkZWZp
bmUgV0tQb3B1cEl0ZW1faAorCisjaW5jbHVkZSA8V2ViS2l0Mi9XS0Jhc2UuaD4KKworI2lmZGVm
IF9fY3BsdXNwbHVzCitleHRlcm4gIkMiIHsKKyNlbmRpZgorCitlbnVtIHsKKyAgICBrV0tQb3B1
cEl0ZW1UeXBlU2VwYXJhdG9yLAorICAgIGtXS1BvcHVwSXRlbVR5cGVJdGVtCit9OwordHlwZWRl
ZiB1aW50MzJfdCBXS1BvcHVwSXRlbVR5cGU7CisKK2VudW0geworICAgIGtXS1BvcHVwSXRlbVRl
eHREaXJlY3Rpb25SVEwsCisgICAga1dLUG9wdXBJdGVtVGV4dERpcmVjdGlvbkxUUgorfTsKK3R5
cGVkZWYgdWludDMyX3QgV0tQb3B1cEl0ZW1UZXh0RGlyZWN0aW9uOworCitXS19FWFBPUlQgV0tQ
b3B1cEl0ZW1UeXBlIFdLUG9wdXBJdGVtR2V0VHlwZShXS1BvcHVwSXRlbVJlZiBpdGVtKTsKKwor
V0tfRVhQT1JUIFdLUG9wdXBJdGVtVGV4dERpcmVjdGlvbiBXS1BvcHVwSXRlbUdldFRleHREaXJl
Y3Rpb24oV0tQb3B1cEl0ZW1SZWYgaXRlbSk7CitXS19FWFBPUlQgYm9vbCBXS1BvcHVwSXRlbUhh
c1RleHREaXJlY3Rpb25PdmVycmlkZShXS1BvcHVwSXRlbVJlZiBpdGVtKTsKKworV0tfRVhQT1JU
IFdLU3RyaW5nUmVmIFdLUG9wdXBJdGVtQ29weVRleHQoV0tQb3B1cEl0ZW1SZWYgaXRlbSk7CitX
S19FWFBPUlQgV0tTdHJpbmdSZWYgV0tQb3B1cEl0ZW1Db3B5VG9vbFRpcFRleHQoV0tQb3B1cEl0
ZW1SZWYgaXRlbSk7CitXS19FWFBPUlQgV0tTdHJpbmdSZWYgV0tQb3B1cEl0ZW1Db3B5QWNjZXNz
aWJpbGl0eVRleHQoV0tQb3B1cEl0ZW1SZWYgaXRlbSk7CisKK1dLX0VYUE9SVCBib29sIFdLUG9w
dXBJdGVtSXNFbmFibGVkKFdLUG9wdXBJdGVtUmVmIGl0ZW0pOworV0tfRVhQT1JUIGJvb2wgV0tQ
b3B1cEl0ZW1Jc0xhYmVsKFdLUG9wdXBJdGVtUmVmIGl0ZW0pOworV0tfRVhQT1JUIGJvb2wgV0tQ
b3B1cEl0ZW1Jc1NlbGVjdGVkKFdLUG9wdXBJdGVtUmVmIGl0ZW0pOworCisjaWZkZWYgX19jcGx1
c3BsdXMKK30KKyNlbmRpZgorCisjZW5kaWYgLyogV0tQb3B1cEl0ZW1faCAqLwpkaWZmIC0tZ2l0
IGEvU291cmNlL1dlYktpdDIvVUlQcm9jZXNzL0FQSS9DL2VmbC9XS1BvcHVwTWVudUxpc3RlbmVy
LmNwcCBiL1NvdXJjZS9XZWJLaXQyL1VJUHJvY2Vzcy9BUEkvQy9lZmwvV0tQb3B1cE1lbnVMaXN0
ZW5lci5jcHAKbmV3IGZpbGUgbW9kZSAxMDA2NDQKaW5kZXggMDAwMDAwMC4uMzRmODJiNAotLS0g
L2Rldi9udWxsCisrKyBiL1NvdXJjZS9XZWJLaXQyL1VJUHJvY2Vzcy9BUEkvQy9lZmwvV0tQb3B1
cE1lbnVMaXN0ZW5lci5jcHAKQEAgLTAsMCArMSwzNyBAQAorLyoKKyAqIENvcHlyaWdodCAoQykg
MjAxMyBTYW1zdW5nIEVsZWN0cm9uaWNzLiBBbGwgcmlnaHRzIHJlc2VydmVkLgorICoKKyAqIFJl
ZGlzdHJpYnV0aW9uIGFuZCB1c2UgaW4gc291cmNlIGFuZCBiaW5hcnkgZm9ybXMsIHdpdGggb3Ig
d2l0aG91dAorICogbW9kaWZpY2F0aW9uLCBhcmUgcGVybWl0dGVkIHByb3ZpZGVkIHRoYXQgdGhl
IGZvbGxvd2luZyBjb25kaXRpb25zCisgKiBhcmUgbWV0OgorICogMS4gUmVkaXN0cmlidXRpb25z
IG9mIHNvdXJjZSBjb2RlIG11c3QgcmV0YWluIHRoZSBhYm92ZSBjb3B5cmlnaHQKKyAqICAgIG5v
dGljZSwgdGhpcyBsaXN0IG9mIGNvbmRpdGlvbnMgYW5kIHRoZSBmb2xsb3dpbmcgZGlzY2xhaW1l
ci4KKyAqIDIuIFJlZGlzdHJpYnV0aW9ucyBpbiBiaW5hcnkgZm9ybSBtdXN0IHJlcHJvZHVjZSB0
aGUgYWJvdmUgY29weXJpZ2h0CisgKiAgICBub3RpY2UsIHRoaXMgbGlzdCBvZiBjb25kaXRpb25z
IGFuZCB0aGUgZm9sbG93aW5nIGRpc2NsYWltZXIgaW4gdGhlCisgKiAgICBkb2N1bWVudGF0aW9u
IGFuZC9vciBvdGhlciBtYXRlcmlhbHMgcHJvdmlkZWQgd2l0aCB0aGUgZGlzdHJpYnV0aW9uLgor
ICoKKyAqIFRISVMgU09GVFdBUkUgSVMgUFJPVklERUQgQlkgQVBQTEUgSU5DLiBBTkQgSVRTIENP
TlRSSUJVVE9SUyBgYEFTIElTJycKKyAqIEFORCBBTlkgRVhQUkVTUyBPUiBJTVBMSUVEIFdBUlJB
TlRJRVMsIElOQ0xVRElORywgQlVUIE5PVCBMSU1JVEVEIFRPLAorICogVEhFIElNUExJRUQgV0FS
UkFOVElFUyBPRiBNRVJDSEFOVEF3QklMSVRZIEFORCBGSVRORVNTIEZPUiBBIFBBUlRJQ1VMQVIK
KyAqIFBVUlBPU0UgQVJFIERJU0NMQUlNRUQuIElOIE5PIEVWRU5UIFNIQUxMIEFQUExFIElOQy4g
T1IgSVRTIENPTlRSSUJVVE9SUworICogQkUgTElBQkxFIEZPUiBBTlkgRElSRUNULCBJTkRJUkVD
VCwgSU5DSURFTlRBTCwgU1BFQ0lBTCwgRVhFTVBMQVJZLCBPUgorICogQ09OU0VRVUVOVElBTCBE
QU1BR0VTIChJTkNMVURJTkcsIEJVVCBOT1QgTElNSVRFRCBUTywgUFJPQ1VSRU1FTlQgT0YKKyAq
IFNVQlNUSVRVVEUgR09PRFMgT1IgU0VSVklDRVM7IExPU1MgT0YgVVNFLCBEQVRBLCBPUiBQUk9G
SVRTOyBPUiBCVVNJTkVTUworICogSU5URVJSVVBUSU9OKSBIT1dFVkVSIENBVVNFRCBBTkQgT04g
QU5ZIFRIRU9SWSBPRiBMSUFCSUxJVFksIFdIRVRIRVIgSU4KKyAqIENPTlRSQUNULCBTVFJJQ1Qg
TElBQklMSVRZLCBPUiBUT1JUIChJTkNMVURJTkcgTkVHTElHRU5DRSBPUiBPVEhFUldJU0UpCisg
KiBBUklTSU5HIElOIEFOWSBXQVkgT1VUIE9GIFRIRSBVU0UgT0YgVEhJUyBTT0ZUV0FSRSwgRVZF
TiBJRiBBRFZJU0VEIE9GCisgKiBUSEUgUE9TU0lCSUxJVFkgT0YgU1VDSCBEQU1BR0UuCisgKi8K
KworI2luY2x1ZGUgImNvbmZpZy5oIgorI2luY2x1ZGUgIldLUG9wdXBNZW51TGlzdGVuZXIuaCIK
KworI2luY2x1ZGUgIldLQVBJQ2FzdC5oIgorI2luY2x1ZGUgIldlYlBvcHVwTWVudUxpc3RlbmVy
RWZsLmgiCisKK3VzaW5nIG5hbWVzcGFjZSBXZWJLaXQ7CisKK3ZvaWQgV0tQb3B1cE1lbnVMaXN0
ZW5lclNldFNlbGVjdGlvbihXS1BvcHVwTWVudUxpc3RlbmVyUmVmIGxpc3RlbmVyUmVmLCBpbnQg
c2VsZWN0ZWRJbmRleCkKK3sKKyAgICB0b0ltcGwobGlzdGVuZXJSZWYpLT52YWx1ZUNoYW5nZWQo
c2VsZWN0ZWRJbmRleCk7Cit9CmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViS2l0Mi9VSVByb2Nlc3Mv
QVBJL0MvZWZsL1dLUG9wdXBNZW51TGlzdGVuZXIuaCBiL1NvdXJjZS9XZWJLaXQyL1VJUHJvY2Vz
cy9BUEkvQy9lZmwvV0tQb3B1cE1lbnVMaXN0ZW5lci5oCm5ldyBmaWxlIG1vZGUgMTAwNjQ0Cmlu
ZGV4IDAwMDAwMDAuLjg1NDk5MTYKLS0tIC9kZXYvbnVsbAorKysgYi9Tb3VyY2UvV2ViS2l0Mi9V
SVByb2Nlc3MvQVBJL0MvZWZsL1dLUG9wdXBNZW51TGlzdGVuZXIuaApAQCAtMCwwICsxLDQxIEBA
CisvKgorICogQ29weXJpZ2h0IChDKSAyMDEzIFNhbXN1bmcgRWxlY3Ryb25pY3MuIEFsbCByaWdo
dHMgcmVzZXJ2ZWQuCisgKgorICogUmVkaXN0cmlidXRpb24gYW5kIHVzZSBpbiBzb3VyY2UgYW5k
IGJpbmFyeSBmb3Jtcywgd2l0aCBvciB3aXRob3V0CisgKiBtb2RpZmljYXRpb24sIGFyZSBwZXJt
aXR0ZWQgcHJvdmlkZWQgdGhhdCB0aGUgZm9sbG93aW5nIGNvbmRpdGlvbnMKKyAqIGFyZSBtZXQ6
CisgKiAxLiBSZWRpc3RyaWJ1dGlvbnMgb2Ygc291cmNlIGNvZGUgbXVzdCByZXRhaW4gdGhlIGFi
b3ZlIGNvcHlyaWdodAorICogICAgbm90aWNlLCB0aGlzIGxpc3Qgb2YgY29uZGl0aW9ucyBhbmQg
dGhlIGZvbGxvd2luZyBkaXNjbGFpbWVyLgorICogMi4gUmVkaXN0cmlidXRpb25zIGluIGJpbmFy
eSBmb3JtIG11c3QgcmVwcm9kdWNlIHRoZSBhYm92ZSBjb3B5cmlnaHQKKyAqICAgIG5vdGljZSwg
dGhpcyBsaXN0IG9mIGNvbmRpdGlvbnMgYW5kIHRoZSBmb2xsb3dpbmcgZGlzY2xhaW1lciBpbiB0
aGUKKyAqICAgIGRvY3VtZW50YXRpb24gYW5kL29yIG90aGVyIG1hdGVyaWFscyBwcm92aWRlZCB3
aXRoIHRoZSBkaXN0cmlidXRpb24uCisgKgorICogVEhJUyBTT0ZUV0FSRSBJUyBQUk9WSURFRCBC
WSBBUFBMRSBJTkMuIEFORCBJVFMgQ09OVFJJQlVUT1JTIGBgQVMgSVMnJworICogQU5EIEFOWSBF
WFBSRVNTIE9SIElNUExJRUQgV0FSUkFOVElFUywgSU5DTFVESU5HLCBCVVQgTk9UIExJTUlURUQg
VE8sCisgKiBUSEUgSU1QTElFRCBXQVJSQU5USUVTIE9GIE1FUkNIQU5UQXdCSUxJVFkgQU5EIEZJ
VE5FU1MgRk9SIEEgUEFSVElDVUxBUgorICogUFVSUE9TRSBBUkUgRElTQ0xBSU1FRC4gSU4gTk8g
RVZFTlQgU0hBTEwgQVBQTEUgSU5DLiBPUiBJVFMgQ09OVFJJQlVUT1JTCisgKiBCRSBMSUFCTEUg
Rk9SIEFOWSBESVJFQ1QsIElORElSRUNULCBJTkNJREVOVEFMLCBTUEVDSUFMLCBFWEVNUExBUlks
IE9SCisgKiBDT05TRVFVRU5USUFMIERBTUFHRVMgKElOQ0xVRElORywgQlVUIE5PVCBMSU1JVEVE
IFRPLCBQUk9DVVJFTUVOVCBPRgorICogU1VCU1RJVFVURSBHT09EUyBPUiBTRVJWSUNFUzsgTE9T
UyBPRiBVU0UsIERBVEEsIE9SIFBST0ZJVFM7IE9SIEJVU0lORVNTCisgKiBJTlRFUlJVUFRJT04p
IEhPV0VWRVIgQ0FVU0VEIEFORCBPTiBBTlkgVEhFT1JZIE9GIExJQUJJTElUWSwgV0hFVEhFUiBJ
TgorICogQ09OVFJBQ1QsIFNUUklDVCBMSUFCSUxJVFksIE9SIFRPUlQgKElOQ0xVRElORyBORUdM
SUdFTkNFIE9SIE9USEVSV0lTRSkKKyAqIEFSSVNJTkcgSU4gQU5ZIFdBWSBPVVQgT0YgVEhFIFVT
RSBPRiBUSElTIFNPRlRXQVJFLCBFVkVOIElGIEFEVklTRUQgT0YKKyAqIFRIRSBQT1NTSUJJTElU
WSBPRiBTVUNIIERBTUFHRS4KKyAqLworCisjaWZuZGVmIFdLUG9wdXBNZW51TGlzdGVuZXJfaAor
I2RlZmluZSBXS1BvcHVwTWVudUxpc3RlbmVyX2gKKworI2luY2x1ZGUgPFdlYktpdDIvV0tCYXNl
Lmg+CisKKyNpZmRlZiBfX2NwbHVzcGx1cworZXh0ZXJuICJDIiB7CisjZW5kaWYKKworV0tfRVhQ
T1JUIHZvaWQgV0tQb3B1cE1lbnVMaXN0ZW5lclNldFNlbGVjdGlvbihXS1BvcHVwTWVudUxpc3Rl
bmVyUmVmIGxpc3RlbmVyLCBpbnQgc2VsZWN0ZWRJbmRleCk7CisKKyNpZmRlZiBfX2NwbHVzcGx1
cworfQorI2VuZGlmCisKKyNlbmRpZiAvKiBXS1BvcHVwTWVudUxpc3RlbmVyX2ggKi8KZGlmZiAt
LWdpdCBhL1NvdXJjZS9XZWJLaXQyL1VJUHJvY2Vzcy9BUEkvZWZsL0V3a1ZpZXcuY3BwIGIvU291
cmNlL1dlYktpdDIvVUlQcm9jZXNzL0FQSS9lZmwvRXdrVmlldy5jcHAKaW5kZXggMjhkY2FhNS4u
MTc1ZTk1OSAxMDA2NDQKLS0tIGEvU291cmNlL1dlYktpdDIvVUlQcm9jZXNzL0FQSS9lZmwvRXdr
Vmlldy5jcHAKKysrIGIvU291cmNlL1dlYktpdDIvVUlQcm9jZXNzL0FQSS9lZmwvRXdrVmlldy5j
cHAKQEAgLTQxLDEzICs0MSwxMyBAQAogI2luY2x1ZGUgIldLR2VvbWV0cnkuaCIKICNpbmNsdWRl
ICJXS051bWJlci5oIgogI2luY2x1ZGUgIldLUGFnZUdyb3VwLmgiCisjaW5jbHVkZSAiV0tQb3B1
cEl0ZW0uaCIKICNpbmNsdWRlICJXS1N0cmluZy5oIgogI2luY2x1ZGUgIldLVmlldy5oIgogI2lu
Y2x1ZGUgIldlYkNvbnRleHQuaCIKICNpbmNsdWRlICJXZWJJbWFnZS5oIgogI2luY2x1ZGUgIldl
YlBhZ2VHcm91cC5oIgogI2luY2x1ZGUgIldlYlBhZ2VQcm94eS5oIgotI2luY2x1ZGUgIldlYlBv
cHVwTWVudVByb3h5RWZsLmgiCiAjaW5jbHVkZSAiV2ViUHJlZmVyZW5jZXMuaCIKICNpbmNsdWRl
ICJld2tfYmFja19mb3J3YXJkX2xpc3RfcHJpdmF0ZS5oIgogI2luY2x1ZGUgImV3a19jb2xvcl9w
aWNrZXJfcHJpdmF0ZS5oIgpAQCAtOTM5LDEyICs5MzksMTUgQEAgdm9pZCBFd2tWaWV3OjpoaWRl
Q29udGV4dE1lbnUoKQogICAgIG1fY29udGV4dE1lbnUuY2xlYXIoKTsKIH0KIAotdm9pZCBFd2tW
aWV3OjpyZXF1ZXN0UG9wdXBNZW51KFdlYlBvcHVwTWVudVByb3h5RWZsKiBwb3B1cE1lbnVQcm94
eSwgY29uc3QgSW50UmVjdCYgcmVjdCwgVGV4dERpcmVjdGlvbiB0ZXh0RGlyZWN0aW9uLCBkb3Vi
bGUgcGFnZVNjYWxlRmFjdG9yLCBjb25zdCBWZWN0b3I8V2ViUG9wdXBJdGVtPiYgaXRlbXMsIGlu
dDMyX3Qgc2VsZWN0ZWRJbmRleCkKK0NPTVBJTEVfQVNTRVJUX01BVENISU5HX0VOVU0oRVdLX1RF
WFRfRElSRUNUSU9OX1JJR0hUX1RPX0xFRlQsIGtXS1BvcHVwSXRlbVRleHREaXJlY3Rpb25SVEwp
OworQ09NUElMRV9BU1NFUlRfTUFUQ0hJTkdfRU5VTShFV0tfVEVYVF9ESVJFQ1RJT05fTEVGVF9U
T19SSUdIVCwga1dLUG9wdXBJdGVtVGV4dERpcmVjdGlvbkxUUik7CisKK3ZvaWQgRXdrVmlldzo6
cmVxdWVzdFBvcHVwTWVudShXS1BvcHVwTWVudUxpc3RlbmVyUmVmIHBvcHVwTWVudUxpc3RlbmVy
LCBjb25zdCBXS1JlY3QmIHJlY3QsIFdLUG9wdXBJdGVtVGV4dERpcmVjdGlvbiB0ZXh0RGlyZWN0
aW9uLCBkb3VibGUgcGFnZVNjYWxlRmFjdG9yLCBXS0FycmF5UmVmIGl0ZW1zLCBpbnQzMl90IHNl
bGVjdGVkSW5kZXgpCiB7CiAgICAgRXdrX1ZpZXdfU21hcnRfRGF0YSogc2QgPSBzbWFydERhdGEo
KTsKICAgICBBU1NFUlQoc2QtPmFwaSk7CiAKLSAgICBBU1NFUlQocG9wdXBNZW51UHJveHkpOwor
ICAgIEFTU0VSVChwb3B1cE1lbnVMaXN0ZW5lcik7CiAKICAgICBpZiAoIXNkLT5hcGktPnBvcHVw
X21lbnVfc2hvdykKICAgICAgICAgcmV0dXJuOwpAQCAtOTUyLDkgKzk1NSwxMiBAQCB2b2lkIEV3
a1ZpZXc6OnJlcXVlc3RQb3B1cE1lbnUoV2ViUG9wdXBNZW51UHJveHlFZmwqIHBvcHVwTWVudVBy
b3h5LCBjb25zdCBJbnRSZQogICAgIGlmIChtX3BvcHVwTWVudSkKICAgICAgICAgY2xvc2VQb3B1
cE1lbnUoKTsKIAotICAgIG1fcG9wdXBNZW51ID0gRXdrUG9wdXBNZW51OjpjcmVhdGUodGhpcywg
cG9wdXBNZW51UHJveHksIGl0ZW1zLCBzZWxlY3RlZEluZGV4KTsKKyAgICBtX3BvcHVwTWVudSA9
IEV3a1BvcHVwTWVudTo6Y3JlYXRlKHRoaXMsIHBvcHVwTWVudUxpc3RlbmVyLCBpdGVtcywgc2Vs
ZWN0ZWRJbmRleCk7CisKKyAgICBFaW5hX1JlY3RhbmdsZSBlaW5hUmVjdDsKKyAgICBFSU5BX1JF
Q1RBTkdMRV9TRVQoJmVpbmFSZWN0LCByZWN0Lm9yaWdpbi54LCByZWN0Lm9yaWdpbi55LCByZWN0
LnNpemUud2lkdGgsIHJlY3Quc2l6ZS5oZWlnaHQpOwogCi0gICAgc2QtPmFwaS0+cG9wdXBfbWVu
dV9zaG93KHNkLCByZWN0LCBzdGF0aWNfY2FzdDxFd2tfVGV4dF9EaXJlY3Rpb24+KHRleHREaXJl
Y3Rpb24pLCBwYWdlU2NhbGVGYWN0b3IsIG1fcG9wdXBNZW51LmdldCgpKTsKKyAgICBzZC0+YXBp
LT5wb3B1cF9tZW51X3Nob3coc2QsIGVpbmFSZWN0LCBzdGF0aWNfY2FzdDxFd2tfVGV4dF9EaXJl
Y3Rpb24+KHRleHREaXJlY3Rpb24pLCBwYWdlU2NhbGVGYWN0b3IsIG1fcG9wdXBNZW51LmdldCgp
KTsKIH0KIAogdm9pZCBFd2tWaWV3OjpjbG9zZVBvcHVwTWVudSgpCmRpZmYgLS1naXQgYS9Tb3Vy
Y2UvV2ViS2l0Mi9VSVByb2Nlc3MvQVBJL2VmbC9Fd2tWaWV3LmggYi9Tb3VyY2UvV2ViS2l0Mi9V
SVByb2Nlc3MvQVBJL2VmbC9Fd2tWaWV3LmgKaW5kZXggMzY2ZDFiZC4uMDhmZGQ5YiAxMDA2NDQK
LS0tIGEvU291cmNlL1dlYktpdDIvVUlQcm9jZXNzL0FQSS9lZmwvRXdrVmlldy5oCisrKyBiL1Nv
dXJjZS9XZWJLaXQyL1VJUHJvY2Vzcy9BUEkvZWZsL0V3a1ZpZXcuaApAQCAtNjcsOCArNjcsNiBA
QCBjbGFzcyBXZWJDb250ZXh0TWVudUl0ZW1EYXRhOwogY2xhc3MgV2ViQ29udGV4dE1lbnVQcm94
eUVmbDsKIGNsYXNzIFdlYlBhZ2VHcm91cDsKIGNsYXNzIFdlYlBhZ2VQcm94eTsKLWNsYXNzIFdl
YlBvcHVwSXRlbTsKLWNsYXNzIFdlYlBvcHVwTWVudVByb3h5RWZsOwogCiAjaWYgRU5BQkxFKFZJ
QlJBVElPTikKIGNsYXNzIFZpYnJhdGlvbkNsaWVudEVmbDsKQEAgLTE4NCw3ICsxODIsNyBAQCBw
dWJsaWM6CiAgICAgV0tQYWdlUmVmIGNyZWF0ZU5ld1BhZ2UoUGFzc1JlZlB0cjxFd2tVcmxSZXF1
ZXN0PiwgV0tEaWN0aW9uYXJ5UmVmIHdpbmRvd0ZlYXR1cmVzKTsKICAgICB2b2lkIGNsb3NlKCk7
CiAKLSAgICB2b2lkIHJlcXVlc3RQb3B1cE1lbnUoV2ViS2l0OjpXZWJQb3B1cE1lbnVQcm94eUVm
bCosIGNvbnN0IFdlYkNvcmU6OkludFJlY3QmLCBXZWJDb3JlOjpUZXh0RGlyZWN0aW9uLCBkb3Vi
bGUgcGFnZVNjYWxlRmFjdG9yLCBjb25zdCBWZWN0b3I8V2ViS2l0OjpXZWJQb3B1cEl0ZW0+JiBp
dGVtcywgaW50MzJfdCBzZWxlY3RlZEluZGV4KTsKKyAgICB2b2lkIHJlcXVlc3RQb3B1cE1lbnUo
V0tQb3B1cE1lbnVMaXN0ZW5lclJlZiwgY29uc3QgV0tSZWN0JiwgV0tQb3B1cEl0ZW1UZXh0RGly
ZWN0aW9uLCBkb3VibGUgcGFnZVNjYWxlRmFjdG9yLCBXS0FycmF5UmVmIGl0ZW1zLCBpbnQzMl90
IHNlbGVjdGVkSW5kZXgpOwogICAgIHZvaWQgY2xvc2VQb3B1cE1lbnUoKTsKICAgICAKICAgICB2
b2lkIHNob3dDb250ZXh0TWVudShXZWJLaXQ6OldlYkNvbnRleHRNZW51UHJveHlFZmwqLCBjb25z
dCBXZWJDb3JlOjpJbnRQb2ludCYgcG9zaXRpb24sIGNvbnN0IFZlY3RvcjxXZWJLaXQ6OldlYkNv
bnRleHRNZW51SXRlbURhdGE+JiBpdGVtcyk7CmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViS2l0Mi9V
SVByb2Nlc3MvQVBJL2VmbC9ld2tfcG9wdXBfbWVudS5jcHAgYi9Tb3VyY2UvV2ViS2l0Mi9VSVBy
b2Nlc3MvQVBJL2VmbC9ld2tfcG9wdXBfbWVudS5jcHAKaW5kZXggMDM5NmYwMS4uNjI5ZWY0ZiAx
MDA2NDQKLS0tIGEvU291cmNlL1dlYktpdDIvVUlQcm9jZXNzL0FQSS9lZmwvZXdrX3BvcHVwX21l
bnUuY3BwCisrKyBiL1NvdXJjZS9XZWJLaXQyL1VJUHJvY2Vzcy9BUEkvZWZsL2V3a19wb3B1cF9t
ZW51LmNwcApAQCAtMjgsMjEgKzI4LDI3IEBACiAjaW5jbHVkZSAiZXdrX3BvcHVwX21lbnUuaCIK
IAogI2luY2x1ZGUgIkV3a1ZpZXcuaCIKLSNpbmNsdWRlICJXZWJQb3B1cE1lbnVQcm94eUVmbC5o
IgorI2luY2x1ZGUgIldLQVBJQ2FzdC5oIgorI2luY2x1ZGUgIldLQXJyYXkuaCIKKyNpbmNsdWRl
ICJXS1BvcHVwTWVudUxpc3RlbmVyLmgiCisjaW5jbHVkZSAiV2ViUG9wdXBJdGVtRWZsLmgiCiAj
aW5jbHVkZSAiZXdrX3BvcHVwX21lbnVfaXRlbV9wcml2YXRlLmgiCiAjaW5jbHVkZSAiZXdrX3Bv
cHVwX21lbnVfcHJpdmF0ZS5oIgogCiB1c2luZyBuYW1lc3BhY2UgV2ViS2l0OwogCi1Fd2tQb3B1
cE1lbnU6OkV3a1BvcHVwTWVudShFd2tWaWV3KiB2aWV3LCBXZWJQb3B1cE1lbnVQcm94eUVmbCog
cG9wdXBNZW51UHJveHksIGNvbnN0IFZlY3RvcjxXZWJLaXQ6OldlYlBvcHVwSXRlbT4mIGl0ZW1z
LCB1bnNpZ25lZCBzZWxlY3RlZEluZGV4KQorRXdrUG9wdXBNZW51OjpFd2tQb3B1cE1lbnUoRXdr
VmlldyogdmlldywgV0tQb3B1cE1lbnVMaXN0ZW5lclJlZiBwb3B1cE1lbnVMaXN0ZW5lciwgV0tB
cnJheVJlZiBpdGVtcywgdW5zaWduZWQgc2VsZWN0ZWRJbmRleCkKICAgICA6IG1fdmlldyh2aWV3
KQotICAgICwgbV9wb3B1cE1lbnVQcm94eShwb3B1cE1lbnVQcm94eSkKKyAgICAsIG1fcG9wdXBN
ZW51TGlzdGVuZXIocG9wdXBNZW51TGlzdGVuZXIpCiAgICAgLCBtX3BvcHVwTWVudUl0ZW1zKDAp
CiAgICAgLCBtX3NlbGVjdGVkSW5kZXgoc2VsZWN0ZWRJbmRleCkKIHsKLSAgICBjb25zdCBzaXpl
X3Qgc2l6ZSA9IGl0ZW1zLnNpemUoKTsKLSAgICBmb3IgKHNpemVfdCBpID0gMDsgaSA8IHNpemU7
ICsraSkKLSAgICAgICAgbV9wb3B1cE1lbnVJdGVtcyA9IGVpbmFfbGlzdF9hcHBlbmQobV9wb3B1
cE1lbnVJdGVtcywgRXdrUG9wdXBNZW51SXRlbTo6Y3JlYXRlKGl0ZW1zW2ldKS5sZWFrUHRyKCkp
OworICAgIHNpemVfdCBzaXplID0gV0tBcnJheUdldFNpemUoaXRlbXMpOworICAgIGZvciAoc2l6
ZV90IGkgPSAwOyBpIDwgc2l6ZTsgKytpKSB7CisgICAgICAgIFdLUG9wdXBJdGVtUmVmIHdrSXRl
bSA9IHN0YXRpY19jYXN0PFdLUG9wdXBJdGVtUmVmPihXS0FycmF5R2V0SXRlbUF0SW5kZXgoaXRl
bXMsIGkpKTsKKyAgICAgICAgLy8gRklYTUU6IFJlbW92ZSBFd2tQb3B1cE1lbnVJdGVtIGRlcGVu
ZGVuY3kgb24gV2ViUG9wdXBJdGVtLgorICAgICAgICBtX3BvcHVwTWVudUl0ZW1zID0gZWluYV9s
aXN0X2FwcGVuZChtX3BvcHVwTWVudUl0ZW1zLCBFd2tQb3B1cE1lbnVJdGVtOjpjcmVhdGUodG9J
bXBsKHdrSXRlbSktPmRhdGEoKSkubGVha1B0cigpKTsKKyAgICB9CiB9CiAKIEV3a1BvcHVwTWVu
dTo6fkV3a1BvcHVwTWVudSgpCkBAIC02OSw3ICs3NSw3IEBAIHVuc2lnbmVkIEV3a1BvcHVwTWVu
dTo6c2VsZWN0ZWRJbmRleCgpIGNvbnN0CiAKIGJvb2wgRXdrUG9wdXBNZW51OjpzZXRTZWxlY3Rl
ZEluZGV4KHVuc2lnbmVkIHNlbGVjdGVkSW5kZXgpCiB7Ci0gICAgaWYgKCFtX3BvcHVwTWVudVBy
b3h5KQorICAgIGlmICghbV9wb3B1cE1lbnVMaXN0ZW5lcikKICAgICAgICAgcmV0dXJuIGZhbHNl
OwogCiAgICAgaWYgKHNlbGVjdGVkSW5kZXggPj0gZWluYV9saXN0X2NvdW50KG1fcG9wdXBNZW51
SXRlbXMpKQpAQCAtNzksNyArODUsNyBAQCBib29sIEV3a1BvcHVwTWVudTo6c2V0U2VsZWN0ZWRJ
bmRleCh1bnNpZ25lZCBzZWxlY3RlZEluZGV4KQogICAgICAgICByZXR1cm4gdHJ1ZTsKIAogICAg
IG1fc2VsZWN0ZWRJbmRleCA9IHNlbGVjdGVkSW5kZXg7Ci0gICAgbV9wb3B1cE1lbnVQcm94eS0+
dmFsdWVDaGFuZ2VkKHNlbGVjdGVkSW5kZXgpOworICAgIFdLUG9wdXBNZW51TGlzdGVuZXJTZXRT
ZWxlY3Rpb24obV9wb3B1cE1lbnVMaXN0ZW5lci5nZXQoKSwgc2VsZWN0ZWRJbmRleCk7CiAKICAg
ICByZXR1cm4gdHJ1ZTsKIH0KZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJLaXQyL1VJUHJvY2Vzcy9B
UEkvZWZsL2V3a19wb3B1cF9tZW51X3ByaXZhdGUuaCBiL1NvdXJjZS9XZWJLaXQyL1VJUHJvY2Vz
cy9BUEkvZWZsL2V3a19wb3B1cF9tZW51X3ByaXZhdGUuaAppbmRleCA1MjRmNTlkLi41Y2QyZTNh
IDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViS2l0Mi9VSVByb2Nlc3MvQVBJL2VmbC9ld2tfcG9wdXBf
bWVudV9wcml2YXRlLmgKKysrIGIvU291cmNlL1dlYktpdDIvVUlQcm9jZXNzL0FQSS9lZmwvZXdr
X3BvcHVwX21lbnVfcHJpdmF0ZS5oCkBAIC0yOCwyMSArMjgsMTYgQEAKICNkZWZpbmUgZXdrX3Bv
cHVwX21lbnVfcHJpdmF0ZV9oCiAKICNpbmNsdWRlIDxFaW5hLmg+CisjaW5jbHVkZSA8V2ViS2l0
Mi9XS0Jhc2UuaD4KICNpbmNsdWRlIDx3dGYvUGFzc093blB0ci5oPgotI2luY2x1ZGUgPHd0Zi9W
ZWN0b3IuaD4KLQotbmFtZXNwYWNlIFdlYktpdCB7Ci1jbGFzcyBXZWJQb3B1cEl0ZW07Ci1jbGFz
cyBXZWJQb3B1cE1lbnVQcm94eUVmbDsKLX0KIAogY2xhc3MgRXdrVmlldzsKIAogY2xhc3MgRXdr
UG9wdXBNZW51IHsKIHB1YmxpYzoKLSAgICBzdGF0aWMgUGFzc093blB0cjxFd2tQb3B1cE1lbnU+
IGNyZWF0ZShFd2tWaWV3KiB2aWV3LCBXZWJLaXQ6OldlYlBvcHVwTWVudVByb3h5RWZsKiBwb3B1
cE1lbnVQcm94eSwgY29uc3QgVmVjdG9yPFdlYktpdDo6V2ViUG9wdXBJdGVtPiYgaXRlbXMsIHVu
c2lnbmVkIHNlbGVjdGVkSW5kZXgpCisgICAgc3RhdGljIFBhc3NPd25QdHI8RXdrUG9wdXBNZW51
PiBjcmVhdGUoRXdrVmlldyogdmlldywgV0tQb3B1cE1lbnVMaXN0ZW5lclJlZiBwb3B1cE1lbnVM
aXN0ZW5lciwgV0tBcnJheVJlZiBpdGVtcywgdW5zaWduZWQgc2VsZWN0ZWRJbmRleCkKICAgICB7
Ci0gICAgICAgIHJldHVybiBhZG9wdFB0cihuZXcgRXdrUG9wdXBNZW51KHZpZXcsIHBvcHVwTWVu
dVByb3h5LCBpdGVtcywgc2VsZWN0ZWRJbmRleCkpOworICAgICAgICByZXR1cm4gYWRvcHRQdHIo
bmV3IEV3a1BvcHVwTWVudSh2aWV3LCBwb3B1cE1lbnVMaXN0ZW5lciwgaXRlbXMsIHNlbGVjdGVk
SW5kZXgpKTsKICAgICB9CiAgICAgfkV3a1BvcHVwTWVudSgpOwogCkBAIC01NCwxMCArNDksMTAg
QEAgcHVibGljOgogICAgIHVuc2lnbmVkIHNlbGVjdGVkSW5kZXgoKSBjb25zdDsKIAogcHJpdmF0
ZToKLSAgICBFd2tQb3B1cE1lbnUoRXdrVmlldyogdmlld0ltcGwsIFdlYktpdDo6V2ViUG9wdXBN
ZW51UHJveHlFZmwqLCBjb25zdCBWZWN0b3I8V2ViS2l0OjpXZWJQb3B1cEl0ZW0+JiBpdGVtcywg
dW5zaWduZWQgc2VsZWN0ZWRJbmRleCk7CisgICAgRXdrUG9wdXBNZW51KEV3a1ZpZXcqIHZpZXdJ
bXBsLCBXS1BvcHVwTWVudUxpc3RlbmVyUmVmLCBXS0FycmF5UmVmIGl0ZW1zLCB1bnNpZ25lZCBz
ZWxlY3RlZEluZGV4KTsKIAogICAgIEV3a1ZpZXcqIG1fdmlldzsKLSAgICBXZWJLaXQ6OldlYlBv
cHVwTWVudVByb3h5RWZsKiBtX3BvcHVwTWVudVByb3h5OworICAgIFdLUmV0YWluUHRyPFdLUG9w
dXBNZW51TGlzdGVuZXJSZWY+IG1fcG9wdXBNZW51TGlzdGVuZXI7CiAgICAgRWluYV9MaXN0KiBt
X3BvcHVwTWVudUl0ZW1zOwogICAgIHVuc2lnbmVkIG1fc2VsZWN0ZWRJbmRleDsKIH07CmRpZmYg
LS1naXQgYS9Tb3VyY2UvV2ViS2l0Mi9VSVByb2Nlc3MvV2ViUGFnZVByb3h5LmNwcCBiL1NvdXJj
ZS9XZWJLaXQyL1VJUHJvY2Vzcy9XZWJQYWdlUHJveHkuY3BwCmluZGV4IGNlYWI5NDEuLjkwYzY2
ZTcgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJLaXQyL1VJUHJvY2Vzcy9XZWJQYWdlUHJveHkuY3Bw
CisrKyBiL1NvdXJjZS9XZWJLaXQyL1VJUHJvY2Vzcy9XZWJQYWdlUHJveHkuY3BwCkBAIC01MjEs
NiArNTIxLDkgQEAgdm9pZCBXZWJQYWdlUHJveHk6OmNsb3NlKCkKICAgICBtX2xvYWRlckNsaWVu
dC5pbml0aWFsaXplKDApOwogICAgIG1fcG9saWN5Q2xpZW50LmluaXRpYWxpemUoMCk7CiAgICAg
bV91aUNsaWVudC5pbml0aWFsaXplKDApOworI2lmIFBMQVRGT1JNKEVGTCkKKyAgICBtX3VpUG9w
dXBNZW51Q2xpZW50LmluaXRpYWxpemUoMCk7CisjZW5kaWYKIAogICAgIG1fZHJhd2luZ0FyZWEg
PSBudWxscHRyOwogCkBAIC0zMDA5LDcgKzMwMTIsMTEgQEAgdm9pZCBXZWJQYWdlUHJveHk6OmZh
aWxlZFRvU2hvd1BvcHVwTWVudSgpCiB2b2lkIFdlYlBhZ2VQcm94eTo6c2hvd1BvcHVwTWVudShj
b25zdCBJbnRSZWN0JiByZWN0LCB1aW50NjRfdCB0ZXh0RGlyZWN0aW9uLCBjb25zdCBWZWN0b3I8
V2ViUG9wdXBJdGVtPiYgaXRlbXMsIGludDMyX3Qgc2VsZWN0ZWRJbmRleCwgY29uc3QgUGxhdGZv
cm1Qb3B1cE1lbnVEYXRhJiBkYXRhKQogewogICAgIGlmIChtX2FjdGl2ZVBvcHVwTWVudSkgewor
I2lmIFBMQVRGT1JNKEVGTCkKKyAgICAgICAgbV91aVBvcHVwTWVudUNsaWVudC5oaWRlUG9wdXBN
ZW51KHRoaXMpOworI2Vsc2UKICAgICAgICAgbV9hY3RpdmVQb3B1cE1lbnUtPmhpZGVQb3B1cE1l
bnUoKTsKKyNlbmRpZgogICAgICAgICBtX2FjdGl2ZVBvcHVwTWVudS0+aW52YWxpZGF0ZSgpOwog
ICAgICAgICBtX2FjdGl2ZVBvcHVwTWVudSA9IDA7CiAgICAgfQpAQCAtMzAyMiwxNSArMzAyOSwy
MCBAQCB2b2lkIFdlYlBhZ2VQcm94eTo6c2hvd1BvcHVwTWVudShjb25zdCBJbnRSZWN0JiByZWN0
LCB1aW50NjRfdCB0ZXh0RGlyZWN0aW9uLCBjbwogICAgIC8vIFNpbmNlIHNob3dQb3B1cE1lbnUo
KSBjYW4gc3BpbiBhIG5lc3RlZCBydW4gbG9vcCB3ZSBuZWVkIHRvIHR1cm4gb2ZmIHRoZSByZXNw
b25zaXZlbmVzcyB0aW1lci4KICAgICBtX3Byb2Nlc3MtPnJlc3BvbnNpdmVuZXNzVGltZXIoKS0+
c3RvcCgpOwogCisjaWYgUExBVEZPUk0oRUZMKQorICAgIFVOVVNFRF9QQVJBTShkYXRhKTsKKyAg
ICBtX3VpUG9wdXBNZW51Q2xpZW50LnNob3dQb3B1cE1lbnUodGhpcywgbV9hY3RpdmVQb3B1cE1l
bnUuZ2V0KCksIHJlY3QsIHN0YXRpY19jYXN0PFRleHREaXJlY3Rpb24+KHRleHREaXJlY3Rpb24p
LCBtX3BhZ2VTY2FsZUZhY3RvciwgaXRlbXMsIHNlbGVjdGVkSW5kZXgpOworI2Vsc2UKICAgICBS
ZWZQdHI8V2ViUG9wdXBNZW51UHJveHk+IHByb3RlY3RlZEFjdGl2ZVBvcHVwTWVudSA9IG1fYWN0
aXZlUG9wdXBNZW51OwogCiAgICAgcHJvdGVjdGVkQWN0aXZlUG9wdXBNZW51LT5zaG93UG9wdXBN
ZW51KHJlY3QsIHN0YXRpY19jYXN0PFRleHREaXJlY3Rpb24+KHRleHREaXJlY3Rpb24pLCBtX3Bh
Z2VTY2FsZUZhY3RvciwgaXRlbXMsIGRhdGEsIHNlbGVjdGVkSW5kZXgpOwogCiAgICAgLy8gU2lu
Y2UgUXQgYW5kIEVmbCBkb2Vzbid0IHVzZSBhIG5lc3RlZCBtYWlubG9vcCB0byBzaG93IHRoZSBw
b3B1cCBhbmQgZ2V0IHRoZSBhbnN3ZXIsIHdlIG5lZWQgdG8ga2VlcCB0aGUgY2xpZW50IHBvaW50
ZXIgdmFsaWQuCi0jaWYgIVBMQVRGT1JNKFFUKSAmJiAhUExBVEZPUk0oRUZMKQorI2lmICFQTEFU
Rk9STShRVCkKICAgICBwcm90ZWN0ZWRBY3RpdmVQb3B1cE1lbnUtPmludmFsaWRhdGUoKTsKICNl
bmRpZgogICAgIHByb3RlY3RlZEFjdGl2ZVBvcHVwTWVudSA9IDA7CisjZW5kaWYKIH0KIAogdm9p
ZCBXZWJQYWdlUHJveHk6OmhpZGVQb3B1cE1lbnUoKQpAQCAtMzAzOCw3ICszMDUwLDExIEBAIHZv
aWQgV2ViUGFnZVByb3h5OjpoaWRlUG9wdXBNZW51KCkKICAgICBpZiAoIW1fYWN0aXZlUG9wdXBN
ZW51KQogICAgICAgICByZXR1cm47CiAKKyNpZiBQTEFURk9STShFRkwpCisgICAgbV91aVBvcHVw
TWVudUNsaWVudC5oaWRlUG9wdXBNZW51KHRoaXMpOworI2Vsc2UKICAgICBtX2FjdGl2ZVBvcHVw
TWVudS0+aGlkZVBvcHVwTWVudSgpOworI2VuZGlmCiAgICAgbV9hY3RpdmVQb3B1cE1lbnUtPmlu
dmFsaWRhdGUoKTsKICAgICBtX2FjdGl2ZVBvcHVwTWVudSA9IDA7CiB9CmRpZmYgLS1naXQgYS9T
b3VyY2UvV2ViS2l0Mi9VSVByb2Nlc3MvV2ViUGFnZVByb3h5LmggYi9Tb3VyY2UvV2ViS2l0Mi9V
SVByb2Nlc3MvV2ViUGFnZVByb3h5LmgKaW5kZXggNjU3OWFkZi4uZDUwNzA4NiAxMDA2NDQKLS0t
IGEvU291cmNlL1dlYktpdDIvVUlQcm9jZXNzL1dlYlBhZ2VQcm94eS5oCisrKyBiL1NvdXJjZS9X
ZWJLaXQyL1VJUHJvY2Vzcy9XZWJQYWdlUHJveHkuaApAQCAtODIsNiArODIsOCBAQAogI2VuZGlm
CiAKICNpZiBQTEFURk9STShFRkwpCisjaW5jbHVkZSAiV0tQYWdlRWZsLmgiCisjaW5jbHVkZSAi
V2ViVUlQb3B1cE1lbnVDbGllbnQuaCIKICNpbmNsdWRlIDxFdmFzLmg+CiAjZW5kaWYKIApAQCAt
MjY4LDYgKzI3MCw5IEBAIHB1YmxpYzoKICAgICB2b2lkIGluaXRpYWxpemVMb2FkZXJDbGllbnQo
Y29uc3QgV0tQYWdlTG9hZGVyQ2xpZW50Kik7CiAgICAgdm9pZCBpbml0aWFsaXplUG9saWN5Q2xp
ZW50KGNvbnN0IFdLUGFnZVBvbGljeUNsaWVudCopOwogICAgIHZvaWQgaW5pdGlhbGl6ZVVJQ2xp
ZW50KGNvbnN0IFdLUGFnZVVJQ2xpZW50Kik7CisjaWYgUExBVEZPUk0oRUZMKQorICAgIHZvaWQg
aW5pdGlhbGl6ZVVJUG9wdXBNZW51Q2xpZW50KGNvbnN0IFdLUGFnZVVJUG9wdXBNZW51Q2xpZW50
Kik7CisjZW5kaWYKIAogICAgIHZvaWQgaW5pdGlhbGl6ZVdlYlBhZ2UoKTsKIApAQCAtMTAyMCw2
ICsxMDI1LDkgQEAgcHJpdmF0ZToKICAgICBXZWJQb2xpY3lDbGllbnQgbV9wb2xpY3lDbGllbnQ7
CiAgICAgV2ViRm9ybUNsaWVudCBtX2Zvcm1DbGllbnQ7CiAgICAgV2ViVUlDbGllbnQgbV91aUNs
aWVudDsKKyNpZiBQTEFURk9STShFRkwpCisgICAgV2ViVUlQb3B1cE1lbnVDbGllbnQgbV91aVBv
cHVwTWVudUNsaWVudDsKKyNlbmRpZgogICAgIFdlYkZpbmRDbGllbnQgbV9maW5kQ2xpZW50Owog
ICAgIFdlYkZpbmRNYXRjaGVzQ2xpZW50IG1fZmluZE1hdGNoZXNDbGllbnQ7CiAjaWYgRU5BQkxF
KENPTlRFWFRfTUVOVVMpCmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViS2l0Mi9VSVByb2Nlc3MvV2Vi
UG9wdXBNZW51UHJveHkuaCBiL1NvdXJjZS9XZWJLaXQyL1VJUHJvY2Vzcy9XZWJQb3B1cE1lbnVQ
cm94eS5oCmluZGV4IDBkNzc4OGQuLjFjYWY4ZGQgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJLaXQy
L1VJUHJvY2Vzcy9XZWJQb3B1cE1lbnVQcm94eS5oCisrKyBiL1NvdXJjZS9XZWJLaXQyL1VJUHJv
Y2Vzcy9XZWJQb3B1cE1lbnVQcm94eS5oCkBAIC02Niw4ICs2NiwxMCBAQCBwdWJsaWM6CiAgICAg
ewogICAgIH0KIAorI2lmICFQTEFURk9STShFRkwpCiAgICAgdmlydHVhbCB2b2lkIHNob3dQb3B1
cE1lbnUoY29uc3QgV2ViQ29yZTo6SW50UmVjdCYgcmVjdCwgV2ViQ29yZTo6VGV4dERpcmVjdGlv
biwgZG91YmxlIHBhZ2VTY2FsZUZhY3RvciwgY29uc3QgVmVjdG9yPFdlYlBvcHVwSXRlbT4mIGl0
ZW1zLCBjb25zdCBQbGF0Zm9ybVBvcHVwTWVudURhdGEmLCBpbnQzMl90IHNlbGVjdGVkSW5kZXgp
ID0gMDsKICAgICB2aXJ0dWFsIHZvaWQgaGlkZVBvcHVwTWVudSgpID0gMDsKKyNlbmRpZgogCiAg
ICAgdm9pZCBpbnZhbGlkYXRlKCkgeyBtX2NsaWVudCA9IDA7IH0KIApkaWZmIC0tZ2l0IGEvU291
cmNlL1dlYktpdDIvVUlQcm9jZXNzL2VmbC9QYWdlQ2xpZW50QmFzZS5jcHAgYi9Tb3VyY2UvV2Vi
S2l0Mi9VSVByb2Nlc3MvZWZsL1BhZ2VDbGllbnRCYXNlLmNwcAppbmRleCAyNmI3ZTRmLi4zYjAw
YTUwIDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViS2l0Mi9VSVByb2Nlc3MvZWZsL1BhZ2VDbGllbnRC
YXNlLmNwcAorKysgYi9Tb3VyY2UvV2ViS2l0Mi9VSVByb2Nlc3MvZWZsL1BhZ2VDbGllbnRCYXNl
LmNwcApAQCAtMzgsNyArMzgsNyBAQAogI2luY2x1ZGUgIldlYkNvbnRleHRNZW51UHJveHlFZmwu
aCIKICNpbmNsdWRlICJXZWJQYWdlR3JvdXAuaCIKICNpbmNsdWRlICJXZWJQYWdlUHJveHkuaCIK
LSNpbmNsdWRlICJXZWJQb3B1cE1lbnVQcm94eUVmbC5oIgorI2luY2x1ZGUgIldlYlBvcHVwTWVu
dUxpc3RlbmVyRWZsLmgiCiAjaW5jbHVkZSAiV2ViUHJlZmVyZW5jZXMuaCIKICNpbmNsdWRlICJl
d2tfY29udGV4dC5oIgogI2luY2x1ZGUgImV3a19jb250ZXh0X3ByaXZhdGUuaCIKQEAgLTIxNCw3
ICsyMTQsNyBAQCB2b2lkIFBhZ2VDbGllbnRCYXNlOjpkb25lV2l0aFRvdWNoRXZlbnQoY29uc3Qg
TmF0aXZlV2ViVG91Y2hFdmVudCYsIGJvb2wgLyp3YXNFdgogCiBQYXNzUmVmUHRyPFdlYlBvcHVw
TWVudVByb3h5PiBQYWdlQ2xpZW50QmFzZTo6Y3JlYXRlUG9wdXBNZW51UHJveHkoV2ViUGFnZVBy
b3h5KiBwYWdlKQogewotICAgIHJldHVybiBXZWJQb3B1cE1lbnVQcm94eUVmbDo6Y3JlYXRlKG1f
dmlldywgcGFnZSk7CisgICAgcmV0dXJuIFdlYlBvcHVwTWVudUxpc3RlbmVyRWZsOjpjcmVhdGUo
cGFnZSk7CiB9CiAKIFBhc3NSZWZQdHI8V2ViQ29udGV4dE1lbnVQcm94eT4gUGFnZUNsaWVudEJh
c2U6OmNyZWF0ZUNvbnRleHRNZW51UHJveHkoV2ViUGFnZVByb3h5KiBwYWdlKQpkaWZmIC0tZ2l0
IGEvU291cmNlL1dlYktpdDIvVUlQcm9jZXNzL2VmbC9QYWdlVUlDbGllbnRFZmwuY3BwIGIvU291
cmNlL1dlYktpdDIvVUlQcm9jZXNzL2VmbC9QYWdlVUlDbGllbnRFZmwuY3BwCmluZGV4IDI0MjJj
YWQuLjU0ODhlYTEgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJLaXQyL1VJUHJvY2Vzcy9lZmwvUGFn
ZVVJQ2xpZW50RWZsLmNwcAorKysgYi9Tb3VyY2UvV2ViS2l0Mi9VSVByb2Nlc3MvZWZsL1BhZ2VV
SUNsaWVudEVmbC5jcHAKQEAgLTMwLDYgKzMwLDcgQEAKICNpbmNsdWRlICJFd2tWaWV3LmgiCiAj
aW5jbHVkZSAiV0tBUElDYXN0LmgiCiAjaW5jbHVkZSAiV0tFdmVudC5oIgorI2luY2x1ZGUgIldL
UGFnZUVmbC5oIgogI2luY2x1ZGUgIldLU3RyaW5nLmgiCiAjaW5jbHVkZSAiZXdrX2ZpbGVfY2hv
b3Nlcl9yZXF1ZXN0X3ByaXZhdGUuaCIKICNpbmNsdWRlICJld2tfd2luZG93X2ZlYXR1cmVzX3By
aXZhdGUuaCIKQEAgLTg0LDYgKzg1LDE1IEBAIFBhZ2VVSUNsaWVudEVmbDo6UGFnZVVJQ2xpZW50
RWZsKEV3a1ZpZXcqIHZpZXcpCiAjZW5kaWYKIAogICAgIFdLUGFnZVNldFBhZ2VVSUNsaWVudChw
YWdlUmVmLCAmdWlDbGllbnQpOworCisgICAgLy8gUG9wdXAgTWVudSBVSSBjbGllbnQuCisgICAg
V0tQYWdlVUlQb3B1cE1lbnVDbGllbnQgdWlQb3B1cE1lbnVDbGllbnQ7CisgICAgbWVtc2V0KCZ1
aVBvcHVwTWVudUNsaWVudCwgMCwgc2l6ZW9mKFdLUGFnZVVJUG9wdXBNZW51Q2xpZW50KSk7Cisg
ICAgdWlQb3B1cE1lbnVDbGllbnQudmVyc2lvbiA9IGtXS1BhZ2VVSVBvcHVwTWVudUNsaWVudEN1
cnJlbnRWZXJzaW9uOworICAgIHVpUG9wdXBNZW51Q2xpZW50LmNsaWVudEluZm8gPSB0aGlzOwor
ICAgIHVpUG9wdXBNZW51Q2xpZW50LnNob3dQb3B1cE1lbnUgPSBzaG93UG9wdXBNZW51OworICAg
IHVpUG9wdXBNZW51Q2xpZW50LmhpZGVQb3B1cE1lbnUgPSBoaWRlUG9wdXBNZW51OworICAgIFdL
UGFnZVNldFVJUG9wdXBNZW51Q2xpZW50KHBhZ2VSZWYsICZ1aVBvcHVwTWVudUNsaWVudCk7CiB9
CiAKIApAQCAtMjMxLDQgKzI0MSwxNCBAQCB2b2lkIFBhZ2VVSUNsaWVudEVmbDo6aGlkZUNvbG9y
UGlja2VyKFdLUGFnZVJlZiwgY29uc3Qgdm9pZCogY2xpZW50SW5mbykKIH0KICNlbmRpZgogCit2
b2lkIFBhZ2VVSUNsaWVudEVmbDo6c2hvd1BvcHVwTWVudShXS1BhZ2VSZWYsIFdLUG9wdXBNZW51
TGlzdGVuZXJSZWYgbWVudUxpc3RlbmVyUmVmLCBXS1JlY3QgcmVjdCwgV0tQb3B1cEl0ZW1UZXh0
RGlyZWN0aW9uIHRleHREaXJlY3Rpb24sIGRvdWJsZSBwYWdlU2NhbGVGYWN0b3IsIFdLQXJyYXlS
ZWYgaXRlbXNSZWYsIGludDMyX3Qgc2VsZWN0ZWRJbmRleCwgY29uc3Qgdm9pZCogY2xpZW50SW5m
bykKK3sKKyAgICByZXR1cm4gdG9QYWdlVUlDbGllbnRFZmwoY2xpZW50SW5mbyktPm1fdmlldy0+
cmVxdWVzdFBvcHVwTWVudShtZW51TGlzdGVuZXJSZWYsIHJlY3QsIHRleHREaXJlY3Rpb24sIHBh
Z2VTY2FsZUZhY3RvciwgaXRlbXNSZWYsIHNlbGVjdGVkSW5kZXgpOworfQorCit2b2lkIFBhZ2VV
SUNsaWVudEVmbDo6aGlkZVBvcHVwTWVudShXS1BhZ2VSZWYsIGNvbnN0IHZvaWQqIGNsaWVudElu
Zm8pCit7CisgICAgcmV0dXJuIHRvUGFnZVVJQ2xpZW50RWZsKGNsaWVudEluZm8pLT5tX3ZpZXct
PmNsb3NlUG9wdXBNZW51KCk7Cit9CisKIH0gLy8gbmFtZXNwYWNlIFdlYktpdApkaWZmIC0tZ2l0
IGEvU291cmNlL1dlYktpdDIvVUlQcm9jZXNzL2VmbC9QYWdlVUlDbGllbnRFZmwuaCBiL1NvdXJj
ZS9XZWJLaXQyL1VJUHJvY2Vzcy9lZmwvUGFnZVVJQ2xpZW50RWZsLmgKaW5kZXggMjQwZmU1OC4u
ZGY0N2I5NyAxMDA2NDQKLS0tIGEvU291cmNlL1dlYktpdDIvVUlQcm9jZXNzL2VmbC9QYWdlVUlD
bGllbnRFZmwuaAorKysgYi9Tb3VyY2UvV2ViS2l0Mi9VSVByb2Nlc3MvZWZsL1BhZ2VVSUNsaWVu
dEVmbC5oCkBAIC0yOCw2ICsyOCw3IEBACiAjZGVmaW5lIFBhZ2VVSUNsaWVudEVmbF9oCiAKICNp
bmNsdWRlICJXS1BhZ2UuaCIKKyNpbmNsdWRlICJXS1BvcHVwSXRlbS5oIgogI2luY2x1ZGUgPFdl
YktpdDIvV0tCYXNlLmg+CiAjaW5jbHVkZSA8d3RmL1Bhc3NPd25QdHIuaD4KIApAQCAtNzMsNiAr
NzQsOSBAQCBwcml2YXRlOgogICAgIHN0YXRpYyB2b2lkIGhpZGVDb2xvclBpY2tlcihXS1BhZ2VS
ZWYsIGNvbnN0IHZvaWQqKTsKICNlbmRpZgogCisgICAgc3RhdGljIHZvaWQgc2hvd1BvcHVwTWVu
dShXS1BhZ2VSZWYsIFdLUG9wdXBNZW51TGlzdGVuZXJSZWYsIFdLUmVjdCwgV0tQb3B1cEl0ZW1U
ZXh0RGlyZWN0aW9uLCBkb3VibGUgcGFnZVNjYWxlRmFjdG9yLCBXS0FycmF5UmVmIGl0ZW1zUmVm
LCBpbnQzMl90IHNlbGVjdGVkSW5kZXgsIGNvbnN0IHZvaWQqIGNsaWVudEluZm8pOworICAgIHN0
YXRpYyB2b2lkIGhpZGVQb3B1cE1lbnUoV0tQYWdlUmVmLCBjb25zdCB2b2lkKiBjbGllbnRJbmZv
KTsKKwogICAgIEV3a1ZpZXcqIG1fdmlldzsKIH07CiAKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJL
aXQyL1VJUHJvY2Vzcy9lZmwvV2ViUGFnZVByb3h5RWZsLmNwcCBiL1NvdXJjZS9XZWJLaXQyL1VJ
UHJvY2Vzcy9lZmwvV2ViUGFnZVByb3h5RWZsLmNwcAppbmRleCBkZTcwY2ExLi5lNGFkNWUyIDEw
MDY0NAotLS0gYS9Tb3VyY2UvV2ViS2l0Mi9VSVByb2Nlc3MvZWZsL1dlYlBhZ2VQcm94eUVmbC5j
cHAKKysrIGIvU291cmNlL1dlYktpdDIvVUlQcm9jZXNzL2VmbC9XZWJQYWdlUHJveHlFZmwuY3Bw
CkBAIC0xMjQsNCArMTI0LDkgQEAgdm9pZCBXZWJQYWdlUHJveHk6OmNhbmNlbENvbXBvc2l0aW9u
KCkKICAgICBwcm9jZXNzKCktPnNlbmQoTWVzc2FnZXM6OldlYlBhZ2U6OkNhbmNlbENvbXBvc2l0
aW9uKCksIG1fcGFnZUlELCAwKTsKIH0KIAordm9pZCBXZWJQYWdlUHJveHk6OmluaXRpYWxpemVV
SVBvcHVwTWVudUNsaWVudChjb25zdCBXS1BhZ2VVSVBvcHVwTWVudUNsaWVudCogY2xpZW50KQor
eworICAgIG1fdWlQb3B1cE1lbnVDbGllbnQuaW5pdGlhbGl6ZShjbGllbnQpOworfQorCiB9IC8v
IG5hbWVzcGFjZSBXZWJLaXQKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJLaXQyL1VJUHJvY2Vzcy9l
ZmwvV2ViUG9wdXBJdGVtRWZsLmNwcCBiL1NvdXJjZS9XZWJLaXQyL1VJUHJvY2Vzcy9lZmwvV2Vi
UG9wdXBJdGVtRWZsLmNwcApuZXcgZmlsZSBtb2RlIDEwMDY0NAppbmRleCAwMDAwMDAwLi5mNDIw
YzBlCi0tLSAvZGV2L251bGwKKysrIGIvU291cmNlL1dlYktpdDIvVUlQcm9jZXNzL2VmbC9XZWJQ
b3B1cEl0ZW1FZmwuY3BwCkBAIC0wLDAgKzEsNDAgQEAKKy8qCisgKiBDb3B5cmlnaHQgKEMpIDIw
MTMgU2Ftc3VuZyBFbGVjdHJvbmljcy4gQWxsIHJpZ2h0cyByZXNlcnZlZC4KKyAqCisgKiBSZWRp
c3RyaWJ1dGlvbiBhbmQgdXNlIGluIHNvdXJjZSBhbmQgYmluYXJ5IGZvcm1zLCB3aXRoIG9yIHdp
dGhvdXQKKyAqIG1vZGlmaWNhdGlvbiwgYXJlIHBlcm1pdHRlZCBwcm92aWRlZCB0aGF0IHRoZSBm
b2xsb3dpbmcgY29uZGl0aW9ucworICogYXJlIG1ldDoKKyAqIDEuIFJlZGlzdHJpYnV0aW9ucyBv
ZiBzb3VyY2UgY29kZSBtdXN0IHJldGFpbiB0aGUgYWJvdmUgY29weXJpZ2h0CisgKiAgICBub3Rp
Y2UsIHRoaXMgbGlzdCBvZiBjb25kaXRpb25zIGFuZCB0aGUgZm9sbG93aW5nIGRpc2NsYWltZXIu
CisgKiAyLiBSZWRpc3RyaWJ1dGlvbnMgaW4gYmluYXJ5IGZvcm0gbXVzdCByZXByb2R1Y2UgdGhl
IGFib3ZlIGNvcHlyaWdodAorICogICAgbm90aWNlLCB0aGlzIGxpc3Qgb2YgY29uZGl0aW9ucyBh
bmQgdGhlIGZvbGxvd2luZyBkaXNjbGFpbWVyIGluIHRoZQorICogICAgZG9jdW1lbnRhdGlvbiBh
bmQvb3Igb3RoZXIgbWF0ZXJpYWxzIHByb3ZpZGVkIHdpdGggdGhlIGRpc3RyaWJ1dGlvbi4KKyAq
CisgKiBUSElTIFNPRlRXQVJFIElTIFBST1ZJREVEIEJZIEFQUExFIElOQy4gQU5EIElUUyBDT05U
UklCVVRPUlMgYGBBUyBJUycnCisgKiBBTkQgQU5ZIEVYUFJFU1MgT1IgSU1QTElFRCBXQVJSQU5U
SUVTLCBJTkNMVURJTkcsIEJVVCBOT1QgTElNSVRFRCBUTywKKyAqIFRIRSBJTVBMSUVEIFdBUlJB
TlRJRVMgT0YgTUVSQ0hBTlRBd0JJTElUWSBBTkQgRklUTkVTUyBGT1IgQSBQQVJUSUNVTEFSCisg
KiBQVVJQT1NFIEFSRSBESVNDTEFJTUVELiBJTiBOTyBFVkVOVCBTSEFMTCBBUFBMRSBJTkMuIE9S
IElUUyBDT05UUklCVVRPUlMKKyAqIEJFIExJQUJMRSBGT1IgQU5ZIERJUkVDVCwgSU5ESVJFQ1Qs
IElOQ0lERU5UQUwsIFNQRUNJQUwsIEVYRU1QTEFSWSwgT1IKKyAqIENPTlNFUVVFTlRJQUwgREFN
QUdFUyAoSU5DTFVESU5HLCBCVVQgTk9UIExJTUlURUQgVE8sIFBST0NVUkVNRU5UIE9GCisgKiBT
VUJTVElUVVRFIEdPT0RTIE9SIFNFUlZJQ0VTOyBMT1NTIE9GIFVTRSwgREFUQSwgT1IgUFJPRklU
UzsgT1IgQlVTSU5FU1MKKyAqIElOVEVSUlVQVElPTikgSE9XRVZFUiBDQVVTRUQgQU5EIE9OIEFO
WSBUSEVPUlkgT0YgTElBQklMSVRZLCBXSEVUSEVSIElOCisgKiBDT05UUkFDVCwgU1RSSUNUIExJ
QUJJTElUWSwgT1IgVE9SVCAoSU5DTFVESU5HIE5FR0xJR0VOQ0UgT1IgT1RIRVJXSVNFKQorICog
QVJJU0lORyBJTiBBTlkgV0FZIE9VVCBPRiBUSEUgVVNFIE9GIFRISVMgU09GVFdBUkUsIEVWRU4g
SUYgQURWSVNFRCBPRgorICogVEhFIFBPU1NJQklMSVRZIE9GIFNVQ0ggREFNQUdFLgorICovCisK
KyNpbmNsdWRlICJjb25maWcuaCIKKyNpbmNsdWRlICJXZWJQb3B1cEl0ZW1FZmwuaCIKKworbmFt
ZXNwYWNlIFdlYktpdCB7CisKK1dlYlBvcHVwSXRlbUVmbDo6V2ViUG9wdXBJdGVtRWZsKGNvbnN0
IFdlYlBvcHVwSXRlbSYgZGF0YSkKKyAgICA6IG1fZGF0YShkYXRhKQoreworfQorCitXZWJQb3B1
cEl0ZW1FZmw6On5XZWJQb3B1cEl0ZW1FZmwoKQoreworfQorCit9IC8vIG5hbWVzcGFjZSBXZWJL
aXQKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJLaXQyL1VJUHJvY2Vzcy9lZmwvV2ViUG9wdXBJdGVt
RWZsLmggYi9Tb3VyY2UvV2ViS2l0Mi9VSVByb2Nlc3MvZWZsL1dlYlBvcHVwSXRlbUVmbC5oCm5l
dyBmaWxlIG1vZGUgMTAwNjQ0CmluZGV4IDAwMDAwMDAuLjE1ODFjYTUKLS0tIC9kZXYvbnVsbAor
KysgYi9Tb3VyY2UvV2ViS2l0Mi9VSVByb2Nlc3MvZWZsL1dlYlBvcHVwSXRlbUVmbC5oCkBAIC0w
LDAgKzEsNjcgQEAKKy8qCisgKiBDb3B5cmlnaHQgKEMpIDIwMTMgU2Ftc3VuZyBFbGVjdHJvbmlj
cy4gQWxsIHJpZ2h0cyByZXNlcnZlZC4KKyAqCisgKiBSZWRpc3RyaWJ1dGlvbiBhbmQgdXNlIGlu
IHNvdXJjZSBhbmQgYmluYXJ5IGZvcm1zLCB3aXRoIG9yIHdpdGhvdXQKKyAqIG1vZGlmaWNhdGlv
biwgYXJlIHBlcm1pdHRlZCBwcm92aWRlZCB0aGF0IHRoZSBmb2xsb3dpbmcgY29uZGl0aW9ucwor
ICogYXJlIG1ldDoKKyAqIDEuIFJlZGlzdHJpYnV0aW9ucyBvZiBzb3VyY2UgY29kZSBtdXN0IHJl
dGFpbiB0aGUgYWJvdmUgY29weXJpZ2h0CisgKiAgICBub3RpY2UsIHRoaXMgbGlzdCBvZiBjb25k
aXRpb25zIGFuZCB0aGUgZm9sbG93aW5nIGRpc2NsYWltZXIuCisgKiAyLiBSZWRpc3RyaWJ1dGlv
bnMgaW4gYmluYXJ5IGZvcm0gbXVzdCByZXByb2R1Y2UgdGhlIGFib3ZlIGNvcHlyaWdodAorICog
ICAgbm90aWNlLCB0aGlzIGxpc3Qgb2YgY29uZGl0aW9ucyBhbmQgdGhlIGZvbGxvd2luZyBkaXNj
bGFpbWVyIGluIHRoZQorICogICAgZG9jdW1lbnRhdGlvbiBhbmQvb3Igb3RoZXIgbWF0ZXJpYWxz
IHByb3ZpZGVkIHdpdGggdGhlIGRpc3RyaWJ1dGlvbi4KKyAqCisgKiBUSElTIFNPRlRXQVJFIElT
IFBST1ZJREVEIEJZIEFQUExFIElOQy4gQU5EIElUUyBDT05UUklCVVRPUlMgYGBBUyBJUycnCisg
KiBBTkQgQU5ZIEVYUFJFU1MgT1IgSU1QTElFRCBXQVJSQU5USUVTLCBJTkNMVURJTkcsIEJVVCBO
T1QgTElNSVRFRCBUTywKKyAqIFRIRSBJTVBMSUVEIFdBUlJBTlRJRVMgT0YgTUVSQ0hBTlRBd0JJ
TElUWSBBTkQgRklUTkVTUyBGT1IgQSBQQVJUSUNVTEFSCisgKiBQVVJQT1NFIEFSRSBESVNDTEFJ
TUVELiBJTiBOTyBFVkVOVCBTSEFMTCBBUFBMRSBJTkMuIE9SIElUUyBDT05UUklCVVRPUlMKKyAq
IEJFIExJQUJMRSBGT1IgQU5ZIERJUkVDVCwgSU5ESVJFQ1QsIElOQ0lERU5UQUwsIFNQRUNJQUws
IEVYRU1QTEFSWSwgT1IKKyAqIENPTlNFUVVFTlRJQUwgREFNQUdFUyAoSU5DTFVESU5HLCBCVVQg
Tk9UIExJTUlURUQgVE8sIFBST0NVUkVNRU5UIE9GCisgKiBTVUJTVElUVVRFIEdPT0RTIE9SIFNF
UlZJQ0VTOyBMT1NTIE9GIFVTRSwgREFUQSwgT1IgUFJPRklUUzsgT1IgQlVTSU5FU1MKKyAqIElO
VEVSUlVQVElPTikgSE9XRVZFUiBDQVVTRUQgQU5EIE9OIEFOWSBUSEVPUlkgT0YgTElBQklMSVRZ
LCBXSEVUSEVSIElOCisgKiBDT05UUkFDVCwgU1RSSUNUIExJQUJJTElUWSwgT1IgVE9SVCAoSU5D
TFVESU5HIE5FR0xJR0VOQ0UgT1IgT1RIRVJXSVNFKQorICogQVJJU0lORyBJTiBBTlkgV0FZIE9V
VCBPRiBUSEUgVVNFIE9GIFRISVMgU09GVFdBUkUsIEVWRU4gSUYgQURWSVNFRCBPRgorICogVEhF
IFBPU1NJQklMSVRZIE9GIFNVQ0ggREFNQUdFLgorICovCisKKyNpZm5kZWYgV2ViUG9wdXBJdGVt
RWZsX2gKKyNkZWZpbmUgV2ViUG9wdXBJdGVtRWZsX2gKKworI2luY2x1ZGUgIkFQSU9iamVjdC5o
IgorI2luY2x1ZGUgIldlYlBvcHVwSXRlbS5oIgorI2luY2x1ZGUgPHd0Zi9QYXNzUmVmUHRyLmg+
CisKK25hbWVzcGFjZSBXZWJLaXQgeworCitjbGFzcyBXZWJQb3B1cEl0ZW1FZmwgOiBwdWJsaWMg
QVBJT2JqZWN0IHsKK3B1YmxpYzoKKyAgICBzdGF0aWMgY29uc3QgVHlwZSBBUElUeXBlID0gVHlw
ZVBvcHVwTWVudUl0ZW07CisKKyAgICBzdGF0aWMgUGFzc1JlZlB0cjxXZWJQb3B1cEl0ZW1FZmw+
IGNyZWF0ZShjb25zdCBXZWJQb3B1cEl0ZW0mIGRhdGEpCisgICAgeworICAgICAgICByZXR1cm4g
YWRvcHRSZWYobmV3IFdlYlBvcHVwSXRlbUVmbChkYXRhKSk7CisgICAgfQorCisgICAgdmlydHVh
bCB+V2ViUG9wdXBJdGVtRWZsKCk7CisgICAgY29uc3QgV2ViUG9wdXBJdGVtJiBkYXRhKCkgY29u
c3QgeyByZXR1cm4gbV9kYXRhOyB9CisKKyAgICBXZWJQb3B1cEl0ZW06OlR5cGUgaXRlbVR5cGUo
KSBjb25zdCB7IHJldHVybiBtX2RhdGEubV90eXBlOyB9CisgICAgU3RyaW5nIHRleHQoKSBjb25z
dCB7IHJldHVybiBtX2RhdGEubV90ZXh0OyB9CisgICAgV2ViQ29yZTo6VGV4dERpcmVjdGlvbiB0
ZXh0RGlyZWN0aW9uKCkgY29uc3QgeyByZXR1cm4gbV9kYXRhLm1fdGV4dERpcmVjdGlvbjsgfQor
ICAgIGJvb2wgaGFzVGV4dERpcmVjdGlvbk92ZXJyaWRlKCkgY29uc3QgeyByZXR1cm4gbV9kYXRh
Lm1faGFzVGV4dERpcmVjdGlvbk92ZXJyaWRlOyB9CisgICAgU3RyaW5nIHRvb2xUaXBUZXh0KCkg
Y29uc3QgeyByZXR1cm4gbV9kYXRhLm1fdG9vbFRpcDsgfQorICAgIFN0cmluZyBhY2Nlc3NpYmls
aXR5VGV4dCgpIGNvbnN0IHsgcmV0dXJuIG1fZGF0YS5tX2FjY2Vzc2liaWxpdHlUZXh0OyB9Cisg
ICAgYm9vbCBpc0VuYWJsZWQoKSBjb25zdCB7IHJldHVybiBtX2RhdGEubV9pc0VuYWJsZWQ7IH0K
KyAgICBib29sIGlzTGFiZWwoKSBjb25zdCB7IHJldHVybiBtX2RhdGEubV9pc0xhYmVsOyB9Cisg
ICAgYm9vbCBpc1NlbGVjdGVkKCkgY29uc3QgeyByZXR1cm4gbV9kYXRhLm1faXNTZWxlY3RlZDsg
fQorCitwcml2YXRlOgorICAgIGV4cGxpY2l0IFdlYlBvcHVwSXRlbUVmbChjb25zdCBXZWJQb3B1
cEl0ZW0mKTsKKworICAgIHZpcnR1YWwgVHlwZSB0eXBlKCkgY29uc3QgeyByZXR1cm4gQVBJVHlw
ZTsgfQorCisgICAgV2ViUG9wdXBJdGVtIG1fZGF0YTsKK307CisKK30gLy8gbmFtZXNwYWNlIFdl
YktpdAorCisjZW5kaWYgLy8gV2ViUG9wdXBJdGVtRWZsX2gKZGlmZiAtLWdpdCBhL1NvdXJjZS9X
ZWJLaXQyL1VJUHJvY2Vzcy9lZmwvV2ViUG9wdXBNZW51TGlzdGVuZXJFZmwuY3BwIGIvU291cmNl
L1dlYktpdDIvVUlQcm9jZXNzL2VmbC9XZWJQb3B1cE1lbnVMaXN0ZW5lckVmbC5jcHAKbmV3IGZp
bGUgbW9kZSAxMDA2NDQKaW5kZXggMDAwMDAwMC4uMTFiMjllNgotLS0gL2Rldi9udWxsCisrKyBi
L1NvdXJjZS9XZWJLaXQyL1VJUHJvY2Vzcy9lZmwvV2ViUG9wdXBNZW51TGlzdGVuZXJFZmwuY3Bw
CkBAIC0wLDAgKzEsNDUgQEAKKy8qCisgKiBDb3B5cmlnaHQgKEMpIDIwMTIgU2Ftc3VuZyBFbGVj
dHJvbmljcworICoKKyAqIFJlZGlzdHJpYnV0aW9uIGFuZCB1c2UgaW4gc291cmNlIGFuZCBiaW5h
cnkgZm9ybXMsIHdpdGggb3Igd2l0aG91dAorICogbW9kaWZpY2F0aW9uLCBhcmUgcGVybWl0dGVk
IHByb3ZpZGVkIHRoYXQgdGhlIGZvbGxvd2luZyBjb25kaXRpb25zCisgKiBhcmUgbWV0OgorICog
MS4gUmVkaXN0cmlidXRpb25zIG9mIHNvdXJjZSBjb2RlIG11c3QgcmV0YWluIHRoZSBhYm92ZSBj
b3B5cmlnaHQKKyAqICAgIG5vdGljZSwgdGhpcyBsaXN0IG9mIGNvbmRpdGlvbnMgYW5kIHRoZSBm
b2xsb3dpbmcgZGlzY2xhaW1lci4KKyAqIDIuIFJlZGlzdHJpYnV0aW9ucyBpbiBiaW5hcnkgZm9y
bSBtdXN0IHJlcHJvZHVjZSB0aGUgYWJvdmUgY29weXJpZ2h0CisgKiAgICBub3RpY2UsIHRoaXMg
bGlzdCBvZiBjb25kaXRpb25zIGFuZCB0aGUgZm9sbG93aW5nIGRpc2NsYWltZXIgaW4gdGhlCisg
KiAgICBkb2N1bWVudGF0aW9uIGFuZC9vciBvdGhlciBtYXRlcmlhbHMgcHJvdmlkZWQgd2l0aCB0
aGUgZGlzdHJpYnV0aW9uLgorICoKKyAqIFRISVMgU09GVFdBUkUgSVMgUFJPVklERUQgQlkgVEhF
IENPUFlSSUdIVCBIT0xERVJTIEFORCBDT05UUklCVVRPUlMKKyAqICJBUyBJUyIgQU5EIEFOWSBF
WFBSRVNTIE9SIElNUExJRUQgV0FSUkFOVElFUywgSU5DTFVESU5HLCBCVVQgTk9UIExJTUlURUQg
VE8sCisgKiBUSEUgSU1QTElFRCBXQVJSQU5USUVTIE9GIE1FUkNIQU5UQUJJTElUWSBBTkQgRklU
TkVTUyBGT1IgQSBQQVJUSUNVTEFSCisgKiBQVVJQT1NFIEFSRSBESVNDTEFJTUVELiAgSU4gTk8g
RVZFTlQgU0hBTEwgVEhFIENPUFlSSUdIVCBIT0xERVIgT1IKKyAqIENPTlRSSUJVVE9SUyBCRSBM
SUFCTEUgRk9SIEFOWSBESVJFQ1QsIElORElSRUNULCBJTkNJREVOVEFMLCBTUEVDSUFMLAorICog
RVhFTVBMQVJZLCBPUiBDT05TRVFVRU5USUFMIERBTUFHRVMgKElOQ0xVRElORywgQlVUIE5PVCBM
SU1JVEVEIFRPLAorICogUFJPQ1VSRU1FTlQgT0YgU1VCU1RJVFVURSBHT09EUyBPUiBTRVJWSUNF
UzsgTE9TUyBPRiBVU0UsIERBVEEsIE9SCisgKiBQUk9GSVRTOyBPUiBCVVNJTkVTUyBJTlRFUlJV
UFRJT04pIEhPV0VWRVIgQ0FVU0VEIEFORCBPTiBBTlkgVEhFT1JZCisgKiBPRiBMSUFCSUxJVFks
IFdIRVRIRVIgSU4gQ09OVFJBQ1QsIFNUUklDVCBMSUFCSUxJVFksIE9SIFRPUlQgKElOQ0xVRElO
RworICogTkVHTElHRU5DRSBPUiBPVEhFUldJU0UpIEFSSVNJTkcgSU4gQU5ZIFdBWSBPVVQgT0Yg
VEhFIFVTRSBPRiBUSElTCisgKiBTT0ZUV0FSRSwgRVZFTiBJRiBBRFZJU0VEIE9GIFRIRSBQT1NT
SUJJTElUWSBPRiBTVUNIIERBTUFHRS4KKyAqLworCisjaW5jbHVkZSAiY29uZmlnLmgiCisjaW5j
bHVkZSAiV2ViUG9wdXBNZW51TGlzdGVuZXJFZmwuaCIKKworbmFtZXNwYWNlIFdlYktpdCB7CisK
K1dlYlBvcHVwTWVudUxpc3RlbmVyRWZsOjpXZWJQb3B1cE1lbnVMaXN0ZW5lckVmbChXZWJQb3B1
cE1lbnVQcm94eTo6Q2xpZW50KiBjbGllbnQpCisgICAgOiBXZWJQb3B1cE1lbnVQcm94eShjbGll
bnQpCit7Cit9CisKK3ZvaWQgV2ViUG9wdXBNZW51TGlzdGVuZXJFZmw6OnZhbHVlQ2hhbmdlZChp
bnQgbmV3U2VsZWN0ZWRJbmRleCkKK3sKKyAgICBpZiAoIW1fY2xpZW50KQorICAgICAgICByZXR1
cm47CisKKyAgICBtX2NsaWVudC0+dmFsdWVDaGFuZ2VkRm9yUG9wdXBNZW51KHRoaXMsIG5ld1Nl
bGVjdGVkSW5kZXgpOworICAgIGludmFsaWRhdGUoKTsKK30KKworfSAvLyBuYW1lc3BhY2UgV2Vi
S2l0CmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViS2l0Mi9VSVByb2Nlc3MvZWZsL1dlYlBvcHVwTWVu
dUxpc3RlbmVyRWZsLmggYi9Tb3VyY2UvV2ViS2l0Mi9VSVByb2Nlc3MvZWZsL1dlYlBvcHVwTWVu
dUxpc3RlbmVyRWZsLmgKbmV3IGZpbGUgbW9kZSAxMDA2NDQKaW5kZXggMDAwMDAwMC4uNmJjZjgz
MwotLS0gL2Rldi9udWxsCisrKyBiL1NvdXJjZS9XZWJLaXQyL1VJUHJvY2Vzcy9lZmwvV2ViUG9w
dXBNZW51TGlzdGVuZXJFZmwuaApAQCAtMCwwICsxLDQ4IEBACisvKgorICogQ29weXJpZ2h0IChD
KSAyMDEyIFNhbXN1bmcgRWxlY3Ryb25pY3MKKyAqCisgKiBSZWRpc3RyaWJ1dGlvbiBhbmQgdXNl
IGluIHNvdXJjZSBhbmQgYmluYXJ5IGZvcm1zLCB3aXRoIG9yIHdpdGhvdXQKKyAqIG1vZGlmaWNh
dGlvbiwgYXJlIHBlcm1pdHRlZCBwcm92aWRlZCB0aGF0IHRoZSBmb2xsb3dpbmcgY29uZGl0aW9u
cworICogYXJlIG1ldDoKKyAqIDEuIFJlZGlzdHJpYnV0aW9ucyBvZiBzb3VyY2UgY29kZSBtdXN0
IHJldGFpbiB0aGUgYWJvdmUgY29weXJpZ2h0CisgKiAgICBub3RpY2UsIHRoaXMgbGlzdCBvZiBj
b25kaXRpb25zIGFuZCB0aGUgZm9sbG93aW5nIGRpc2NsYWltZXIuCisgKiAyLiBSZWRpc3RyaWJ1
dGlvbnMgaW4gYmluYXJ5IGZvcm0gbXVzdCByZXByb2R1Y2UgdGhlIGFib3ZlIGNvcHlyaWdodAor
ICogICAgbm90aWNlLCB0aGlzIGxpc3Qgb2YgY29uZGl0aW9ucyBhbmQgdGhlIGZvbGxvd2luZyBk
aXNjbGFpbWVyIGluIHRoZQorICogICAgZG9jdW1lbnRhdGlvbiBhbmQvb3Igb3RoZXIgbWF0ZXJp
YWxzIHByb3ZpZGVkIHdpdGggdGhlIGRpc3RyaWJ1dGlvbi4KKyAqCisgKiBUSElTIFNPRlRXQVJF
IElTIFBST1ZJREVEIEJZIFRIRSBDT1BZUklHSFQgSE9MREVSUyBBTkQgQ09OVFJJQlVUT1JTCisg
KiAiQVMgSVMiIEFORCBBTlkgRVhQUkVTUyBPUiBJTVBMSUVEIFdBUlJBTlRJRVMsIElOQ0xVRElO
RywgQlVUIE5PVCBMSU1JVEVEIFRPLAorICogVEhFIElNUExJRUQgV0FSUkFOVElFUyBPRiBNRVJD
SEFOVEFCSUxJVFkgQU5EIEZJVE5FU1MgRk9SIEEgUEFSVElDVUxBUgorICogUFVSUE9TRSBBUkUg
RElTQ0xBSU1FRC4gIElOIE5PIEVWRU5UIFNIQUxMIFRIRSBDT1BZUklHSFQgSE9MREVSIE9SCisg
KiBDT05UUklCVVRPUlMgQkUgTElBQkxFIEZPUiBBTlkgRElSRUNULCBJTkRJUkVDVCwgSU5DSURF
TlRBTCwgU1BFQ0lBTCwKKyAqIEVYRU1QTEFSWSwgT1IgQ09OU0VRVUVOVElBTCBEQU1BR0VTIChJ
TkNMVURJTkcsIEJVVCBOT1QgTElNSVRFRCBUTywKKyAqIFBST0NVUkVNRU5UIE9GIFNVQlNUSVRV
VEUgR09PRFMgT1IgU0VSVklDRVM7IExPU1MgT0YgVVNFLCBEQVRBLCBPUgorICogUFJPRklUUzsg
T1IgQlVTSU5FU1MgSU5URVJSVVBUSU9OKSBIT1dFVkVSIENBVVNFRCBBTkQgT04gQU5ZIFRIRU9S
WQorICogT0YgTElBQklMSVRZLCBXSEVUSEVSIElOIENPTlRSQUNULCBTVFJJQ1QgTElBQklMSVRZ
LCBPUiBUT1JUIChJTkNMVURJTkcKKyAqIE5FR0xJR0VOQ0UgT1IgT1RIRVJXSVNFKSBBUklTSU5H
IElOIEFOWSBXQVkgT1VUIE9GIFRIRSBVU0UgT0YgVEhJUworICogU09GVFdBUkUsIEVWRU4gSUYg
QURWSVNFRCBPRiBUSEUgUE9TU0lCSUxJVFkgT0YgU1VDSCBEQU1BR0UuCisgKi8KKworI2lmbmRl
ZiBXZWJQb3B1cE1lbnVMaXN0ZW5lckVmbF9oCisjZGVmaW5lIFdlYlBvcHVwTWVudUxpc3RlbmVy
RWZsX2gKKworI2luY2x1ZGUgIldlYlBvcHVwTWVudVByb3h5LmgiCisKK25hbWVzcGFjZSBXZWJL
aXQgeworCitjbGFzcyBXZWJQb3B1cE1lbnVMaXN0ZW5lckVmbCA6IHB1YmxpYyBXZWJQb3B1cE1l
bnVQcm94eSB7CitwdWJsaWM6CisgICAgc3RhdGljIFBhc3NSZWZQdHI8V2ViUG9wdXBNZW51TGlz
dGVuZXJFZmw+IGNyZWF0ZShXZWJQb3B1cE1lbnVQcm94eTo6Q2xpZW50KiBjbGllbnQpCisgICAg
eworICAgICAgICByZXR1cm4gYWRvcHRSZWYobmV3IFdlYlBvcHVwTWVudUxpc3RlbmVyRWZsKGNs
aWVudCkpOworICAgIH0KKworICAgIHZvaWQgdmFsdWVDaGFuZ2VkKGludCBuZXdTZWxlY3RlZElu
ZGV4KTsKKworcHJpdmF0ZToKKyAgICBXZWJQb3B1cE1lbnVMaXN0ZW5lckVmbChXZWJQb3B1cE1l
bnVQcm94eTo6Q2xpZW50Kik7Cit9OworCit9IC8vIG5hbWVzcGFjZSBXZWJLaXQKKworI2VuZGlm
IC8vIFdlYlBvcHVwTWVudUxpc3RlbmVyRWZsX2gKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJLaXQy
L1VJUHJvY2Vzcy9lZmwvV2ViUG9wdXBNZW51UHJveHlFZmwuY3BwIGIvU291cmNlL1dlYktpdDIv
VUlQcm9jZXNzL2VmbC9XZWJQb3B1cE1lbnVQcm94eUVmbC5jcHAKZGVsZXRlZCBmaWxlIG1vZGUg
MTAwNjQ0CmluZGV4IGE1OTU1MzcuLjAwMDAwMDAKLS0tIGEvU291cmNlL1dlYktpdDIvVUlQcm9j
ZXNzL2VmbC9XZWJQb3B1cE1lbnVQcm94eUVmbC5jcHAKKysrIC9kZXYvbnVsbApAQCAtMSw2MCAr
MCwwIEBACi0vKgotICogQ29weXJpZ2h0IChDKSAyMDEyIFNhbXN1bmcgRWxlY3Ryb25pY3MKLSAq
Ci0gKiBSZWRpc3RyaWJ1dGlvbiBhbmQgdXNlIGluIHNvdXJjZSBhbmQgYmluYXJ5IGZvcm1zLCB3
aXRoIG9yIHdpdGhvdXQKLSAqIG1vZGlmaWNhdGlvbiwgYXJlIHBlcm1pdHRlZCBwcm92aWRlZCB0
aGF0IHRoZSBmb2xsb3dpbmcgY29uZGl0aW9ucwotICogYXJlIG1ldDoKLSAqIDEuIFJlZGlzdHJp
YnV0aW9ucyBvZiBzb3VyY2UgY29kZSBtdXN0IHJldGFpbiB0aGUgYWJvdmUgY29weXJpZ2h0Ci0g
KiAgICBub3RpY2UsIHRoaXMgbGlzdCBvZiBjb25kaXRpb25zIGFuZCB0aGUgZm9sbG93aW5nIGRp
c2NsYWltZXIuCi0gKiAyLiBSZWRpc3RyaWJ1dGlvbnMgaW4gYmluYXJ5IGZvcm0gbXVzdCByZXBy
b2R1Y2UgdGhlIGFib3ZlIGNvcHlyaWdodAotICogICAgbm90aWNlLCB0aGlzIGxpc3Qgb2YgY29u
ZGl0aW9ucyBhbmQgdGhlIGZvbGxvd2luZyBkaXNjbGFpbWVyIGluIHRoZQotICogICAgZG9jdW1l
bnRhdGlvbiBhbmQvb3Igb3RoZXIgbWF0ZXJpYWxzIHByb3ZpZGVkIHdpdGggdGhlIGRpc3RyaWJ1
dGlvbi4KLSAqCi0gKiBUSElTIFNPRlRXQVJFIElTIFBST1ZJREVEIEJZIFRIRSBDT1BZUklHSFQg
SE9MREVSUyBBTkQgQ09OVFJJQlVUT1JTCi0gKiAiQVMgSVMiIEFORCBBTlkgRVhQUkVTUyBPUiBJ
TVBMSUVEIFdBUlJBTlRJRVMsIElOQ0xVRElORywgQlVUIE5PVCBMSU1JVEVEIFRPLAotICogVEhF
IElNUExJRUQgV0FSUkFOVElFUyBPRiBNRVJDSEFOVEFCSUxJVFkgQU5EIEZJVE5FU1MgRk9SIEEg
UEFSVElDVUxBUgotICogUFVSUE9TRSBBUkUgRElTQ0xBSU1FRC4gIElOIE5PIEVWRU5UIFNIQUxM
IFRIRSBDT1BZUklHSFQgSE9MREVSIE9SCi0gKiBDT05UUklCVVRPUlMgQkUgTElBQkxFIEZPUiBB
TlkgRElSRUNULCBJTkRJUkVDVCwgSU5DSURFTlRBTCwgU1BFQ0lBTCwKLSAqIEVYRU1QTEFSWSwg
T1IgQ09OU0VRVUVOVElBTCBEQU1BR0VTIChJTkNMVURJTkcsIEJVVCBOT1QgTElNSVRFRCBUTywK
LSAqIFBST0NVUkVNRU5UIE9GIFNVQlNUSVRVVEUgR09PRFMgT1IgU0VSVklDRVM7IExPU1MgT0Yg
VVNFLCBEQVRBLCBPUgotICogUFJPRklUUzsgT1IgQlVTSU5FU1MgSU5URVJSVVBUSU9OKSBIT1dF
VkVSIENBVVNFRCBBTkQgT04gQU5ZIFRIRU9SWQotICogT0YgTElBQklMSVRZLCBXSEVUSEVSIElO
IENPTlRSQUNULCBTVFJJQ1QgTElBQklMSVRZLCBPUiBUT1JUIChJTkNMVURJTkcKLSAqIE5FR0xJ
R0VOQ0UgT1IgT1RIRVJXSVNFKSBBUklTSU5HIElOIEFOWSBXQVkgT1VUIE9GIFRIRSBVU0UgT0Yg
VEhJUwotICogU09GVFdBUkUsIEVWRU4gSUYgQURWSVNFRCBPRiBUSEUgUE9TU0lCSUxJVFkgT0Yg
U1VDSCBEQU1BR0UuCi0gKi8KLQotI2luY2x1ZGUgImNvbmZpZy5oIgotI2luY2x1ZGUgIldlYlBv
cHVwTWVudVByb3h5RWZsLmgiCi0KLSNpbmNsdWRlICJFd2tWaWV3LmgiCi0jaW5jbHVkZSAiTmF0
aXZlV2ViTW91c2VFdmVudC5oIgotI2luY2x1ZGUgIldlYlBvcHVwSXRlbS5oIgotI2luY2x1ZGUg
ImV3a192aWV3LmgiCi0jaW5jbHVkZSA8d3RmL3RleHQvQ1N0cmluZy5oPgotCi11c2luZyBuYW1l
c3BhY2UgV2ViQ29yZTsKLQotbmFtZXNwYWNlIFdlYktpdCB7Ci0KLVdlYlBvcHVwTWVudVByb3h5
RWZsOjpXZWJQb3B1cE1lbnVQcm94eUVmbChFd2tWaWV3KiB2aWV3LCBXZWJQb3B1cE1lbnVQcm94
eTo6Q2xpZW50KiBjbGllbnQpCi0gICAgOiBXZWJQb3B1cE1lbnVQcm94eShjbGllbnQpCi0gICAg
LCBtX3ZpZXcodmlldykKLXsKLX0KLQotdm9pZCBXZWJQb3B1cE1lbnVQcm94eUVmbDo6c2hvd1Bv
cHVwTWVudShjb25zdCBJbnRSZWN0JiByZWN0LCBUZXh0RGlyZWN0aW9uIHRleHREaXJlY3Rpb24s
IGRvdWJsZSBwYWdlU2NhbGVGYWN0b3IsIGNvbnN0IFZlY3RvcjxXZWJQb3B1cEl0ZW0+JiBpdGVt
cywgY29uc3QgUGxhdGZvcm1Qb3B1cE1lbnVEYXRhJiwgaW50MzJfdCBzZWxlY3RlZEluZGV4KQot
ewotICAgIG1fdmlldy0+cmVxdWVzdFBvcHVwTWVudSh0aGlzLCByZWN0LCB0ZXh0RGlyZWN0aW9u
LCBwYWdlU2NhbGVGYWN0b3IsIGl0ZW1zLCBzZWxlY3RlZEluZGV4KTsKLX0KLQotdm9pZCBXZWJQ
b3B1cE1lbnVQcm94eUVmbDo6aGlkZVBvcHVwTWVudSgpCi17Ci0gICAgbV92aWV3LT5jbG9zZVBv
cHVwTWVudSgpOwotfQotCi12b2lkIFdlYlBvcHVwTWVudVByb3h5RWZsOjp2YWx1ZUNoYW5nZWQo
aW50IG5ld1NlbGVjdGVkSW5kZXgpCi17Ci0gICAgbV9jbGllbnQtPnZhbHVlQ2hhbmdlZEZvclBv
cHVwTWVudSh0aGlzLCBuZXdTZWxlY3RlZEluZGV4KTsKLX0KLQotfSAvLyBuYW1lc3BhY2UgV2Vi
S2l0CmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViS2l0Mi9VSVByb2Nlc3MvZWZsL1dlYlBvcHVwTWVu
dVByb3h5RWZsLmggYi9Tb3VyY2UvV2ViS2l0Mi9VSVByb2Nlc3MvZWZsL1dlYlBvcHVwTWVudVBy
b3h5RWZsLmgKZGVsZXRlZCBmaWxlIG1vZGUgMTAwNjQ0CmluZGV4IDAxOTMzYzMuLjAwMDAwMDAK
LS0tIGEvU291cmNlL1dlYktpdDIvVUlQcm9jZXNzL2VmbC9XZWJQb3B1cE1lbnVQcm94eUVmbC5o
CisrKyAvZGV2L251bGwKQEAgLTEsNjEgKzAsMCBAQAotLyoKLSAqIENvcHlyaWdodCAoQykgMjAx
MiBTYW1zdW5nIEVsZWN0cm9uaWNzCi0gKgotICogUmVkaXN0cmlidXRpb24gYW5kIHVzZSBpbiBz
b3VyY2UgYW5kIGJpbmFyeSBmb3Jtcywgd2l0aCBvciB3aXRob3V0Ci0gKiBtb2RpZmljYXRpb24s
IGFyZSBwZXJtaXR0ZWQgcHJvdmlkZWQgdGhhdCB0aGUgZm9sbG93aW5nIGNvbmRpdGlvbnMKLSAq
IGFyZSBtZXQ6Ci0gKiAxLiBSZWRpc3RyaWJ1dGlvbnMgb2Ygc291cmNlIGNvZGUgbXVzdCByZXRh
aW4gdGhlIGFib3ZlIGNvcHlyaWdodAotICogICAgbm90aWNlLCB0aGlzIGxpc3Qgb2YgY29uZGl0
aW9ucyBhbmQgdGhlIGZvbGxvd2luZyBkaXNjbGFpbWVyLgotICogMi4gUmVkaXN0cmlidXRpb25z
IGluIGJpbmFyeSBmb3JtIG11c3QgcmVwcm9kdWNlIHRoZSBhYm92ZSBjb3B5cmlnaHQKLSAqICAg
IG5vdGljZSwgdGhpcyBsaXN0IG9mIGNvbmRpdGlvbnMgYW5kIHRoZSBmb2xsb3dpbmcgZGlzY2xh
aW1lciBpbiB0aGUKLSAqICAgIGRvY3VtZW50YXRpb24gYW5kL29yIG90aGVyIG1hdGVyaWFscyBw
cm92aWRlZCB3aXRoIHRoZSBkaXN0cmlidXRpb24uCi0gKgotICogVEhJUyBTT0ZUV0FSRSBJUyBQ
Uk9WSURFRCBCWSBUSEUgQ09QWVJJR0hUIEhPTERFUlMgQU5EIENPTlRSSUJVVE9SUwotICogIkFT
IElTIiBBTkQgQU5ZIEVYUFJFU1MgT1IgSU1QTElFRCBXQVJSQU5USUVTLCBJTkNMVURJTkcsIEJV
VCBOT1QgTElNSVRFRCBUTywKLSAqIFRIRSBJTVBMSUVEIFdBUlJBTlRJRVMgT0YgTUVSQ0hBTlRB
QklMSVRZIEFORCBGSVRORVNTIEZPUiBBIFBBUlRJQ1VMQVIKLSAqIFBVUlBPU0UgQVJFIERJU0NM
QUlNRUQuICBJTiBOTyBFVkVOVCBTSEFMTCBUSEUgQ09QWVJJR0hUIEhPTERFUiBPUgotICogQ09O
VFJJQlVUT1JTIEJFIExJQUJMRSBGT1IgQU5ZIERJUkVDVCwgSU5ESVJFQ1QsIElOQ0lERU5UQUws
IFNQRUNJQUwsCi0gKiBFWEVNUExBUlksIE9SIENPTlNFUVVFTlRJQUwgREFNQUdFUyAoSU5DTFVE
SU5HLCBCVVQgTk9UIExJTUlURUQgVE8sCi0gKiBQUk9DVVJFTUVOVCBPRiBTVUJTVElUVVRFIEdP
T0RTIE9SIFNFUlZJQ0VTOyBMT1NTIE9GIFVTRSwgREFUQSwgT1IKLSAqIFBST0ZJVFM7IE9SIEJV
U0lORVNTIElOVEVSUlVQVElPTikgSE9XRVZFUiBDQVVTRUQgQU5EIE9OIEFOWSBUSEVPUlkKLSAq
IE9GIExJQUJJTElUWSwgV0hFVEhFUiBJTiBDT05UUkFDVCwgU1RSSUNUIExJQUJJTElUWSwgT1Ig
VE9SVCAoSU5DTFVESU5HCi0gKiBORUdMSUdFTkNFIE9SIE9USEVSV0lTRSkgQVJJU0lORyBJTiBB
TlkgV0FZIE9VVCBPRiBUSEUgVVNFIE9GIFRISVMKLSAqIFNPRlRXQVJFLCBFVkVOIElGIEFEVklT
RUQgT0YgVEhFIFBPU1NJQklMSVRZIE9GIFNVQ0ggREFNQUdFLgotICovCi0KLSNpZm5kZWYgV2Vi
UG9wdXBNZW51UHJveHlFZmxfaAotI2RlZmluZSBXZWJQb3B1cE1lbnVQcm94eUVmbF9oCi0KLSNp
bmNsdWRlICJXZWJQb3B1cE1lbnVQcm94eS5oIgotCi1uYW1lc3BhY2UgV2ViQ29yZSB7Ci1jbGFz
cyBJbnRSZWN0OwotfQotCi1jbGFzcyBFd2tWaWV3OwotCi1uYW1lc3BhY2UgV2ViS2l0IHsKLQot
Y2xhc3MgV2ViUGFnZVByb3h5OwotCi1jbGFzcyBXZWJQb3B1cE1lbnVQcm94eUVmbCA6IHB1Ymxp
YyBXZWJQb3B1cE1lbnVQcm94eSB7Ci1wdWJsaWM6Ci0gICAgc3RhdGljIFBhc3NSZWZQdHI8V2Vi
UG9wdXBNZW51UHJveHlFZmw+IGNyZWF0ZShFd2tWaWV3KiB2aWV3SW1wbCwgV2ViUG9wdXBNZW51
UHJveHk6OkNsaWVudCogY2xpZW50KQotICAgIHsKLSAgICAgICAgcmV0dXJuIGFkb3B0UmVmKG5l
dyBXZWJQb3B1cE1lbnVQcm94eUVmbCh2aWV3SW1wbCwgY2xpZW50KSk7Ci0gICAgfQotCi0gICAg
dm9pZCBzaG93UG9wdXBNZW51KGNvbnN0IFdlYkNvcmU6OkludFJlY3QmLCBXZWJDb3JlOjpUZXh0
RGlyZWN0aW9uLCBkb3VibGUgcGFnZVNjYWxlRmFjdG9yLCBjb25zdCBWZWN0b3I8V2ViUG9wdXBJ
dGVtPiYsIGNvbnN0IFBsYXRmb3JtUG9wdXBNZW51RGF0YSYsIGludDMyX3Qgc2VsZWN0ZWRJbmRl
eCk7Ci0gICAgdm9pZCBoaWRlUG9wdXBNZW51KCk7Ci0KLSAgICB2b2lkIHZhbHVlQ2hhbmdlZChp
bnQgbmV3U2VsZWN0ZWRJbmRleCk7Ci0KLXByaXZhdGU6Ci0gICAgV2ViUG9wdXBNZW51UHJveHlF
ZmwoRXdrVmlldyosIFdlYlBvcHVwTWVudVByb3h5OjpDbGllbnQqKTsKLQotICAgIEV3a1ZpZXcq
IG1fdmlldzsKLX07Ci0KLX0gLy8gbmFtZXNwYWNlIFdlYktpdAotCi0jZW5kaWYgLy8gV2ViUG9w
dXBNZW51UHJveHlFZmxfaApkaWZmIC0tZ2l0IGEvU291cmNlL1dlYktpdDIvVUlQcm9jZXNzL2Vm
bC9XZWJVSVBvcHVwTWVudUNsaWVudC5jcHAgYi9Tb3VyY2UvV2ViS2l0Mi9VSVByb2Nlc3MvZWZs
L1dlYlVJUG9wdXBNZW51Q2xpZW50LmNwcApuZXcgZmlsZSBtb2RlIDEwMDY0NAppbmRleCAwMDAw
MDAwLi4yZTZmZjVhCi0tLSAvZGV2L251bGwKKysrIGIvU291cmNlL1dlYktpdDIvVUlQcm9jZXNz
L2VmbC9XZWJVSVBvcHVwTWVudUNsaWVudC5jcHAKQEAgLTAsMCArMSw1OCBAQAorLyoKKyAqIENv
cHlyaWdodCAoQykgMjAxMyBTYW1zdW5nIEVsZWN0cm9uaWNzLiBBbGwgcmlnaHRzIHJlc2VydmVk
LgorICoKKyAqIFJlZGlzdHJpYnV0aW9uIGFuZCB1c2UgaW4gc291cmNlIGFuZCBiaW5hcnkgZm9y
bXMsIHdpdGggb3Igd2l0aG91dAorICogbW9kaWZpY2F0aW9uLCBhcmUgcGVybWl0dGVkIHByb3Zp
ZGVkIHRoYXQgdGhlIGZvbGxvd2luZyBjb25kaXRpb25zCisgKiBhcmUgbWV0OgorICogMS4gUmVk
aXN0cmlidXRpb25zIG9mIHNvdXJjZSBjb2RlIG11c3QgcmV0YWluIHRoZSBhYm92ZSBjb3B5cmln
aHQKKyAqICAgIG5vdGljZSwgdGhpcyBsaXN0IG9mIGNvbmRpdGlvbnMgYW5kIHRoZSBmb2xsb3dp
bmcgZGlzY2xhaW1lci4KKyAqIDIuIFJlZGlzdHJpYnV0aW9ucyBpbiBiaW5hcnkgZm9ybSBtdXN0
IHJlcHJvZHVjZSB0aGUgYWJvdmUgY29weXJpZ2h0CisgKiAgICBub3RpY2UsIHRoaXMgbGlzdCBv
ZiBjb25kaXRpb25zIGFuZCB0aGUgZm9sbG93aW5nIGRpc2NsYWltZXIgaW4gdGhlCisgKiAgICBk
b2N1bWVudGF0aW9uIGFuZC9vciBvdGhlciBtYXRlcmlhbHMgcHJvdmlkZWQgd2l0aCB0aGUgZGlz
dHJpYnV0aW9uLgorICoKKyAqIFRISVMgU09GVFdBUkUgSVMgUFJPVklERUQgQlkgQVBQTEUgSU5D
LiBBTkQgSVRTIENPTlRSSUJVVE9SUyBgYEFTIElTJycKKyAqIEFORCBBTlkgRVhQUkVTUyBPUiBJ
TVBMSUVEIFdBUlJBTlRJRVMsIElOQ0xVRElORywgQlVUIE5PVCBMSU1JVEVEIFRPLAorICogVEhF
IElNUExJRUQgV0FSUkFOVElFUyBPRiBNRVJDSEFOVEF3QklMSVRZIEFORCBGSVRORVNTIEZPUiBB
IFBBUlRJQ1VMQVIKKyAqIFBVUlBPU0UgQVJFIERJU0NMQUlNRUQuIElOIE5PIEVWRU5UIFNIQUxM
IEFQUExFIElOQy4gT1IgSVRTIENPTlRSSUJVVE9SUworICogQkUgTElBQkxFIEZPUiBBTlkgRElS
RUNULCBJTkRJUkVDVCwgSU5DSURFTlRBTCwgU1BFQ0lBTCwgRVhFTVBMQVJZLCBPUgorICogQ09O
U0VRVUVOVElBTCBEQU1BR0VTIChJTkNMVURJTkcsIEJVVCBOT1QgTElNSVRFRCBUTywgUFJPQ1VS
RU1FTlQgT0YKKyAqIFNVQlNUSVRVVEUgR09PRFMgT1IgU0VSVklDRVM7IExPU1MgT0YgVVNFLCBE
QVRBLCBPUiBQUk9GSVRTOyBPUiBCVVNJTkVTUworICogSU5URVJSVVBUSU9OKSBIT1dFVkVSIENB
VVNFRCBBTkQgT04gQU5ZIFRIRU9SWSBPRiBMSUFCSUxJVFksIFdIRVRIRVIgSU4KKyAqIENPTlRS
QUNULCBTVFJJQ1QgTElBQklMSVRZLCBPUiBUT1JUIChJTkNMVURJTkcgTkVHTElHRU5DRSBPUiBP
VEhFUldJU0UpCisgKiBBUklTSU5HIElOIEFOWSBXQVkgT1VUIE9GIFRIRSBVU0UgT0YgVEhJUyBT
T0ZUV0FSRSwgRVZFTiBJRiBBRFZJU0VEIE9GCisgKiBUSEUgUE9TU0lCSUxJVFkgT0YgU1VDSCBE
QU1BR0UuCisgKi8KKworI2luY2x1ZGUgImNvbmZpZy5oIgorI2luY2x1ZGUgIldlYlVJUG9wdXBN
ZW51Q2xpZW50LmgiCisKKyNpbmNsdWRlICJJbW11dGFibGVBcnJheS5oIgorI2luY2x1ZGUgIldL
QVBJQ2FzdC5oIgorI2luY2x1ZGUgIldlYlBvcHVwSXRlbUVmbC5oIgorI2luY2x1ZGUgIldlYlBv
cHVwTWVudUxpc3RlbmVyRWZsLmgiCisKK3VzaW5nIG5hbWVzcGFjZSBXZWJDb3JlOwordXNpbmcg
bmFtZXNwYWNlIFdlYktpdDsKKwordm9pZCBXZWJVSVBvcHVwTWVudUNsaWVudDo6c2hvd1BvcHVw
TWVudShXZWJQYWdlUHJveHkqIHBhZ2VQcm94eSwgV2ViUG9wdXBNZW51UHJveHkqIHBvcHVwTWVu
dVByb3h5LCBjb25zdCBJbnRSZWN0JiByZWN0LCBUZXh0RGlyZWN0aW9uIHRleHREaXJlY3Rpb24s
IGRvdWJsZSBwYWdlU2NhbGVGYWN0b3IsIGNvbnN0IFZlY3RvcjxXZWJQb3B1cEl0ZW0+JiBpdGVt
cywgaW50MzJfdCBzZWxlY3RlZEluZGV4KQoreworICAgIGlmICghbV9jbGllbnQuc2hvd1BvcHVw
TWVudSkKKyAgICAgICAgcmV0dXJuOworCisgICAgVmVjdG9yPFJlZlB0cjxBUElPYmplY3Q+ID4g
d2ViUG9wdXBJdGVtczsKKyAgICBzaXplX3Qgc2l6ZSA9IGl0ZW1zLnNpemUoKTsKKyAgICBmb3Ig
KHNpemVfdCBpID0gMDsgaSA8IHNpemU7ICsraSkKKyAgICAgICAgd2ViUG9wdXBJdGVtcy5hcHBl
bmQoV2ViUG9wdXBJdGVtRWZsOjpjcmVhdGUoaXRlbXNbaV0pKTsKKworICAgIFJlZlB0cjxJbW11
dGFibGVBcnJheT4gSXRlbXNBcnJheTsKKyAgICBpZiAoIXdlYlBvcHVwSXRlbXMuaXNFbXB0eSgp
KQorICAgICAgICBJdGVtc0FycmF5ID0gSW1tdXRhYmxlQXJyYXk6OmFkb3B0KHdlYlBvcHVwSXRl
bXMpOworCisgICAgbV9jbGllbnQuc2hvd1BvcHVwTWVudSh0b0FQSShwYWdlUHJveHkpLCB0b0FQ
SShzdGF0aWNfY2FzdDxXZWJQb3B1cE1lbnVMaXN0ZW5lckVmbCo+KHBvcHVwTWVudVByb3h5KSks
IHRvQVBJKHJlY3QpLCB0b0FQSSh0ZXh0RGlyZWN0aW9uKSwgcGFnZVNjYWxlRmFjdG9yLCB0b0FQ
SShJdGVtc0FycmF5LmdldCgpKSwgc2VsZWN0ZWRJbmRleCwgbV9jbGllbnQuY2xpZW50SW5mbyk7
Cit9CisKK3ZvaWQgV2ViVUlQb3B1cE1lbnVDbGllbnQ6OmhpZGVQb3B1cE1lbnUoV2ViUGFnZVBy
b3h5KiBwYWdlUHJveHkpCit7CisgICAgaWYgKG1fY2xpZW50LmhpZGVQb3B1cE1lbnUpCisgICAg
ICAgIG1fY2xpZW50LmhpZGVQb3B1cE1lbnUodG9BUEkocGFnZVByb3h5KSwgbV9jbGllbnQuY2xp
ZW50SW5mbyk7Cit9CmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViS2l0Mi9VSVByb2Nlc3MvZWZsL1dl
YlVJUG9wdXBNZW51Q2xpZW50LmggYi9Tb3VyY2UvV2ViS2l0Mi9VSVByb2Nlc3MvZWZsL1dlYlVJ
UG9wdXBNZW51Q2xpZW50LmgKbmV3IGZpbGUgbW9kZSAxMDA2NDQKaW5kZXggMDAwMDAwMC4uMjU5
MzJlOAotLS0gL2Rldi9udWxsCisrKyBiL1NvdXJjZS9XZWJLaXQyL1VJUHJvY2Vzcy9lZmwvV2Vi
VUlQb3B1cE1lbnVDbGllbnQuaApAQCAtMCwwICsxLDQ4IEBACisvKgorICogQ29weXJpZ2h0IChD
KSAyMDEzIFNhbXN1bmcgRWxlY3Ryb25pY3MuIEFsbCByaWdodHMgcmVzZXJ2ZWQuCisgKgorICog
UmVkaXN0cmlidXRpb24gYW5kIHVzZSBpbiBzb3VyY2UgYW5kIGJpbmFyeSBmb3Jtcywgd2l0aCBv
ciB3aXRob3V0CisgKiBtb2RpZmljYXRpb24sIGFyZSBwZXJtaXR0ZWQgcHJvdmlkZWQgdGhhdCB0
aGUgZm9sbG93aW5nIGNvbmRpdGlvbnMKKyAqIGFyZSBtZXQ6CisgKiAxLiBSZWRpc3RyaWJ1dGlv
bnMgb2Ygc291cmNlIGNvZGUgbXVzdCByZXRhaW4gdGhlIGFib3ZlIGNvcHlyaWdodAorICogICAg
bm90aWNlLCB0aGlzIGxpc3Qgb2YgY29uZGl0aW9ucyBhbmQgdGhlIGZvbGxvd2luZyBkaXNjbGFp
bWVyLgorICogMi4gUmVkaXN0cmlidXRpb25zIGluIGJpbmFyeSBmb3JtIG11c3QgcmVwcm9kdWNl
IHRoZSBhYm92ZSBjb3B5cmlnaHQKKyAqICAgIG5vdGljZSwgdGhpcyBsaXN0IG9mIGNvbmRpdGlv
bnMgYW5kIHRoZSBmb2xsb3dpbmcgZGlzY2xhaW1lciBpbiB0aGUKKyAqICAgIGRvY3VtZW50YXRp
b24gYW5kL29yIG90aGVyIG1hdGVyaWFscyBwcm92aWRlZCB3aXRoIHRoZSBkaXN0cmlidXRpb24u
CisgKgorICogVEhJUyBTT0ZUV0FSRSBJUyBQUk9WSURFRCBCWSBBUFBMRSBJTkMuIEFORCBJVFMg
Q09OVFJJQlVUT1JTIGBgQVMgSVMnJworICogQU5EIEFOWSBFWFBSRVNTIE9SIElNUExJRUQgV0FS
UkFOVElFUywgSU5DTFVESU5HLCBCVVQgTk9UIExJTUlURUQgVE8sCisgKiBUSEUgSU1QTElFRCBX
QVJSQU5USUVTIE9GIE1FUkNIQU5UQXdCSUxJVFkgQU5EIEZJVE5FU1MgRk9SIEEgUEFSVElDVUxB
UgorICogUFVSUE9TRSBBUkUgRElTQ0xBSU1FRC4gSU4gTk8gRVZFTlQgU0hBTEwgQVBQTEUgSU5D
LiBPUiBJVFMgQ09OVFJJQlVUT1JTCisgKiBCRSBMSUFCTEUgRk9SIEFOWSBESVJFQ1QsIElORElS
RUNULCBJTkNJREVOVEFMLCBTUEVDSUFMLCBFWEVNUExBUlksIE9SCisgKiBDT05TRVFVRU5USUFM
IERBTUFHRVMgKElOQ0xVRElORywgQlVUIE5PVCBMSU1JVEVEIFRPLCBQUk9DVVJFTUVOVCBPRgor
ICogU1VCU1RJVFVURSBHT09EUyBPUiBTRVJWSUNFUzsgTE9TUyBPRiBVU0UsIERBVEEsIE9SIFBS
T0ZJVFM7IE9SIEJVU0lORVNTCisgKiBJTlRFUlJVUFRJT04pIEhPV0VWRVIgQ0FVU0VEIEFORCBP
TiBBTlkgVEhFT1JZIE9GIExJQUJJTElUWSwgV0hFVEhFUiBJTgorICogQ09OVFJBQ1QsIFNUUklD
VCBMSUFCSUxJVFksIE9SIFRPUlQgKElOQ0xVRElORyBORUdMSUdFTkNFIE9SIE9USEVSV0lTRSkK
KyAqIEFSSVNJTkcgSU4gQU5ZIFdBWSBPVVQgT0YgVEhFIFVTRSBPRiBUSElTIFNPRlRXQVJFLCBF
VkVOIElGIEFEVklTRUQgT0YKKyAqIFRIRSBQT1NTSUJJTElUWSBPRiBTVUNIIERBTUFHRS4KKyAq
LworCisjaWZuZGVmIFdlYlVJUG9wdXBNZW51Q2xpZW50X2gKKyNkZWZpbmUgV2ViVUlQb3B1cE1l
bnVDbGllbnRfaAorCisjaW5jbHVkZSAiQVBJQ2xpZW50LmgiCisjaW5jbHVkZSAiQVBJT2JqZWN0
LmgiCisjaW5jbHVkZSAiV0tQYWdlRWZsLmgiCisjaW5jbHVkZSAiV2ViUG9wdXBJdGVtLmgiCisj
aW5jbHVkZSA8V2ViQ29yZS9JbnRSZWN0Lmg+CisjaW5jbHVkZSA8V2ViQ29yZS9UZXh0RGlyZWN0
aW9uLmg+CisKK25hbWVzcGFjZSBXZWJLaXQgeworCitjbGFzcyBXZWJQYWdlUHJveHk7CitjbGFz
cyBXZWJQb3B1cE1lbnVQcm94eTsKKworY2xhc3MgV2ViVUlQb3B1cE1lbnVDbGllbnQgOiBwdWJs
aWMgQVBJQ2xpZW50PFdLUGFnZVVJUG9wdXBNZW51Q2xpZW50LCBrV0tQYWdlVUlQb3B1cE1lbnVD
bGllbnRDdXJyZW50VmVyc2lvbj4geworcHVibGljOgorICAgIHZvaWQgc2hvd1BvcHVwTWVudShX
ZWJQYWdlUHJveHkqLCBXZWJQb3B1cE1lbnVQcm94eSosIGNvbnN0IFdlYkNvcmU6OkludFJlY3Qm
LCBXZWJDb3JlOjpUZXh0RGlyZWN0aW9uLCBkb3VibGUgcGFnZVNjYWxlRmFjdG9yLCBjb25zdCBW
ZWN0b3I8V2ViUG9wdXBJdGVtPiYgaXRlbXMsIGludDMyX3Qgc2VsZWN0ZWRJbmRleCk7CisgICAg
dm9pZCBoaWRlUG9wdXBNZW51KFdlYlBhZ2VQcm94eSopOworfTsKKworfSAvLyBuYW1lc3BhY2Ug
V2ViS2l0CisjZW5kaWYgLy8gV2ViVUlQb3B1cE1lbnVDbGllbnRfaAo=
</data>
<flag name="review"
          id="206804"
          type_id="1"
          status="+"
          setter="andersca"
    />
    <flag name="commit-queue"
          id="209180"
          type_id="3"
          status="-"
          setter="webkit.review.bot"
    />
          </attachment>
          <attachment
              isobsolete="0"
              ispatch="1"
              isprivate="0"
          >
            <attachid>188939</attachid>
            <date>2013-02-18 13:44:28 -0800</date>
            <delta_ts>2013-02-18 16:42:26 -0800</delta_ts>
            <desc>Patch for landing</desc>
            <filename>109083_popup_menu_capi.patch</filename>
            <type>text/plain</type>
            <size>58472</size>
            <attacher name="Chris Dumez">cdumez</attacher>
            
              <data encoding="base64">ZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJLaXQyL0NoYW5nZUxvZyBiL1NvdXJjZS9XZWJLaXQyL0No
YW5nZUxvZwppbmRleCA2MGRmMzMyLi4xZDExNzFiIDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViS2l0
Mi9DaGFuZ2VMb2cKKysrIGIvU291cmNlL1dlYktpdDIvQ2hhbmdlTG9nCkBAIC0xLDMgKzEsMTI4
IEBACisyMDEzLTAyLTA3ICBDaHJpc3RvcGhlIER1bWV6ICA8Y2guZHVtZXpAc2lzYS5zYW1zdW5n
LmNvbT4KKworICAgICAgICBbRUZMXVtXSzJdIEFkZCBDIEFQSSBmb3IgcG9wdXAgbWVudSBhbmQg
cG9wdXAgaXRlbQorICAgICAgICBodHRwczovL2J1Z3Mud2Via2l0Lm9yZy9zaG93X2J1Zy5jZ2k/
aWQ9MTA5MDgzCisKKyAgICAgICAgUmV2aWV3ZWQgYnkgQW5kZXJzIENhcmxzc29uLgorCisgICAg
ICAgIFdLMiBFRkwgZGVsZWdhdGVzIGRpc3BsYXkgb2YgdGhlIHBvcHVwIG1lbnUgdG8gdGhlIGJy
b3dzZXIgd2hpY2ggY2F1c2VzCisgICAgICAgIHVzIHRvIGhhdmUgYSBzdHJvbmcgaW50ZXJkZXBl
bmRlbmN5IGJldHdlZW4gaW50ZXJuYWwgQysrIGNsYXNzZXMKKyAgICAgICAgKFdlYlBvcHVwTWVu
dVByb3h5RWZsLCBXZWJQb3B1cEl0ZW0pIGFuZCBvdXIgRUZMIEFQSSBpbXBsZW1lbnRhdGlvbgor
ICAgICAgICAoRXdrVmlldywgRXdrUG9wdXBNZW51LCBFd2tQb3B1cE1lbnVJdGVtKS4KKworICAg
ICAgICBTaW5jZSB3ZSB3YW50IHRvIHJlbW92ZSB0aGlzIGludGVyZGVwZW5kZW5jeSwgdGhpcyBw
YXRjaCBpbnRyb2R1Y2VzIGEKKyAgICAgICAgZm9yIFdlYlBvcHVwTWVudVByb3h5RWZsIChXS1Bv
cHVwTWVudUxpc3RlbmVyKSBhbmQgZm9yIFdlYlBvcHVwSXRlbQorICAgICAgICAoV0tQb3B1cEl0
ZW0pLiBJdCBhbHNvIGludHJvZHVjZXMgYSBXS1BhZ2UgY2xpZW50IHdpdGggY2FsbGJhY2tzIGZv
cgorICAgICAgICBzaG93UG9wdXBNZW51IGFuZCBoaWRlUG9wdXBNZW51LgorCisgICAgICAgIE5v
dGUgdGhhdCB0aGUgcG9wdXAgbWVudSBmdW5jdGlvbmFsaXR5IGlzIGNvdmVyZWQgYnkgZXdrX3Bv
cHVwX21lbnUgQVBJCisgICAgICAgIHRlc3RzIGFuZCBubyBmdW5jdGlvbmFsaXR5IGlzIGxvc3Qu
CisKKyAgICAgICAgKiBQbGF0Zm9ybUVmbC5jbWFrZTogQWRkIG5ldyBmaWxlcyB0byBFRkwgQ01h
a2UgY29uZmlnLgorICAgICAgICAqIFNoYXJlZC9BUEkvYy9lZmwvV0tCYXNlRWZsLmg6IEFkZCB0
eXBlZGVmcyBmb3IgV0tQb3B1cEl0ZW1SZWYgYW5kCisgICAgICAgIFdLUG9wdXBNZW51TGlzdGVu
ZXJSZWYuCisgICAgICAgICogU2hhcmVkL0FQSU9iamVjdC5oOiBBZGQgbmV3IFR5cGVQb3B1cE1l
bnVJdGVtIEFQSU9iamVjdCB0eXBlIGZvciBFRkwKKyAgICAgICAgcGxhdGZvcm0uCisgICAgICAg
ICogVUlQcm9jZXNzL0FQSS9DL2VmbC9XS0FQSUNhc3RFZmwuaDogQWRkIG1hcHBpbmcgZm9yIFdL
UG9wdXBJdGVtUmVmCisgICAgICAgIGFuZCBXS1BvcHVwTWVudUxpc3RlbmVyUmVmIEFQSSB0eXBl
cy4KKyAgICAgICAgKFdlYktpdCk6CisgICAgICAgIChXZWJLaXQ6OnRvQVBJKToKKyAgICAgICAg
KiBVSVByb2Nlc3MvQVBJL0MvZWZsL1dLUGFnZUVmbC5jcHA6IEFkZGVkLgorICAgICAgICAoV0tQ
YWdlU2V0VUlQb3B1cE1lbnVDbGllbnQpOiBBZGQgbmV3IEMgQVBJIHRvIHNldCB0aGUgVUkgUG9w
dXAgTWVudQorICAgICAgICBjbGllbnQgb24gdGhlIHBhZ2UuCisgICAgICAgICogVUlQcm9jZXNz
L0FQSS9DL2VmbC9XS1BhZ2VFZmwuaDogQWRkZWQuCisgICAgICAgICogVUlQcm9jZXNzL0FQSS9D
L2VmbC9XS1BvcHVwSXRlbS5jcHA6IEFkZGVkLiBBZGQgQyBBUEkgZm9yIFdlYlBvcHVwSXRlbS4K
KyAgICAgICAgKFdLUG9wdXBJdGVtR2V0VHlwZSk6CisgICAgICAgIChXS1BvcHVwSXRlbUdldFRl
eHREaXJlY3Rpb24pOgorICAgICAgICAoV0tQb3B1cEl0ZW1IYXNUZXh0RGlyZWN0aW9uT3ZlcnJp
ZGUpOgorICAgICAgICAoV0tQb3B1cEl0ZW1Db3B5VGV4dCk6CisgICAgICAgIChXS1BvcHVwSXRl
bUNvcHlUb29sVGlwVGV4dCk6CisgICAgICAgIChXS1BvcHVwSXRlbUNvcHlBY2Nlc3NpYmlsaXR5
VGV4dCk6CisgICAgICAgIChXS1BvcHVwSXRlbUlzRW5hYmxlZCk6CisgICAgICAgIChXS1BvcHVw
SXRlbUlzTGFiZWwpOgorICAgICAgICAoV0tQb3B1cEl0ZW1Jc1NlbGVjdGVkKToKKyAgICAgICAg
KiBVSVByb2Nlc3MvQVBJL0MvZWZsL1dLUG9wdXBJdGVtLmg6IEFkZGVkLgorICAgICAgICAqIFVJ
UHJvY2Vzcy9BUEkvQy9lZmwvV0tQb3B1cE1lbnVMaXN0ZW5lci5jcHA6IEFkZGVkLiBBZGQgQyBB
UEkgZm9yCisgICAgICAgIFdlYlBvcHVwTWVudUxpc3RlbmVyRWZsIChmb3JtZXJseSBXZWJQb3B1
cE1lbnVQcm94eUVmbCkgc28gdGhhdCB0aGUKKyAgICAgICAgY2xpZW50IGNhbiByZXBvcnQgd2hp
Y2ggcG9wdXAgbWVudSBpdGVtIHdhcyBzZWxlY3RlZC4KKyAgICAgICAgKFdLUG9wdXBNZW51TGlz
dGVuZXJTZXRTZWxlY3Rpb24pOgorICAgICAgICAqIFVJUHJvY2Vzcy9BUEkvQy9lZmwvV0tQb3B1
cE1lbnVMaXN0ZW5lci5oOiBBZGRlZC4KKyAgICAgICAgKiBVSVByb2Nlc3MvQVBJL2VmbC9Fd2tW
aWV3LmNwcDogUmVtb3ZlIGRlcGVuZGVuY3kgb24gaW50ZXJuYWwgQysrIHR5cGVzCisgICAgICAg
IChXZWJQb3B1cE1lbnVQcm94eUVmbCBhbmQgV2ViUG9wdXBJdGVtKSBhbmQgdXNlIEMgQVBJIHR5
cGVzIGluc3RlYWQuCisgICAgICAgIChFd2tWaWV3OjpyZXF1ZXN0UG9wdXBNZW51KToKKyAgICAg
ICAgKiBVSVByb2Nlc3MvQVBJL2VmbC9Fd2tWaWV3Lmg6CisgICAgICAgIChXZWJLaXQpOgorICAg
ICAgICAoRXdrVmlldyk6CisgICAgICAgICogVUlQcm9jZXNzL0FQSS9lZmwvZXdrX3BvcHVwX21l
bnUuY3BwOiBVc2UgQyBBUEkgZm9yIFBvcHVwIG1lbnUuCisgICAgICAgIChFd2tQb3B1cE1lbnU6
OkV3a1BvcHVwTWVudSk6CisgICAgICAgIChFd2tQb3B1cE1lbnU6OnNldFNlbGVjdGVkSW5kZXgp
OgorICAgICAgICAqIFVJUHJvY2Vzcy9BUEkvZWZsL2V3a19wb3B1cF9tZW51X3ByaXZhdGUuaDoK
KyAgICAgICAgKEV3a1BvcHVwTWVudTo6Y3JlYXRlKToKKyAgICAgICAgKEV3a1BvcHVwTWVudSk6
CisgICAgICAgICogVUlQcm9jZXNzL1dlYlBhZ2VQcm94eS5jcHA6IFVzZSBXS1BhZ2VVSVBvcHVw
TWVudUNsaWVudCB0byBzaG93IC8gaGlkZQorICAgICAgICB0aGUgcG9wdXAgbWVudSBvbiBFRkwg
cG9ydCBpbnN0ZWFkIG9mIGFza2luZyB0aGUgV2ViUG9wdXBNZW51UHJveHkuCisgICAgICAgIChX
ZWJLaXQ6OldlYlBhZ2VQcm94eTo6Y2xvc2UpOgorICAgICAgICAoV2ViS2l0OjpXZWJQYWdlUHJv
eHk6OnNob3dQb3B1cE1lbnUpOgorICAgICAgICAoV2ViS2l0OjpXZWJQYWdlUHJveHk6OmhpZGVQ
b3B1cE1lbnUpOgorICAgICAgICAqIFVJUHJvY2Vzcy9XZWJQYWdlUHJveHkuaDogQWRkIG5ldyBX
S1BhZ2VVSVBvcHVwTWVudUNsaWVudCBtZW1iZXIgYW5kCisgICAgICAgIGNvcnJlc3BvbmRpbmcg
aW5pdGlhbGl6YXRpb24gbWV0aG9kLgorICAgICAgICAoV2ViUGFnZVByb3h5KToKKyAgICAgICAg
KiBVSVByb2Nlc3MvV2ViUG9wdXBNZW51UHJveHkuaDogRGlzYWJsZSBzaG93UG9wdXBNZW51IC8g
aGlkZVBvcHVwTWVudQorICAgICAgICB2aXJ0dWFsIG1ldGhvZHMgb24gRUZMIHBvcnQgc2luY2Ug
d2UgZ28gdmlhIFdLUGFnZVVJUG9wdXBNZW51Q2xpZW50CisgICAgICAgIGZvciB0aGlzIG5vdy4K
KyAgICAgICAgKFdlYlBvcHVwTWVudVByb3h5KToKKyAgICAgICAgKiBVSVByb2Nlc3MvZWZsL1Bh
Z2VVSUNsaWVudEVmbC5jcHA6CisgICAgICAgIChXZWJLaXQ6OlBhZ2VVSUNsaWVudEVmbDo6UGFn
ZVVJQ2xpZW50RWZsKTogSGFuZGxlIFdLUGFnZVVJUG9wdXBNZW51Q2xpZW50CisgICAgICAgIGNh
bGxiYWNrcyBhbmQgY2FsbCBjb3JyZXNwb25kaW5nIEV3a1ZpZXcgbWV0aG9kcy4gUHJldmlvdXNs
eSwgdGhlIEV3a1ZpZXcKKyAgICAgICAgbWV0aG9kcyB3ZXJlIGNhbGxlZCBieSB0aGUgaW50ZXJu
YWwgV2ViUGFnZVByb3h5RWZsIGNsYXNzIHdoaWNoIGlzIG5vCisgICAgICAgIGxvbmdlciBuZWVk
ZWQuCisgICAgICAgIChXZWJLaXQ6OlBhZ2VVSUNsaWVudEVmbDo6c2hvd1BvcHVwTWVudSk6Cisg
ICAgICAgIChXZWJLaXQpOgorICAgICAgICAoV2ViS2l0OjpQYWdlVUlDbGllbnRFZmw6OmhpZGVQ
b3B1cE1lbnUpOgorICAgICAgICAqIFVJUHJvY2Vzcy9lZmwvUGFnZVVJQ2xpZW50RWZsLmg6Cisg
ICAgICAgIChQYWdlVUlDbGllbnRFZmwpOgorICAgICAgICAqIFVJUHJvY2Vzcy9lZmwvV2ViUGFn
ZVByb3h5RWZsLmNwcDoKKyAgICAgICAgKFdlYktpdDo6V2ViUGFnZVByb3h5Ojppbml0aWFsaXpl
VUlQb3B1cE1lbnVDbGllbnQpOgorICAgICAgICAoV2ViS2l0KToKKyAgICAgICAgKiBVSVByb2Nl
c3MvZWZsL1dlYlBvcHVwSXRlbUVmbC5jcHA6IEFkZGVkLiBBZGQgQVBJT2JqZWN0IHdyYXBwZXIg
Zm9yCisgICAgICAgIFdlYlBvcHVwSXRlbSBzbyB0aGF0IHdlIGNhbiB1c2UgaXQgaW4gV0tQYWdl
VUlQb3B1cE1lbnVDbGllbnQuCisgICAgICAgIChXZWJLaXQpOgorICAgICAgICAoV2ViS2l0OjpX
ZWJQb3B1cEl0ZW1FZmw6OldlYlBvcHVwSXRlbUVmbCk6CisgICAgICAgIChXZWJLaXQ6OldlYlBv
cHVwSXRlbUVmbDo6fldlYlBvcHVwSXRlbUVmbCk6CisgICAgICAgICogVUlQcm9jZXNzL2VmbC9X
ZWJQb3B1cEl0ZW1FZmwuaDogQWRkZWQuCisgICAgICAgIChXZWJLaXQpOgorICAgICAgICAoV2Vi
UG9wdXBJdGVtRWZsKToKKyAgICAgICAgKFdlYktpdDo6V2ViUG9wdXBJdGVtRWZsOjpjcmVhdGUp
OgorICAgICAgICAoV2ViS2l0OjpXZWJQb3B1cEl0ZW1FZmw6OmRhdGEpOgorICAgICAgICAoV2Vi
S2l0OjpXZWJQb3B1cEl0ZW1FZmw6Oml0ZW1UeXBlKToKKyAgICAgICAgKFdlYktpdDo6V2ViUG9w
dXBJdGVtRWZsOjp0ZXh0KToKKyAgICAgICAgKFdlYktpdDo6V2ViUG9wdXBJdGVtRWZsOjp0ZXh0
RGlyZWN0aW9uKToKKyAgICAgICAgKFdlYktpdDo6V2ViUG9wdXBJdGVtRWZsOjpoYXNUZXh0RGly
ZWN0aW9uT3ZlcnJpZGUpOgorICAgICAgICAoV2ViS2l0OjpXZWJQb3B1cEl0ZW1FZmw6OnRvb2xU
aXBUZXh0KToKKyAgICAgICAgKFdlYktpdDo6V2ViUG9wdXBJdGVtRWZsOjphY2Nlc3NpYmlsaXR5
VGV4dCk6CisgICAgICAgIChXZWJLaXQ6OldlYlBvcHVwSXRlbUVmbDo6aXNFbmFibGVkKToKKyAg
ICAgICAgKFdlYktpdDo6V2ViUG9wdXBJdGVtRWZsOjppc0xhYmVsKToKKyAgICAgICAgKFdlYktp
dDo6V2ViUG9wdXBJdGVtRWZsOjppc1NlbGVjdGVkKToKKyAgICAgICAgKFdlYktpdDo6V2ViUG9w
dXBJdGVtRWZsOjp0eXBlKToKKyAgICAgICAgKiBVSVByb2Nlc3MvZWZsL1dlYlBvcHVwTWVudUxp
c3RlbmVyRWZsLmNwcDogUmVuYW1lZCBmcm9tIFNvdXJjZS9XZWJLaXQyL1VJUHJvY2Vzcy9lZmwv
V2ViUG9wdXBNZW51UHJveHlFZmwuY3BwLgorICAgICAgICBVc2UgV2ViUG9wdXBNZW51TGlzdGVu
ZXJFZmwgbmFtZSBpbnN0ZWFkIG9mIFdlYlBvcHVwTWVudVByb3h5RWZsIHNpbmNlCisgICAgICAg
IGl0IG1vcmUgYWNjdXJhdGVseSByZXByZXNlbnRzIGl0cyBmdW5jdGlvbmFsaXR5IG5vdy4KKyAg
ICAgICAgKFdlYktpdCk6CisgICAgICAgIChXZWJLaXQ6OldlYlBvcHVwTWVudUxpc3RlbmVyRWZs
OjpXZWJQb3B1cE1lbnVMaXN0ZW5lckVmbCk6CisgICAgICAgIChXZWJLaXQ6OldlYlBvcHVwTWVu
dUxpc3RlbmVyRWZsOjp2YWx1ZUNoYW5nZWQpOgorICAgICAgICAqIFVJUHJvY2Vzcy9lZmwvV2Vi
UG9wdXBNZW51TGlzdGVuZXJFZmwuaDogUmVuYW1lZCBmcm9tIFNvdXJjZS9XZWJLaXQyL1VJUHJv
Y2Vzcy9lZmwvV2ViUG9wdXBNZW51UHJveHlFZmwuaC4KKyAgICAgICAgKFdlYktpdCk6CisgICAg
ICAgIChXZWJQb3B1cE1lbnVMaXN0ZW5lckVmbCk6CisgICAgICAgIChXZWJLaXQ6OldlYlBvcHVw
TWVudUxpc3RlbmVyRWZsOjpjcmVhdGUpOgorICAgICAgICAqIFVJUHJvY2Vzcy9lZmwvV2ViVUlQ
b3B1cE1lbnVDbGllbnQuY3BwOiBBZGRlZC4KKyAgICAgICAgKFdlYlVJUG9wdXBNZW51Q2xpZW50
OjpzaG93UG9wdXBNZW51KToKKyAgICAgICAgKFdlYlVJUG9wdXBNZW51Q2xpZW50OjpoaWRlUG9w
dXBNZW51KToKKyAgICAgICAgKiBVSVByb2Nlc3MvZWZsL1dlYlVJUG9wdXBNZW51Q2xpZW50Lmg6
IEFkZGVkLgorICAgICAgICAoV2ViS2l0KToKKyAgICAgICAgKFdlYlVJUG9wdXBNZW51Q2xpZW50
KToKKyAgICAgICAgKiBVSVByb2Nlc3MvZWZsL1dlYlZpZXcuY3BwOgorICAgICAgICAoV2ViS2l0
OjpXZWJWaWV3OjpjcmVhdGVQb3B1cE1lbnVQcm94eSk6CisKIDIwMTMtMDEtMDQgIEplciBOb2Js
ZSAgPGplci5ub2JsZUBhcHBsZS5jb20+CiAKICAgICAgICAgcGluY2gtem9vbWluZyB3ZWJwYWdl
IG1lc3NlcyB1cCBmdWxsLXNjcmVlbmluZyBvZiBlbWJlZGRlZCB2aWRlbwpkaWZmIC0tZ2l0IGEv
U291cmNlL1dlYktpdDIvUGxhdGZvcm1FZmwuY21ha2UgYi9Tb3VyY2UvV2ViS2l0Mi9QbGF0Zm9y
bUVmbC5jbWFrZQppbmRleCBhMDA4MWI3Li43ZmE0ZWM5IDEwMDY0NAotLS0gYS9Tb3VyY2UvV2Vi
S2l0Mi9QbGF0Zm9ybUVmbC5jbWFrZQorKysgYi9Tb3VyY2UvV2ViS2l0Mi9QbGF0Zm9ybUVmbC5j
bWFrZQpAQCAtMzcsNiArMzcsOSBAQCBsaXN0KEFQUEVORCBXZWJLaXQyX1NPVVJDRVMKIAogICAg
IFVJUHJvY2Vzcy9BUEkvQy9jYWlyby9XS0ljb25EYXRhYmFzZUNhaXJvLmNwcAogCisgICAgVUlQ
cm9jZXNzL0FQSS9DL2VmbC9XS1BhZ2VFZmwuY3BwCisgICAgVUlQcm9jZXNzL0FQSS9DL2VmbC9X
S1BvcHVwSXRlbS5jcHAKKyAgICBVSVByb2Nlc3MvQVBJL0MvZWZsL1dLUG9wdXBNZW51TGlzdGVu
ZXIuY3BwCiAgICAgVUlQcm9jZXNzL0FQSS9DL2VmbC9XS1ZpZXcuY3BwCiAKICAgICBVSVByb2Nl
c3MvQVBJL2NwcC9lZmwvV0tFaW5hU2hhcmVkU3RyaW5nLmNwcApAQCAtMTAyLDkgKzEwNSwxMSBA
QCBsaXN0KEFQUEVORCBXZWJLaXQyX1NPVVJDRVMKICAgICBVSVByb2Nlc3MvZWZsL1dlYkZ1bGxT
Y3JlZW5NYW5hZ2VyUHJveHlFZmwuY3BwCiAgICAgVUlQcm9jZXNzL2VmbC9XZWJJbnNwZWN0b3JQ
cm94eUVmbC5jcHAKICAgICBVSVByb2Nlc3MvZWZsL1dlYlBhZ2VQcm94eUVmbC5jcHAKLSAgICBV
SVByb2Nlc3MvZWZsL1dlYlBvcHVwTWVudVByb3h5RWZsLmNwcAorICAgIFVJUHJvY2Vzcy9lZmwv
V2ViUG9wdXBJdGVtRWZsLmNwcAorICAgIFVJUHJvY2Vzcy9lZmwvV2ViUG9wdXBNZW51TGlzdGVu
ZXJFZmwuY3BwCiAgICAgVUlQcm9jZXNzL2VmbC9XZWJQcmVmZXJlbmNlc0VmbC5jcHAKICAgICBV
SVByb2Nlc3MvZWZsL1dlYlByb2Nlc3NQcm94eUVmbC5jcHAKKyAgICBVSVByb2Nlc3MvZWZsL1dl
YlVJUG9wdXBNZW51Q2xpZW50LmNwcAogICAgIFVJUHJvY2Vzcy9lZmwvV2ViVmlldy5jcHAKICAg
ICBVSVByb2Nlc3MvZWZsL1dlYlZpZXdDbGllbnQuY3BwCiAKZGlmZiAtLWdpdCBhL1NvdXJjZS9X
ZWJLaXQyL1NoYXJlZC9BUEkvYy9lZmwvV0tCYXNlRWZsLmggYi9Tb3VyY2UvV2ViS2l0Mi9TaGFy
ZWQvQVBJL2MvZWZsL1dLQmFzZUVmbC5oCmluZGV4IDYxODRjODEuLjcyZmJmZDMgMTAwNjQ0Ci0t
LSBhL1NvdXJjZS9XZWJLaXQyL1NoYXJlZC9BUEkvYy9lZmwvV0tCYXNlRWZsLmgKKysrIGIvU291
cmNlL1dlYktpdDIvU2hhcmVkL0FQSS9jL2VmbC9XS0Jhc2VFZmwuaApAQCAtMjUsNSArMjUsNyBA
QAogI2VuZGlmCiAKIHR5cGVkZWYgY29uc3Qgc3RydWN0IE9wYXF1ZVdLVmlldyogV0tWaWV3UmVm
OwordHlwZWRlZiBjb25zdCBzdHJ1Y3QgT3BhcXVlV0tQb3B1cEl0ZW0qIFdLUG9wdXBJdGVtUmVm
OwordHlwZWRlZiBjb25zdCBzdHJ1Y3QgT3BhcXVlV0tQb3B1cE1lbnVMaXN0ZW5lciogV0tQb3B1
cE1lbnVMaXN0ZW5lclJlZjsKIAogI2VuZGlmIC8qIFdLQmFzZUVmbF9oICovCmRpZmYgLS1naXQg
YS9Tb3VyY2UvV2ViS2l0Mi9TaGFyZWQvQVBJT2JqZWN0LmggYi9Tb3VyY2UvV2ViS2l0Mi9TaGFy
ZWQvQVBJT2JqZWN0LmgKaW5kZXggODU5ZmI4ZS4uNWVjZWI1NjIgMTAwNjQ0Ci0tLSBhL1NvdXJj
ZS9XZWJLaXQyL1NoYXJlZC9BUElPYmplY3QuaAorKysgYi9Tb3VyY2UvV2ViS2l0Mi9TaGFyZWQv
QVBJT2JqZWN0LmgKQEAgLTEzMyw2ICsxMzMsOSBAQCBwdWJsaWM6CiAjaWYgVVNFKFNPVVApCiAg
ICAgICAgIFR5cGVTb3VwUmVxdWVzdE1hbmFnZXIsCiAjZW5kaWYKKyNpZiBQTEFURk9STShFRkwp
CisgICAgICAgIFR5cGVQb3B1cE1lbnVJdGVtLAorI2VuZGlmCiAgICAgfTsKIAogICAgIHZpcnR1
YWwgfkFQSU9iamVjdCgpCmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViS2l0Mi9VSVByb2Nlc3MvQVBJ
L0MvZWZsL1dLQVBJQ2FzdEVmbC5oIGIvU291cmNlL1dlYktpdDIvVUlQcm9jZXNzL0FQSS9DL2Vm
bC9XS0FQSUNhc3RFZmwuaAppbmRleCAxODg5ZmM0Li5kM2JjYTkyIDEwMDY0NAotLS0gYS9Tb3Vy
Y2UvV2ViS2l0Mi9VSVByb2Nlc3MvQVBJL0MvZWZsL1dLQVBJQ2FzdEVmbC5oCisrKyBiL1NvdXJj
ZS9XZWJLaXQyL1VJUHJvY2Vzcy9BUEkvQy9lZmwvV0tBUElDYXN0RWZsLmgKQEAgLTI0LDExICsy
NCwzNSBAQAogI2Vycm9yICJQbGVhc2UgI2luY2x1ZGUgXCJXS0FQSUNhc3QuaFwiIGluc3RlYWQg
b2YgdGhpcyBmaWxlIGRpcmVjdGx5LiIKICNlbmRpZgogCisjaW5jbHVkZSA8V2ViQ29yZS9UZXh0
RGlyZWN0aW9uLmg+CisjaW5jbHVkZSA8V2ViS2l0Mi9XS1BvcHVwSXRlbS5oPgorCiBuYW1lc3Bh
Y2UgV2ViS2l0IHsKIAogY2xhc3MgV2ViVmlldzsKK2NsYXNzIFdlYlBvcHVwSXRlbUVmbDsKK2Ns
YXNzIFdlYlBvcHVwTWVudUxpc3RlbmVyRWZsOwogCiBXS19BRERfQVBJX01BUFBJTkcoV0tWaWV3
UmVmLCBXZWJWaWV3KQorV0tfQUREX0FQSV9NQVBQSU5HKFdLUG9wdXBJdGVtUmVmLCBXZWJQb3B1
cEl0ZW1FZmwpCitXS19BRERfQVBJX01BUFBJTkcoV0tQb3B1cE1lbnVMaXN0ZW5lclJlZiwgV2Vi
UG9wdXBNZW51TGlzdGVuZXJFZmwpCisKKy8vIEVudW0gY29udmVyc2lvbnMuCitpbmxpbmUgV0tQ
b3B1cEl0ZW1UZXh0RGlyZWN0aW9uIHRvQVBJKFdlYkNvcmU6OlRleHREaXJlY3Rpb24gZGlyZWN0
aW9uKQoreworICAgIFdLUG9wdXBJdGVtVGV4dERpcmVjdGlvbiB3a0RpcmVjdGlvbiA9IGtXS1Bv
cHVwSXRlbVRleHREaXJlY3Rpb25MVFI7CisKKyAgICBzd2l0Y2ggKGRpcmVjdGlvbikgeworICAg
IGNhc2UgV2ViQ29yZTo6UlRMOgorICAgICAgICB3a0RpcmVjdGlvbiA9IGtXS1BvcHVwSXRlbVRl
eHREaXJlY3Rpb25SVEw7CisgICAgICAgIGJyZWFrOworICAgIGNhc2UgV2ViQ29yZTo6TFRSOgor
ICAgICAgICB3a0RpcmVjdGlvbiA9IGtXS1BvcHVwSXRlbVRleHREaXJlY3Rpb25MVFI7CisgICAg
ICAgIGJyZWFrOworICAgIH0KKworICAgIHJldHVybiB3a0RpcmVjdGlvbjsKK30KIAogfQogCmRp
ZmYgLS1naXQgYS9Tb3VyY2UvV2ViS2l0Mi9VSVByb2Nlc3MvQVBJL0MvZWZsL1dLUGFnZUVmbC5j
cHAgYi9Tb3VyY2UvV2ViS2l0Mi9VSVByb2Nlc3MvQVBJL0MvZWZsL1dLUGFnZUVmbC5jcHAKbmV3
IGZpbGUgbW9kZSAxMDA2NDQKaW5kZXggMDAwMDAwMC4uMmQ1ZWM5MQotLS0gL2Rldi9udWxsCisr
KyBiL1NvdXJjZS9XZWJLaXQyL1VJUHJvY2Vzcy9BUEkvQy9lZmwvV0tQYWdlRWZsLmNwcApAQCAt
MCwwICsxLDM3IEBACisvKgorICogQ29weXJpZ2h0IChDKSAyMDEzIFNhbXN1bmcgRWxlY3Ryb25p
Y3MuIEFsbCByaWdodHMgcmVzZXJ2ZWQuCisgKgorICogUmVkaXN0cmlidXRpb24gYW5kIHVzZSBp
biBzb3VyY2UgYW5kIGJpbmFyeSBmb3Jtcywgd2l0aCBvciB3aXRob3V0CisgKiBtb2RpZmljYXRp
b24sIGFyZSBwZXJtaXR0ZWQgcHJvdmlkZWQgdGhhdCB0aGUgZm9sbG93aW5nIGNvbmRpdGlvbnMK
KyAqIGFyZSBtZXQ6CisgKiAxLiBSZWRpc3RyaWJ1dGlvbnMgb2Ygc291cmNlIGNvZGUgbXVzdCBy
ZXRhaW4gdGhlIGFib3ZlIGNvcHlyaWdodAorICogICAgbm90aWNlLCB0aGlzIGxpc3Qgb2YgY29u
ZGl0aW9ucyBhbmQgdGhlIGZvbGxvd2luZyBkaXNjbGFpbWVyLgorICogMi4gUmVkaXN0cmlidXRp
b25zIGluIGJpbmFyeSBmb3JtIG11c3QgcmVwcm9kdWNlIHRoZSBhYm92ZSBjb3B5cmlnaHQKKyAq
ICAgIG5vdGljZSwgdGhpcyBsaXN0IG9mIGNvbmRpdGlvbnMgYW5kIHRoZSBmb2xsb3dpbmcgZGlz
Y2xhaW1lciBpbiB0aGUKKyAqICAgIGRvY3VtZW50YXRpb24gYW5kL29yIG90aGVyIG1hdGVyaWFs
cyBwcm92aWRlZCB3aXRoIHRoZSBkaXN0cmlidXRpb24uCisgKgorICogVEhJUyBTT0ZUV0FSRSBJ
UyBQUk9WSURFRCBCWSBBUFBMRSBJTkMuIEFORCBJVFMgQ09OVFJJQlVUT1JTIGBgQVMgSVMnJwor
ICogQU5EIEFOWSBFWFBSRVNTIE9SIElNUExJRUQgV0FSUkFOVElFUywgSU5DTFVESU5HLCBCVVQg
Tk9UIExJTUlURUQgVE8sCisgKiBUSEUgSU1QTElFRCBXQVJSQU5USUVTIE9GIE1FUkNIQU5UQXdC
SUxJVFkgQU5EIEZJVE5FU1MgRk9SIEEgUEFSVElDVUxBUgorICogUFVSUE9TRSBBUkUgRElTQ0xB
SU1FRC4gSU4gTk8gRVZFTlQgU0hBTEwgQVBQTEUgSU5DLiBPUiBJVFMgQ09OVFJJQlVUT1JTCisg
KiBCRSBMSUFCTEUgRk9SIEFOWSBESVJFQ1QsIElORElSRUNULCBJTkNJREVOVEFMLCBTUEVDSUFM
LCBFWEVNUExBUlksIE9SCisgKiBDT05TRVFVRU5USUFMIERBTUFHRVMgKElOQ0xVRElORywgQlVU
IE5PVCBMSU1JVEVEIFRPLCBQUk9DVVJFTUVOVCBPRgorICogU1VCU1RJVFVURSBHT09EUyBPUiBT
RVJWSUNFUzsgTE9TUyBPRiBVU0UsIERBVEEsIE9SIFBST0ZJVFM7IE9SIEJVU0lORVNTCisgKiBJ
TlRFUlJVUFRJT04pIEhPV0VWRVIgQ0FVU0VEIEFORCBPTiBBTlkgVEhFT1JZIE9GIExJQUJJTElU
WSwgV0hFVEhFUiBJTgorICogQ09OVFJBQ1QsIFNUUklDVCBMSUFCSUxJVFksIE9SIFRPUlQgKElO
Q0xVRElORyBORUdMSUdFTkNFIE9SIE9USEVSV0lTRSkKKyAqIEFSSVNJTkcgSU4gQU5ZIFdBWSBP
VVQgT0YgVEhFIFVTRSBPRiBUSElTIFNPRlRXQVJFLCBFVkVOIElGIEFEVklTRUQgT0YKKyAqIFRI
RSBQT1NTSUJJTElUWSBPRiBTVUNIIERBTUFHRS4KKyAqLworCisjaW5jbHVkZSAiY29uZmlnLmgi
CisjaW5jbHVkZSAiV0tQYWdlRWZsLmgiCisKKyNpbmNsdWRlICJXS0FQSUNhc3QuaCIKKyNpbmNs
dWRlICJXZWJQYWdlUHJveHkuaCIKKwordXNpbmcgbmFtZXNwYWNlIFdlYktpdDsKKwordm9pZCBX
S1BhZ2VTZXRVSVBvcHVwTWVudUNsaWVudChXS1BhZ2VSZWYgcGFnZVJlZiwgY29uc3QgV0tQYWdl
VUlQb3B1cE1lbnVDbGllbnQqIHdrQ2xpZW50KQoreworICAgIHRvSW1wbChwYWdlUmVmKS0+aW5p
dGlhbGl6ZVVJUG9wdXBNZW51Q2xpZW50KHdrQ2xpZW50KTsKK30KZGlmZiAtLWdpdCBhL1NvdXJj
ZS9XZWJLaXQyL1VJUHJvY2Vzcy9BUEkvQy9lZmwvV0tQYWdlRWZsLmggYi9Tb3VyY2UvV2ViS2l0
Mi9VSVByb2Nlc3MvQVBJL0MvZWZsL1dLUGFnZUVmbC5oCm5ldyBmaWxlIG1vZGUgMTAwNjQ0Cmlu
ZGV4IDAwMDAwMDAuLjc3YjlkMTQKLS0tIC9kZXYvbnVsbAorKysgYi9Tb3VyY2UvV2ViS2l0Mi9V
SVByb2Nlc3MvQVBJL0MvZWZsL1dLUGFnZUVmbC5oCkBAIC0wLDAgKzEsNTYgQEAKKy8qCisgKiBD
b3B5cmlnaHQgKEMpIDIwMTMgU2Ftc3VuZyBFbGVjdHJvbmljcy4gQWxsIHJpZ2h0cyByZXNlcnZl
ZC4KKyAqCisgKiBSZWRpc3RyaWJ1dGlvbiBhbmQgdXNlIGluIHNvdXJjZSBhbmQgYmluYXJ5IGZv
cm1zLCB3aXRoIG9yIHdpdGhvdXQKKyAqIG1vZGlmaWNhdGlvbiwgYXJlIHBlcm1pdHRlZCBwcm92
aWRlZCB0aGF0IHRoZSBmb2xsb3dpbmcgY29uZGl0aW9ucworICogYXJlIG1ldDoKKyAqIDEuIFJl
ZGlzdHJpYnV0aW9ucyBvZiBzb3VyY2UgY29kZSBtdXN0IHJldGFpbiB0aGUgYWJvdmUgY29weXJp
Z2h0CisgKiAgICBub3RpY2UsIHRoaXMgbGlzdCBvZiBjb25kaXRpb25zIGFuZCB0aGUgZm9sbG93
aW5nIGRpc2NsYWltZXIuCisgKiAyLiBSZWRpc3RyaWJ1dGlvbnMgaW4gYmluYXJ5IGZvcm0gbXVz
dCByZXByb2R1Y2UgdGhlIGFib3ZlIGNvcHlyaWdodAorICogICAgbm90aWNlLCB0aGlzIGxpc3Qg
b2YgY29uZGl0aW9ucyBhbmQgdGhlIGZvbGxvd2luZyBkaXNjbGFpbWVyIGluIHRoZQorICogICAg
ZG9jdW1lbnRhdGlvbiBhbmQvb3Igb3RoZXIgbWF0ZXJpYWxzIHByb3ZpZGVkIHdpdGggdGhlIGRp
c3RyaWJ1dGlvbi4KKyAqCisgKiBUSElTIFNPRlRXQVJFIElTIFBST1ZJREVEIEJZIEFQUExFIElO
Qy4gQU5EIElUUyBDT05UUklCVVRPUlMgYGBBUyBJUycnCisgKiBBTkQgQU5ZIEVYUFJFU1MgT1Ig
SU1QTElFRCBXQVJSQU5USUVTLCBJTkNMVURJTkcsIEJVVCBOT1QgTElNSVRFRCBUTywKKyAqIFRI
RSBJTVBMSUVEIFdBUlJBTlRJRVMgT0YgTUVSQ0hBTlRBd0JJTElUWSBBTkQgRklUTkVTUyBGT1Ig
QSBQQVJUSUNVTEFSCisgKiBQVVJQT1NFIEFSRSBESVNDTEFJTUVELiBJTiBOTyBFVkVOVCBTSEFM
TCBBUFBMRSBJTkMuIE9SIElUUyBDT05UUklCVVRPUlMKKyAqIEJFIExJQUJMRSBGT1IgQU5ZIERJ
UkVDVCwgSU5ESVJFQ1QsIElOQ0lERU5UQUwsIFNQRUNJQUwsIEVYRU1QTEFSWSwgT1IKKyAqIENP
TlNFUVVFTlRJQUwgREFNQUdFUyAoSU5DTFVESU5HLCBCVVQgTk9UIExJTUlURUQgVE8sIFBST0NV
UkVNRU5UIE9GCisgKiBTVUJTVElUVVRFIEdPT0RTIE9SIFNFUlZJQ0VTOyBMT1NTIE9GIFVTRSwg
REFUQSwgT1IgUFJPRklUUzsgT1IgQlVTSU5FU1MKKyAqIElOVEVSUlVQVElPTikgSE9XRVZFUiBD
QVVTRUQgQU5EIE9OIEFOWSBUSEVPUlkgT0YgTElBQklMSVRZLCBXSEVUSEVSIElOCisgKiBDT05U
UkFDVCwgU1RSSUNUIExJQUJJTElUWSwgT1IgVE9SVCAoSU5DTFVESU5HIE5FR0xJR0VOQ0UgT1Ig
T1RIRVJXSVNFKQorICogQVJJU0lORyBJTiBBTlkgV0FZIE9VVCBPRiBUSEUgVVNFIE9GIFRISVMg
U09GVFdBUkUsIEVWRU4gSUYgQURWSVNFRCBPRgorICogVEhFIFBPU1NJQklMSVRZIE9GIFNVQ0gg
REFNQUdFLgorICovCisKKyNpZm5kZWYgV0tQYWdlRWZsX2gKKyNkZWZpbmUgV0tQYWdlRWZsX2gK
KworI2luY2x1ZGUgPFdlYktpdDIvV0tCYXNlLmg+CisjaW5jbHVkZSA8V2ViS2l0Mi9XS0dlb21l
dHJ5Lmg+CisjaW5jbHVkZSA8V2ViS2l0Mi9XS1BvcHVwSXRlbS5oPgorCisjaWZkZWYgX19jcGx1
c3BsdXMKK2V4dGVybiAiQyIgeworI2VuZGlmCisKK3R5cGVkZWYgdm9pZCAoKldLUGFnZVNob3dQ
b3B1cE1lbnVDYWxsYmFjaykoV0tQYWdlUmVmIHBhZ2UsIFdLUG9wdXBNZW51TGlzdGVuZXJSZWYg
bWVudUxpc3RlbmVyUmVmLCBXS1JlY3QgcmVjdCwgV0tQb3B1cEl0ZW1UZXh0RGlyZWN0aW9uIHRl
eHREaXJlY3Rpb24sIGRvdWJsZSBwYWdlU2NhbGVGYWN0b3IsIFdLQXJyYXlSZWYgaXRlbXNSZWYs
IGludDMyX3Qgc2VsZWN0ZWRJbmRleCwgY29uc3Qgdm9pZCogY2xpZW50SW5mbyk7Cit0eXBlZGVm
IHZvaWQgKCpXS1BhZ2VIaWRlUG9wdXBNZW51Q2FsbGJhY2spKFdLUGFnZVJlZiBwYWdlLCBjb25z
dCB2b2lkKiBjbGllbnRJbmZvKTsKKworc3RydWN0IFdLUGFnZVVJUG9wdXBNZW51Q2xpZW50IHsK
KyAgICBpbnQgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIHZlcnNp
b247CisgICAgY29uc3Qgdm9pZCogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBj
bGllbnRJbmZvOworICAgIFdLUGFnZVNob3dQb3B1cE1lbnVDYWxsYmFjayAgICAgICAgICAgICAg
ICAgICAgc2hvd1BvcHVwTWVudTsKKyAgICBXS1BhZ2VIaWRlUG9wdXBNZW51Q2FsbGJhY2sgICAg
ICAgICAgICAgICAgICAgIGhpZGVQb3B1cE1lbnU7Cit9OwordHlwZWRlZiBzdHJ1Y3QgV0tQYWdl
VUlQb3B1cE1lbnVDbGllbnQgV0tQYWdlVUlQb3B1cE1lbnVDbGllbnQ7CisKK2VudW0geyBrV0tQ
YWdlVUlQb3B1cE1lbnVDbGllbnRDdXJyZW50VmVyc2lvbiA9IDAgfTsKKworV0tfRVhQT1JUIHZv
aWQgV0tQYWdlU2V0VUlQb3B1cE1lbnVDbGllbnQoV0tQYWdlUmVmIHBhZ2UsIGNvbnN0IFdLUGFn
ZVVJUG9wdXBNZW51Q2xpZW50KiBjbGllbnQpOworCisjaWZkZWYgX19jcGx1c3BsdXMKK30KKyNl
bmRpZgorCisjZW5kaWYgLyogV0tQYWdlRWZsX2ggKi8KZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJL
aXQyL1VJUHJvY2Vzcy9BUEkvQy9lZmwvV0tQb3B1cEl0ZW0uY3BwIGIvU291cmNlL1dlYktpdDIv
VUlQcm9jZXNzL0FQSS9DL2VmbC9XS1BvcHVwSXRlbS5jcHAKbmV3IGZpbGUgbW9kZSAxMDA2NDQK
aW5kZXggMDAwMDAwMC4uN2IwZWE0NQotLS0gL2Rldi9udWxsCisrKyBiL1NvdXJjZS9XZWJLaXQy
L1VJUHJvY2Vzcy9BUEkvQy9lZmwvV0tQb3B1cEl0ZW0uY3BwCkBAIC0wLDAgKzEsOTQgQEAKKy8q
CisgKiBDb3B5cmlnaHQgKEMpIDIwMTMgU2Ftc3VuZyBFbGVjdHJvbmljcy4gQWxsIHJpZ2h0cyBy
ZXNlcnZlZC4KKyAqCisgKiBSZWRpc3RyaWJ1dGlvbiBhbmQgdXNlIGluIHNvdXJjZSBhbmQgYmlu
YXJ5IGZvcm1zLCB3aXRoIG9yIHdpdGhvdXQKKyAqIG1vZGlmaWNhdGlvbiwgYXJlIHBlcm1pdHRl
ZCBwcm92aWRlZCB0aGF0IHRoZSBmb2xsb3dpbmcgY29uZGl0aW9ucworICogYXJlIG1ldDoKKyAq
IDEuIFJlZGlzdHJpYnV0aW9ucyBvZiBzb3VyY2UgY29kZSBtdXN0IHJldGFpbiB0aGUgYWJvdmUg
Y29weXJpZ2h0CisgKiAgICBub3RpY2UsIHRoaXMgbGlzdCBvZiBjb25kaXRpb25zIGFuZCB0aGUg
Zm9sbG93aW5nIGRpc2NsYWltZXIuCisgKiAyLiBSZWRpc3RyaWJ1dGlvbnMgaW4gYmluYXJ5IGZv
cm0gbXVzdCByZXByb2R1Y2UgdGhlIGFib3ZlIGNvcHlyaWdodAorICogICAgbm90aWNlLCB0aGlz
IGxpc3Qgb2YgY29uZGl0aW9ucyBhbmQgdGhlIGZvbGxvd2luZyBkaXNjbGFpbWVyIGluIHRoZQor
ICogICAgZG9jdW1lbnRhdGlvbiBhbmQvb3Igb3RoZXIgbWF0ZXJpYWxzIHByb3ZpZGVkIHdpdGgg
dGhlIGRpc3RyaWJ1dGlvbi4KKyAqCisgKiBUSElTIFNPRlRXQVJFIElTIFBST1ZJREVEIEJZIEFQ
UExFIElOQy4gQU5EIElUUyBDT05UUklCVVRPUlMgYGBBUyBJUycnCisgKiBBTkQgQU5ZIEVYUFJF
U1MgT1IgSU1QTElFRCBXQVJSQU5USUVTLCBJTkNMVURJTkcsIEJVVCBOT1QgTElNSVRFRCBUTywK
KyAqIFRIRSBJTVBMSUVEIFdBUlJBTlRJRVMgT0YgTUVSQ0hBTlRBd0JJTElUWSBBTkQgRklUTkVT
UyBGT1IgQSBQQVJUSUNVTEFSCisgKiBQVVJQT1NFIEFSRSBESVNDTEFJTUVELiBJTiBOTyBFVkVO
VCBTSEFMTCBBUFBMRSBJTkMuIE9SIElUUyBDT05UUklCVVRPUlMKKyAqIEJFIExJQUJMRSBGT1Ig
QU5ZIERJUkVDVCwgSU5ESVJFQ1QsIElOQ0lERU5UQUwsIFNQRUNJQUwsIEVYRU1QTEFSWSwgT1IK
KyAqIENPTlNFUVVFTlRJQUwgREFNQUdFUyAoSU5DTFVESU5HLCBCVVQgTk9UIExJTUlURUQgVE8s
IFBST0NVUkVNRU5UIE9GCisgKiBTVUJTVElUVVRFIEdPT0RTIE9SIFNFUlZJQ0VTOyBMT1NTIE9G
IFVTRSwgREFUQSwgT1IgUFJPRklUUzsgT1IgQlVTSU5FU1MKKyAqIElOVEVSUlVQVElPTikgSE9X
RVZFUiBDQVVTRUQgQU5EIE9OIEFOWSBUSEVPUlkgT0YgTElBQklMSVRZLCBXSEVUSEVSIElOCisg
KiBDT05UUkFDVCwgU1RSSUNUIExJQUJJTElUWSwgT1IgVE9SVCAoSU5DTFVESU5HIE5FR0xJR0VO
Q0UgT1IgT1RIRVJXSVNFKQorICogQVJJU0lORyBJTiBBTlkgV0FZIE9VVCBPRiBUSEUgVVNFIE9G
IFRISVMgU09GVFdBUkUsIEVWRU4gSUYgQURWSVNFRCBPRgorICogVEhFIFBPU1NJQklMSVRZIE9G
IFNVQ0ggREFNQUdFLgorICovCisKKyNpbmNsdWRlICJjb25maWcuaCIKKyNpbmNsdWRlICJXS1Bv
cHVwSXRlbS5oIgorCisjaW5jbHVkZSAiV0tBUElDYXN0LmgiCisjaW5jbHVkZSAiV2ViUG9wdXBJ
dGVtRWZsLmgiCisKK3VzaW5nIG5hbWVzcGFjZSBXZWJLaXQ7Cit1c2luZyBuYW1lc3BhY2UgV2Vi
Q29yZTsKKworV0tQb3B1cEl0ZW1UeXBlIFdLUG9wdXBJdGVtR2V0VHlwZShXS1BvcHVwSXRlbVJl
ZiBpdGVtUmVmKQoreworICAgIHN3aXRjaCAodG9JbXBsKGl0ZW1SZWYpLT5pdGVtVHlwZSgpKSB7
CisgICAgY2FzZSBXZWJQb3B1cEl0ZW06OlNlcGFyYXRvcjoKKyAgICAgICAgcmV0dXJuIGtXS1Bv
cHVwSXRlbVR5cGVTZXBhcmF0b3I7CisgICAgY2FzZSBXZWJQb3B1cEl0ZW06Okl0ZW06CisgICAg
ICAgIHJldHVybiBrV0tQb3B1cEl0ZW1UeXBlSXRlbTsKKyAgICBkZWZhdWx0OgorICAgICAgICBB
U1NFUlRfTk9UX1JFQUNIRUQoKTsKKyAgICAgICAgcmV0dXJuIGtXS1BvcHVwSXRlbVR5cGVJdGVt
OworICAgIH0KK30KKworV0tQb3B1cEl0ZW1UZXh0RGlyZWN0aW9uIFdLUG9wdXBJdGVtR2V0VGV4
dERpcmVjdGlvbihXS1BvcHVwSXRlbVJlZiBpdGVtUmVmKQoreworICAgIHN3aXRjaCAodG9JbXBs
KGl0ZW1SZWYpLT50ZXh0RGlyZWN0aW9uKCkpIHsKKyAgICBjYXNlIFJUTDoKKyAgICAgICAgcmV0
dXJuIGtXS1BvcHVwSXRlbVRleHREaXJlY3Rpb25SVEw7CisgICAgY2FzZSBMVFI6CisgICAgICAg
IHJldHVybiBrV0tQb3B1cEl0ZW1UZXh0RGlyZWN0aW9uTFRSOworICAgIGRlZmF1bHQ6CisgICAg
ICAgIEFTU0VSVF9OT1RfUkVBQ0hFRCgpOworICAgICAgICByZXR1cm4ga1dLUG9wdXBJdGVtVGV4
dERpcmVjdGlvbkxUUjsKKyAgICB9Cit9CisKK2Jvb2wgV0tQb3B1cEl0ZW1IYXNUZXh0RGlyZWN0
aW9uT3ZlcnJpZGUoV0tQb3B1cEl0ZW1SZWYgaXRlbVJlZikKK3sKKyAgICByZXR1cm4gdG9JbXBs
KGl0ZW1SZWYpLT5oYXNUZXh0RGlyZWN0aW9uT3ZlcnJpZGUoKTsKK30KKworV0tTdHJpbmdSZWYg
V0tQb3B1cEl0ZW1Db3B5VGV4dChXS1BvcHVwSXRlbVJlZiBpdGVtUmVmKQoreworICAgIHJldHVy
biB0b0NvcGllZEFQSSh0b0ltcGwoaXRlbVJlZiktPnRleHQoKSk7Cit9CisKK1dLU3RyaW5nUmVm
IFdLUG9wdXBJdGVtQ29weVRvb2xUaXBUZXh0KFdLUG9wdXBJdGVtUmVmIGl0ZW1SZWYpCit7Cisg
ICAgcmV0dXJuIHRvQ29waWVkQVBJKHRvSW1wbChpdGVtUmVmKS0+dG9vbFRpcFRleHQoKSk7Cit9
CisKK1dLU3RyaW5nUmVmIFdLUG9wdXBJdGVtQ29weUFjY2Vzc2liaWxpdHlUZXh0KFdLUG9wdXBJ
dGVtUmVmIGl0ZW1SZWYpCit7CisgICAgcmV0dXJuIHRvQ29waWVkQVBJKHRvSW1wbChpdGVtUmVm
KS0+YWNjZXNzaWJpbGl0eVRleHQoKSk7Cit9CisKK2Jvb2wgV0tQb3B1cEl0ZW1Jc0VuYWJsZWQo
V0tQb3B1cEl0ZW1SZWYgaXRlbVJlZikKK3sKKyAgICByZXR1cm4gdG9JbXBsKGl0ZW1SZWYpLT5p
c0VuYWJsZWQoKTsKK30KKworYm9vbCBXS1BvcHVwSXRlbUlzTGFiZWwoV0tQb3B1cEl0ZW1SZWYg
aXRlbVJlZikKK3sKKyAgICByZXR1cm4gdG9JbXBsKGl0ZW1SZWYpLT5pc0xhYmVsKCk7Cit9CisK
K2Jvb2wgV0tQb3B1cEl0ZW1Jc1NlbGVjdGVkKFdLUG9wdXBJdGVtUmVmIGl0ZW1SZWYpCit7Cisg
ICAgcmV0dXJuIHRvSW1wbChpdGVtUmVmKS0+aXNTZWxlY3RlZCgpOworfQpkaWZmIC0tZ2l0IGEv
U291cmNlL1dlYktpdDIvVUlQcm9jZXNzL0FQSS9DL2VmbC9XS1BvcHVwSXRlbS5oIGIvU291cmNl
L1dlYktpdDIvVUlQcm9jZXNzL0FQSS9DL2VmbC9XS1BvcHVwSXRlbS5oCm5ldyBmaWxlIG1vZGUg
MTAwNjQ0CmluZGV4IDAwMDAwMDAuLmI0MThlZDUKLS0tIC9kZXYvbnVsbAorKysgYi9Tb3VyY2Uv
V2ViS2l0Mi9VSVByb2Nlc3MvQVBJL0MvZWZsL1dLUG9wdXBJdGVtLmgKQEAgLTAsMCArMSw2NCBA
QAorLyoKKyAqIENvcHlyaWdodCAoQykgMjAxMyBTYW1zdW5nIEVsZWN0cm9uaWNzLiBBbGwgcmln
aHRzIHJlc2VydmVkLgorICoKKyAqIFJlZGlzdHJpYnV0aW9uIGFuZCB1c2UgaW4gc291cmNlIGFu
ZCBiaW5hcnkgZm9ybXMsIHdpdGggb3Igd2l0aG91dAorICogbW9kaWZpY2F0aW9uLCBhcmUgcGVy
bWl0dGVkIHByb3ZpZGVkIHRoYXQgdGhlIGZvbGxvd2luZyBjb25kaXRpb25zCisgKiBhcmUgbWV0
OgorICogMS4gUmVkaXN0cmlidXRpb25zIG9mIHNvdXJjZSBjb2RlIG11c3QgcmV0YWluIHRoZSBh
Ym92ZSBjb3B5cmlnaHQKKyAqICAgIG5vdGljZSwgdGhpcyBsaXN0IG9mIGNvbmRpdGlvbnMgYW5k
IHRoZSBmb2xsb3dpbmcgZGlzY2xhaW1lci4KKyAqIDIuIFJlZGlzdHJpYnV0aW9ucyBpbiBiaW5h
cnkgZm9ybSBtdXN0IHJlcHJvZHVjZSB0aGUgYWJvdmUgY29weXJpZ2h0CisgKiAgICBub3RpY2Us
IHRoaXMgbGlzdCBvZiBjb25kaXRpb25zIGFuZCB0aGUgZm9sbG93aW5nIGRpc2NsYWltZXIgaW4g
dGhlCisgKiAgICBkb2N1bWVudGF0aW9uIGFuZC9vciBvdGhlciBtYXRlcmlhbHMgcHJvdmlkZWQg
d2l0aCB0aGUgZGlzdHJpYnV0aW9uLgorICoKKyAqIFRISVMgU09GVFdBUkUgSVMgUFJPVklERUQg
QlkgQVBQTEUgSU5DLiBBTkQgSVRTIENPTlRSSUJVVE9SUyBgYEFTIElTJycKKyAqIEFORCBBTlkg
RVhQUkVTUyBPUiBJTVBMSUVEIFdBUlJBTlRJRVMsIElOQ0xVRElORywgQlVUIE5PVCBMSU1JVEVE
IFRPLAorICogVEhFIElNUExJRUQgV0FSUkFOVElFUyBPRiBNRVJDSEFOVEF3QklMSVRZIEFORCBG
SVRORVNTIEZPUiBBIFBBUlRJQ1VMQVIKKyAqIFBVUlBPU0UgQVJFIERJU0NMQUlNRUQuIElOIE5P
IEVWRU5UIFNIQUxMIEFQUExFIElOQy4gT1IgSVRTIENPTlRSSUJVVE9SUworICogQkUgTElBQkxF
IEZPUiBBTlkgRElSRUNULCBJTkRJUkVDVCwgSU5DSURFTlRBTCwgU1BFQ0lBTCwgRVhFTVBMQVJZ
LCBPUgorICogQ09OU0VRVUVOVElBTCBEQU1BR0VTIChJTkNMVURJTkcsIEJVVCBOT1QgTElNSVRF
RCBUTywgUFJPQ1VSRU1FTlQgT0YKKyAqIFNVQlNUSVRVVEUgR09PRFMgT1IgU0VSVklDRVM7IExP
U1MgT0YgVVNFLCBEQVRBLCBPUiBQUk9GSVRTOyBPUiBCVVNJTkVTUworICogSU5URVJSVVBUSU9O
KSBIT1dFVkVSIENBVVNFRCBBTkQgT04gQU5ZIFRIRU9SWSBPRiBMSUFCSUxJVFksIFdIRVRIRVIg
SU4KKyAqIENPTlRSQUNULCBTVFJJQ1QgTElBQklMSVRZLCBPUiBUT1JUIChJTkNMVURJTkcgTkVH
TElHRU5DRSBPUiBPVEhFUldJU0UpCisgKiBBUklTSU5HIElOIEFOWSBXQVkgT1VUIE9GIFRIRSBV
U0UgT0YgVEhJUyBTT0ZUV0FSRSwgRVZFTiBJRiBBRFZJU0VEIE9GCisgKiBUSEUgUE9TU0lCSUxJ
VFkgT0YgU1VDSCBEQU1BR0UuCisgKi8KKworI2lmbmRlZiBXS1BvcHVwSXRlbV9oCisjZGVmaW5l
IFdLUG9wdXBJdGVtX2gKKworI2luY2x1ZGUgPFdlYktpdDIvV0tCYXNlLmg+CisKKyNpZmRlZiBf
X2NwbHVzcGx1cworZXh0ZXJuICJDIiB7CisjZW5kaWYKKworZW51bSB7CisgICAga1dLUG9wdXBJ
dGVtVHlwZVNlcGFyYXRvciwKKyAgICBrV0tQb3B1cEl0ZW1UeXBlSXRlbQorfTsKK3R5cGVkZWYg
dWludDMyX3QgV0tQb3B1cEl0ZW1UeXBlOworCitlbnVtIHsKKyAgICBrV0tQb3B1cEl0ZW1UZXh0
RGlyZWN0aW9uUlRMLAorICAgIGtXS1BvcHVwSXRlbVRleHREaXJlY3Rpb25MVFIKK307Cit0eXBl
ZGVmIHVpbnQzMl90IFdLUG9wdXBJdGVtVGV4dERpcmVjdGlvbjsKKworV0tfRVhQT1JUIFdLUG9w
dXBJdGVtVHlwZSBXS1BvcHVwSXRlbUdldFR5cGUoV0tQb3B1cEl0ZW1SZWYgaXRlbSk7CisKK1dL
X0VYUE9SVCBXS1BvcHVwSXRlbVRleHREaXJlY3Rpb24gV0tQb3B1cEl0ZW1HZXRUZXh0RGlyZWN0
aW9uKFdLUG9wdXBJdGVtUmVmIGl0ZW0pOworV0tfRVhQT1JUIGJvb2wgV0tQb3B1cEl0ZW1IYXNU
ZXh0RGlyZWN0aW9uT3ZlcnJpZGUoV0tQb3B1cEl0ZW1SZWYgaXRlbSk7CisKK1dLX0VYUE9SVCBX
S1N0cmluZ1JlZiBXS1BvcHVwSXRlbUNvcHlUZXh0KFdLUG9wdXBJdGVtUmVmIGl0ZW0pOworV0tf
RVhQT1JUIFdLU3RyaW5nUmVmIFdLUG9wdXBJdGVtQ29weVRvb2xUaXBUZXh0KFdLUG9wdXBJdGVt
UmVmIGl0ZW0pOworV0tfRVhQT1JUIFdLU3RyaW5nUmVmIFdLUG9wdXBJdGVtQ29weUFjY2Vzc2li
aWxpdHlUZXh0KFdLUG9wdXBJdGVtUmVmIGl0ZW0pOworCitXS19FWFBPUlQgYm9vbCBXS1BvcHVw
SXRlbUlzRW5hYmxlZChXS1BvcHVwSXRlbVJlZiBpdGVtKTsKK1dLX0VYUE9SVCBib29sIFdLUG9w
dXBJdGVtSXNMYWJlbChXS1BvcHVwSXRlbVJlZiBpdGVtKTsKK1dLX0VYUE9SVCBib29sIFdLUG9w
dXBJdGVtSXNTZWxlY3RlZChXS1BvcHVwSXRlbVJlZiBpdGVtKTsKKworI2lmZGVmIF9fY3BsdXNw
bHVzCit9CisjZW5kaWYKKworI2VuZGlmIC8qIFdLUG9wdXBJdGVtX2ggKi8KZGlmZiAtLWdpdCBh
L1NvdXJjZS9XZWJLaXQyL1VJUHJvY2Vzcy9BUEkvQy9lZmwvV0tQb3B1cE1lbnVMaXN0ZW5lci5j
cHAgYi9Tb3VyY2UvV2ViS2l0Mi9VSVByb2Nlc3MvQVBJL0MvZWZsL1dLUG9wdXBNZW51TGlzdGVu
ZXIuY3BwCm5ldyBmaWxlIG1vZGUgMTAwNjQ0CmluZGV4IDAwMDAwMDAuLjM0ZjgyYjQKLS0tIC9k
ZXYvbnVsbAorKysgYi9Tb3VyY2UvV2ViS2l0Mi9VSVByb2Nlc3MvQVBJL0MvZWZsL1dLUG9wdXBN
ZW51TGlzdGVuZXIuY3BwCkBAIC0wLDAgKzEsMzcgQEAKKy8qCisgKiBDb3B5cmlnaHQgKEMpIDIw
MTMgU2Ftc3VuZyBFbGVjdHJvbmljcy4gQWxsIHJpZ2h0cyByZXNlcnZlZC4KKyAqCisgKiBSZWRp
c3RyaWJ1dGlvbiBhbmQgdXNlIGluIHNvdXJjZSBhbmQgYmluYXJ5IGZvcm1zLCB3aXRoIG9yIHdp
dGhvdXQKKyAqIG1vZGlmaWNhdGlvbiwgYXJlIHBlcm1pdHRlZCBwcm92aWRlZCB0aGF0IHRoZSBm
b2xsb3dpbmcgY29uZGl0aW9ucworICogYXJlIG1ldDoKKyAqIDEuIFJlZGlzdHJpYnV0aW9ucyBv
ZiBzb3VyY2UgY29kZSBtdXN0IHJldGFpbiB0aGUgYWJvdmUgY29weXJpZ2h0CisgKiAgICBub3Rp
Y2UsIHRoaXMgbGlzdCBvZiBjb25kaXRpb25zIGFuZCB0aGUgZm9sbG93aW5nIGRpc2NsYWltZXIu
CisgKiAyLiBSZWRpc3RyaWJ1dGlvbnMgaW4gYmluYXJ5IGZvcm0gbXVzdCByZXByb2R1Y2UgdGhl
IGFib3ZlIGNvcHlyaWdodAorICogICAgbm90aWNlLCB0aGlzIGxpc3Qgb2YgY29uZGl0aW9ucyBh
bmQgdGhlIGZvbGxvd2luZyBkaXNjbGFpbWVyIGluIHRoZQorICogICAgZG9jdW1lbnRhdGlvbiBh
bmQvb3Igb3RoZXIgbWF0ZXJpYWxzIHByb3ZpZGVkIHdpdGggdGhlIGRpc3RyaWJ1dGlvbi4KKyAq
CisgKiBUSElTIFNPRlRXQVJFIElTIFBST1ZJREVEIEJZIEFQUExFIElOQy4gQU5EIElUUyBDT05U
UklCVVRPUlMgYGBBUyBJUycnCisgKiBBTkQgQU5ZIEVYUFJFU1MgT1IgSU1QTElFRCBXQVJSQU5U
SUVTLCBJTkNMVURJTkcsIEJVVCBOT1QgTElNSVRFRCBUTywKKyAqIFRIRSBJTVBMSUVEIFdBUlJB
TlRJRVMgT0YgTUVSQ0hBTlRBd0JJTElUWSBBTkQgRklUTkVTUyBGT1IgQSBQQVJUSUNVTEFSCisg
KiBQVVJQT1NFIEFSRSBESVNDTEFJTUVELiBJTiBOTyBFVkVOVCBTSEFMTCBBUFBMRSBJTkMuIE9S
IElUUyBDT05UUklCVVRPUlMKKyAqIEJFIExJQUJMRSBGT1IgQU5ZIERJUkVDVCwgSU5ESVJFQ1Qs
IElOQ0lERU5UQUwsIFNQRUNJQUwsIEVYRU1QTEFSWSwgT1IKKyAqIENPTlNFUVVFTlRJQUwgREFN
QUdFUyAoSU5DTFVESU5HLCBCVVQgTk9UIExJTUlURUQgVE8sIFBST0NVUkVNRU5UIE9GCisgKiBT
VUJTVElUVVRFIEdPT0RTIE9SIFNFUlZJQ0VTOyBMT1NTIE9GIFVTRSwgREFUQSwgT1IgUFJPRklU
UzsgT1IgQlVTSU5FU1MKKyAqIElOVEVSUlVQVElPTikgSE9XRVZFUiBDQVVTRUQgQU5EIE9OIEFO
WSBUSEVPUlkgT0YgTElBQklMSVRZLCBXSEVUSEVSIElOCisgKiBDT05UUkFDVCwgU1RSSUNUIExJ
QUJJTElUWSwgT1IgVE9SVCAoSU5DTFVESU5HIE5FR0xJR0VOQ0UgT1IgT1RIRVJXSVNFKQorICog
QVJJU0lORyBJTiBBTlkgV0FZIE9VVCBPRiBUSEUgVVNFIE9GIFRISVMgU09GVFdBUkUsIEVWRU4g
SUYgQURWSVNFRCBPRgorICogVEhFIFBPU1NJQklMSVRZIE9GIFNVQ0ggREFNQUdFLgorICovCisK
KyNpbmNsdWRlICJjb25maWcuaCIKKyNpbmNsdWRlICJXS1BvcHVwTWVudUxpc3RlbmVyLmgiCisK
KyNpbmNsdWRlICJXS0FQSUNhc3QuaCIKKyNpbmNsdWRlICJXZWJQb3B1cE1lbnVMaXN0ZW5lckVm
bC5oIgorCit1c2luZyBuYW1lc3BhY2UgV2ViS2l0OworCit2b2lkIFdLUG9wdXBNZW51TGlzdGVu
ZXJTZXRTZWxlY3Rpb24oV0tQb3B1cE1lbnVMaXN0ZW5lclJlZiBsaXN0ZW5lclJlZiwgaW50IHNl
bGVjdGVkSW5kZXgpCit7CisgICAgdG9JbXBsKGxpc3RlbmVyUmVmKS0+dmFsdWVDaGFuZ2VkKHNl
bGVjdGVkSW5kZXgpOworfQpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYktpdDIvVUlQcm9jZXNzL0FQ
SS9DL2VmbC9XS1BvcHVwTWVudUxpc3RlbmVyLmggYi9Tb3VyY2UvV2ViS2l0Mi9VSVByb2Nlc3Mv
QVBJL0MvZWZsL1dLUG9wdXBNZW51TGlzdGVuZXIuaApuZXcgZmlsZSBtb2RlIDEwMDY0NAppbmRl
eCAwMDAwMDAwLi44NTQ5OTE2Ci0tLSAvZGV2L251bGwKKysrIGIvU291cmNlL1dlYktpdDIvVUlQ
cm9jZXNzL0FQSS9DL2VmbC9XS1BvcHVwTWVudUxpc3RlbmVyLmgKQEAgLTAsMCArMSw0MSBAQAor
LyoKKyAqIENvcHlyaWdodCAoQykgMjAxMyBTYW1zdW5nIEVsZWN0cm9uaWNzLiBBbGwgcmlnaHRz
IHJlc2VydmVkLgorICoKKyAqIFJlZGlzdHJpYnV0aW9uIGFuZCB1c2UgaW4gc291cmNlIGFuZCBi
aW5hcnkgZm9ybXMsIHdpdGggb3Igd2l0aG91dAorICogbW9kaWZpY2F0aW9uLCBhcmUgcGVybWl0
dGVkIHByb3ZpZGVkIHRoYXQgdGhlIGZvbGxvd2luZyBjb25kaXRpb25zCisgKiBhcmUgbWV0Ogor
ICogMS4gUmVkaXN0cmlidXRpb25zIG9mIHNvdXJjZSBjb2RlIG11c3QgcmV0YWluIHRoZSBhYm92
ZSBjb3B5cmlnaHQKKyAqICAgIG5vdGljZSwgdGhpcyBsaXN0IG9mIGNvbmRpdGlvbnMgYW5kIHRo
ZSBmb2xsb3dpbmcgZGlzY2xhaW1lci4KKyAqIDIuIFJlZGlzdHJpYnV0aW9ucyBpbiBiaW5hcnkg
Zm9ybSBtdXN0IHJlcHJvZHVjZSB0aGUgYWJvdmUgY29weXJpZ2h0CisgKiAgICBub3RpY2UsIHRo
aXMgbGlzdCBvZiBjb25kaXRpb25zIGFuZCB0aGUgZm9sbG93aW5nIGRpc2NsYWltZXIgaW4gdGhl
CisgKiAgICBkb2N1bWVudGF0aW9uIGFuZC9vciBvdGhlciBtYXRlcmlhbHMgcHJvdmlkZWQgd2l0
aCB0aGUgZGlzdHJpYnV0aW9uLgorICoKKyAqIFRISVMgU09GVFdBUkUgSVMgUFJPVklERUQgQlkg
QVBQTEUgSU5DLiBBTkQgSVRTIENPTlRSSUJVVE9SUyBgYEFTIElTJycKKyAqIEFORCBBTlkgRVhQ
UkVTUyBPUiBJTVBMSUVEIFdBUlJBTlRJRVMsIElOQ0xVRElORywgQlVUIE5PVCBMSU1JVEVEIFRP
LAorICogVEhFIElNUExJRUQgV0FSUkFOVElFUyBPRiBNRVJDSEFOVEF3QklMSVRZIEFORCBGSVRO
RVNTIEZPUiBBIFBBUlRJQ1VMQVIKKyAqIFBVUlBPU0UgQVJFIERJU0NMQUlNRUQuIElOIE5PIEVW
RU5UIFNIQUxMIEFQUExFIElOQy4gT1IgSVRTIENPTlRSSUJVVE9SUworICogQkUgTElBQkxFIEZP
UiBBTlkgRElSRUNULCBJTkRJUkVDVCwgSU5DSURFTlRBTCwgU1BFQ0lBTCwgRVhFTVBMQVJZLCBP
UgorICogQ09OU0VRVUVOVElBTCBEQU1BR0VTIChJTkNMVURJTkcsIEJVVCBOT1QgTElNSVRFRCBU
TywgUFJPQ1VSRU1FTlQgT0YKKyAqIFNVQlNUSVRVVEUgR09PRFMgT1IgU0VSVklDRVM7IExPU1Mg
T0YgVVNFLCBEQVRBLCBPUiBQUk9GSVRTOyBPUiBCVVNJTkVTUworICogSU5URVJSVVBUSU9OKSBI
T1dFVkVSIENBVVNFRCBBTkQgT04gQU5ZIFRIRU9SWSBPRiBMSUFCSUxJVFksIFdIRVRIRVIgSU4K
KyAqIENPTlRSQUNULCBTVFJJQ1QgTElBQklMSVRZLCBPUiBUT1JUIChJTkNMVURJTkcgTkVHTElH
RU5DRSBPUiBPVEhFUldJU0UpCisgKiBBUklTSU5HIElOIEFOWSBXQVkgT1VUIE9GIFRIRSBVU0Ug
T0YgVEhJUyBTT0ZUV0FSRSwgRVZFTiBJRiBBRFZJU0VEIE9GCisgKiBUSEUgUE9TU0lCSUxJVFkg
T0YgU1VDSCBEQU1BR0UuCisgKi8KKworI2lmbmRlZiBXS1BvcHVwTWVudUxpc3RlbmVyX2gKKyNk
ZWZpbmUgV0tQb3B1cE1lbnVMaXN0ZW5lcl9oCisKKyNpbmNsdWRlIDxXZWJLaXQyL1dLQmFzZS5o
PgorCisjaWZkZWYgX19jcGx1c3BsdXMKK2V4dGVybiAiQyIgeworI2VuZGlmCisKK1dLX0VYUE9S
VCB2b2lkIFdLUG9wdXBNZW51TGlzdGVuZXJTZXRTZWxlY3Rpb24oV0tQb3B1cE1lbnVMaXN0ZW5l
clJlZiBsaXN0ZW5lciwgaW50IHNlbGVjdGVkSW5kZXgpOworCisjaWZkZWYgX19jcGx1c3BsdXMK
K30KKyNlbmRpZgorCisjZW5kaWYgLyogV0tQb3B1cE1lbnVMaXN0ZW5lcl9oICovCmRpZmYgLS1n
aXQgYS9Tb3VyY2UvV2ViS2l0Mi9VSVByb2Nlc3MvQVBJL2VmbC9Fd2tWaWV3LmNwcCBiL1NvdXJj
ZS9XZWJLaXQyL1VJUHJvY2Vzcy9BUEkvZWZsL0V3a1ZpZXcuY3BwCmluZGV4IDczYTBjZjUuLjUw
M2E4Y2UgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJLaXQyL1VJUHJvY2Vzcy9BUEkvZWZsL0V3a1Zp
ZXcuY3BwCisrKyBiL1NvdXJjZS9XZWJLaXQyL1VJUHJvY2Vzcy9BUEkvZWZsL0V3a1ZpZXcuY3Bw
CkBAIC0zOSwxMyArMzksMTMgQEAKICNpbmNsdWRlICJXS0dlb21ldHJ5LmgiCiAjaW5jbHVkZSAi
V0tOdW1iZXIuaCIKICNpbmNsdWRlICJXS1BhZ2VHcm91cC5oIgorI2luY2x1ZGUgIldLUG9wdXBJ
dGVtLmgiCiAjaW5jbHVkZSAiV0tTdHJpbmcuaCIKICNpbmNsdWRlICJXS1ZpZXcuaCIKICNpbmNs
dWRlICJXZWJDb250ZXh0LmgiCiAjaW5jbHVkZSAiV2ViSW1hZ2UuaCIKICNpbmNsdWRlICJXZWJQ
YWdlR3JvdXAuaCIKICNpbmNsdWRlICJXZWJQYWdlUHJveHkuaCIKLSNpbmNsdWRlICJXZWJQb3B1
cE1lbnVQcm94eUVmbC5oIgogI2luY2x1ZGUgIldlYlByZWZlcmVuY2VzLmgiCiAjaW5jbHVkZSAi
ZXdrX2JhY2tfZm9yd2FyZF9saXN0X3ByaXZhdGUuaCIKICNpbmNsdWRlICJld2tfY29sb3JfcGlj
a2VyX3ByaXZhdGUuaCIKQEAgLTkxNCwxMiArOTE0LDE1IEBAIHZvaWQgRXdrVmlldzo6aGlkZUNv
bnRleHRNZW51KCkKICAgICBtX2NvbnRleHRNZW51LmNsZWFyKCk7CiB9CiAKLXZvaWQgRXdrVmll
dzo6cmVxdWVzdFBvcHVwTWVudShXZWJQb3B1cE1lbnVQcm94eUVmbCogcG9wdXBNZW51UHJveHks
IGNvbnN0IEludFJlY3QmIHJlY3QsIFRleHREaXJlY3Rpb24gdGV4dERpcmVjdGlvbiwgZG91Ymxl
IHBhZ2VTY2FsZUZhY3RvciwgY29uc3QgVmVjdG9yPFdlYlBvcHVwSXRlbT4mIGl0ZW1zLCBpbnQz
Ml90IHNlbGVjdGVkSW5kZXgpCitDT01QSUxFX0FTU0VSVF9NQVRDSElOR19FTlVNKEVXS19URVhU
X0RJUkVDVElPTl9SSUdIVF9UT19MRUZULCBrV0tQb3B1cEl0ZW1UZXh0RGlyZWN0aW9uUlRMKTsK
K0NPTVBJTEVfQVNTRVJUX01BVENISU5HX0VOVU0oRVdLX1RFWFRfRElSRUNUSU9OX0xFRlRfVE9f
UklHSFQsIGtXS1BvcHVwSXRlbVRleHREaXJlY3Rpb25MVFIpOworCit2b2lkIEV3a1ZpZXc6OnJl
cXVlc3RQb3B1cE1lbnUoV0tQb3B1cE1lbnVMaXN0ZW5lclJlZiBwb3B1cE1lbnVMaXN0ZW5lciwg
Y29uc3QgV0tSZWN0JiByZWN0LCBXS1BvcHVwSXRlbVRleHREaXJlY3Rpb24gdGV4dERpcmVjdGlv
biwgZG91YmxlIHBhZ2VTY2FsZUZhY3RvciwgV0tBcnJheVJlZiBpdGVtcywgaW50MzJfdCBzZWxl
Y3RlZEluZGV4KQogewogICAgIEV3a19WaWV3X1NtYXJ0X0RhdGEqIHNkID0gc21hcnREYXRhKCk7
CiAgICAgQVNTRVJUKHNkLT5hcGkpOwogCi0gICAgQVNTRVJUKHBvcHVwTWVudVByb3h5KTsKKyAg
ICBBU1NFUlQocG9wdXBNZW51TGlzdGVuZXIpOwogCiAgICAgaWYgKCFzZC0+YXBpLT5wb3B1cF9t
ZW51X3Nob3cpCiAgICAgICAgIHJldHVybjsKQEAgLTkyNyw5ICs5MzAsMTIgQEAgdm9pZCBFd2tW
aWV3OjpyZXF1ZXN0UG9wdXBNZW51KFdlYlBvcHVwTWVudVByb3h5RWZsKiBwb3B1cE1lbnVQcm94
eSwgY29uc3QgSW50UmUKICAgICBpZiAobV9wb3B1cE1lbnUpCiAgICAgICAgIGNsb3NlUG9wdXBN
ZW51KCk7CiAKLSAgICBtX3BvcHVwTWVudSA9IEV3a1BvcHVwTWVudTo6Y3JlYXRlKHRoaXMsIHBv
cHVwTWVudVByb3h5LCBpdGVtcywgc2VsZWN0ZWRJbmRleCk7CisgICAgbV9wb3B1cE1lbnUgPSBF
d2tQb3B1cE1lbnU6OmNyZWF0ZSh0aGlzLCBwb3B1cE1lbnVMaXN0ZW5lciwgaXRlbXMsIHNlbGVj
dGVkSW5kZXgpOworCisgICAgRWluYV9SZWN0YW5nbGUgZWluYVJlY3Q7CisgICAgRUlOQV9SRUNU
QU5HTEVfU0VUKCZlaW5hUmVjdCwgcmVjdC5vcmlnaW4ueCwgcmVjdC5vcmlnaW4ueSwgcmVjdC5z
aXplLndpZHRoLCByZWN0LnNpemUuaGVpZ2h0KTsKIAotICAgIHNkLT5hcGktPnBvcHVwX21lbnVf
c2hvdyhzZCwgcmVjdCwgc3RhdGljX2Nhc3Q8RXdrX1RleHRfRGlyZWN0aW9uPih0ZXh0RGlyZWN0
aW9uKSwgcGFnZVNjYWxlRmFjdG9yLCBtX3BvcHVwTWVudS5nZXQoKSk7CisgICAgc2QtPmFwaS0+
cG9wdXBfbWVudV9zaG93KHNkLCBlaW5hUmVjdCwgc3RhdGljX2Nhc3Q8RXdrX1RleHRfRGlyZWN0
aW9uPih0ZXh0RGlyZWN0aW9uKSwgcGFnZVNjYWxlRmFjdG9yLCBtX3BvcHVwTWVudS5nZXQoKSk7
CiB9CiAKIHZvaWQgRXdrVmlldzo6Y2xvc2VQb3B1cE1lbnUoKQpkaWZmIC0tZ2l0IGEvU291cmNl
L1dlYktpdDIvVUlQcm9jZXNzL0FQSS9lZmwvRXdrVmlldy5oIGIvU291cmNlL1dlYktpdDIvVUlQ
cm9jZXNzL0FQSS9lZmwvRXdrVmlldy5oCmluZGV4IDc0Nzk5OGIuLjQyMmU5OGYgMTAwNjQ0Ci0t
LSBhL1NvdXJjZS9XZWJLaXQyL1VJUHJvY2Vzcy9BUEkvZWZsL0V3a1ZpZXcuaAorKysgYi9Tb3Vy
Y2UvV2ViS2l0Mi9VSVByb2Nlc3MvQVBJL2VmbC9Fd2tWaWV3LmgKQEAgLTY3LDggKzY3LDYgQEAg
Y2xhc3MgV2ViQ29udGV4dE1lbnVJdGVtRGF0YTsKIGNsYXNzIFdlYkNvbnRleHRNZW51UHJveHlF
Zmw7CiBjbGFzcyBXZWJQYWdlR3JvdXA7CiBjbGFzcyBXZWJQYWdlUHJveHk7Ci1jbGFzcyBXZWJQ
b3B1cEl0ZW07Ci1jbGFzcyBXZWJQb3B1cE1lbnVQcm94eUVmbDsKIAogI2lmIEVOQUJMRShWSUJS
QVRJT04pCiBjbGFzcyBWaWJyYXRpb25DbGllbnRFZmw7CkBAIC0xODgsNyArMTg2LDcgQEAgcHVi
bGljOgogICAgIFdLUGFnZVJlZiBjcmVhdGVOZXdQYWdlKFBhc3NSZWZQdHI8RXdrVXJsUmVxdWVz
dD4sIFdLRGljdGlvbmFyeVJlZiB3aW5kb3dGZWF0dXJlcyk7CiAgICAgdm9pZCBjbG9zZSgpOwog
Ci0gICAgdm9pZCByZXF1ZXN0UG9wdXBNZW51KFdlYktpdDo6V2ViUG9wdXBNZW51UHJveHlFZmwq
LCBjb25zdCBXZWJDb3JlOjpJbnRSZWN0JiwgV2ViQ29yZTo6VGV4dERpcmVjdGlvbiwgZG91Ymxl
IHBhZ2VTY2FsZUZhY3RvciwgY29uc3QgVmVjdG9yPFdlYktpdDo6V2ViUG9wdXBJdGVtPiYgaXRl
bXMsIGludDMyX3Qgc2VsZWN0ZWRJbmRleCk7CisgICAgdm9pZCByZXF1ZXN0UG9wdXBNZW51KFdL
UG9wdXBNZW51TGlzdGVuZXJSZWYsIGNvbnN0IFdLUmVjdCYsIFdLUG9wdXBJdGVtVGV4dERpcmVj
dGlvbiwgZG91YmxlIHBhZ2VTY2FsZUZhY3RvciwgV0tBcnJheVJlZiBpdGVtcywgaW50MzJfdCBz
ZWxlY3RlZEluZGV4KTsKICAgICB2b2lkIGNsb3NlUG9wdXBNZW51KCk7CiAKICAgICB2b2lkIHNo
b3dDb250ZXh0TWVudShXZWJLaXQ6OldlYkNvbnRleHRNZW51UHJveHlFZmwqLCBjb25zdCBXZWJD
b3JlOjpJbnRQb2ludCYgcG9zaXRpb24sIGNvbnN0IFZlY3RvcjxXZWJLaXQ6OldlYkNvbnRleHRN
ZW51SXRlbURhdGE+JiBpdGVtcyk7CmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViS2l0Mi9VSVByb2Nl
c3MvQVBJL2VmbC9ld2tfcG9wdXBfbWVudS5jcHAgYi9Tb3VyY2UvV2ViS2l0Mi9VSVByb2Nlc3Mv
QVBJL2VmbC9ld2tfcG9wdXBfbWVudS5jcHAKaW5kZXggMDM5NmYwMS4uNjI5ZWY0ZiAxMDA2NDQK
LS0tIGEvU291cmNlL1dlYktpdDIvVUlQcm9jZXNzL0FQSS9lZmwvZXdrX3BvcHVwX21lbnUuY3Bw
CisrKyBiL1NvdXJjZS9XZWJLaXQyL1VJUHJvY2Vzcy9BUEkvZWZsL2V3a19wb3B1cF9tZW51LmNw
cApAQCAtMjgsMjEgKzI4LDI3IEBACiAjaW5jbHVkZSAiZXdrX3BvcHVwX21lbnUuaCIKIAogI2lu
Y2x1ZGUgIkV3a1ZpZXcuaCIKLSNpbmNsdWRlICJXZWJQb3B1cE1lbnVQcm94eUVmbC5oIgorI2lu
Y2x1ZGUgIldLQVBJQ2FzdC5oIgorI2luY2x1ZGUgIldLQXJyYXkuaCIKKyNpbmNsdWRlICJXS1Bv
cHVwTWVudUxpc3RlbmVyLmgiCisjaW5jbHVkZSAiV2ViUG9wdXBJdGVtRWZsLmgiCiAjaW5jbHVk
ZSAiZXdrX3BvcHVwX21lbnVfaXRlbV9wcml2YXRlLmgiCiAjaW5jbHVkZSAiZXdrX3BvcHVwX21l
bnVfcHJpdmF0ZS5oIgogCiB1c2luZyBuYW1lc3BhY2UgV2ViS2l0OwogCi1Fd2tQb3B1cE1lbnU6
OkV3a1BvcHVwTWVudShFd2tWaWV3KiB2aWV3LCBXZWJQb3B1cE1lbnVQcm94eUVmbCogcG9wdXBN
ZW51UHJveHksIGNvbnN0IFZlY3RvcjxXZWJLaXQ6OldlYlBvcHVwSXRlbT4mIGl0ZW1zLCB1bnNp
Z25lZCBzZWxlY3RlZEluZGV4KQorRXdrUG9wdXBNZW51OjpFd2tQb3B1cE1lbnUoRXdrVmlldyog
dmlldywgV0tQb3B1cE1lbnVMaXN0ZW5lclJlZiBwb3B1cE1lbnVMaXN0ZW5lciwgV0tBcnJheVJl
ZiBpdGVtcywgdW5zaWduZWQgc2VsZWN0ZWRJbmRleCkKICAgICA6IG1fdmlldyh2aWV3KQotICAg
ICwgbV9wb3B1cE1lbnVQcm94eShwb3B1cE1lbnVQcm94eSkKKyAgICAsIG1fcG9wdXBNZW51TGlz
dGVuZXIocG9wdXBNZW51TGlzdGVuZXIpCiAgICAgLCBtX3BvcHVwTWVudUl0ZW1zKDApCiAgICAg
LCBtX3NlbGVjdGVkSW5kZXgoc2VsZWN0ZWRJbmRleCkKIHsKLSAgICBjb25zdCBzaXplX3Qgc2l6
ZSA9IGl0ZW1zLnNpemUoKTsKLSAgICBmb3IgKHNpemVfdCBpID0gMDsgaSA8IHNpemU7ICsraSkK
LSAgICAgICAgbV9wb3B1cE1lbnVJdGVtcyA9IGVpbmFfbGlzdF9hcHBlbmQobV9wb3B1cE1lbnVJ
dGVtcywgRXdrUG9wdXBNZW51SXRlbTo6Y3JlYXRlKGl0ZW1zW2ldKS5sZWFrUHRyKCkpOworICAg
IHNpemVfdCBzaXplID0gV0tBcnJheUdldFNpemUoaXRlbXMpOworICAgIGZvciAoc2l6ZV90IGkg
PSAwOyBpIDwgc2l6ZTsgKytpKSB7CisgICAgICAgIFdLUG9wdXBJdGVtUmVmIHdrSXRlbSA9IHN0
YXRpY19jYXN0PFdLUG9wdXBJdGVtUmVmPihXS0FycmF5R2V0SXRlbUF0SW5kZXgoaXRlbXMsIGkp
KTsKKyAgICAgICAgLy8gRklYTUU6IFJlbW92ZSBFd2tQb3B1cE1lbnVJdGVtIGRlcGVuZGVuY3kg
b24gV2ViUG9wdXBJdGVtLgorICAgICAgICBtX3BvcHVwTWVudUl0ZW1zID0gZWluYV9saXN0X2Fw
cGVuZChtX3BvcHVwTWVudUl0ZW1zLCBFd2tQb3B1cE1lbnVJdGVtOjpjcmVhdGUodG9JbXBsKHdr
SXRlbSktPmRhdGEoKSkubGVha1B0cigpKTsKKyAgICB9CiB9CiAKIEV3a1BvcHVwTWVudTo6fkV3
a1BvcHVwTWVudSgpCkBAIC02OSw3ICs3NSw3IEBAIHVuc2lnbmVkIEV3a1BvcHVwTWVudTo6c2Vs
ZWN0ZWRJbmRleCgpIGNvbnN0CiAKIGJvb2wgRXdrUG9wdXBNZW51OjpzZXRTZWxlY3RlZEluZGV4
KHVuc2lnbmVkIHNlbGVjdGVkSW5kZXgpCiB7Ci0gICAgaWYgKCFtX3BvcHVwTWVudVByb3h5KQor
ICAgIGlmICghbV9wb3B1cE1lbnVMaXN0ZW5lcikKICAgICAgICAgcmV0dXJuIGZhbHNlOwogCiAg
ICAgaWYgKHNlbGVjdGVkSW5kZXggPj0gZWluYV9saXN0X2NvdW50KG1fcG9wdXBNZW51SXRlbXMp
KQpAQCAtNzksNyArODUsNyBAQCBib29sIEV3a1BvcHVwTWVudTo6c2V0U2VsZWN0ZWRJbmRleCh1
bnNpZ25lZCBzZWxlY3RlZEluZGV4KQogICAgICAgICByZXR1cm4gdHJ1ZTsKIAogICAgIG1fc2Vs
ZWN0ZWRJbmRleCA9IHNlbGVjdGVkSW5kZXg7Ci0gICAgbV9wb3B1cE1lbnVQcm94eS0+dmFsdWVD
aGFuZ2VkKHNlbGVjdGVkSW5kZXgpOworICAgIFdLUG9wdXBNZW51TGlzdGVuZXJTZXRTZWxlY3Rp
b24obV9wb3B1cE1lbnVMaXN0ZW5lci5nZXQoKSwgc2VsZWN0ZWRJbmRleCk7CiAKICAgICByZXR1
cm4gdHJ1ZTsKIH0KZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJLaXQyL1VJUHJvY2Vzcy9BUEkvZWZs
L2V3a19wb3B1cF9tZW51X3ByaXZhdGUuaCBiL1NvdXJjZS9XZWJLaXQyL1VJUHJvY2Vzcy9BUEkv
ZWZsL2V3a19wb3B1cF9tZW51X3ByaXZhdGUuaAppbmRleCA1MjRmNTlkLi41Y2QyZTNhIDEwMDY0
NAotLS0gYS9Tb3VyY2UvV2ViS2l0Mi9VSVByb2Nlc3MvQVBJL2VmbC9ld2tfcG9wdXBfbWVudV9w
cml2YXRlLmgKKysrIGIvU291cmNlL1dlYktpdDIvVUlQcm9jZXNzL0FQSS9lZmwvZXdrX3BvcHVw
X21lbnVfcHJpdmF0ZS5oCkBAIC0yOCwyMSArMjgsMTYgQEAKICNkZWZpbmUgZXdrX3BvcHVwX21l
bnVfcHJpdmF0ZV9oCiAKICNpbmNsdWRlIDxFaW5hLmg+CisjaW5jbHVkZSA8V2ViS2l0Mi9XS0Jh
c2UuaD4KICNpbmNsdWRlIDx3dGYvUGFzc093blB0ci5oPgotI2luY2x1ZGUgPHd0Zi9WZWN0b3Iu
aD4KLQotbmFtZXNwYWNlIFdlYktpdCB7Ci1jbGFzcyBXZWJQb3B1cEl0ZW07Ci1jbGFzcyBXZWJQ
b3B1cE1lbnVQcm94eUVmbDsKLX0KIAogY2xhc3MgRXdrVmlldzsKIAogY2xhc3MgRXdrUG9wdXBN
ZW51IHsKIHB1YmxpYzoKLSAgICBzdGF0aWMgUGFzc093blB0cjxFd2tQb3B1cE1lbnU+IGNyZWF0
ZShFd2tWaWV3KiB2aWV3LCBXZWJLaXQ6OldlYlBvcHVwTWVudVByb3h5RWZsKiBwb3B1cE1lbnVQ
cm94eSwgY29uc3QgVmVjdG9yPFdlYktpdDo6V2ViUG9wdXBJdGVtPiYgaXRlbXMsIHVuc2lnbmVk
IHNlbGVjdGVkSW5kZXgpCisgICAgc3RhdGljIFBhc3NPd25QdHI8RXdrUG9wdXBNZW51PiBjcmVh
dGUoRXdrVmlldyogdmlldywgV0tQb3B1cE1lbnVMaXN0ZW5lclJlZiBwb3B1cE1lbnVMaXN0ZW5l
ciwgV0tBcnJheVJlZiBpdGVtcywgdW5zaWduZWQgc2VsZWN0ZWRJbmRleCkKICAgICB7Ci0gICAg
ICAgIHJldHVybiBhZG9wdFB0cihuZXcgRXdrUG9wdXBNZW51KHZpZXcsIHBvcHVwTWVudVByb3h5
LCBpdGVtcywgc2VsZWN0ZWRJbmRleCkpOworICAgICAgICByZXR1cm4gYWRvcHRQdHIobmV3IEV3
a1BvcHVwTWVudSh2aWV3LCBwb3B1cE1lbnVMaXN0ZW5lciwgaXRlbXMsIHNlbGVjdGVkSW5kZXgp
KTsKICAgICB9CiAgICAgfkV3a1BvcHVwTWVudSgpOwogCkBAIC01NCwxMCArNDksMTAgQEAgcHVi
bGljOgogICAgIHVuc2lnbmVkIHNlbGVjdGVkSW5kZXgoKSBjb25zdDsKIAogcHJpdmF0ZToKLSAg
ICBFd2tQb3B1cE1lbnUoRXdrVmlldyogdmlld0ltcGwsIFdlYktpdDo6V2ViUG9wdXBNZW51UHJv
eHlFZmwqLCBjb25zdCBWZWN0b3I8V2ViS2l0OjpXZWJQb3B1cEl0ZW0+JiBpdGVtcywgdW5zaWdu
ZWQgc2VsZWN0ZWRJbmRleCk7CisgICAgRXdrUG9wdXBNZW51KEV3a1ZpZXcqIHZpZXdJbXBsLCBX
S1BvcHVwTWVudUxpc3RlbmVyUmVmLCBXS0FycmF5UmVmIGl0ZW1zLCB1bnNpZ25lZCBzZWxlY3Rl
ZEluZGV4KTsKIAogICAgIEV3a1ZpZXcqIG1fdmlldzsKLSAgICBXZWJLaXQ6OldlYlBvcHVwTWVu
dVByb3h5RWZsKiBtX3BvcHVwTWVudVByb3h5OworICAgIFdLUmV0YWluUHRyPFdLUG9wdXBNZW51
TGlzdGVuZXJSZWY+IG1fcG9wdXBNZW51TGlzdGVuZXI7CiAgICAgRWluYV9MaXN0KiBtX3BvcHVw
TWVudUl0ZW1zOwogICAgIHVuc2lnbmVkIG1fc2VsZWN0ZWRJbmRleDsKIH07CmRpZmYgLS1naXQg
YS9Tb3VyY2UvV2ViS2l0Mi9VSVByb2Nlc3MvV2ViUGFnZVByb3h5LmNwcCBiL1NvdXJjZS9XZWJL
aXQyL1VJUHJvY2Vzcy9XZWJQYWdlUHJveHkuY3BwCmluZGV4IDZmOGE5MmQuLmNkOTE1ZjQgMTAw
NjQ0Ci0tLSBhL1NvdXJjZS9XZWJLaXQyL1VJUHJvY2Vzcy9XZWJQYWdlUHJveHkuY3BwCisrKyBi
L1NvdXJjZS9XZWJLaXQyL1VJUHJvY2Vzcy9XZWJQYWdlUHJveHkuY3BwCkBAIC01MzcsNiArNTM3
LDkgQEAgdm9pZCBXZWJQYWdlUHJveHk6OmNsb3NlKCkKICAgICBtX2xvYWRlckNsaWVudC5pbml0
aWFsaXplKDApOwogICAgIG1fcG9saWN5Q2xpZW50LmluaXRpYWxpemUoMCk7CiAgICAgbV91aUNs
aWVudC5pbml0aWFsaXplKDApOworI2lmIFBMQVRGT1JNKEVGTCkKKyAgICBtX3VpUG9wdXBNZW51
Q2xpZW50LmluaXRpYWxpemUoMCk7CisjZW5kaWYKIAogICAgIG1fZHJhd2luZ0FyZWEgPSBudWxs
cHRyOwogCkBAIC0yOTcxLDcgKzI5NzQsMTEgQEAgdm9pZCBXZWJQYWdlUHJveHk6OmZhaWxlZFRv
U2hvd1BvcHVwTWVudSgpCiB2b2lkIFdlYlBhZ2VQcm94eTo6c2hvd1BvcHVwTWVudShjb25zdCBJ
bnRSZWN0JiByZWN0LCB1aW50NjRfdCB0ZXh0RGlyZWN0aW9uLCBjb25zdCBWZWN0b3I8V2ViUG9w
dXBJdGVtPiYgaXRlbXMsIGludDMyX3Qgc2VsZWN0ZWRJbmRleCwgY29uc3QgUGxhdGZvcm1Qb3B1
cE1lbnVEYXRhJiBkYXRhKQogewogICAgIGlmIChtX2FjdGl2ZVBvcHVwTWVudSkgeworI2lmIFBM
QVRGT1JNKEVGTCkKKyAgICAgICAgbV91aVBvcHVwTWVudUNsaWVudC5oaWRlUG9wdXBNZW51KHRo
aXMpOworI2Vsc2UKICAgICAgICAgbV9hY3RpdmVQb3B1cE1lbnUtPmhpZGVQb3B1cE1lbnUoKTsK
KyNlbmRpZgogICAgICAgICBtX2FjdGl2ZVBvcHVwTWVudS0+aW52YWxpZGF0ZSgpOwogICAgICAg
ICBtX2FjdGl2ZVBvcHVwTWVudSA9IDA7CiAgICAgfQpAQCAtMjk4NCwxNSArMjk5MSwyMCBAQCB2
b2lkIFdlYlBhZ2VQcm94eTo6c2hvd1BvcHVwTWVudShjb25zdCBJbnRSZWN0JiByZWN0LCB1aW50
NjRfdCB0ZXh0RGlyZWN0aW9uLCBjbwogICAgIC8vIFNpbmNlIHNob3dQb3B1cE1lbnUoKSBjYW4g
c3BpbiBhIG5lc3RlZCBydW4gbG9vcCB3ZSBuZWVkIHRvIHR1cm4gb2ZmIHRoZSByZXNwb25zaXZl
bmVzcyB0aW1lci4KICAgICBtX3Byb2Nlc3MtPnJlc3BvbnNpdmVuZXNzVGltZXIoKS0+c3RvcCgp
OwogCisjaWYgUExBVEZPUk0oRUZMKQorICAgIFVOVVNFRF9QQVJBTShkYXRhKTsKKyAgICBtX3Vp
UG9wdXBNZW51Q2xpZW50LnNob3dQb3B1cE1lbnUodGhpcywgbV9hY3RpdmVQb3B1cE1lbnUuZ2V0
KCksIHJlY3QsIHN0YXRpY19jYXN0PFRleHREaXJlY3Rpb24+KHRleHREaXJlY3Rpb24pLCBtX3Bh
Z2VTY2FsZUZhY3RvciwgaXRlbXMsIHNlbGVjdGVkSW5kZXgpOworI2Vsc2UKICAgICBSZWZQdHI8
V2ViUG9wdXBNZW51UHJveHk+IHByb3RlY3RlZEFjdGl2ZVBvcHVwTWVudSA9IG1fYWN0aXZlUG9w
dXBNZW51OwogCiAgICAgcHJvdGVjdGVkQWN0aXZlUG9wdXBNZW51LT5zaG93UG9wdXBNZW51KHJl
Y3QsIHN0YXRpY19jYXN0PFRleHREaXJlY3Rpb24+KHRleHREaXJlY3Rpb24pLCBtX3BhZ2VTY2Fs
ZUZhY3RvciwgaXRlbXMsIGRhdGEsIHNlbGVjdGVkSW5kZXgpOwogCiAgICAgLy8gU2luY2UgUXQg
YW5kIEVmbCBkb2Vzbid0IHVzZSBhIG5lc3RlZCBtYWlubG9vcCB0byBzaG93IHRoZSBwb3B1cCBh
bmQgZ2V0IHRoZSBhbnN3ZXIsIHdlIG5lZWQgdG8ga2VlcCB0aGUgY2xpZW50IHBvaW50ZXIgdmFs
aWQuCi0jaWYgIVBMQVRGT1JNKFFUKSAmJiAhUExBVEZPUk0oRUZMKQorI2lmICFQTEFURk9STShR
VCkKICAgICBwcm90ZWN0ZWRBY3RpdmVQb3B1cE1lbnUtPmludmFsaWRhdGUoKTsKICNlbmRpZgog
ICAgIHByb3RlY3RlZEFjdGl2ZVBvcHVwTWVudSA9IDA7CisjZW5kaWYKIH0KIAogdm9pZCBXZWJQ
YWdlUHJveHk6OmhpZGVQb3B1cE1lbnUoKQpAQCAtMzAwMCw3ICszMDEyLDExIEBAIHZvaWQgV2Vi
UGFnZVByb3h5OjpoaWRlUG9wdXBNZW51KCkKICAgICBpZiAoIW1fYWN0aXZlUG9wdXBNZW51KQog
ICAgICAgICByZXR1cm47CiAKKyNpZiBQTEFURk9STShFRkwpCisgICAgbV91aVBvcHVwTWVudUNs
aWVudC5oaWRlUG9wdXBNZW51KHRoaXMpOworI2Vsc2UKICAgICBtX2FjdGl2ZVBvcHVwTWVudS0+
aGlkZVBvcHVwTWVudSgpOworI2VuZGlmCiAgICAgbV9hY3RpdmVQb3B1cE1lbnUtPmludmFsaWRh
dGUoKTsKICAgICBtX2FjdGl2ZVBvcHVwTWVudSA9IDA7CiB9CmRpZmYgLS1naXQgYS9Tb3VyY2Uv
V2ViS2l0Mi9VSVByb2Nlc3MvV2ViUGFnZVByb3h5LmggYi9Tb3VyY2UvV2ViS2l0Mi9VSVByb2Nl
c3MvV2ViUGFnZVByb3h5LmgKaW5kZXggOTVjMTNmNi4uMmE3ODFkNSAxMDA2NDQKLS0tIGEvU291
cmNlL1dlYktpdDIvVUlQcm9jZXNzL1dlYlBhZ2VQcm94eS5oCisrKyBiL1NvdXJjZS9XZWJLaXQy
L1VJUHJvY2Vzcy9XZWJQYWdlUHJveHkuaApAQCAtODAsNiArODAsOCBAQAogI2VuZGlmCiAKICNp
ZiBQTEFURk9STShFRkwpCisjaW5jbHVkZSAiV0tQYWdlRWZsLmgiCisjaW5jbHVkZSAiV2ViVUlQ
b3B1cE1lbnVDbGllbnQuaCIKICNpbmNsdWRlIDxFdmFzLmg+CiAjZW5kaWYKIApAQCAtMjcxLDYg
KzI3Myw5IEBAIHB1YmxpYzoKICAgICB2b2lkIGluaXRpYWxpemVMb2FkZXJDbGllbnQoY29uc3Qg
V0tQYWdlTG9hZGVyQ2xpZW50Kik7CiAgICAgdm9pZCBpbml0aWFsaXplUG9saWN5Q2xpZW50KGNv
bnN0IFdLUGFnZVBvbGljeUNsaWVudCopOwogICAgIHZvaWQgaW5pdGlhbGl6ZVVJQ2xpZW50KGNv
bnN0IFdLUGFnZVVJQ2xpZW50Kik7CisjaWYgUExBVEZPUk0oRUZMKQorICAgIHZvaWQgaW5pdGlh
bGl6ZVVJUG9wdXBNZW51Q2xpZW50KGNvbnN0IFdLUGFnZVVJUG9wdXBNZW51Q2xpZW50Kik7Cisj
ZW5kaWYKIAogICAgIHZvaWQgaW5pdGlhbGl6ZVdlYlBhZ2UoKTsKIApAQCAtMTAyNCw2ICsxMDI5
LDkgQEAgcHJpdmF0ZToKICAgICBXZWJQb2xpY3lDbGllbnQgbV9wb2xpY3lDbGllbnQ7CiAgICAg
V2ViRm9ybUNsaWVudCBtX2Zvcm1DbGllbnQ7CiAgICAgV2ViVUlDbGllbnQgbV91aUNsaWVudDsK
KyNpZiBQTEFURk9STShFRkwpCisgICAgV2ViVUlQb3B1cE1lbnVDbGllbnQgbV91aVBvcHVwTWVu
dUNsaWVudDsKKyNlbmRpZgogICAgIFdlYkZpbmRDbGllbnQgbV9maW5kQ2xpZW50OwogICAgIFdl
YkZpbmRNYXRjaGVzQ2xpZW50IG1fZmluZE1hdGNoZXNDbGllbnQ7CiAjaWYgRU5BQkxFKENPTlRF
WFRfTUVOVVMpCmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViS2l0Mi9VSVByb2Nlc3MvV2ViUG9wdXBN
ZW51UHJveHkuaCBiL1NvdXJjZS9XZWJLaXQyL1VJUHJvY2Vzcy9XZWJQb3B1cE1lbnVQcm94eS5o
CmluZGV4IDBkNzc4OGQuLjFjYWY4ZGQgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJLaXQyL1VJUHJv
Y2Vzcy9XZWJQb3B1cE1lbnVQcm94eS5oCisrKyBiL1NvdXJjZS9XZWJLaXQyL1VJUHJvY2Vzcy9X
ZWJQb3B1cE1lbnVQcm94eS5oCkBAIC02Niw4ICs2NiwxMCBAQCBwdWJsaWM6CiAgICAgewogICAg
IH0KIAorI2lmICFQTEFURk9STShFRkwpCiAgICAgdmlydHVhbCB2b2lkIHNob3dQb3B1cE1lbnUo
Y29uc3QgV2ViQ29yZTo6SW50UmVjdCYgcmVjdCwgV2ViQ29yZTo6VGV4dERpcmVjdGlvbiwgZG91
YmxlIHBhZ2VTY2FsZUZhY3RvciwgY29uc3QgVmVjdG9yPFdlYlBvcHVwSXRlbT4mIGl0ZW1zLCBj
b25zdCBQbGF0Zm9ybVBvcHVwTWVudURhdGEmLCBpbnQzMl90IHNlbGVjdGVkSW5kZXgpID0gMDsK
ICAgICB2aXJ0dWFsIHZvaWQgaGlkZVBvcHVwTWVudSgpID0gMDsKKyNlbmRpZgogCiAgICAgdm9p
ZCBpbnZhbGlkYXRlKCkgeyBtX2NsaWVudCA9IDA7IH0KIApkaWZmIC0tZ2l0IGEvU291cmNlL1dl
YktpdDIvVUlQcm9jZXNzL2VmbC9QYWdlVUlDbGllbnRFZmwuY3BwIGIvU291cmNlL1dlYktpdDIv
VUlQcm9jZXNzL2VmbC9QYWdlVUlDbGllbnRFZmwuY3BwCmluZGV4IDI0MjJjYWQuLjU0ODhlYTEg
MTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJLaXQyL1VJUHJvY2Vzcy9lZmwvUGFnZVVJQ2xpZW50RWZs
LmNwcAorKysgYi9Tb3VyY2UvV2ViS2l0Mi9VSVByb2Nlc3MvZWZsL1BhZ2VVSUNsaWVudEVmbC5j
cHAKQEAgLTMwLDYgKzMwLDcgQEAKICNpbmNsdWRlICJFd2tWaWV3LmgiCiAjaW5jbHVkZSAiV0tB
UElDYXN0LmgiCiAjaW5jbHVkZSAiV0tFdmVudC5oIgorI2luY2x1ZGUgIldLUGFnZUVmbC5oIgog
I2luY2x1ZGUgIldLU3RyaW5nLmgiCiAjaW5jbHVkZSAiZXdrX2ZpbGVfY2hvb3Nlcl9yZXF1ZXN0
X3ByaXZhdGUuaCIKICNpbmNsdWRlICJld2tfd2luZG93X2ZlYXR1cmVzX3ByaXZhdGUuaCIKQEAg
LTg0LDYgKzg1LDE1IEBAIFBhZ2VVSUNsaWVudEVmbDo6UGFnZVVJQ2xpZW50RWZsKEV3a1ZpZXcq
IHZpZXcpCiAjZW5kaWYKIAogICAgIFdLUGFnZVNldFBhZ2VVSUNsaWVudChwYWdlUmVmLCAmdWlD
bGllbnQpOworCisgICAgLy8gUG9wdXAgTWVudSBVSSBjbGllbnQuCisgICAgV0tQYWdlVUlQb3B1
cE1lbnVDbGllbnQgdWlQb3B1cE1lbnVDbGllbnQ7CisgICAgbWVtc2V0KCZ1aVBvcHVwTWVudUNs
aWVudCwgMCwgc2l6ZW9mKFdLUGFnZVVJUG9wdXBNZW51Q2xpZW50KSk7CisgICAgdWlQb3B1cE1l
bnVDbGllbnQudmVyc2lvbiA9IGtXS1BhZ2VVSVBvcHVwTWVudUNsaWVudEN1cnJlbnRWZXJzaW9u
OworICAgIHVpUG9wdXBNZW51Q2xpZW50LmNsaWVudEluZm8gPSB0aGlzOworICAgIHVpUG9wdXBN
ZW51Q2xpZW50LnNob3dQb3B1cE1lbnUgPSBzaG93UG9wdXBNZW51OworICAgIHVpUG9wdXBNZW51
Q2xpZW50LmhpZGVQb3B1cE1lbnUgPSBoaWRlUG9wdXBNZW51OworICAgIFdLUGFnZVNldFVJUG9w
dXBNZW51Q2xpZW50KHBhZ2VSZWYsICZ1aVBvcHVwTWVudUNsaWVudCk7CiB9CiAKIApAQCAtMjMx
LDQgKzI0MSwxNCBAQCB2b2lkIFBhZ2VVSUNsaWVudEVmbDo6aGlkZUNvbG9yUGlja2VyKFdLUGFn
ZVJlZiwgY29uc3Qgdm9pZCogY2xpZW50SW5mbykKIH0KICNlbmRpZgogCit2b2lkIFBhZ2VVSUNs
aWVudEVmbDo6c2hvd1BvcHVwTWVudShXS1BhZ2VSZWYsIFdLUG9wdXBNZW51TGlzdGVuZXJSZWYg
bWVudUxpc3RlbmVyUmVmLCBXS1JlY3QgcmVjdCwgV0tQb3B1cEl0ZW1UZXh0RGlyZWN0aW9uIHRl
eHREaXJlY3Rpb24sIGRvdWJsZSBwYWdlU2NhbGVGYWN0b3IsIFdLQXJyYXlSZWYgaXRlbXNSZWYs
IGludDMyX3Qgc2VsZWN0ZWRJbmRleCwgY29uc3Qgdm9pZCogY2xpZW50SW5mbykKK3sKKyAgICBy
ZXR1cm4gdG9QYWdlVUlDbGllbnRFZmwoY2xpZW50SW5mbyktPm1fdmlldy0+cmVxdWVzdFBvcHVw
TWVudShtZW51TGlzdGVuZXJSZWYsIHJlY3QsIHRleHREaXJlY3Rpb24sIHBhZ2VTY2FsZUZhY3Rv
ciwgaXRlbXNSZWYsIHNlbGVjdGVkSW5kZXgpOworfQorCit2b2lkIFBhZ2VVSUNsaWVudEVmbDo6
aGlkZVBvcHVwTWVudShXS1BhZ2VSZWYsIGNvbnN0IHZvaWQqIGNsaWVudEluZm8pCit7CisgICAg
cmV0dXJuIHRvUGFnZVVJQ2xpZW50RWZsKGNsaWVudEluZm8pLT5tX3ZpZXctPmNsb3NlUG9wdXBN
ZW51KCk7Cit9CisKIH0gLy8gbmFtZXNwYWNlIFdlYktpdApkaWZmIC0tZ2l0IGEvU291cmNlL1dl
YktpdDIvVUlQcm9jZXNzL2VmbC9QYWdlVUlDbGllbnRFZmwuaCBiL1NvdXJjZS9XZWJLaXQyL1VJ
UHJvY2Vzcy9lZmwvUGFnZVVJQ2xpZW50RWZsLmgKaW5kZXggMjQwZmU1OC4uZGY0N2I5NyAxMDA2
NDQKLS0tIGEvU291cmNlL1dlYktpdDIvVUlQcm9jZXNzL2VmbC9QYWdlVUlDbGllbnRFZmwuaAor
KysgYi9Tb3VyY2UvV2ViS2l0Mi9VSVByb2Nlc3MvZWZsL1BhZ2VVSUNsaWVudEVmbC5oCkBAIC0y
OCw2ICsyOCw3IEBACiAjZGVmaW5lIFBhZ2VVSUNsaWVudEVmbF9oCiAKICNpbmNsdWRlICJXS1Bh
Z2UuaCIKKyNpbmNsdWRlICJXS1BvcHVwSXRlbS5oIgogI2luY2x1ZGUgPFdlYktpdDIvV0tCYXNl
Lmg+CiAjaW5jbHVkZSA8d3RmL1Bhc3NPd25QdHIuaD4KIApAQCAtNzMsNiArNzQsOSBAQCBwcml2
YXRlOgogICAgIHN0YXRpYyB2b2lkIGhpZGVDb2xvclBpY2tlcihXS1BhZ2VSZWYsIGNvbnN0IHZv
aWQqKTsKICNlbmRpZgogCisgICAgc3RhdGljIHZvaWQgc2hvd1BvcHVwTWVudShXS1BhZ2VSZWYs
IFdLUG9wdXBNZW51TGlzdGVuZXJSZWYsIFdLUmVjdCwgV0tQb3B1cEl0ZW1UZXh0RGlyZWN0aW9u
LCBkb3VibGUgcGFnZVNjYWxlRmFjdG9yLCBXS0FycmF5UmVmIGl0ZW1zUmVmLCBpbnQzMl90IHNl
bGVjdGVkSW5kZXgsIGNvbnN0IHZvaWQqIGNsaWVudEluZm8pOworICAgIHN0YXRpYyB2b2lkIGhp
ZGVQb3B1cE1lbnUoV0tQYWdlUmVmLCBjb25zdCB2b2lkKiBjbGllbnRJbmZvKTsKKwogICAgIEV3
a1ZpZXcqIG1fdmlldzsKIH07CiAKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJLaXQyL1VJUHJvY2Vz
cy9lZmwvV2ViUGFnZVByb3h5RWZsLmNwcCBiL1NvdXJjZS9XZWJLaXQyL1VJUHJvY2Vzcy9lZmwv
V2ViUGFnZVByb3h5RWZsLmNwcAppbmRleCBlMDk5YWNhLi4xMmMzNTBlIDEwMDY0NAotLS0gYS9T
b3VyY2UvV2ViS2l0Mi9VSVByb2Nlc3MvZWZsL1dlYlBhZ2VQcm94eUVmbC5jcHAKKysrIGIvU291
cmNlL1dlYktpdDIvVUlQcm9jZXNzL2VmbC9XZWJQYWdlUHJveHlFZmwuY3BwCkBAIC0xMjQsNCAr
MTI0LDkgQEAgdm9pZCBXZWJQYWdlUHJveHk6OmNhbmNlbENvbXBvc2l0aW9uKCkKICAgICBwcm9j
ZXNzKCktPnNlbmQoTWVzc2FnZXM6OldlYlBhZ2U6OkNhbmNlbENvbXBvc2l0aW9uKCksIG1fcGFn
ZUlELCAwKTsKIH0KIAordm9pZCBXZWJQYWdlUHJveHk6OmluaXRpYWxpemVVSVBvcHVwTWVudUNs
aWVudChjb25zdCBXS1BhZ2VVSVBvcHVwTWVudUNsaWVudCogY2xpZW50KQoreworICAgIG1fdWlQ
b3B1cE1lbnVDbGllbnQuaW5pdGlhbGl6ZShjbGllbnQpOworfQorCiB9IC8vIG5hbWVzcGFjZSBX
ZWJLaXQKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJLaXQyL1VJUHJvY2Vzcy9lZmwvV2ViUG9wdXBJ
dGVtRWZsLmNwcCBiL1NvdXJjZS9XZWJLaXQyL1VJUHJvY2Vzcy9lZmwvV2ViUG9wdXBJdGVtRWZs
LmNwcApuZXcgZmlsZSBtb2RlIDEwMDY0NAppbmRleCAwMDAwMDAwLi5mNDIwYzBlCi0tLSAvZGV2
L251bGwKKysrIGIvU291cmNlL1dlYktpdDIvVUlQcm9jZXNzL2VmbC9XZWJQb3B1cEl0ZW1FZmwu
Y3BwCkBAIC0wLDAgKzEsNDAgQEAKKy8qCisgKiBDb3B5cmlnaHQgKEMpIDIwMTMgU2Ftc3VuZyBF
bGVjdHJvbmljcy4gQWxsIHJpZ2h0cyByZXNlcnZlZC4KKyAqCisgKiBSZWRpc3RyaWJ1dGlvbiBh
bmQgdXNlIGluIHNvdXJjZSBhbmQgYmluYXJ5IGZvcm1zLCB3aXRoIG9yIHdpdGhvdXQKKyAqIG1v
ZGlmaWNhdGlvbiwgYXJlIHBlcm1pdHRlZCBwcm92aWRlZCB0aGF0IHRoZSBmb2xsb3dpbmcgY29u
ZGl0aW9ucworICogYXJlIG1ldDoKKyAqIDEuIFJlZGlzdHJpYnV0aW9ucyBvZiBzb3VyY2UgY29k
ZSBtdXN0IHJldGFpbiB0aGUgYWJvdmUgY29weXJpZ2h0CisgKiAgICBub3RpY2UsIHRoaXMgbGlz
dCBvZiBjb25kaXRpb25zIGFuZCB0aGUgZm9sbG93aW5nIGRpc2NsYWltZXIuCisgKiAyLiBSZWRp
c3RyaWJ1dGlvbnMgaW4gYmluYXJ5IGZvcm0gbXVzdCByZXByb2R1Y2UgdGhlIGFib3ZlIGNvcHly
aWdodAorICogICAgbm90aWNlLCB0aGlzIGxpc3Qgb2YgY29uZGl0aW9ucyBhbmQgdGhlIGZvbGxv
d2luZyBkaXNjbGFpbWVyIGluIHRoZQorICogICAgZG9jdW1lbnRhdGlvbiBhbmQvb3Igb3RoZXIg
bWF0ZXJpYWxzIHByb3ZpZGVkIHdpdGggdGhlIGRpc3RyaWJ1dGlvbi4KKyAqCisgKiBUSElTIFNP
RlRXQVJFIElTIFBST1ZJREVEIEJZIEFQUExFIElOQy4gQU5EIElUUyBDT05UUklCVVRPUlMgYGBB
UyBJUycnCisgKiBBTkQgQU5ZIEVYUFJFU1MgT1IgSU1QTElFRCBXQVJSQU5USUVTLCBJTkNMVURJ
TkcsIEJVVCBOT1QgTElNSVRFRCBUTywKKyAqIFRIRSBJTVBMSUVEIFdBUlJBTlRJRVMgT0YgTUVS
Q0hBTlRBd0JJTElUWSBBTkQgRklUTkVTUyBGT1IgQSBQQVJUSUNVTEFSCisgKiBQVVJQT1NFIEFS
RSBESVNDTEFJTUVELiBJTiBOTyBFVkVOVCBTSEFMTCBBUFBMRSBJTkMuIE9SIElUUyBDT05UUklC
VVRPUlMKKyAqIEJFIExJQUJMRSBGT1IgQU5ZIERJUkVDVCwgSU5ESVJFQ1QsIElOQ0lERU5UQUws
IFNQRUNJQUwsIEVYRU1QTEFSWSwgT1IKKyAqIENPTlNFUVVFTlRJQUwgREFNQUdFUyAoSU5DTFVE
SU5HLCBCVVQgTk9UIExJTUlURUQgVE8sIFBST0NVUkVNRU5UIE9GCisgKiBTVUJTVElUVVRFIEdP
T0RTIE9SIFNFUlZJQ0VTOyBMT1NTIE9GIFVTRSwgREFUQSwgT1IgUFJPRklUUzsgT1IgQlVTSU5F
U1MKKyAqIElOVEVSUlVQVElPTikgSE9XRVZFUiBDQVVTRUQgQU5EIE9OIEFOWSBUSEVPUlkgT0Yg
TElBQklMSVRZLCBXSEVUSEVSIElOCisgKiBDT05UUkFDVCwgU1RSSUNUIExJQUJJTElUWSwgT1Ig
VE9SVCAoSU5DTFVESU5HIE5FR0xJR0VOQ0UgT1IgT1RIRVJXSVNFKQorICogQVJJU0lORyBJTiBB
TlkgV0FZIE9VVCBPRiBUSEUgVVNFIE9GIFRISVMgU09GVFdBUkUsIEVWRU4gSUYgQURWSVNFRCBP
RgorICogVEhFIFBPU1NJQklMSVRZIE9GIFNVQ0ggREFNQUdFLgorICovCisKKyNpbmNsdWRlICJj
b25maWcuaCIKKyNpbmNsdWRlICJXZWJQb3B1cEl0ZW1FZmwuaCIKKworbmFtZXNwYWNlIFdlYktp
dCB7CisKK1dlYlBvcHVwSXRlbUVmbDo6V2ViUG9wdXBJdGVtRWZsKGNvbnN0IFdlYlBvcHVwSXRl
bSYgZGF0YSkKKyAgICA6IG1fZGF0YShkYXRhKQoreworfQorCitXZWJQb3B1cEl0ZW1FZmw6On5X
ZWJQb3B1cEl0ZW1FZmwoKQoreworfQorCit9IC8vIG5hbWVzcGFjZSBXZWJLaXQKZGlmZiAtLWdp
dCBhL1NvdXJjZS9XZWJLaXQyL1VJUHJvY2Vzcy9lZmwvV2ViUG9wdXBJdGVtRWZsLmggYi9Tb3Vy
Y2UvV2ViS2l0Mi9VSVByb2Nlc3MvZWZsL1dlYlBvcHVwSXRlbUVmbC5oCm5ldyBmaWxlIG1vZGUg
MTAwNjQ0CmluZGV4IDAwMDAwMDAuLjE1ODFjYTUKLS0tIC9kZXYvbnVsbAorKysgYi9Tb3VyY2Uv
V2ViS2l0Mi9VSVByb2Nlc3MvZWZsL1dlYlBvcHVwSXRlbUVmbC5oCkBAIC0wLDAgKzEsNjcgQEAK
Ky8qCisgKiBDb3B5cmlnaHQgKEMpIDIwMTMgU2Ftc3VuZyBFbGVjdHJvbmljcy4gQWxsIHJpZ2h0
cyByZXNlcnZlZC4KKyAqCisgKiBSZWRpc3RyaWJ1dGlvbiBhbmQgdXNlIGluIHNvdXJjZSBhbmQg
YmluYXJ5IGZvcm1zLCB3aXRoIG9yIHdpdGhvdXQKKyAqIG1vZGlmaWNhdGlvbiwgYXJlIHBlcm1p
dHRlZCBwcm92aWRlZCB0aGF0IHRoZSBmb2xsb3dpbmcgY29uZGl0aW9ucworICogYXJlIG1ldDoK
KyAqIDEuIFJlZGlzdHJpYnV0aW9ucyBvZiBzb3VyY2UgY29kZSBtdXN0IHJldGFpbiB0aGUgYWJv
dmUgY29weXJpZ2h0CisgKiAgICBub3RpY2UsIHRoaXMgbGlzdCBvZiBjb25kaXRpb25zIGFuZCB0
aGUgZm9sbG93aW5nIGRpc2NsYWltZXIuCisgKiAyLiBSZWRpc3RyaWJ1dGlvbnMgaW4gYmluYXJ5
IGZvcm0gbXVzdCByZXByb2R1Y2UgdGhlIGFib3ZlIGNvcHlyaWdodAorICogICAgbm90aWNlLCB0
aGlzIGxpc3Qgb2YgY29uZGl0aW9ucyBhbmQgdGhlIGZvbGxvd2luZyBkaXNjbGFpbWVyIGluIHRo
ZQorICogICAgZG9jdW1lbnRhdGlvbiBhbmQvb3Igb3RoZXIgbWF0ZXJpYWxzIHByb3ZpZGVkIHdp
dGggdGhlIGRpc3RyaWJ1dGlvbi4KKyAqCisgKiBUSElTIFNPRlRXQVJFIElTIFBST1ZJREVEIEJZ
IEFQUExFIElOQy4gQU5EIElUUyBDT05UUklCVVRPUlMgYGBBUyBJUycnCisgKiBBTkQgQU5ZIEVY
UFJFU1MgT1IgSU1QTElFRCBXQVJSQU5USUVTLCBJTkNMVURJTkcsIEJVVCBOT1QgTElNSVRFRCBU
TywKKyAqIFRIRSBJTVBMSUVEIFdBUlJBTlRJRVMgT0YgTUVSQ0hBTlRBd0JJTElUWSBBTkQgRklU
TkVTUyBGT1IgQSBQQVJUSUNVTEFSCisgKiBQVVJQT1NFIEFSRSBESVNDTEFJTUVELiBJTiBOTyBF
VkVOVCBTSEFMTCBBUFBMRSBJTkMuIE9SIElUUyBDT05UUklCVVRPUlMKKyAqIEJFIExJQUJMRSBG
T1IgQU5ZIERJUkVDVCwgSU5ESVJFQ1QsIElOQ0lERU5UQUwsIFNQRUNJQUwsIEVYRU1QTEFSWSwg
T1IKKyAqIENPTlNFUVVFTlRJQUwgREFNQUdFUyAoSU5DTFVESU5HLCBCVVQgTk9UIExJTUlURUQg
VE8sIFBST0NVUkVNRU5UIE9GCisgKiBTVUJTVElUVVRFIEdPT0RTIE9SIFNFUlZJQ0VTOyBMT1NT
IE9GIFVTRSwgREFUQSwgT1IgUFJPRklUUzsgT1IgQlVTSU5FU1MKKyAqIElOVEVSUlVQVElPTikg
SE9XRVZFUiBDQVVTRUQgQU5EIE9OIEFOWSBUSEVPUlkgT0YgTElBQklMSVRZLCBXSEVUSEVSIElO
CisgKiBDT05UUkFDVCwgU1RSSUNUIExJQUJJTElUWSwgT1IgVE9SVCAoSU5DTFVESU5HIE5FR0xJ
R0VOQ0UgT1IgT1RIRVJXSVNFKQorICogQVJJU0lORyBJTiBBTlkgV0FZIE9VVCBPRiBUSEUgVVNF
IE9GIFRISVMgU09GVFdBUkUsIEVWRU4gSUYgQURWSVNFRCBPRgorICogVEhFIFBPU1NJQklMSVRZ
IE9GIFNVQ0ggREFNQUdFLgorICovCisKKyNpZm5kZWYgV2ViUG9wdXBJdGVtRWZsX2gKKyNkZWZp
bmUgV2ViUG9wdXBJdGVtRWZsX2gKKworI2luY2x1ZGUgIkFQSU9iamVjdC5oIgorI2luY2x1ZGUg
IldlYlBvcHVwSXRlbS5oIgorI2luY2x1ZGUgPHd0Zi9QYXNzUmVmUHRyLmg+CisKK25hbWVzcGFj
ZSBXZWJLaXQgeworCitjbGFzcyBXZWJQb3B1cEl0ZW1FZmwgOiBwdWJsaWMgQVBJT2JqZWN0IHsK
K3B1YmxpYzoKKyAgICBzdGF0aWMgY29uc3QgVHlwZSBBUElUeXBlID0gVHlwZVBvcHVwTWVudUl0
ZW07CisKKyAgICBzdGF0aWMgUGFzc1JlZlB0cjxXZWJQb3B1cEl0ZW1FZmw+IGNyZWF0ZShjb25z
dCBXZWJQb3B1cEl0ZW0mIGRhdGEpCisgICAgeworICAgICAgICByZXR1cm4gYWRvcHRSZWYobmV3
IFdlYlBvcHVwSXRlbUVmbChkYXRhKSk7CisgICAgfQorCisgICAgdmlydHVhbCB+V2ViUG9wdXBJ
dGVtRWZsKCk7CisgICAgY29uc3QgV2ViUG9wdXBJdGVtJiBkYXRhKCkgY29uc3QgeyByZXR1cm4g
bV9kYXRhOyB9CisKKyAgICBXZWJQb3B1cEl0ZW06OlR5cGUgaXRlbVR5cGUoKSBjb25zdCB7IHJl
dHVybiBtX2RhdGEubV90eXBlOyB9CisgICAgU3RyaW5nIHRleHQoKSBjb25zdCB7IHJldHVybiBt
X2RhdGEubV90ZXh0OyB9CisgICAgV2ViQ29yZTo6VGV4dERpcmVjdGlvbiB0ZXh0RGlyZWN0aW9u
KCkgY29uc3QgeyByZXR1cm4gbV9kYXRhLm1fdGV4dERpcmVjdGlvbjsgfQorICAgIGJvb2wgaGFz
VGV4dERpcmVjdGlvbk92ZXJyaWRlKCkgY29uc3QgeyByZXR1cm4gbV9kYXRhLm1faGFzVGV4dERp
cmVjdGlvbk92ZXJyaWRlOyB9CisgICAgU3RyaW5nIHRvb2xUaXBUZXh0KCkgY29uc3QgeyByZXR1
cm4gbV9kYXRhLm1fdG9vbFRpcDsgfQorICAgIFN0cmluZyBhY2Nlc3NpYmlsaXR5VGV4dCgpIGNv
bnN0IHsgcmV0dXJuIG1fZGF0YS5tX2FjY2Vzc2liaWxpdHlUZXh0OyB9CisgICAgYm9vbCBpc0Vu
YWJsZWQoKSBjb25zdCB7IHJldHVybiBtX2RhdGEubV9pc0VuYWJsZWQ7IH0KKyAgICBib29sIGlz
TGFiZWwoKSBjb25zdCB7IHJldHVybiBtX2RhdGEubV9pc0xhYmVsOyB9CisgICAgYm9vbCBpc1Nl
bGVjdGVkKCkgY29uc3QgeyByZXR1cm4gbV9kYXRhLm1faXNTZWxlY3RlZDsgfQorCitwcml2YXRl
OgorICAgIGV4cGxpY2l0IFdlYlBvcHVwSXRlbUVmbChjb25zdCBXZWJQb3B1cEl0ZW0mKTsKKwor
ICAgIHZpcnR1YWwgVHlwZSB0eXBlKCkgY29uc3QgeyByZXR1cm4gQVBJVHlwZTsgfQorCisgICAg
V2ViUG9wdXBJdGVtIG1fZGF0YTsKK307CisKK30gLy8gbmFtZXNwYWNlIFdlYktpdAorCisjZW5k
aWYgLy8gV2ViUG9wdXBJdGVtRWZsX2gKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJLaXQyL1VJUHJv
Y2Vzcy9lZmwvV2ViUG9wdXBNZW51TGlzdGVuZXJFZmwuY3BwIGIvU291cmNlL1dlYktpdDIvVUlQ
cm9jZXNzL2VmbC9XZWJQb3B1cE1lbnVMaXN0ZW5lckVmbC5jcHAKbmV3IGZpbGUgbW9kZSAxMDA2
NDQKaW5kZXggMDAwMDAwMC4uMTFiMjllNgotLS0gL2Rldi9udWxsCisrKyBiL1NvdXJjZS9XZWJL
aXQyL1VJUHJvY2Vzcy9lZmwvV2ViUG9wdXBNZW51TGlzdGVuZXJFZmwuY3BwCkBAIC0wLDAgKzEs
NDUgQEAKKy8qCisgKiBDb3B5cmlnaHQgKEMpIDIwMTIgU2Ftc3VuZyBFbGVjdHJvbmljcworICoK
KyAqIFJlZGlzdHJpYnV0aW9uIGFuZCB1c2UgaW4gc291cmNlIGFuZCBiaW5hcnkgZm9ybXMsIHdp
dGggb3Igd2l0aG91dAorICogbW9kaWZpY2F0aW9uLCBhcmUgcGVybWl0dGVkIHByb3ZpZGVkIHRo
YXQgdGhlIGZvbGxvd2luZyBjb25kaXRpb25zCisgKiBhcmUgbWV0OgorICogMS4gUmVkaXN0cmli
dXRpb25zIG9mIHNvdXJjZSBjb2RlIG11c3QgcmV0YWluIHRoZSBhYm92ZSBjb3B5cmlnaHQKKyAq
ICAgIG5vdGljZSwgdGhpcyBsaXN0IG9mIGNvbmRpdGlvbnMgYW5kIHRoZSBmb2xsb3dpbmcgZGlz
Y2xhaW1lci4KKyAqIDIuIFJlZGlzdHJpYnV0aW9ucyBpbiBiaW5hcnkgZm9ybSBtdXN0IHJlcHJv
ZHVjZSB0aGUgYWJvdmUgY29weXJpZ2h0CisgKiAgICBub3RpY2UsIHRoaXMgbGlzdCBvZiBjb25k
aXRpb25zIGFuZCB0aGUgZm9sbG93aW5nIGRpc2NsYWltZXIgaW4gdGhlCisgKiAgICBkb2N1bWVu
dGF0aW9uIGFuZC9vciBvdGhlciBtYXRlcmlhbHMgcHJvdmlkZWQgd2l0aCB0aGUgZGlzdHJpYnV0
aW9uLgorICoKKyAqIFRISVMgU09GVFdBUkUgSVMgUFJPVklERUQgQlkgVEhFIENPUFlSSUdIVCBI
T0xERVJTIEFORCBDT05UUklCVVRPUlMKKyAqICJBUyBJUyIgQU5EIEFOWSBFWFBSRVNTIE9SIElN
UExJRUQgV0FSUkFOVElFUywgSU5DTFVESU5HLCBCVVQgTk9UIExJTUlURUQgVE8sCisgKiBUSEUg
SU1QTElFRCBXQVJSQU5USUVTIE9GIE1FUkNIQU5UQUJJTElUWSBBTkQgRklUTkVTUyBGT1IgQSBQ
QVJUSUNVTEFSCisgKiBQVVJQT1NFIEFSRSBESVNDTEFJTUVELiAgSU4gTk8gRVZFTlQgU0hBTEwg
VEhFIENPUFlSSUdIVCBIT0xERVIgT1IKKyAqIENPTlRSSUJVVE9SUyBCRSBMSUFCTEUgRk9SIEFO
WSBESVJFQ1QsIElORElSRUNULCBJTkNJREVOVEFMLCBTUEVDSUFMLAorICogRVhFTVBMQVJZLCBP
UiBDT05TRVFVRU5USUFMIERBTUFHRVMgKElOQ0xVRElORywgQlVUIE5PVCBMSU1JVEVEIFRPLAor
ICogUFJPQ1VSRU1FTlQgT0YgU1VCU1RJVFVURSBHT09EUyBPUiBTRVJWSUNFUzsgTE9TUyBPRiBV
U0UsIERBVEEsIE9SCisgKiBQUk9GSVRTOyBPUiBCVVNJTkVTUyBJTlRFUlJVUFRJT04pIEhPV0VW
RVIgQ0FVU0VEIEFORCBPTiBBTlkgVEhFT1JZCisgKiBPRiBMSUFCSUxJVFksIFdIRVRIRVIgSU4g
Q09OVFJBQ1QsIFNUUklDVCBMSUFCSUxJVFksIE9SIFRPUlQgKElOQ0xVRElORworICogTkVHTElH
RU5DRSBPUiBPVEhFUldJU0UpIEFSSVNJTkcgSU4gQU5ZIFdBWSBPVVQgT0YgVEhFIFVTRSBPRiBU
SElTCisgKiBTT0ZUV0FSRSwgRVZFTiBJRiBBRFZJU0VEIE9GIFRIRSBQT1NTSUJJTElUWSBPRiBT
VUNIIERBTUFHRS4KKyAqLworCisjaW5jbHVkZSAiY29uZmlnLmgiCisjaW5jbHVkZSAiV2ViUG9w
dXBNZW51TGlzdGVuZXJFZmwuaCIKKworbmFtZXNwYWNlIFdlYktpdCB7CisKK1dlYlBvcHVwTWVu
dUxpc3RlbmVyRWZsOjpXZWJQb3B1cE1lbnVMaXN0ZW5lckVmbChXZWJQb3B1cE1lbnVQcm94eTo6
Q2xpZW50KiBjbGllbnQpCisgICAgOiBXZWJQb3B1cE1lbnVQcm94eShjbGllbnQpCit7Cit9CisK
K3ZvaWQgV2ViUG9wdXBNZW51TGlzdGVuZXJFZmw6OnZhbHVlQ2hhbmdlZChpbnQgbmV3U2VsZWN0
ZWRJbmRleCkKK3sKKyAgICBpZiAoIW1fY2xpZW50KQorICAgICAgICByZXR1cm47CisKKyAgICBt
X2NsaWVudC0+dmFsdWVDaGFuZ2VkRm9yUG9wdXBNZW51KHRoaXMsIG5ld1NlbGVjdGVkSW5kZXgp
OworICAgIGludmFsaWRhdGUoKTsKK30KKworfSAvLyBuYW1lc3BhY2UgV2ViS2l0CmRpZmYgLS1n
aXQgYS9Tb3VyY2UvV2ViS2l0Mi9VSVByb2Nlc3MvZWZsL1dlYlBvcHVwTWVudUxpc3RlbmVyRWZs
LmggYi9Tb3VyY2UvV2ViS2l0Mi9VSVByb2Nlc3MvZWZsL1dlYlBvcHVwTWVudUxpc3RlbmVyRWZs
LmgKbmV3IGZpbGUgbW9kZSAxMDA2NDQKaW5kZXggMDAwMDAwMC4uNmJjZjgzMwotLS0gL2Rldi9u
dWxsCisrKyBiL1NvdXJjZS9XZWJLaXQyL1VJUHJvY2Vzcy9lZmwvV2ViUG9wdXBNZW51TGlzdGVu
ZXJFZmwuaApAQCAtMCwwICsxLDQ4IEBACisvKgorICogQ29weXJpZ2h0IChDKSAyMDEyIFNhbXN1
bmcgRWxlY3Ryb25pY3MKKyAqCisgKiBSZWRpc3RyaWJ1dGlvbiBhbmQgdXNlIGluIHNvdXJjZSBh
bmQgYmluYXJ5IGZvcm1zLCB3aXRoIG9yIHdpdGhvdXQKKyAqIG1vZGlmaWNhdGlvbiwgYXJlIHBl
cm1pdHRlZCBwcm92aWRlZCB0aGF0IHRoZSBmb2xsb3dpbmcgY29uZGl0aW9ucworICogYXJlIG1l
dDoKKyAqIDEuIFJlZGlzdHJpYnV0aW9ucyBvZiBzb3VyY2UgY29kZSBtdXN0IHJldGFpbiB0aGUg
YWJvdmUgY29weXJpZ2h0CisgKiAgICBub3RpY2UsIHRoaXMgbGlzdCBvZiBjb25kaXRpb25zIGFu
ZCB0aGUgZm9sbG93aW5nIGRpc2NsYWltZXIuCisgKiAyLiBSZWRpc3RyaWJ1dGlvbnMgaW4gYmlu
YXJ5IGZvcm0gbXVzdCByZXByb2R1Y2UgdGhlIGFib3ZlIGNvcHlyaWdodAorICogICAgbm90aWNl
LCB0aGlzIGxpc3Qgb2YgY29uZGl0aW9ucyBhbmQgdGhlIGZvbGxvd2luZyBkaXNjbGFpbWVyIGlu
IHRoZQorICogICAgZG9jdW1lbnRhdGlvbiBhbmQvb3Igb3RoZXIgbWF0ZXJpYWxzIHByb3ZpZGVk
IHdpdGggdGhlIGRpc3RyaWJ1dGlvbi4KKyAqCisgKiBUSElTIFNPRlRXQVJFIElTIFBST1ZJREVE
IEJZIFRIRSBDT1BZUklHSFQgSE9MREVSUyBBTkQgQ09OVFJJQlVUT1JTCisgKiAiQVMgSVMiIEFO
RCBBTlkgRVhQUkVTUyBPUiBJTVBMSUVEIFdBUlJBTlRJRVMsIElOQ0xVRElORywgQlVUIE5PVCBM
SU1JVEVEIFRPLAorICogVEhFIElNUExJRUQgV0FSUkFOVElFUyBPRiBNRVJDSEFOVEFCSUxJVFkg
QU5EIEZJVE5FU1MgRk9SIEEgUEFSVElDVUxBUgorICogUFVSUE9TRSBBUkUgRElTQ0xBSU1FRC4g
IElOIE5PIEVWRU5UIFNIQUxMIFRIRSBDT1BZUklHSFQgSE9MREVSIE9SCisgKiBDT05UUklCVVRP
UlMgQkUgTElBQkxFIEZPUiBBTlkgRElSRUNULCBJTkRJUkVDVCwgSU5DSURFTlRBTCwgU1BFQ0lB
TCwKKyAqIEVYRU1QTEFSWSwgT1IgQ09OU0VRVUVOVElBTCBEQU1BR0VTIChJTkNMVURJTkcsIEJV
VCBOT1QgTElNSVRFRCBUTywKKyAqIFBST0NVUkVNRU5UIE9GIFNVQlNUSVRVVEUgR09PRFMgT1Ig
U0VSVklDRVM7IExPU1MgT0YgVVNFLCBEQVRBLCBPUgorICogUFJPRklUUzsgT1IgQlVTSU5FU1Mg
SU5URVJSVVBUSU9OKSBIT1dFVkVSIENBVVNFRCBBTkQgT04gQU5ZIFRIRU9SWQorICogT0YgTElB
QklMSVRZLCBXSEVUSEVSIElOIENPTlRSQUNULCBTVFJJQ1QgTElBQklMSVRZLCBPUiBUT1JUIChJ
TkNMVURJTkcKKyAqIE5FR0xJR0VOQ0UgT1IgT1RIRVJXSVNFKSBBUklTSU5HIElOIEFOWSBXQVkg
T1VUIE9GIFRIRSBVU0UgT0YgVEhJUworICogU09GVFdBUkUsIEVWRU4gSUYgQURWSVNFRCBPRiBU
SEUgUE9TU0lCSUxJVFkgT0YgU1VDSCBEQU1BR0UuCisgKi8KKworI2lmbmRlZiBXZWJQb3B1cE1l
bnVMaXN0ZW5lckVmbF9oCisjZGVmaW5lIFdlYlBvcHVwTWVudUxpc3RlbmVyRWZsX2gKKworI2lu
Y2x1ZGUgIldlYlBvcHVwTWVudVByb3h5LmgiCisKK25hbWVzcGFjZSBXZWJLaXQgeworCitjbGFz
cyBXZWJQb3B1cE1lbnVMaXN0ZW5lckVmbCA6IHB1YmxpYyBXZWJQb3B1cE1lbnVQcm94eSB7Citw
dWJsaWM6CisgICAgc3RhdGljIFBhc3NSZWZQdHI8V2ViUG9wdXBNZW51TGlzdGVuZXJFZmw+IGNy
ZWF0ZShXZWJQb3B1cE1lbnVQcm94eTo6Q2xpZW50KiBjbGllbnQpCisgICAgeworICAgICAgICBy
ZXR1cm4gYWRvcHRSZWYobmV3IFdlYlBvcHVwTWVudUxpc3RlbmVyRWZsKGNsaWVudCkpOworICAg
IH0KKworICAgIHZvaWQgdmFsdWVDaGFuZ2VkKGludCBuZXdTZWxlY3RlZEluZGV4KTsKKworcHJp
dmF0ZToKKyAgICBXZWJQb3B1cE1lbnVMaXN0ZW5lckVmbChXZWJQb3B1cE1lbnVQcm94eTo6Q2xp
ZW50Kik7Cit9OworCit9IC8vIG5hbWVzcGFjZSBXZWJLaXQKKworI2VuZGlmIC8vIFdlYlBvcHVw
TWVudUxpc3RlbmVyRWZsX2gKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJLaXQyL1VJUHJvY2Vzcy9l
ZmwvV2ViUG9wdXBNZW51UHJveHlFZmwuY3BwIGIvU291cmNlL1dlYktpdDIvVUlQcm9jZXNzL2Vm
bC9XZWJQb3B1cE1lbnVQcm94eUVmbC5jcHAKZGVsZXRlZCBmaWxlIG1vZGUgMTAwNjQ0CmluZGV4
IGE1OTU1MzcuLjAwMDAwMDAKLS0tIGEvU291cmNlL1dlYktpdDIvVUlQcm9jZXNzL2VmbC9XZWJQ
b3B1cE1lbnVQcm94eUVmbC5jcHAKKysrIC9kZXYvbnVsbApAQCAtMSw2MCArMCwwIEBACi0vKgot
ICogQ29weXJpZ2h0IChDKSAyMDEyIFNhbXN1bmcgRWxlY3Ryb25pY3MKLSAqCi0gKiBSZWRpc3Ry
aWJ1dGlvbiBhbmQgdXNlIGluIHNvdXJjZSBhbmQgYmluYXJ5IGZvcm1zLCB3aXRoIG9yIHdpdGhv
dXQKLSAqIG1vZGlmaWNhdGlvbiwgYXJlIHBlcm1pdHRlZCBwcm92aWRlZCB0aGF0IHRoZSBmb2xs
b3dpbmcgY29uZGl0aW9ucwotICogYXJlIG1ldDoKLSAqIDEuIFJlZGlzdHJpYnV0aW9ucyBvZiBz
b3VyY2UgY29kZSBtdXN0IHJldGFpbiB0aGUgYWJvdmUgY29weXJpZ2h0Ci0gKiAgICBub3RpY2Us
IHRoaXMgbGlzdCBvZiBjb25kaXRpb25zIGFuZCB0aGUgZm9sbG93aW5nIGRpc2NsYWltZXIuCi0g
KiAyLiBSZWRpc3RyaWJ1dGlvbnMgaW4gYmluYXJ5IGZvcm0gbXVzdCByZXByb2R1Y2UgdGhlIGFi
b3ZlIGNvcHlyaWdodAotICogICAgbm90aWNlLCB0aGlzIGxpc3Qgb2YgY29uZGl0aW9ucyBhbmQg
dGhlIGZvbGxvd2luZyBkaXNjbGFpbWVyIGluIHRoZQotICogICAgZG9jdW1lbnRhdGlvbiBhbmQv
b3Igb3RoZXIgbWF0ZXJpYWxzIHByb3ZpZGVkIHdpdGggdGhlIGRpc3RyaWJ1dGlvbi4KLSAqCi0g
KiBUSElTIFNPRlRXQVJFIElTIFBST1ZJREVEIEJZIFRIRSBDT1BZUklHSFQgSE9MREVSUyBBTkQg
Q09OVFJJQlVUT1JTCi0gKiAiQVMgSVMiIEFORCBBTlkgRVhQUkVTUyBPUiBJTVBMSUVEIFdBUlJB
TlRJRVMsIElOQ0xVRElORywgQlVUIE5PVCBMSU1JVEVEIFRPLAotICogVEhFIElNUExJRUQgV0FS
UkFOVElFUyBPRiBNRVJDSEFOVEFCSUxJVFkgQU5EIEZJVE5FU1MgRk9SIEEgUEFSVElDVUxBUgot
ICogUFVSUE9TRSBBUkUgRElTQ0xBSU1FRC4gIElOIE5PIEVWRU5UIFNIQUxMIFRIRSBDT1BZUklH
SFQgSE9MREVSIE9SCi0gKiBDT05UUklCVVRPUlMgQkUgTElBQkxFIEZPUiBBTlkgRElSRUNULCBJ
TkRJUkVDVCwgSU5DSURFTlRBTCwgU1BFQ0lBTCwKLSAqIEVYRU1QTEFSWSwgT1IgQ09OU0VRVUVO
VElBTCBEQU1BR0VTIChJTkNMVURJTkcsIEJVVCBOT1QgTElNSVRFRCBUTywKLSAqIFBST0NVUkVN
RU5UIE9GIFNVQlNUSVRVVEUgR09PRFMgT1IgU0VSVklDRVM7IExPU1MgT0YgVVNFLCBEQVRBLCBP
UgotICogUFJPRklUUzsgT1IgQlVTSU5FU1MgSU5URVJSVVBUSU9OKSBIT1dFVkVSIENBVVNFRCBB
TkQgT04gQU5ZIFRIRU9SWQotICogT0YgTElBQklMSVRZLCBXSEVUSEVSIElOIENPTlRSQUNULCBT
VFJJQ1QgTElBQklMSVRZLCBPUiBUT1JUIChJTkNMVURJTkcKLSAqIE5FR0xJR0VOQ0UgT1IgT1RI
RVJXSVNFKSBBUklTSU5HIElOIEFOWSBXQVkgT1VUIE9GIFRIRSBVU0UgT0YgVEhJUwotICogU09G
VFdBUkUsIEVWRU4gSUYgQURWSVNFRCBPRiBUSEUgUE9TU0lCSUxJVFkgT0YgU1VDSCBEQU1BR0Uu
Ci0gKi8KLQotI2luY2x1ZGUgImNvbmZpZy5oIgotI2luY2x1ZGUgIldlYlBvcHVwTWVudVByb3h5
RWZsLmgiCi0KLSNpbmNsdWRlICJFd2tWaWV3LmgiCi0jaW5jbHVkZSAiTmF0aXZlV2ViTW91c2VF
dmVudC5oIgotI2luY2x1ZGUgIldlYlBvcHVwSXRlbS5oIgotI2luY2x1ZGUgImV3a192aWV3Lmgi
Ci0jaW5jbHVkZSA8d3RmL3RleHQvQ1N0cmluZy5oPgotCi11c2luZyBuYW1lc3BhY2UgV2ViQ29y
ZTsKLQotbmFtZXNwYWNlIFdlYktpdCB7Ci0KLVdlYlBvcHVwTWVudVByb3h5RWZsOjpXZWJQb3B1
cE1lbnVQcm94eUVmbChFd2tWaWV3KiB2aWV3LCBXZWJQb3B1cE1lbnVQcm94eTo6Q2xpZW50KiBj
bGllbnQpCi0gICAgOiBXZWJQb3B1cE1lbnVQcm94eShjbGllbnQpCi0gICAgLCBtX3ZpZXcodmll
dykKLXsKLX0KLQotdm9pZCBXZWJQb3B1cE1lbnVQcm94eUVmbDo6c2hvd1BvcHVwTWVudShjb25z
dCBJbnRSZWN0JiByZWN0LCBUZXh0RGlyZWN0aW9uIHRleHREaXJlY3Rpb24sIGRvdWJsZSBwYWdl
U2NhbGVGYWN0b3IsIGNvbnN0IFZlY3RvcjxXZWJQb3B1cEl0ZW0+JiBpdGVtcywgY29uc3QgUGxh
dGZvcm1Qb3B1cE1lbnVEYXRhJiwgaW50MzJfdCBzZWxlY3RlZEluZGV4KQotewotICAgIG1fdmll
dy0+cmVxdWVzdFBvcHVwTWVudSh0aGlzLCByZWN0LCB0ZXh0RGlyZWN0aW9uLCBwYWdlU2NhbGVG
YWN0b3IsIGl0ZW1zLCBzZWxlY3RlZEluZGV4KTsKLX0KLQotdm9pZCBXZWJQb3B1cE1lbnVQcm94
eUVmbDo6aGlkZVBvcHVwTWVudSgpCi17Ci0gICAgbV92aWV3LT5jbG9zZVBvcHVwTWVudSgpOwot
fQotCi12b2lkIFdlYlBvcHVwTWVudVByb3h5RWZsOjp2YWx1ZUNoYW5nZWQoaW50IG5ld1NlbGVj
dGVkSW5kZXgpCi17Ci0gICAgbV9jbGllbnQtPnZhbHVlQ2hhbmdlZEZvclBvcHVwTWVudSh0aGlz
LCBuZXdTZWxlY3RlZEluZGV4KTsKLX0KLQotfSAvLyBuYW1lc3BhY2UgV2ViS2l0CmRpZmYgLS1n
aXQgYS9Tb3VyY2UvV2ViS2l0Mi9VSVByb2Nlc3MvZWZsL1dlYlBvcHVwTWVudVByb3h5RWZsLmgg
Yi9Tb3VyY2UvV2ViS2l0Mi9VSVByb2Nlc3MvZWZsL1dlYlBvcHVwTWVudVByb3h5RWZsLmgKZGVs
ZXRlZCBmaWxlIG1vZGUgMTAwNjQ0CmluZGV4IDAxOTMzYzMuLjAwMDAwMDAKLS0tIGEvU291cmNl
L1dlYktpdDIvVUlQcm9jZXNzL2VmbC9XZWJQb3B1cE1lbnVQcm94eUVmbC5oCisrKyAvZGV2L251
bGwKQEAgLTEsNjEgKzAsMCBAQAotLyoKLSAqIENvcHlyaWdodCAoQykgMjAxMiBTYW1zdW5nIEVs
ZWN0cm9uaWNzCi0gKgotICogUmVkaXN0cmlidXRpb24gYW5kIHVzZSBpbiBzb3VyY2UgYW5kIGJp
bmFyeSBmb3Jtcywgd2l0aCBvciB3aXRob3V0Ci0gKiBtb2RpZmljYXRpb24sIGFyZSBwZXJtaXR0
ZWQgcHJvdmlkZWQgdGhhdCB0aGUgZm9sbG93aW5nIGNvbmRpdGlvbnMKLSAqIGFyZSBtZXQ6Ci0g
KiAxLiBSZWRpc3RyaWJ1dGlvbnMgb2Ygc291cmNlIGNvZGUgbXVzdCByZXRhaW4gdGhlIGFib3Zl
IGNvcHlyaWdodAotICogICAgbm90aWNlLCB0aGlzIGxpc3Qgb2YgY29uZGl0aW9ucyBhbmQgdGhl
IGZvbGxvd2luZyBkaXNjbGFpbWVyLgotICogMi4gUmVkaXN0cmlidXRpb25zIGluIGJpbmFyeSBm
b3JtIG11c3QgcmVwcm9kdWNlIHRoZSBhYm92ZSBjb3B5cmlnaHQKLSAqICAgIG5vdGljZSwgdGhp
cyBsaXN0IG9mIGNvbmRpdGlvbnMgYW5kIHRoZSBmb2xsb3dpbmcgZGlzY2xhaW1lciBpbiB0aGUK
LSAqICAgIGRvY3VtZW50YXRpb24gYW5kL29yIG90aGVyIG1hdGVyaWFscyBwcm92aWRlZCB3aXRo
IHRoZSBkaXN0cmlidXRpb24uCi0gKgotICogVEhJUyBTT0ZUV0FSRSBJUyBQUk9WSURFRCBCWSBU
SEUgQ09QWVJJR0hUIEhPTERFUlMgQU5EIENPTlRSSUJVVE9SUwotICogIkFTIElTIiBBTkQgQU5Z
IEVYUFJFU1MgT1IgSU1QTElFRCBXQVJSQU5USUVTLCBJTkNMVURJTkcsIEJVVCBOT1QgTElNSVRF
RCBUTywKLSAqIFRIRSBJTVBMSUVEIFdBUlJBTlRJRVMgT0YgTUVSQ0hBTlRBQklMSVRZIEFORCBG
SVRORVNTIEZPUiBBIFBBUlRJQ1VMQVIKLSAqIFBVUlBPU0UgQVJFIERJU0NMQUlNRUQuICBJTiBO
TyBFVkVOVCBTSEFMTCBUSEUgQ09QWVJJR0hUIEhPTERFUiBPUgotICogQ09OVFJJQlVUT1JTIEJF
IExJQUJMRSBGT1IgQU5ZIERJUkVDVCwgSU5ESVJFQ1QsIElOQ0lERU5UQUwsIFNQRUNJQUwsCi0g
KiBFWEVNUExBUlksIE9SIENPTlNFUVVFTlRJQUwgREFNQUdFUyAoSU5DTFVESU5HLCBCVVQgTk9U
IExJTUlURUQgVE8sCi0gKiBQUk9DVVJFTUVOVCBPRiBTVUJTVElUVVRFIEdPT0RTIE9SIFNFUlZJ
Q0VTOyBMT1NTIE9GIFVTRSwgREFUQSwgT1IKLSAqIFBST0ZJVFM7IE9SIEJVU0lORVNTIElOVEVS
UlVQVElPTikgSE9XRVZFUiBDQVVTRUQgQU5EIE9OIEFOWSBUSEVPUlkKLSAqIE9GIExJQUJJTElU
WSwgV0hFVEhFUiBJTiBDT05UUkFDVCwgU1RSSUNUIExJQUJJTElUWSwgT1IgVE9SVCAoSU5DTFVE
SU5HCi0gKiBORUdMSUdFTkNFIE9SIE9USEVSV0lTRSkgQVJJU0lORyBJTiBBTlkgV0FZIE9VVCBP
RiBUSEUgVVNFIE9GIFRISVMKLSAqIFNPRlRXQVJFLCBFVkVOIElGIEFEVklTRUQgT0YgVEhFIFBP
U1NJQklMSVRZIE9GIFNVQ0ggREFNQUdFLgotICovCi0KLSNpZm5kZWYgV2ViUG9wdXBNZW51UHJv
eHlFZmxfaAotI2RlZmluZSBXZWJQb3B1cE1lbnVQcm94eUVmbF9oCi0KLSNpbmNsdWRlICJXZWJQ
b3B1cE1lbnVQcm94eS5oIgotCi1uYW1lc3BhY2UgV2ViQ29yZSB7Ci1jbGFzcyBJbnRSZWN0Owot
fQotCi1jbGFzcyBFd2tWaWV3OwotCi1uYW1lc3BhY2UgV2ViS2l0IHsKLQotY2xhc3MgV2ViUGFn
ZVByb3h5OwotCi1jbGFzcyBXZWJQb3B1cE1lbnVQcm94eUVmbCA6IHB1YmxpYyBXZWJQb3B1cE1l
bnVQcm94eSB7Ci1wdWJsaWM6Ci0gICAgc3RhdGljIFBhc3NSZWZQdHI8V2ViUG9wdXBNZW51UHJv
eHlFZmw+IGNyZWF0ZShFd2tWaWV3KiB2aWV3SW1wbCwgV2ViUG9wdXBNZW51UHJveHk6OkNsaWVu
dCogY2xpZW50KQotICAgIHsKLSAgICAgICAgcmV0dXJuIGFkb3B0UmVmKG5ldyBXZWJQb3B1cE1l
bnVQcm94eUVmbCh2aWV3SW1wbCwgY2xpZW50KSk7Ci0gICAgfQotCi0gICAgdm9pZCBzaG93UG9w
dXBNZW51KGNvbnN0IFdlYkNvcmU6OkludFJlY3QmLCBXZWJDb3JlOjpUZXh0RGlyZWN0aW9uLCBk
b3VibGUgcGFnZVNjYWxlRmFjdG9yLCBjb25zdCBWZWN0b3I8V2ViUG9wdXBJdGVtPiYsIGNvbnN0
IFBsYXRmb3JtUG9wdXBNZW51RGF0YSYsIGludDMyX3Qgc2VsZWN0ZWRJbmRleCk7Ci0gICAgdm9p
ZCBoaWRlUG9wdXBNZW51KCk7Ci0KLSAgICB2b2lkIHZhbHVlQ2hhbmdlZChpbnQgbmV3U2VsZWN0
ZWRJbmRleCk7Ci0KLXByaXZhdGU6Ci0gICAgV2ViUG9wdXBNZW51UHJveHlFZmwoRXdrVmlldyos
IFdlYlBvcHVwTWVudVByb3h5OjpDbGllbnQqKTsKLQotICAgIEV3a1ZpZXcqIG1fdmlldzsKLX07
Ci0KLX0gLy8gbmFtZXNwYWNlIFdlYktpdAotCi0jZW5kaWYgLy8gV2ViUG9wdXBNZW51UHJveHlF
ZmxfaApkaWZmIC0tZ2l0IGEvU291cmNlL1dlYktpdDIvVUlQcm9jZXNzL2VmbC9XZWJVSVBvcHVw
TWVudUNsaWVudC5jcHAgYi9Tb3VyY2UvV2ViS2l0Mi9VSVByb2Nlc3MvZWZsL1dlYlVJUG9wdXBN
ZW51Q2xpZW50LmNwcApuZXcgZmlsZSBtb2RlIDEwMDY0NAppbmRleCAwMDAwMDAwLi4yZTZmZjVh
Ci0tLSAvZGV2L251bGwKKysrIGIvU291cmNlL1dlYktpdDIvVUlQcm9jZXNzL2VmbC9XZWJVSVBv
cHVwTWVudUNsaWVudC5jcHAKQEAgLTAsMCArMSw1OCBAQAorLyoKKyAqIENvcHlyaWdodCAoQykg
MjAxMyBTYW1zdW5nIEVsZWN0cm9uaWNzLiBBbGwgcmlnaHRzIHJlc2VydmVkLgorICoKKyAqIFJl
ZGlzdHJpYnV0aW9uIGFuZCB1c2UgaW4gc291cmNlIGFuZCBiaW5hcnkgZm9ybXMsIHdpdGggb3Ig
d2l0aG91dAorICogbW9kaWZpY2F0aW9uLCBhcmUgcGVybWl0dGVkIHByb3ZpZGVkIHRoYXQgdGhl
IGZvbGxvd2luZyBjb25kaXRpb25zCisgKiBhcmUgbWV0OgorICogMS4gUmVkaXN0cmlidXRpb25z
IG9mIHNvdXJjZSBjb2RlIG11c3QgcmV0YWluIHRoZSBhYm92ZSBjb3B5cmlnaHQKKyAqICAgIG5v
dGljZSwgdGhpcyBsaXN0IG9mIGNvbmRpdGlvbnMgYW5kIHRoZSBmb2xsb3dpbmcgZGlzY2xhaW1l
ci4KKyAqIDIuIFJlZGlzdHJpYnV0aW9ucyBpbiBiaW5hcnkgZm9ybSBtdXN0IHJlcHJvZHVjZSB0
aGUgYWJvdmUgY29weXJpZ2h0CisgKiAgICBub3RpY2UsIHRoaXMgbGlzdCBvZiBjb25kaXRpb25z
IGFuZCB0aGUgZm9sbG93aW5nIGRpc2NsYWltZXIgaW4gdGhlCisgKiAgICBkb2N1bWVudGF0aW9u
IGFuZC9vciBvdGhlciBtYXRlcmlhbHMgcHJvdmlkZWQgd2l0aCB0aGUgZGlzdHJpYnV0aW9uLgor
ICoKKyAqIFRISVMgU09GVFdBUkUgSVMgUFJPVklERUQgQlkgQVBQTEUgSU5DLiBBTkQgSVRTIENP
TlRSSUJVVE9SUyBgYEFTIElTJycKKyAqIEFORCBBTlkgRVhQUkVTUyBPUiBJTVBMSUVEIFdBUlJB
TlRJRVMsIElOQ0xVRElORywgQlVUIE5PVCBMSU1JVEVEIFRPLAorICogVEhFIElNUExJRUQgV0FS
UkFOVElFUyBPRiBNRVJDSEFOVEF3QklMSVRZIEFORCBGSVRORVNTIEZPUiBBIFBBUlRJQ1VMQVIK
KyAqIFBVUlBPU0UgQVJFIERJU0NMQUlNRUQuIElOIE5PIEVWRU5UIFNIQUxMIEFQUExFIElOQy4g
T1IgSVRTIENPTlRSSUJVVE9SUworICogQkUgTElBQkxFIEZPUiBBTlkgRElSRUNULCBJTkRJUkVD
VCwgSU5DSURFTlRBTCwgU1BFQ0lBTCwgRVhFTVBMQVJZLCBPUgorICogQ09OU0VRVUVOVElBTCBE
QU1BR0VTIChJTkNMVURJTkcsIEJVVCBOT1QgTElNSVRFRCBUTywgUFJPQ1VSRU1FTlQgT0YKKyAq
IFNVQlNUSVRVVEUgR09PRFMgT1IgU0VSVklDRVM7IExPU1MgT0YgVVNFLCBEQVRBLCBPUiBQUk9G
SVRTOyBPUiBCVVNJTkVTUworICogSU5URVJSVVBUSU9OKSBIT1dFVkVSIENBVVNFRCBBTkQgT04g
QU5ZIFRIRU9SWSBPRiBMSUFCSUxJVFksIFdIRVRIRVIgSU4KKyAqIENPTlRSQUNULCBTVFJJQ1Qg
TElBQklMSVRZLCBPUiBUT1JUIChJTkNMVURJTkcgTkVHTElHRU5DRSBPUiBPVEhFUldJU0UpCisg
KiBBUklTSU5HIElOIEFOWSBXQVkgT1VUIE9GIFRIRSBVU0UgT0YgVEhJUyBTT0ZUV0FSRSwgRVZF
TiBJRiBBRFZJU0VEIE9GCisgKiBUSEUgUE9TU0lCSUxJVFkgT0YgU1VDSCBEQU1BR0UuCisgKi8K
KworI2luY2x1ZGUgImNvbmZpZy5oIgorI2luY2x1ZGUgIldlYlVJUG9wdXBNZW51Q2xpZW50Lmgi
CisKKyNpbmNsdWRlICJJbW11dGFibGVBcnJheS5oIgorI2luY2x1ZGUgIldLQVBJQ2FzdC5oIgor
I2luY2x1ZGUgIldlYlBvcHVwSXRlbUVmbC5oIgorI2luY2x1ZGUgIldlYlBvcHVwTWVudUxpc3Rl
bmVyRWZsLmgiCisKK3VzaW5nIG5hbWVzcGFjZSBXZWJDb3JlOwordXNpbmcgbmFtZXNwYWNlIFdl
YktpdDsKKwordm9pZCBXZWJVSVBvcHVwTWVudUNsaWVudDo6c2hvd1BvcHVwTWVudShXZWJQYWdl
UHJveHkqIHBhZ2VQcm94eSwgV2ViUG9wdXBNZW51UHJveHkqIHBvcHVwTWVudVByb3h5LCBjb25z
dCBJbnRSZWN0JiByZWN0LCBUZXh0RGlyZWN0aW9uIHRleHREaXJlY3Rpb24sIGRvdWJsZSBwYWdl
U2NhbGVGYWN0b3IsIGNvbnN0IFZlY3RvcjxXZWJQb3B1cEl0ZW0+JiBpdGVtcywgaW50MzJfdCBz
ZWxlY3RlZEluZGV4KQoreworICAgIGlmICghbV9jbGllbnQuc2hvd1BvcHVwTWVudSkKKyAgICAg
ICAgcmV0dXJuOworCisgICAgVmVjdG9yPFJlZlB0cjxBUElPYmplY3Q+ID4gd2ViUG9wdXBJdGVt
czsKKyAgICBzaXplX3Qgc2l6ZSA9IGl0ZW1zLnNpemUoKTsKKyAgICBmb3IgKHNpemVfdCBpID0g
MDsgaSA8IHNpemU7ICsraSkKKyAgICAgICAgd2ViUG9wdXBJdGVtcy5hcHBlbmQoV2ViUG9wdXBJ
dGVtRWZsOjpjcmVhdGUoaXRlbXNbaV0pKTsKKworICAgIFJlZlB0cjxJbW11dGFibGVBcnJheT4g
SXRlbXNBcnJheTsKKyAgICBpZiAoIXdlYlBvcHVwSXRlbXMuaXNFbXB0eSgpKQorICAgICAgICBJ
dGVtc0FycmF5ID0gSW1tdXRhYmxlQXJyYXk6OmFkb3B0KHdlYlBvcHVwSXRlbXMpOworCisgICAg
bV9jbGllbnQuc2hvd1BvcHVwTWVudSh0b0FQSShwYWdlUHJveHkpLCB0b0FQSShzdGF0aWNfY2Fz
dDxXZWJQb3B1cE1lbnVMaXN0ZW5lckVmbCo+KHBvcHVwTWVudVByb3h5KSksIHRvQVBJKHJlY3Qp
LCB0b0FQSSh0ZXh0RGlyZWN0aW9uKSwgcGFnZVNjYWxlRmFjdG9yLCB0b0FQSShJdGVtc0FycmF5
LmdldCgpKSwgc2VsZWN0ZWRJbmRleCwgbV9jbGllbnQuY2xpZW50SW5mbyk7Cit9CisKK3ZvaWQg
V2ViVUlQb3B1cE1lbnVDbGllbnQ6OmhpZGVQb3B1cE1lbnUoV2ViUGFnZVByb3h5KiBwYWdlUHJv
eHkpCit7CisgICAgaWYgKG1fY2xpZW50LmhpZGVQb3B1cE1lbnUpCisgICAgICAgIG1fY2xpZW50
LmhpZGVQb3B1cE1lbnUodG9BUEkocGFnZVByb3h5KSwgbV9jbGllbnQuY2xpZW50SW5mbyk7Cit9
CmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViS2l0Mi9VSVByb2Nlc3MvZWZsL1dlYlVJUG9wdXBNZW51
Q2xpZW50LmggYi9Tb3VyY2UvV2ViS2l0Mi9VSVByb2Nlc3MvZWZsL1dlYlVJUG9wdXBNZW51Q2xp
ZW50LmgKbmV3IGZpbGUgbW9kZSAxMDA2NDQKaW5kZXggMDAwMDAwMC4uMjU5MzJlOAotLS0gL2Rl
di9udWxsCisrKyBiL1NvdXJjZS9XZWJLaXQyL1VJUHJvY2Vzcy9lZmwvV2ViVUlQb3B1cE1lbnVD
bGllbnQuaApAQCAtMCwwICsxLDQ4IEBACisvKgorICogQ29weXJpZ2h0IChDKSAyMDEzIFNhbXN1
bmcgRWxlY3Ryb25pY3MuIEFsbCByaWdodHMgcmVzZXJ2ZWQuCisgKgorICogUmVkaXN0cmlidXRp
b24gYW5kIHVzZSBpbiBzb3VyY2UgYW5kIGJpbmFyeSBmb3Jtcywgd2l0aCBvciB3aXRob3V0Cisg
KiBtb2RpZmljYXRpb24sIGFyZSBwZXJtaXR0ZWQgcHJvdmlkZWQgdGhhdCB0aGUgZm9sbG93aW5n
IGNvbmRpdGlvbnMKKyAqIGFyZSBtZXQ6CisgKiAxLiBSZWRpc3RyaWJ1dGlvbnMgb2Ygc291cmNl
IGNvZGUgbXVzdCByZXRhaW4gdGhlIGFib3ZlIGNvcHlyaWdodAorICogICAgbm90aWNlLCB0aGlz
IGxpc3Qgb2YgY29uZGl0aW9ucyBhbmQgdGhlIGZvbGxvd2luZyBkaXNjbGFpbWVyLgorICogMi4g
UmVkaXN0cmlidXRpb25zIGluIGJpbmFyeSBmb3JtIG11c3QgcmVwcm9kdWNlIHRoZSBhYm92ZSBj
b3B5cmlnaHQKKyAqICAgIG5vdGljZSwgdGhpcyBsaXN0IG9mIGNvbmRpdGlvbnMgYW5kIHRoZSBm
b2xsb3dpbmcgZGlzY2xhaW1lciBpbiB0aGUKKyAqICAgIGRvY3VtZW50YXRpb24gYW5kL29yIG90
aGVyIG1hdGVyaWFscyBwcm92aWRlZCB3aXRoIHRoZSBkaXN0cmlidXRpb24uCisgKgorICogVEhJ
UyBTT0ZUV0FSRSBJUyBQUk9WSURFRCBCWSBBUFBMRSBJTkMuIEFORCBJVFMgQ09OVFJJQlVUT1JT
IGBgQVMgSVMnJworICogQU5EIEFOWSBFWFBSRVNTIE9SIElNUExJRUQgV0FSUkFOVElFUywgSU5D
TFVESU5HLCBCVVQgTk9UIExJTUlURUQgVE8sCisgKiBUSEUgSU1QTElFRCBXQVJSQU5USUVTIE9G
IE1FUkNIQU5UQXdCSUxJVFkgQU5EIEZJVE5FU1MgRk9SIEEgUEFSVElDVUxBUgorICogUFVSUE9T
RSBBUkUgRElTQ0xBSU1FRC4gSU4gTk8gRVZFTlQgU0hBTEwgQVBQTEUgSU5DLiBPUiBJVFMgQ09O
VFJJQlVUT1JTCisgKiBCRSBMSUFCTEUgRk9SIEFOWSBESVJFQ1QsIElORElSRUNULCBJTkNJREVO
VEFMLCBTUEVDSUFMLCBFWEVNUExBUlksIE9SCisgKiBDT05TRVFVRU5USUFMIERBTUFHRVMgKElO
Q0xVRElORywgQlVUIE5PVCBMSU1JVEVEIFRPLCBQUk9DVVJFTUVOVCBPRgorICogU1VCU1RJVFVU
RSBHT09EUyBPUiBTRVJWSUNFUzsgTE9TUyBPRiBVU0UsIERBVEEsIE9SIFBST0ZJVFM7IE9SIEJV
U0lORVNTCisgKiBJTlRFUlJVUFRJT04pIEhPV0VWRVIgQ0FVU0VEIEFORCBPTiBBTlkgVEhFT1JZ
IE9GIExJQUJJTElUWSwgV0hFVEhFUiBJTgorICogQ09OVFJBQ1QsIFNUUklDVCBMSUFCSUxJVFks
IE9SIFRPUlQgKElOQ0xVRElORyBORUdMSUdFTkNFIE9SIE9USEVSV0lTRSkKKyAqIEFSSVNJTkcg
SU4gQU5ZIFdBWSBPVVQgT0YgVEhFIFVTRSBPRiBUSElTIFNPRlRXQVJFLCBFVkVOIElGIEFEVklT
RUQgT0YKKyAqIFRIRSBQT1NTSUJJTElUWSBPRiBTVUNIIERBTUFHRS4KKyAqLworCisjaWZuZGVm
IFdlYlVJUG9wdXBNZW51Q2xpZW50X2gKKyNkZWZpbmUgV2ViVUlQb3B1cE1lbnVDbGllbnRfaAor
CisjaW5jbHVkZSAiQVBJQ2xpZW50LmgiCisjaW5jbHVkZSAiQVBJT2JqZWN0LmgiCisjaW5jbHVk
ZSAiV0tQYWdlRWZsLmgiCisjaW5jbHVkZSAiV2ViUG9wdXBJdGVtLmgiCisjaW5jbHVkZSA8V2Vi
Q29yZS9JbnRSZWN0Lmg+CisjaW5jbHVkZSA8V2ViQ29yZS9UZXh0RGlyZWN0aW9uLmg+CisKK25h
bWVzcGFjZSBXZWJLaXQgeworCitjbGFzcyBXZWJQYWdlUHJveHk7CitjbGFzcyBXZWJQb3B1cE1l
bnVQcm94eTsKKworY2xhc3MgV2ViVUlQb3B1cE1lbnVDbGllbnQgOiBwdWJsaWMgQVBJQ2xpZW50
PFdLUGFnZVVJUG9wdXBNZW51Q2xpZW50LCBrV0tQYWdlVUlQb3B1cE1lbnVDbGllbnRDdXJyZW50
VmVyc2lvbj4geworcHVibGljOgorICAgIHZvaWQgc2hvd1BvcHVwTWVudShXZWJQYWdlUHJveHkq
LCBXZWJQb3B1cE1lbnVQcm94eSosIGNvbnN0IFdlYkNvcmU6OkludFJlY3QmLCBXZWJDb3JlOjpU
ZXh0RGlyZWN0aW9uLCBkb3VibGUgcGFnZVNjYWxlRmFjdG9yLCBjb25zdCBWZWN0b3I8V2ViUG9w
dXBJdGVtPiYgaXRlbXMsIGludDMyX3Qgc2VsZWN0ZWRJbmRleCk7CisgICAgdm9pZCBoaWRlUG9w
dXBNZW51KFdlYlBhZ2VQcm94eSopOworfTsKKworfSAvLyBuYW1lc3BhY2UgV2ViS2l0CisjZW5k
aWYgLy8gV2ViVUlQb3B1cE1lbnVDbGllbnRfaApkaWZmIC0tZ2l0IGEvU291cmNlL1dlYktpdDIv
VUlQcm9jZXNzL2VmbC9XZWJWaWV3LmNwcCBiL1NvdXJjZS9XZWJLaXQyL1VJUHJvY2Vzcy9lZmwv
V2ViVmlldy5jcHAKaW5kZXggM2FiNGZkNC4uYzNjMDY2NiAxMDA2NDQKLS0tIGEvU291cmNlL1dl
YktpdDIvVUlQcm9jZXNzL2VmbC9XZWJWaWV3LmNwcAorKysgYi9Tb3VyY2UvV2ViS2l0Mi9VSVBy
b2Nlc3MvZWZsL1dlYlZpZXcuY3BwCkBAIC0zNiw3ICszNiw3IEBACiAjaW5jbHVkZSAiUGFnZVZp
ZXdwb3J0Q29udHJvbGxlckNsaWVudEVmbC5oIgogI2luY2x1ZGUgIldlYkNvbnRleHRNZW51UHJv
eHlFZmwuaCIKICNpbmNsdWRlICJXZWJQYWdlUHJveHkuaCIKLSNpbmNsdWRlICJXZWJQb3B1cE1l
bnVQcm94eUVmbC5oIgorI2luY2x1ZGUgIldlYlBvcHVwTWVudUxpc3RlbmVyRWZsLmgiCiAjaW5j
bHVkZSAiZXdrX2NvbnRleHRfcHJpdmF0ZS5oIgogCiAjaWYgRU5BQkxFKEZVTExTQ1JFRU5fQVBJ
KQpAQCAtMzAyLDcgKzMwMiw3IEBAIHZvaWQgV2ViVmlldzo6ZG9uZVdpdGhUb3VjaEV2ZW50KGNv
bnN0IE5hdGl2ZVdlYlRvdWNoRXZlbnQmLCBib29sIC8qd2FzRXZlbnRIYW5kCiAKIFBhc3NSZWZQ
dHI8V2ViUG9wdXBNZW51UHJveHk+IFdlYlZpZXc6OmNyZWF0ZVBvcHVwTWVudVByb3h5KFdlYlBh
Z2VQcm94eSogcGFnZSkKIHsKLSAgICByZXR1cm4gV2ViUG9wdXBNZW51UHJveHlFZmw6OmNyZWF0
ZShtX2V3a1ZpZXcsIHBhZ2UpOworICAgIHJldHVybiBXZWJQb3B1cE1lbnVMaXN0ZW5lckVmbDo6
Y3JlYXRlKHBhZ2UpOwogfQogCiBQYXNzUmVmUHRyPFdlYkNvbnRleHRNZW51UHJveHk+IFdlYlZp
ZXc6OmNyZWF0ZUNvbnRleHRNZW51UHJveHkoV2ViUGFnZVByb3h5KiBwYWdlKQo=
</data>

          </attachment>
      

    </bug>

</bugzilla>