<?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>136146</bug_id>
          
          <creation_ts>2014-08-21 20:54:04 -0700</creation_ts>
          <short_desc>more WEBCORE_EXPORT macros</short_desc>
          <delta_ts>2014-08-21 23:51:37 -0700</delta_ts>
          <reporter_accessible>1</reporter_accessible>
          <cclist_accessible>1</cclist_accessible>
          <classification_id>1</classification_id>
          <classification>Unclassified</classification>
          <product>WebKit</product>
          <component>WebCore Misc.</component>
          <version>528+ (Nightly build)</version>
          <rep_platform>Unspecified</rep_platform>
          <op_sys>Unspecified</op_sys>
          <bug_status>RESOLVED</bug_status>
          <resolution>FIXED</resolution>
          
          
          <bug_file_loc></bug_file_loc>
          <status_whiteboard></status_whiteboard>
          <keywords></keywords>
          <priority>P2</priority>
          <bug_severity>Normal</bug_severity>
          <target_milestone>---</target_milestone>
          
          
          <everconfirmed>1</everconfirmed>
          <reporter name="Alex Christensen">achristensen</reporter>
          <assigned_to name="Alex Christensen">achristensen</assigned_to>
          <cc>bfulgham</cc>
    
    <cc>commit-queue</cc>
          

      

      

      

          <comment_sort_order>oldest_to_newest</comment_sort_order>  
          <long_desc isprivate="0" >
    <commentid>1030653</commentid>
    <comment_count>0</comment_count>
    <who name="Alex Christensen">achristensen</who>
    <bug_when>2014-08-21 20:54:04 -0700</bug_when>
    <thetext>I&apos;m almost done after this.  Just some fine tuning and probably some things I&apos;ve forgotten.</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>1030654</commentid>
    <comment_count>1</comment_count>
      <attachid>236960</attachid>
    <who name="Alex Christensen">achristensen</who>
    <bug_when>2014-08-21 20:56:05 -0700</bug_when>
    <thetext>Created attachment 236960
Patch</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>1030655</commentid>
    <comment_count>2</comment_count>
    <who name="WebKit Commit Bot">commit-queue</who>
    <bug_when>2014-08-21 20:58:08 -0700</bug_when>
    <thetext>Attachment 236960 did not pass style-queue:


ERROR: Source/WebCore/platform/graphics/Color.h:59:  The parameter name &quot;a&quot; adds no information, so it should be removed.  [readability/parameter_name] [5]
ERROR: Source/WebCore/platform/cf/RunLoopObserver.h:41:  The parameter name &quot;callback&quot; adds no information, so it should be removed.  [readability/parameter_name] [5]
ERROR: Source/WebCore/replay/UserInputBridge.h:75:  The parameter name &quot;source&quot; adds no information, so it should be removed.  [readability/parameter_name] [5]
ERROR: Source/WebCore/replay/UserInputBridge.h:77:  The parameter name &quot;source&quot; adds no information, so it should be removed.  [readability/parameter_name] [5]
ERROR: Source/WebCore/replay/UserInputBridge.h:78:  The parameter name &quot;source&quot; adds no information, so it should be removed.  [readability/parameter_name] [5]
ERROR: Source/WebCore/replay/UserInputBridge.h:79:  The parameter name &quot;source&quot; adds no information, so it should be removed.  [readability/parameter_name] [5]
ERROR: Source/WebCore/replay/UserInputBridge.h:80:  The parameter name &quot;source&quot; adds no information, so it should be removed.  [readability/parameter_name] [5]
ERROR: Source/WebCore/replay/UserInputBridge.h:81:  The parameter name &quot;source&quot; adds no information, so it should be removed.  [readability/parameter_name] [5]
ERROR: Source/WebCore/replay/UserInputBridge.h:82:  The parameter name &quot;source&quot; adds no information, so it should be removed.  [readability/parameter_name] [5]
ERROR: Source/WebCore/replay/UserInputBridge.h:83:  The parameter name &quot;source&quot; adds no information, so it should be removed.  [readability/parameter_name] [5]
ERROR: Source/WebCore/replay/UserInputBridge.h:86:  The parameter name &quot;source&quot; adds no information, so it should be removed.  [readability/parameter_name] [5]
ERROR: Source/WebCore/replay/UserInputBridge.h:90:  The parameter name &quot;source&quot; adds no information, so it should be removed.  [readability/parameter_name] [5]
ERROR: Source/WebCore/replay/UserInputBridge.h:91:  The parameter name &quot;source&quot; adds no information, so it should be removed.  [readability/parameter_name] [5]
ERROR: Source/WebCore/replay/UserInputBridge.h:92:  The parameter name &quot;source&quot; adds no information, so it should be removed.  [readability/parameter_name] [5]
ERROR: Source/WebCore/replay/UserInputBridge.h:93:  The parameter name &quot;source&quot; adds no information, so it should be removed.  [readability/parameter_name] [5]
ERROR: Source/WebCore/editing/VisibleSelection.h:90:  The parameter name &quot;granularity&quot; adds no information, so it should be removed.  [readability/parameter_name] [5]
ERROR: Source/WebCore/platform/Scrollbar.h:48:  The parameter name &quot;orientation&quot; adds no information, so it should be removed.  [readability/parameter_name] [5]
ERROR: Source/WebCore/platform/Scrollbar.h:48:  The parameter name &quot;size&quot; adds no information, so it should be removed.  [readability/parameter_name] [5]
ERROR: Source/WebCore/page/scrolling/ScrollingThread.h:49:  Extra space before ( in function call  [whitespace/parens] [4]
ERROR: Source/WebCore/page/scrolling/ScrollingThread.h:53:  Extra space before ( in function call  [whitespace/parens] [4]
ERROR: Source/WebCore/platform/network/ResourceResponseBase.h:59:  The parameter name &quot;url&quot; adds no information, so it should be removed.  [readability/parameter_name] [5]
ERROR: Source/WebCore/platform/network/ResourceResponseBase.h:62:  The parameter name &quot;mimeType&quot; adds no information, so it should be removed.  [readability/parameter_name] [5]
ERROR: Source/WebCore/platform/network/ResourceResponseBase.h:65:  The parameter name &quot;expectedContentLength&quot; adds no information, so it should be removed.  [readability/parameter_name] [5]
ERROR: Source/WebCore/platform/network/ResourceResponseBase.h:68:  The parameter name &quot;name&quot; adds no information, so it should be removed.  [readability/parameter_name] [5]
ERROR: Source/WebCore/editing/VisibleUnits.h:105:  The parameter name &quot;position&quot; adds no information, so it should be removed.  [readability/parameter_name] [5]
ERROR: Source/WebCore/editing/VisibleUnits.h:106:  The parameter name &quot;position&quot; adds no information, so it should be removed.  [readability/parameter_name] [5]
ERROR: Source/WebCore/platform/network/ResourceRequestBase.h:66:  The parameter name &quot;url&quot; adds no information, so it should be removed.  [readability/parameter_name] [5]
ERROR: Source/WebCore/platform/network/ResourceRequestBase.h:71:  The parameter name &quot;cachePolicy&quot; adds no information, so it should be removed.  [readability/parameter_name] [5]
ERROR: Source/WebCore/platform/network/ResourceRequestBase.h:80:  The parameter name &quot;httpMethod&quot; adds no information, so it should be removed.  [readability/parameter_name] [5]
ERROR: Source/WebCore/platform/network/ResourceRequestBase.h:122:  The parameter name &quot;httpBody&quot; adds no information, so it should be removed.  [readability/parameter_name] [5]
ERROR: Source/WebCore/platform/network/cf/ResourceError.h:59:  The parameter name &quot;error&quot; adds no information, so it should be removed.  [readability/parameter_name] [5]
ERROR: Source/WebCore/editing/SmartReplace.h:36:  The parameter name &quot;c&quot; adds no information, so it should be removed.  [readability/parameter_name] [5]
ERROR: Source/WebCore/platform/Widget.h:144:  The parameter name &quot;view&quot; adds no information, so it should be removed.  [readability/parameter_name] [5]
ERROR: Source/WebCore/platform/SharedBuffer.h:61:  The parameter name &quot;vector&quot; adds no information, so it should be removed.  [readability/parameter_name] [5]
ERROR: Source/WebCore/platform/SharedBuffer.h:67:  The parameter name &quot;data&quot; adds no information, so it should be removed.  [readability/parameter_name] [5]
Total errors found: 35 in 183 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>1030658</commentid>
    <comment_count>3</comment_count>
      <attachid>236960</attachid>
    <who name="Benjamin Poulain">benjamin</who>
    <bug_when>2014-08-21 21:02:50 -0700</bug_when>
    <thetext>Comment on attachment 236960
Patch

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

&gt; Source/WebCore/page/UserMessageHandlerDescriptor.h:61
&gt; +    

Noooooo

&gt; Source/WebCore/platform/text/TextStream.h:85
&gt; +    

Noooooooo</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>1030664</commentid>
    <comment_count>4</comment_count>
    <who name="Alex Christensen">achristensen</who>
    <bug_when>2014-08-21 21:40:34 -0700</bug_when>
    <thetext>http://trac.webkit.org/changeset/172849 broke the Windows build.  I&apos;ll commit a fix, too.</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>1030666</commentid>
    <comment_count>5</comment_count>
    <who name="Brent Fulgham">bfulgham</who>
    <bug_when>2014-08-21 22:16:41 -0700</bug_when>
    <thetext>(In reply to comment #4)
&gt; http://trac.webkit.org/changeset/172849 broke the Windows build.  I&apos;ll commit a fix, too.

It looks like you need to define WEBCORE_EXPORT in the WebKit build, or else the WebCore headers it imports will be unusable.</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>1030670</commentid>
    <comment_count>6</comment_count>
    <who name="Alex Christensen">achristensen</who>
    <bug_when>2014-08-21 22:28:54 -0700</bug_when>
    <thetext>https://trac.webkit.org/r172852 fixed my windows build.</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>1030686</commentid>
    <comment_count>7</comment_count>
    <who name="Alex Christensen">achristensen</who>
    <bug_when>2014-08-21 23:51:37 -0700</bug_when>
    <thetext>http://trac.webkit.org/changeset/172855 was necessary, too</thetext>
  </long_desc>
      
          <attachment
              isobsolete="0"
              ispatch="1"
              isprivate="0"
          >
            <attachid>236960</attachid>
            <date>2014-08-21 20:56:05 -0700</date>
            <delta_ts>2014-08-21 21:02:50 -0700</delta_ts>
            <desc>Patch</desc>
            <filename>bug-136146-20140821205557.patch</filename>
            <type>text/plain</type>
            <size>289715</size>
            <attacher name="Alex Christensen">achristensen</attacher>
            
              <data encoding="base64">SW5kZXg6IFNvdXJjZS9XZWJDb3JlL0NoYW5nZUxvZwo9PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09Ci0tLSBTb3VyY2UvV2Vi
Q29yZS9DaGFuZ2VMb2cJKHJldmlzaW9uIDE3Mjg0NykKKysrIFNvdXJjZS9XZWJDb3JlL0NoYW5n
ZUxvZwkod29ya2luZyBjb3B5KQpAQCAtMSwzICsxLDE5NiBAQAorMjAxNC0wOC0yMSAgQWxleCBD
aHJpc3RlbnNlbiAgPGFjaHJpc3RlbnNlbkB3ZWJraXQub3JnPgorCisgICAgICAgIE1vcmUgV0VC
Q09SRV9FWFBPUlQgbWFjcm9zIQorICAgICAgICBodHRwczovL2J1Z3Mud2Via2l0Lm9yZy9zaG93
X2J1Zy5jZ2k/aWQ9MTM2MTQ2CisKKyAgICAgICAgUmV2aWV3ZWQgYnkgTk9CT0RZIChPT1BTISku
CisKKyAgICAgICAgKiBNb2R1bGVzL2dlb2xvY2F0aW9uL0dlb2xvY2F0aW9uQ2xpZW50Lmg6Cisg
ICAgICAgICogTW9kdWxlcy9tZWRpYXN0cmVhbS9Vc2VyTWVkaWFDbGllbnQuaDoKKyAgICAgICAg
KiBNb2R1bGVzL21lZGlhc3RyZWFtL1VzZXJNZWRpYVJlcXVlc3QuaDoKKyAgICAgICAgKiBNb2R1
bGVzL25vdGlmaWNhdGlvbnMvTm90aWZpY2F0aW9uQ2xpZW50Lmg6CisgICAgICAgICogTW9kdWxl
cy9zcGVlY2gvU3BlZWNoU3ludGhlc2lzLmg6CisgICAgICAgICogYmluZGluZ3MvZ2VuZXJpYy9S
dW50aW1lRW5hYmxlZEZlYXR1cmVzLmg6CisgICAgICAgICogYmluZGluZ3MvanMvRE9NV3JhcHBl
cldvcmxkLmg6CisgICAgICAgICogYmluZGluZ3MvanMvR0NDb250cm9sbGVyLmg6CisgICAgICAg
ICogYmluZGluZ3MvanMvSURCQmluZGluZ1V0aWxpdGllcy5oOgorICAgICAgICAqIGJpbmRpbmdz
L2pzL0pTRE9NQmluZGluZy5oOgorICAgICAgICAqIGJpbmRpbmdzL2pzL0pTTm9kZUN1c3RvbS5o
OgorICAgICAgICAqIGJpbmRpbmdzL2pzL0pTTm9kZUxpc3RDdXN0b20uaDoKKyAgICAgICAgKiBi
aW5kaW5ncy9qcy9KU1BsdWdpbkVsZW1lbnRGdW5jdGlvbnMuaDoKKyAgICAgICAgKiBiaW5kaW5n
cy9qcy9TY3JpcHRDb250cm9sbGVyLmg6CisgICAgICAgICogYmluZGluZ3MvanMvU2VyaWFsaXpl
ZFNjcmlwdFZhbHVlLmg6CisgICAgICAgICogY3J5cHRvL1NlcmlhbGl6ZWRDcnlwdG9LZXlXcmFw
Lmg6CisgICAgICAgICogY3NzL0xlbmd0aEZ1bmN0aW9ucy5oOgorICAgICAgICAqIGNzcy9TdHls
ZVByb3BlcnRpZXMuaDoKKyAgICAgICAgKiBjc3MvU3R5bGVTaGVldENvbnRlbnRzLmg6CisgICAg
ICAgICogZG9tL0RldmljZU9yaWVudGF0aW9uQ2xpZW50Lmg6CisgICAgICAgICogZG9tL1Jhbmdl
Lmg6CisgICAgICAgICogZG9tL1NjcmlwdEV4ZWN1dGlvbkNvbnRleHQuaDoKKyAgICAgICAgKiBk
b20vU3R5bGVkRWxlbWVudC5oOgorICAgICAgICAqIGRvbS9UcmVlU2NvcGUuaDoKKyAgICAgICAg
KiBkb20vVUlFdmVudFdpdGhLZXlTdGF0ZS5oOgorICAgICAgICAqIGRvbS9Vc2VyR2VzdHVyZUlu
ZGljYXRvci5oOgorICAgICAgICAqIGRvbS9Vc2VyVHlwaW5nR2VzdHVyZUluZGljYXRvci5oOgor
ICAgICAgICAqIGRvbS9WaWV3cG9ydEFyZ3VtZW50cy5oOgorICAgICAgICAqIGVkaXRpbmcvU21h
cnRSZXBsYWNlLmg6CisgICAgICAgICogZWRpdGluZy9UZXh0SXRlcmF0b3IuaDoKKyAgICAgICAg
KiBlZGl0aW5nL1Zpc2libGVQb3NpdGlvbi5oOgorICAgICAgICAqIGVkaXRpbmcvVmlzaWJsZVNl
bGVjdGlvbi5oOgorICAgICAgICAqIGVkaXRpbmcvVmlzaWJsZVVuaXRzLmg6CisgICAgICAgICog
ZWRpdGluZy9jb2NvYS9IVE1MQ29udmVydGVyLmg6CisgICAgICAgICogZWRpdGluZy9odG1sZWRp
dGluZy5oOgorICAgICAgICAqIGVkaXRpbmcvbWFjL1RleHRBbHRlcm5hdGl2ZVdpdGhSYW5nZS5o
OgorICAgICAgICAqIGVkaXRpbmcvbWFjL1RleHRVbmRvSW5zZXJ0aW9uTWFya3VwTWFjLmg6Cisg
ICAgICAgICogZWRpdGluZy9tYXJrdXAuaDoKKyAgICAgICAgKiBoaXN0b3J5L0hpc3RvcnlJdGVt
LmNwcDoKKyAgICAgICAgKiBoaXN0b3J5L1BhZ2VDYWNoZS5oOgorICAgICAgICAqIGh0bWwvVGlt
ZVJhbmdlcy5oOgorICAgICAgICAqIGh0bWwvcGFyc2VyL0hUTUxQYXJzZXJJZGlvbXMuaDoKKyAg
ICAgICAgKiBpbnNwZWN0b3IvSW5zdHJ1bWVudGluZ0FnZW50cy5oOgorICAgICAgICAqIGxvYWRl
ci9GcmFtZUxvYWRlci5oOgorICAgICAgICAqIGxvYWRlci9SZXNvdXJjZUJ1ZmZlci5oOgorICAg
ICAgICAqIGxvYWRlci9SZXNvdXJjZUxvYWRTY2hlZHVsZXIuaDoKKyAgICAgICAgKiBsb2FkZXIv
UmVzb3VyY2VMb2FkZXIuaDoKKyAgICAgICAgKFdlYkNvcmU6OlJlc291cmNlTG9hZGVyOjpvcmln
aW5hbFJlcXVlc3QpOgorICAgICAgICAqIGxvYWRlci9TdWJmcmFtZUxvYWRlci5oOgorICAgICAg
ICAqIGxvYWRlci9TdWJyZXNvdXJjZUxvYWRlci5oOgorICAgICAgICAqIGxvYWRlci9UZXh0UmVz
b3VyY2VEZWNvZGVyLmg6CisgICAgICAgICogbG9hZGVyL2FwcGNhY2hlL0FwcGxpY2F0aW9uQ2Fj
aGVTdG9yYWdlLmg6CisgICAgICAgICogbG9hZGVyL2NhY2hlL01lbW9yeUNhY2hlLmg6CisgICAg
ICAgICogbG9hZGVyL2ljb24vSWNvbkRhdGFiYXNlQmFzZS5oOgorICAgICAgICAqIGxvYWRlci9p
b3MvRGlza0ltYWdlQ2FjaGVJT1MuaDoKKyAgICAgICAgKiBwYWdlL0Nocm9tZS5oOgorICAgICAg
ICAqIHBhZ2UvU2VjdXJpdHlPcmlnaW4uaDoKKyAgICAgICAgKiBwYWdlL1NlY3VyaXR5UG9saWN5
Lmg6CisgICAgICAgICogcGFnZS9TZXR0aW5ncy5oOgorICAgICAgICAqIHBhZ2UvVXNlckNvbnRl
bnRDb250cm9sbGVyLmg6CisgICAgICAgICogcGFnZS9Vc2VyQ29udGVudFVSTFBhdHRlcm4uaDoK
KyAgICAgICAgKiBwYWdlL1VzZXJNZXNzYWdlSGFuZGxlckRlc2NyaXB0b3IuaDoKKyAgICAgICAg
KiBwYWdlL1ZpZXdwb3J0Q29uZmlndXJhdGlvbi5oOgorICAgICAgICAqIHBhZ2UvVmlzaXRlZExp
bmtTdG9yZS5oOgorICAgICAgICAqIHBhZ2UvV2hlZWxFdmVudERlbHRhVHJhY2tlci5oOgorICAg
ICAgICAqIHBhZ2UvY29jb2EvVXNlckFnZW50Lmg6CisgICAgICAgICogcGFnZS9zY3JvbGxpbmcv
U2Nyb2xsaW5nQ29uc3RyYWludHMuaDoKKyAgICAgICAgKiBwYWdlL3Njcm9sbGluZy9TY3JvbGxp
bmdDb29yZGluYXRvci5oOgorICAgICAgICAqIHBhZ2Uvc2Nyb2xsaW5nL1Njcm9sbGluZ1N0YXRl
Rml4ZWROb2RlLmg6CisgICAgICAgICogcGFnZS9zY3JvbGxpbmcvU2Nyb2xsaW5nU3RhdGVGcmFt
ZVNjcm9sbGluZ05vZGUuaDoKKyAgICAgICAgKiBwYWdlL3Njcm9sbGluZy9TY3JvbGxpbmdTdGF0
ZU5vZGUuaDoKKyAgICAgICAgKiBwYWdlL3Njcm9sbGluZy9TY3JvbGxpbmdTdGF0ZU92ZXJmbG93
U2Nyb2xsaW5nTm9kZS5oOgorICAgICAgICAqIHBhZ2Uvc2Nyb2xsaW5nL1Njcm9sbGluZ1N0YXRl
U2Nyb2xsaW5nTm9kZS5oOgorICAgICAgICAqIHBhZ2Uvc2Nyb2xsaW5nL1Njcm9sbGluZ1N0YXRl
U3RpY2t5Tm9kZS5oOgorICAgICAgICAqIHBhZ2Uvc2Nyb2xsaW5nL1Njcm9sbGluZ1N0YXRlVHJl
ZS5oOgorICAgICAgICAqIHBhZ2Uvc2Nyb2xsaW5nL1Njcm9sbGluZ1RocmVhZC5oOgorICAgICAg
ICAqIHBhZ2Uvc2Nyb2xsaW5nL1Njcm9sbGluZ1RyZWUuaDoKKyAgICAgICAgKiBwYWdlL3Njcm9s
bGluZy9TY3JvbGxpbmdUcmVlT3ZlcmZsb3dTY3JvbGxpbmdOb2RlLmg6CisgICAgICAgICogcGFn
ZS9zY3JvbGxpbmcvU2Nyb2xsaW5nVHJlZVNjcm9sbGluZ05vZGUuaDoKKyAgICAgICAgKiBwYWdl
L3Njcm9sbGluZy9pb3MvU2Nyb2xsaW5nVHJlZUZyYW1lU2Nyb2xsaW5nTm9kZUlPUy5oOgorICAg
ICAgICAqIHBhZ2Uvc2Nyb2xsaW5nL21hYy9TY3JvbGxpbmdUcmVlRml4ZWROb2RlLmg6CisgICAg
ICAgICogcGFnZS9zY3JvbGxpbmcvbWFjL1Njcm9sbGluZ1RyZWVGcmFtZVNjcm9sbGluZ05vZGVN
YWMuaDoKKyAgICAgICAgKiBwYWdlL3Njcm9sbGluZy9tYWMvU2Nyb2xsaW5nVHJlZVN0aWNreU5v
ZGUuaDoKKyAgICAgICAgKiBwbGF0Zm9ybS9DdXJzb3IuaDoKKyAgICAgICAgKiBwbGF0Zm9ybS9E
cmFnSW1hZ2UuaDoKKyAgICAgICAgKiBwbGF0Zm9ybS9GaWxlU3lzdGVtLmg6CisgICAgICAgICog
cGxhdGZvcm0vTGFuZ3VhZ2UuaDoKKyAgICAgICAgKiBwbGF0Zm9ybS9MaW5rSGFzaC5oOgorICAg
ICAgICAqIHBsYXRmb3JtL0xvY2FsaXplZFN0cmluZ3MuaDoKKyAgICAgICAgKiBwbGF0Zm9ybS9M
b2dnaW5nLmg6CisgICAgICAgICogcGxhdGZvcm0vTWVtb3J5UHJlc3N1cmVIYW5kbGVyLmg6Cisg
ICAgICAgICogcGxhdGZvcm0vTm90SW1wbGVtZW50ZWQuaDoKKyAgICAgICAgKiBwbGF0Zm9ybS9Q
bGF0Zm9ybVN0cmF0ZWdpZXMuaDoKKyAgICAgICAgKiBwbGF0Zm9ybS9QdWJsaWNTdWZmaXguaDoK
KyAgICAgICAgKiBwbGF0Zm9ybS9SdW50aW1lQXBwbGljYXRpb25DaGVja3MuaDoKKyAgICAgICAg
KiBwbGF0Zm9ybS9SdW50aW1lQXBwbGljYXRpb25DaGVja3NJT1MuaDoKKyAgICAgICAgKiBwbGF0
Zm9ybS9TY2hlbWVSZWdpc3RyeS5oOgorICAgICAgICAqIHBsYXRmb3JtL1Njcm9sbFZpZXcuaDoK
KyAgICAgICAgKiBwbGF0Zm9ybS9TY3JvbGxhYmxlQXJlYS5oOgorICAgICAgICAqIHBsYXRmb3Jt
L1Njcm9sbGJhci5oOgorICAgICAgICAqIHBsYXRmb3JtL1Njcm9sbGJhclRoZW1lLmg6CisgICAg
ICAgICogcGxhdGZvcm0vU2hhcmVkQnVmZmVyLmg6CisgICAgICAgICogcGxhdGZvcm0vVGhyZWFk
Q2hlY2suaDoKKyAgICAgICAgKiBwbGF0Zm9ybS9UaHJlYWRHbG9iYWxEYXRhLmg6CisgICAgICAg
ICogcGxhdGZvcm0vVGltZXIuaDoKKyAgICAgICAgKiBwbGF0Zm9ybS9VUkwuaDoKKyAgICAgICAg
KiBwbGF0Zm9ybS9VVUlELmg6CisgICAgICAgICogcGxhdGZvcm0vVXNlckFjdGl2aXR5Lmg6Cisg
ICAgICAgICogcGxhdGZvcm0vV2lkZ2V0Lmg6CisgICAgICAgICogcGxhdGZvcm0vY2YvQ0ZVUkxF
eHRyYXMuaDoKKyAgICAgICAgKiBwbGF0Zm9ybS9jZi9SdW5Mb29wT2JzZXJ2ZXIuaDoKKyAgICAg
ICAgKiBwbGF0Zm9ybS9jb2NvYS9TeXN0ZW1WZXJzaW9uLmg6CisgICAgICAgICogcGxhdGZvcm0v
Z3JhcGhpY3MvQ29sb3IuaDoKKyAgICAgICAgKiBwbGF0Zm9ybS9ncmFwaGljcy9GbG9hdFJlY3Qu
aDoKKyAgICAgICAgKiBwbGF0Zm9ybS9ncmFwaGljcy9Gb250Q2FjaGUuaDoKKyAgICAgICAgKiBw
bGF0Zm9ybS9ncmFwaGljcy9HZW9tZXRyeVV0aWxpdGllcy5oOgorICAgICAgICAqIHBsYXRmb3Jt
L2dyYXBoaWNzL0dyYXBoaWNzQ29udGV4dC5oOgorICAgICAgICAqIHBsYXRmb3JtL2dyYXBoaWNz
L0ludFJlY3QuaDoKKyAgICAgICAgKiBwbGF0Zm9ybS9ncmFwaGljcy9MYXlvdXRSZWN0Lmg6Cisg
ICAgICAgICogcGxhdGZvcm0vZ3JhcGhpY3MvU3RyaW5nVHJ1bmNhdG9yLmg6CisgICAgICAgICog
cGxhdGZvcm0vZ3JhcGhpY3MvVGV4dFJ1bi5oOgorICAgICAgICAqIHBsYXRmb3JtL2dyYXBoaWNz
L2NhL1RpbGVDb250cm9sbGVyLmg6CisgICAgICAgICogcGxhdGZvcm0vZ3JhcGhpY3MvY2EvbWFj
L1BsYXRmb3JtQ0FBbmltYXRpb25NYWMuaDoKKyAgICAgICAgKiBwbGF0Zm9ybS9ncmFwaGljcy9j
Zy9HcmFwaGljc0NvbnRleHRDRy5oOgorICAgICAgICAqIHBsYXRmb3JtL2dyYXBoaWNzL21hYy9D
b2xvck1hYy5oOgorICAgICAgICAqIHBsYXRmb3JtL2dyYXBoaWNzL3RyYW5zZm9ybXMvVHJhbnNm
b3JtYXRpb25NYXRyaXguaDoKKyAgICAgICAgKiBwbGF0Zm9ybS9pb3MvRmlsZVN5c3RlbUlPUy5o
OgorICAgICAgICAqIHBsYXRmb3JtL2lvcy9QbGF0Zm9ybUV2ZW50RmFjdG9yeUlPUy5oOgorICAg
ICAgICAqIHBsYXRmb3JtL2lvcy9TZWxlY3Rpb25SZWN0Lmg6CisgICAgICAgICogcGxhdGZvcm0v
aW9zL1N5c3RlbU1lbW9yeS5oOgorICAgICAgICAqIHBsYXRmb3JtL2lvcy9UaWxlQ29udHJvbGxl
ck1lbW9yeUhhbmRsZXJJT1MuaDoKKyAgICAgICAgKiBwbGF0Zm9ybS9pb3MvV2ViVmlkZW9GdWxs
c2NyZWVuSW50ZXJmYWNlQVZLaXQuaDoKKyAgICAgICAgKiBwbGF0Zm9ybS9tYWMvUGxhdGZvcm1F
dmVudEZhY3RvcnlNYWMuaDoKKyAgICAgICAgKiBwbGF0Zm9ybS9tYWMvU2Nyb2xsYmFyVGhlbWVN
YWMuaDoKKyAgICAgICAgKiBwbGF0Zm9ybS9tYWMvV2ViQ29yZU5TVVJMRXh0cmFzLmg6CisgICAg
ICAgICogcGxhdGZvcm0vbWFjL1dlYk5TQXR0cmlidXRlZFN0cmluZ0V4dHJhcy5oOgorICAgICAg
ICAqIHBsYXRmb3JtL25ldHdvcmsvQmxvYlJlZ2lzdHJ5Lmg6CisgICAgICAgICogcGxhdGZvcm0v
bmV0d29yay9Db29raWVTdG9yYWdlLmg6CisgICAgICAgICogcGxhdGZvcm0vbmV0d29yay9ETlMu
aDoKKyAgICAgICAgKiBwbGF0Zm9ybS9uZXR3b3JrL05ldHdvcmtTdGF0ZU5vdGlmaWVyLmg6Cisg
ICAgICAgICogcGxhdGZvcm0vbmV0d29yay9QbGF0Zm9ybUNvb2tpZUphci5oOgorICAgICAgICAq
IHBsYXRmb3JtL25ldHdvcmsvUHJveHlTZXJ2ZXIuaDoKKyAgICAgICAgKiBwbGF0Zm9ybS9uZXR3
b3JrL1Jlc291cmNlRXJyb3JCYXNlLmg6CisgICAgICAgICogcGxhdGZvcm0vbmV0d29yay9SZXNv
dXJjZUhhbmRsZS5oOgorICAgICAgICAqIHBsYXRmb3JtL25ldHdvcmsvUmVzb3VyY2VIYW5kbGVD
bGllbnQuaDoKKyAgICAgICAgKiBwbGF0Zm9ybS9uZXR3b3JrL1Jlc291cmNlUmVxdWVzdEJhc2Uu
aDoKKyAgICAgICAgKiBwbGF0Zm9ybS9uZXR3b3JrL1Jlc291cmNlUmVzcG9uc2VCYXNlLmg6Cisg
ICAgICAgICogcGxhdGZvcm0vbmV0d29yay9TeW5jaHJvbm91c0xvYWRlckNsaWVudC5oOgorICAg
ICAgICAqIHBsYXRmb3JtL25ldHdvcmsvY2YvUmVzb3VyY2VFcnJvci5oOgorICAgICAgICAqIHBs
YXRmb3JtL25ldHdvcmsvY2YvUmVzb3VyY2VSZXF1ZXN0Lmg6CisgICAgICAgICogcGxhdGZvcm0v
bmV0d29yay9jZi9SZXNvdXJjZVJlc3BvbnNlLmg6CisgICAgICAgICogcGxhdGZvcm0vbmV0d29y
ay9pb3MvUXVpY2tMb29rLmg6CisgICAgICAgICogcGxhdGZvcm0vbmV0d29yay9tYWMvQXV0aGVu
dGljYXRpb25NYWMuaDoKKyAgICAgICAgKiBwbGF0Zm9ybS9zcWwvU1FMaXRlRGF0YWJhc2UuY3Bw
OgorICAgICAgICAqIHBsYXRmb3JtL3RleHQvTG9jYWxlVG9TY3JpcHRNYXBwaW5nLmg6CisgICAg
ICAgICogcGxhdGZvcm0vdGV4dC9UZXh0QnJlYWtJdGVyYXRvci5oOgorICAgICAgICAqIHBsYXRm
b3JtL3RleHQvVGV4dEVuY29kaW5nLmg6CisgICAgICAgIChXZWJDb3JlOjpUZXh0RW5jb2Rpbmc6
OmRlY29kZSk6CisgICAgICAgICogcGxhdGZvcm0vdGV4dC9UZXh0RW5jb2RpbmdSZWdpc3RyeS5o
OgorICAgICAgICAqIHBsYXRmb3JtL3RleHQvVGV4dFN0cmVhbS5oOgorICAgICAgICAqIHJlbmRl
cmluZy9SZW5kZXJCbG9jay5oOgorICAgICAgICAqIHJlbmRlcmluZy9SZW5kZXJCb3guaDoKKyAg
ICAgICAgKiByZW5kZXJpbmcvUmVuZGVyRW1iZWRkZWRPYmplY3QuaDoKKyAgICAgICAgKiByZW5k
ZXJpbmcvUmVuZGVyTGF5ZXIuaDoKKyAgICAgICAgKiByZW5kZXJpbmcvUmVuZGVyTGF5ZXJCYWNr
aW5nLmg6CisgICAgICAgICogcmVuZGVyaW5nL1JlbmRlckxheWVyQ29tcG9zaXRvci5oOgorICAg
ICAgICAqIHJlbmRlcmluZy9SZW5kZXJMaXN0SXRlbS5oOgorICAgICAgICAqIHJlbmRlcmluZy9S
ZW5kZXJPYmplY3QuaDoKKyAgICAgICAgKiByZW5kZXJpbmcvUmVuZGVyVGV4dC5oOgorICAgICAg
ICAqIHJlbmRlcmluZy9SZW5kZXJUZXh0Q29udHJvbC5oOgorICAgICAgICAqIHJlbmRlcmluZy9S
ZW5kZXJUaGVtZUlPUy5oOgorICAgICAgICAqIHJlbmRlcmluZy9SZW5kZXJUcmVlQXNUZXh0Lmg6
CisgICAgICAgICogcmVuZGVyaW5nL1JlbmRlclZpZXcuaDoKKyAgICAgICAgKiByZW5kZXJpbmcv
UmVuZGVyV2lkZ2V0Lmg6CisgICAgICAgICogcmVuZGVyaW5nL1Njcm9sbEJlaGF2aW9yLmNwcDoK
KyAgICAgICAgKiByZW5kZXJpbmcvYnJlYWtfbGluZXMuY3BwOgorICAgICAgICAqIHJlbmRlcmlu
Zy9zdHlsZS9SZW5kZXJTdHlsZS5oOgorICAgICAgICAqIHJlcGxheS9Vc2VySW5wdXRCcmlkZ2Uu
aDoKKyAgICAgICAgKiBzdG9yYWdlL1N0b3JhZ2VFdmVudERpc3BhdGNoZXIuaDoKKyAgICAgICAg
KiBzdG9yYWdlL1N0b3JhZ2VNYXAuaDoKKyAgICAgICAgKiBzdG9yYWdlL1N0b3JhZ2VTdHJhdGVn
eS5oOgorICAgICAgICAqIHN0b3JhZ2UvU3RvcmFnZVRyYWNrZXIuaDoKKyAgICAgICAgKiB0ZXN0
aW5nL0ludGVybmFscy5oOgorICAgICAgICAqIHdvcmtlcnMvV29ya2VyVGhyZWFkLmg6CisgICAg
ICAgIEFkZGVkIG1vcmUgV0VCQ09SRV9FWFBPUlQgbWFjcm9zIHdoZXJlIG5lZWRlZC4KKwogMjAx
NC0wOC0yMSAgVGltIEhvcnRvbiAgPHRpbW90aHlfaG9ydG9uQGFwcGxlLmNvbT4KIAogICAgICAg
ICBSZXZlcnQgcjE3MjgzMSwgaXQgYnJva2UgdGhlIFdpbmRvd3MgYnVpbGQuCkluZGV4OiBTb3Vy
Y2UvV2ViQ29yZS9Nb2R1bGVzL2dlb2xvY2F0aW9uL0dlb2xvY2F0aW9uQ2xpZW50LmgKPT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PQotLS0gU291cmNlL1dlYkNvcmUvTW9kdWxlcy9nZW9sb2NhdGlvbi9HZW9sb2NhdGlvbkNs
aWVudC5oCShyZXZpc2lvbiAxNzI4NDcpCisrKyBTb3VyY2UvV2ViQ29yZS9Nb2R1bGVzL2dlb2xv
Y2F0aW9uL0dlb2xvY2F0aW9uQ2xpZW50LmgJKHdvcmtpbmcgY29weSkKQEAgLTU0LDcgKzU0LDcg
QEAgcHJvdGVjdGVkOgogICAgIHZpcnR1YWwgfkdlb2xvY2F0aW9uQ2xpZW50KCkgeyB9CiB9Owog
Ci12b2lkIHByb3ZpZGVHZW9sb2NhdGlvblRvKFBhZ2UqLCBHZW9sb2NhdGlvbkNsaWVudCopOwor
V0VCQ09SRV9FWFBPUlQgdm9pZCBwcm92aWRlR2VvbG9jYXRpb25UbyhQYWdlKiwgR2VvbG9jYXRp
b25DbGllbnQqKTsKIAogfSAvLyBuYW1lc3BhY2UgV2ViQ29yZQogCkluZGV4OiBTb3VyY2UvV2Vi
Q29yZS9Nb2R1bGVzL21lZGlhc3RyZWFtL1VzZXJNZWRpYUNsaWVudC5oCj09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT0KLS0t
IFNvdXJjZS9XZWJDb3JlL01vZHVsZXMvbWVkaWFzdHJlYW0vVXNlck1lZGlhQ2xpZW50LmgJKHJl
dmlzaW9uIDE3Mjg0NykKKysrIFNvdXJjZS9XZWJDb3JlL01vZHVsZXMvbWVkaWFzdHJlYW0vVXNl
ck1lZGlhQ2xpZW50LmgJKHdvcmtpbmcgY29weSkKQEAgLTUxLDcgKzUxLDcgQEAgcHJvdGVjdGVk
OgogICAgIHZpcnR1YWwgflVzZXJNZWRpYUNsaWVudCgpIHsgfQogfTsKIAotdm9pZCBwcm92aWRl
VXNlck1lZGlhVG8oUGFnZSosIFVzZXJNZWRpYUNsaWVudCopOworV0VCQ09SRV9FWFBPUlQgdm9p
ZCBwcm92aWRlVXNlck1lZGlhVG8oUGFnZSosIFVzZXJNZWRpYUNsaWVudCopOwogCiB9IC8vIG5h
bWVzcGFjZSBXZWJDb3JlCiAKSW5kZXg6IFNvdXJjZS9XZWJDb3JlL01vZHVsZXMvbWVkaWFzdHJl
YW0vVXNlck1lZGlhUmVxdWVzdC5oCj09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT0KLS0tIFNvdXJjZS9XZWJDb3JlL01vZHVs
ZXMvbWVkaWFzdHJlYW0vVXNlck1lZGlhUmVxdWVzdC5oCShyZXZpc2lvbiAxNzI4NDcpCisrKyBT
b3VyY2UvV2ViQ29yZS9Nb2R1bGVzL21lZGlhc3RyZWFtL1VzZXJNZWRpYVJlcXVlc3QuaAkod29y
a2luZyBjb3B5KQpAQCAtNjAsMTEgKzYwLDExIEBAIHB1YmxpYzoKICAgICBzdGF0aWMgUGFzc1Jl
ZlB0cjxVc2VyTWVkaWFSZXF1ZXN0PiBjcmVhdGUoU2NyaXB0RXhlY3V0aW9uQ29udGV4dCosIFVz
ZXJNZWRpYUNvbnRyb2xsZXIqLCBjb25zdCBEaWN0aW9uYXJ5JiBvcHRpb25zLCBQYXNzUmVmUHRy
PE5hdmlnYXRvclVzZXJNZWRpYVN1Y2Nlc3NDYWxsYmFjaz4sIFBhc3NSZWZQdHI8TmF2aWdhdG9y
VXNlck1lZGlhRXJyb3JDYWxsYmFjaz4sIEV4Y2VwdGlvbkNvZGUmKTsKICAgICB+VXNlck1lZGlh
UmVxdWVzdCgpOwogCi0gICAgU2VjdXJpdHlPcmlnaW4qIHNlY3VyaXR5T3JpZ2luKCkgY29uc3Q7
CisgICAgV0VCQ09SRV9FWFBPUlQgU2VjdXJpdHlPcmlnaW4qIHNlY3VyaXR5T3JpZ2luKCkgY29u
c3Q7CiAKICAgICB2b2lkIHN0YXJ0KCk7Ci0gICAgdm9pZCB1c2VyTWVkaWFBY2Nlc3NHcmFudGVk
KCk7Ci0gICAgdm9pZCB1c2VyTWVkaWFBY2Nlc3NEZW5pZWQoKTsKKyAgICBXRUJDT1JFX0VYUE9S
VCB2b2lkIHVzZXJNZWRpYUFjY2Vzc0dyYW50ZWQoKTsKKyAgICBXRUJDT1JFX0VYUE9SVCB2b2lk
IHVzZXJNZWRpYUFjY2Vzc0RlbmllZCgpOwogCiBwcml2YXRlOgogICAgIFVzZXJNZWRpYVJlcXVl
c3QoU2NyaXB0RXhlY3V0aW9uQ29udGV4dCosIFVzZXJNZWRpYUNvbnRyb2xsZXIqLCBQYXNzUmVm
UHRyPE1lZGlhQ29uc3RyYWludHM+IGF1ZGlvQ29uc3RyYWludHMsIFBhc3NSZWZQdHI8TWVkaWFD
b25zdHJhaW50cz4gdmlkZW9Db25zdHJhaW50cywgUGFzc1JlZlB0cjxOYXZpZ2F0b3JVc2VyTWVk
aWFTdWNjZXNzQ2FsbGJhY2s+LCBQYXNzUmVmUHRyPE5hdmlnYXRvclVzZXJNZWRpYUVycm9yQ2Fs
bGJhY2s+KTsKSW5kZXg6IFNvdXJjZS9XZWJDb3JlL01vZHVsZXMvbm90aWZpY2F0aW9ucy9Ob3Rp
ZmljYXRpb25DbGllbnQuaAo9PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09Ci0tLSBTb3VyY2UvV2ViQ29yZS9Nb2R1bGVzL25v
dGlmaWNhdGlvbnMvTm90aWZpY2F0aW9uQ2xpZW50LmgJKHJldmlzaW9uIDE3Mjg0NykKKysrIFNv
dXJjZS9XZWJDb3JlL01vZHVsZXMvbm90aWZpY2F0aW9ucy9Ob3RpZmljYXRpb25DbGllbnQuaAko
d29ya2luZyBjb3B5KQpAQCAtOTEsNyArOTEsNyBAQCBwcm90ZWN0ZWQ6CiAgICAgdmlydHVhbCB+
Tm90aWZpY2F0aW9uQ2xpZW50KCkgeyB9CiB9OwogCi12b2lkIHByb3ZpZGVOb3RpZmljYXRpb24o
UGFnZSosIE5vdGlmaWNhdGlvbkNsaWVudCopOworV0VCQ09SRV9FWFBPUlQgdm9pZCBwcm92aWRl
Tm90aWZpY2F0aW9uKFBhZ2UqLCBOb3RpZmljYXRpb25DbGllbnQqKTsKIAogfSAvLyBuYW1lc3Bh
Y2UgV2ViQ29yZQogCkluZGV4OiBTb3VyY2UvV2ViQ29yZS9Nb2R1bGVzL3NwZWVjaC9TcGVlY2hT
eW50aGVzaXMuaAo9PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09Ci0tLSBTb3VyY2UvV2ViQ29yZS9Nb2R1bGVzL3NwZWVjaC9T
cGVlY2hTeW50aGVzaXMuaAkocmV2aXNpb24gMTcyODQ3KQorKysgU291cmNlL1dlYkNvcmUvTW9k
dWxlcy9zcGVlY2gvU3BlZWNoU3ludGhlc2lzLmgJKHdvcmtpbmcgY29weSkKQEAgLTU4LDcgKzU4
LDcgQEAgcHVibGljOgogICAgIGNvbnN0IFZlY3RvcjxSZWZQdHI8U3BlZWNoU3ludGhlc2lzVm9p
Y2U+PiYgZ2V0Vm9pY2VzKCk7CiAgICAgCiAgICAgLy8gVXNlZCBpbiB0ZXN0aW5nIHRvIHVzZSBh
IG1vY2sgcGxhdGZvcm0gc3ludGhlc2l6ZXIKLSAgICB2b2lkIHNldFBsYXRmb3JtU3ludGhlc2l6
ZXIoc3RkOjp1bmlxdWVfcHRyPFBsYXRmb3JtU3BlZWNoU3ludGhlc2l6ZXI+KTsKKyAgICBXRUJD
T1JFX0VYUE9SVCB2b2lkIHNldFBsYXRmb3JtU3ludGhlc2l6ZXIoc3RkOjp1bmlxdWVfcHRyPFBs
YXRmb3JtU3BlZWNoU3ludGhlc2l6ZXI+KTsKICAgICAKIHByaXZhdGU6CiAgICAgU3BlZWNoU3lu
dGhlc2lzKCk7CkluZGV4OiBTb3VyY2UvV2ViQ29yZS9iaW5kaW5ncy9nZW5lcmljL1J1bnRpbWVF
bmFibGVkRmVhdHVyZXMuaAo9PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09Ci0tLSBTb3VyY2UvV2ViQ29yZS9iaW5kaW5ncy9n
ZW5lcmljL1J1bnRpbWVFbmFibGVkRmVhdHVyZXMuaAkocmV2aXNpb24gMTcyODQ3KQorKysgU291
cmNlL1dlYkNvcmUvYmluZGluZ3MvZ2VuZXJpYy9SdW50aW1lRW5hYmxlZEZlYXR1cmVzLmgJKHdv
cmtpbmcgY29weSkKQEAgLTIwMCw3ICsyMDAsNyBAQCBwdWJsaWM6CiAgICAgYm9vbCBnYW1lcGFk
c0VuYWJsZWQoKSBjb25zdCB7IHJldHVybiBtX2FyZUdhbWVwYWRzRW5hYmxlZDsgfQogI2VuZGlm
CiAKLSAgICBzdGF0aWMgUnVudGltZUVuYWJsZWRGZWF0dXJlcyYgc2hhcmVkRmVhdHVyZXMoKTsK
KyAgICBXRUJDT1JFX0VYUE9SVCBzdGF0aWMgUnVudGltZUVuYWJsZWRGZWF0dXJlcyYgc2hhcmVk
RmVhdHVyZXMoKTsKIAogcHJpdmF0ZToKICAgICAvLyBOZXZlciBpbnN0YW50aWF0ZS4KSW5kZXg6
IFNvdXJjZS9XZWJDb3JlL2JpbmRpbmdzL2pzL0RPTVdyYXBwZXJXb3JsZC5oCj09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT0K
LS0tIFNvdXJjZS9XZWJDb3JlL2JpbmRpbmdzL2pzL0RPTVdyYXBwZXJXb3JsZC5oCShyZXZpc2lv
biAxNzI4NDcpCisrKyBTb3VyY2UvV2ViQ29yZS9iaW5kaW5ncy9qcy9ET01XcmFwcGVyV29ybGQu
aAkod29ya2luZyBjb3B5KQpAQCAtNjUsNyArNjUsNyBAQCBwcml2YXRlOgogfTsKIAogRE9NV3Jh
cHBlcldvcmxkJiBub3JtYWxXb3JsZChKU0M6OlZNJik7Ci1ET01XcmFwcGVyV29ybGQmIG1haW5U
aHJlYWROb3JtYWxXb3JsZCgpOworV0VCQ09SRV9FWFBPUlQgRE9NV3JhcHBlcldvcmxkJiBtYWlu
VGhyZWFkTm9ybWFsV29ybGQoKTsKIGlubGluZSBET01XcmFwcGVyV29ybGQmIGRlYnVnZ2VyV29y
bGQoKSB7IHJldHVybiBtYWluVGhyZWFkTm9ybWFsV29ybGQoKTsgfQogaW5saW5lIERPTVdyYXBw
ZXJXb3JsZCYgcGx1Z2luV29ybGQoKSB7IHJldHVybiBtYWluVGhyZWFkTm9ybWFsV29ybGQoKTsg
fQogCkluZGV4OiBTb3VyY2UvV2ViQ29yZS9iaW5kaW5ncy9qcy9HQ0NvbnRyb2xsZXIuaAo9PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09Ci0tLSBTb3VyY2UvV2ViQ29yZS9iaW5kaW5ncy9qcy9HQ0NvbnRyb2xsZXIuaAkocmV2
aXNpb24gMTcyODQ3KQorKysgU291cmNlL1dlYkNvcmUvYmluZGluZ3MvanMvR0NDb250cm9sbGVy
LmgJKHdvcmtpbmcgY29weSkKQEAgLTU4LDcgKzU4LDcgQEAgbmFtZXNwYWNlIFdlYkNvcmUgewog
ICAgIH07CiAKICAgICAvLyBGdW5jdGlvbiB0byBvYnRhaW4gdGhlIGdsb2JhbCBHQyBjb250cm9s
bGVyLgotICAgIEdDQ29udHJvbGxlciYgZ2NDb250cm9sbGVyKCkgUFVSRV9GVU5DVElPTjsKKyAg
ICBXRUJDT1JFX0VYUE9SVCBHQ0NvbnRyb2xsZXImIGdjQ29udHJvbGxlcigpIFBVUkVfRlVOQ1RJ
T047CiAKIH0gLy8gbmFtZXNwYWNlIFdlYkNvcmUKIApJbmRleDogU291cmNlL1dlYkNvcmUvYmlu
ZGluZ3MvanMvSURCQmluZGluZ1V0aWxpdGllcy5oCj09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT0KLS0tIFNvdXJjZS9XZWJD
b3JlL2JpbmRpbmdzL2pzL0lEQkJpbmRpbmdVdGlsaXRpZXMuaAkocmV2aXNpb24gMTcyODQ3KQor
KysgU291cmNlL1dlYkNvcmUvYmluZGluZ3MvanMvSURCQmluZGluZ1V0aWxpdGllcy5oCSh3b3Jr
aW5nIGNvcHkpCkBAIC00OSwxMCArNDksMTAgQEAgUGFzc1JlZlB0cjxJREJLZXk+IGNyZWF0ZUlE
QktleUZyb21TY3JpcAogYm9vbCBjYW5JbmplY3RJREJLZXlJbnRvU2NyaXB0VmFsdWUoRE9NUmVx
dWVzdFN0YXRlKiwgY29uc3QgRGVwcmVjYXRlZDo6U2NyaXB0VmFsdWUmLCBjb25zdCBJREJLZXlQ
YXRoJik7CiBEZXByZWNhdGVkOjpTY3JpcHRWYWx1ZSBkZXNlcmlhbGl6ZUlEQlZhbHVlKERPTVJl
cXVlc3RTdGF0ZSosIFBhc3NSZWZQdHI8U2VyaWFsaXplZFNjcmlwdFZhbHVlPik7CiBEZXByZWNh
dGVkOjpTY3JpcHRWYWx1ZSBkZXNlcmlhbGl6ZUlEQlZhbHVlQnVmZmVyKERPTVJlcXVlc3RTdGF0
ZSosIFBhc3NSZWZQdHI8U2hhcmVkQnVmZmVyPiwgYm9vbCBrZXlJc0RlZmluZWQpOwotRGVwcmVj
YXRlZDo6U2NyaXB0VmFsdWUgZGVzZXJpYWxpemVJREJWYWx1ZUJ1ZmZlcihKU0M6OkV4ZWNTdGF0
ZSosIGNvbnN0IFZlY3Rvcjx1aW50OF90PiYsIGJvb2wga2V5SXNEZWZpbmVkKTsKK1dFQkNPUkVf
RVhQT1JUIERlcHJlY2F0ZWQ6OlNjcmlwdFZhbHVlIGRlc2VyaWFsaXplSURCVmFsdWVCdWZmZXIo
SlNDOjpFeGVjU3RhdGUqLCBjb25zdCBWZWN0b3I8dWludDhfdD4mLCBib29sIGtleUlzRGVmaW5l
ZCk7CiBEZXByZWNhdGVkOjpTY3JpcHRWYWx1ZSBpZGJLZXlUb1NjcmlwdFZhbHVlKERPTVJlcXVl
c3RTdGF0ZSosIFBhc3NSZWZQdHI8SURCS2V5Pik7CiBQYXNzUmVmUHRyPElEQktleT4gc2NyaXB0
VmFsdWVUb0lEQktleShET01SZXF1ZXN0U3RhdGUqLCBjb25zdCBEZXByZWNhdGVkOjpTY3JpcHRW
YWx1ZSYpOwotdm9pZCBnZW5lcmF0ZUluZGV4S2V5c0ZvclZhbHVlKEpTQzo6RXhlY1N0YXRlKiwg
Y29uc3QgSURCSW5kZXhNZXRhZGF0YSYsIGNvbnN0IERlcHJlY2F0ZWQ6OlNjcmlwdFZhbHVlJiBv
YmplY3RWYWx1ZSwgVmVjdG9yPElEQktleURhdGE+JiBpbmRleEtleXMpOworV0VCQ09SRV9FWFBP
UlQgdm9pZCBnZW5lcmF0ZUluZGV4S2V5c0ZvclZhbHVlKEpTQzo6RXhlY1N0YXRlKiwgY29uc3Qg
SURCSW5kZXhNZXRhZGF0YSYsIGNvbnN0IERlcHJlY2F0ZWQ6OlNjcmlwdFZhbHVlJiBvYmplY3RW
YWx1ZSwgVmVjdG9yPElEQktleURhdGE+JiBpbmRleEtleXMpOwogCiB9CiAKSW5kZXg6IFNvdXJj
ZS9XZWJDb3JlL2JpbmRpbmdzL2pzL0pTRE9NQmluZGluZy5oCj09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT0KLS0tIFNvdXJj
ZS9XZWJDb3JlL2JpbmRpbmdzL2pzL0pTRE9NQmluZGluZy5oCShyZXZpc2lvbiAxNzI4NDcpCisr
KyBTb3VyY2UvV2ViQ29yZS9iaW5kaW5ncy9qcy9KU0RPTUJpbmRpbmcuaAkod29ya2luZyBjb3B5
KQpAQCAtNzcsMjAgKzc3LDIwIEBAIHR5cGVkZWYgaW50IEV4Y2VwdGlvbkNvZGU7CiBET01XaW5k
b3cmIGFjdGl2ZURPTVdpbmRvdyhKU0M6OkV4ZWNTdGF0ZSopOwogRE9NV2luZG93JiBmaXJzdERP
TVdpbmRvdyhKU0M6OkV4ZWNTdGF0ZSopOwogCi1KU0M6OkVuY29kZWRKU1ZhbHVlIHJlcG9ydERl
cHJlY2F0ZWRHZXR0ZXJFcnJvcihKU0M6OkV4ZWNTdGF0ZSYsIGNvbnN0IGNoYXIqIGludGVyZmFj
ZU5hbWUsIGNvbnN0IGNoYXIqIGF0dHJpYnV0ZU5hbWUpOwotdm9pZCByZXBvcnREZXByZWNhdGVk
U2V0dGVyRXJyb3IoSlNDOjpFeGVjU3RhdGUmLCBjb25zdCBjaGFyKiBpbnRlcmZhY2VOYW1lLCBj
b25zdCBjaGFyKiBhdHRyaWJ1dGVOYW1lKTsKK1dFQkNPUkVfRVhQT1JUIEpTQzo6RW5jb2RlZEpT
VmFsdWUgcmVwb3J0RGVwcmVjYXRlZEdldHRlckVycm9yKEpTQzo6RXhlY1N0YXRlJiwgY29uc3Qg
Y2hhciogaW50ZXJmYWNlTmFtZSwgY29uc3QgY2hhciogYXR0cmlidXRlTmFtZSk7CitXRUJDT1JF
X0VYUE9SVCB2b2lkIHJlcG9ydERlcHJlY2F0ZWRTZXR0ZXJFcnJvcihKU0M6OkV4ZWNTdGF0ZSYs
IGNvbnN0IGNoYXIqIGludGVyZmFjZU5hbWUsIGNvbnN0IGNoYXIqIGF0dHJpYnV0ZU5hbWUpOwog
CiB2b2lkIHRocm93QXJyYXlFbGVtZW50VHlwZUVycm9yKEpTQzo6RXhlY1N0YXRlJik7CiB2b2lk
IHRocm93QXR0cmlidXRlVHlwZUVycm9yKEpTQzo6RXhlY1N0YXRlJiwgY29uc3QgY2hhciogaW50
ZXJmYWNlTmFtZSwgY29uc3QgY2hhciogYXR0cmlidXRlTmFtZSwgY29uc3QgY2hhciogZXhwZWN0
ZWRUeXBlKTsKLXZvaWQgdGhyb3dTZXF1ZW5jZVR5cGVFcnJvcihKU0M6OkV4ZWNTdGF0ZSYpOwot
dm9pZCB0aHJvd1NldHRlclR5cGVFcnJvcihKU0M6OkV4ZWNTdGF0ZSYsIGNvbnN0IGNoYXIqIGlu
dGVyZmFjZU5hbWUsIGNvbnN0IGNoYXIqIGF0dHJpYnV0ZU5hbWUpOworV0VCQ09SRV9FWFBPUlQg
dm9pZCB0aHJvd1NlcXVlbmNlVHlwZUVycm9yKEpTQzo6RXhlY1N0YXRlJik7CitXRUJDT1JFX0VY
UE9SVCB2b2lkIHRocm93U2V0dGVyVHlwZUVycm9yKEpTQzo6RXhlY1N0YXRlJiwgY29uc3QgY2hh
ciogaW50ZXJmYWNlTmFtZSwgY29uc3QgY2hhciogYXR0cmlidXRlTmFtZSk7CiAKIEpTQzo6RW5j
b2RlZEpTVmFsdWUgdGhyb3dBcmd1bWVudE11c3RCZUVudW1FcnJvcihKU0M6OkV4ZWNTdGF0ZSYs
IHVuc2lnbmVkIGFyZ3VtZW50SW5kZXgsIGNvbnN0IGNoYXIqIGFyZ3VtZW50TmFtZSwgY29uc3Qg
Y2hhciogZnVuY3Rpb25JbnRlcmZhY2VOYW1lLCBjb25zdCBjaGFyKiBmdW5jdGlvbk5hbWUsIGNv
bnN0IGNoYXIqIGV4cGVjdGVkVmFsdWVzKTsKIEpTQzo6RW5jb2RlZEpTVmFsdWUgdGhyb3dBcmd1
bWVudE11c3RCZUZ1bmN0aW9uRXJyb3IoSlNDOjpFeGVjU3RhdGUmLCB1bnNpZ25lZCBhcmd1bWVu
dEluZGV4LCBjb25zdCBjaGFyKiBhcmd1bWVudE5hbWUsIGNvbnN0IGNoYXIqIGZ1bmN0aW9uSW50
ZXJmYWNlTmFtZSwgY29uc3QgY2hhciogZnVuY3Rpb25OYW1lKTsKIEpTQzo6RW5jb2RlZEpTVmFs
dWUgdGhyb3dBcmd1bWVudFR5cGVFcnJvcihKU0M6OkV4ZWNTdGF0ZSYsIHVuc2lnbmVkIGFyZ3Vt
ZW50SW5kZXgsIGNvbnN0IGNoYXIqIGFyZ3VtZW50TmFtZSwgY29uc3QgY2hhciogZnVuY3Rpb25J
bnRlcmZhY2VOYW1lLCBjb25zdCBjaGFyKiBmdW5jdGlvbk5hbWUsIGNvbnN0IGNoYXIqIGV4cGVj
dGVkVHlwZSk7CiBKU0M6OkVuY29kZWRKU1ZhbHVlIHRocm93Q29uc3RydWN0b3JEb2N1bWVudFVu
YXZhaWxhYmxlRXJyb3IoSlNDOjpFeGVjU3RhdGUmLCBjb25zdCBjaGFyKiBpbnRlcmZhY2VOYW1l
KTsKLUpTQzo6RW5jb2RlZEpTVmFsdWUgdGhyb3dHZXR0ZXJUeXBlRXJyb3IoSlNDOjpFeGVjU3Rh
dGUmLCBjb25zdCBjaGFyKiBpbnRlcmZhY2VOYW1lLCBjb25zdCBjaGFyKiBhdHRyaWJ1dGVOYW1l
KTsKLUpTQzo6RW5jb2RlZEpTVmFsdWUgdGhyb3dUaGlzVHlwZUVycm9yKEpTQzo6RXhlY1N0YXRl
JiwgY29uc3QgY2hhciogaW50ZXJmYWNlTmFtZSwgY29uc3QgY2hhciogZnVuY3Rpb25OYW1lKTsK
K1dFQkNPUkVfRVhQT1JUIEpTQzo6RW5jb2RlZEpTVmFsdWUgdGhyb3dHZXR0ZXJUeXBlRXJyb3Io
SlNDOjpFeGVjU3RhdGUmLCBjb25zdCBjaGFyKiBpbnRlcmZhY2VOYW1lLCBjb25zdCBjaGFyKiBh
dHRyaWJ1dGVOYW1lKTsKK1dFQkNPUkVfRVhQT1JUIEpTQzo6RW5jb2RlZEpTVmFsdWUgdGhyb3dU
aGlzVHlwZUVycm9yKEpTQzo6RXhlY1N0YXRlJiwgY29uc3QgY2hhciogaW50ZXJmYWNlTmFtZSwg
Y29uc3QgY2hhciogZnVuY3Rpb25OYW1lKTsKIAogLy8gQmFzZSBjbGFzcyBmb3IgYWxsIGNvbnN0
cnVjdG9yIG9iamVjdHMgaW4gdGhlIEpTQyBiaW5kaW5ncy4KIGNsYXNzIERPTUNvbnN0cnVjdG9y
T2JqZWN0IDogcHVibGljIEpTRE9NV3JhcHBlciB7CkBAIC0xMDksOCArMTA5LDggQEAgcHJvdGVj
dGVkOgogICAgIH0KIH07CiAKLUpTQzo6U3RydWN0dXJlKiBnZXRDYWNoZWRET01TdHJ1Y3R1cmUo
SlNET01HbG9iYWxPYmplY3QqLCBjb25zdCBKU0M6OkNsYXNzSW5mbyopOwotSlNDOjpTdHJ1Y3R1
cmUqIGNhY2hlRE9NU3RydWN0dXJlKEpTRE9NR2xvYmFsT2JqZWN0KiwgSlNDOjpTdHJ1Y3R1cmUq
LCBjb25zdCBKU0M6OkNsYXNzSW5mbyopOworV0VCQ09SRV9FWFBPUlQgSlNDOjpTdHJ1Y3R1cmUq
IGdldENhY2hlZERPTVN0cnVjdHVyZShKU0RPTUdsb2JhbE9iamVjdCosIGNvbnN0IEpTQzo6Q2xh
c3NJbmZvKik7CitXRUJDT1JFX0VYUE9SVCBKU0M6OlN0cnVjdHVyZSogY2FjaGVET01TdHJ1Y3R1
cmUoSlNET01HbG9iYWxPYmplY3QqLCBKU0M6OlN0cnVjdHVyZSosIGNvbnN0IEpTQzo6Q2xhc3NJ
bmZvKik7CiAKIGlubGluZSBKU0RPTUdsb2JhbE9iamVjdCogZGVwcmVjYXRlZEdsb2JhbE9iamVj
dEZvclByb3RvdHlwZShKU0M6OkV4ZWNTdGF0ZSogZXhlYykKIHsKQEAgLTI2MiwxMSArMjYyLDEx
IEBAIHZvaWQgYWRkSW1wdXJlUHJvcGVydHkoY29uc3QgQXRvbWljU3RyaW4KIAogY29uc3QgSlND
OjpIYXNoVGFibGUmIGdldEhhc2hUYWJsZUZvckdsb2JhbERhdGEoSlNDOjpWTSYsIGNvbnN0IEpT
Qzo6SGFzaFRhYmxlJiBzdGF0aWNUYWJsZSk7CiAKLXZvaWQgcmVwb3J0RXhjZXB0aW9uKEpTQzo6
RXhlY1N0YXRlKiwgSlNDOjpKU1ZhbHVlIGV4Y2VwdGlvbiwgQ2FjaGVkU2NyaXB0KiA9IG51bGxw
dHIpOworV0VCQ09SRV9FWFBPUlQgdm9pZCByZXBvcnRFeGNlcHRpb24oSlNDOjpFeGVjU3RhdGUq
LCBKU0M6OkpTVmFsdWUgZXhjZXB0aW9uLCBDYWNoZWRTY3JpcHQqID0gbnVsbHB0cik7CiB2b2lk
IHJlcG9ydEN1cnJlbnRFeGNlcHRpb24oSlNDOjpFeGVjU3RhdGUqKTsKIAogLy8gQ29udmVydCBh
IERPTSBpbXBsZW1lbnRhdGlvbiBleGNlcHRpb24gY29kZSBpbnRvIGEgSmF2YVNjcmlwdCBleGNl
cHRpb24gaW4gdGhlIGV4ZWN1dGlvbiBzdGF0ZS4KLXZvaWQgc2V0RE9NRXhjZXB0aW9uKEpTQzo6
RXhlY1N0YXRlKiwgRXhjZXB0aW9uQ29kZSk7CitXRUJDT1JFX0VYUE9SVCB2b2lkIHNldERPTUV4
Y2VwdGlvbihKU0M6OkV4ZWNTdGF0ZSosIEV4Y2VwdGlvbkNvZGUpOwogCiBKU0M6OkpTVmFsdWUg
anNTdHJpbmcoSlNDOjpFeGVjU3RhdGUqLCBjb25zdCBVUkwmKTsgLy8gZW1wdHkgaWYgdGhlIFVS
TCBpcyBudWxsCiAKQEAgLTQ1MCw3ICs0NTAsNyBAQCB0ZW1wbGF0ZTx0eXBlbmFtZSBULCBzaXpl
X3QgaW5saW5lQ2FwYWNpCiAgICAgcmV0dXJuIEpTQzo6Y29uc3RydWN0QXJyYXkoZXhlYywgbnVs
bHB0ciwgZ2xvYmFsT2JqZWN0LCBsaXN0KTsKIH0KIAotSlNDOjpKU1ZhbHVlIGpzQXJyYXkoSlND
OjpFeGVjU3RhdGUqLCBKU0RPTUdsb2JhbE9iamVjdCosIFBhc3NSZWZQdHI8RE9NU3RyaW5nTGlz
dD4pOworV0VCQ09SRV9FWFBPUlQgSlNDOjpKU1ZhbHVlIGpzQXJyYXkoSlNDOjpFeGVjU3RhdGUq
LCBKU0RPTUdsb2JhbE9iamVjdCosIFBhc3NSZWZQdHI8RE9NU3RyaW5nTGlzdD4pOwogCiBpbmxp
bmUgUGFzc1JlZlB0cjxKU0M6OkFycmF5QnVmZmVyVmlldz4gdG9BcnJheUJ1ZmZlclZpZXcoSlND
OjpKU1ZhbHVlIHZhbHVlKQogewpJbmRleDogU291cmNlL1dlYkNvcmUvYmluZGluZ3MvanMvSlNO
b2RlQ3VzdG9tLmgKPT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PQotLS0gU291cmNlL1dlYkNvcmUvYmluZGluZ3MvanMvSlNO
b2RlQ3VzdG9tLmgJKHJldmlzaW9uIDE3Mjg0NykKKysrIFNvdXJjZS9XZWJDb3JlL2JpbmRpbmdz
L2pzL0pTTm9kZUN1c3RvbS5oCSh3b3JraW5nIGNvcHkpCkBAIC0zMyw4ICszMyw4IEBACiAKIG5h
bWVzcGFjZSBXZWJDb3JlIHsKIAotSlNDOjpKU1ZhbHVlIGNyZWF0ZVdyYXBwZXIoSlNDOjpFeGVj
U3RhdGUqLCBKU0RPTUdsb2JhbE9iamVjdCosIE5vZGUqKTsKLUpTQzo6SlNPYmplY3QqIGdldE91
dE9mTGluZUNhY2hlZFdyYXBwZXIoSlNET01HbG9iYWxPYmplY3QqLCBOb2RlKik7CitXRUJDT1JF
X0VYUE9SVCBKU0M6OkpTVmFsdWUgY3JlYXRlV3JhcHBlcihKU0M6OkV4ZWNTdGF0ZSosIEpTRE9N
R2xvYmFsT2JqZWN0KiwgTm9kZSopOworV0VCQ09SRV9FWFBPUlQgSlNDOjpKU09iamVjdCogZ2V0
T3V0T2ZMaW5lQ2FjaGVkV3JhcHBlcihKU0RPTUdsb2JhbE9iamVjdCosIE5vZGUqKTsKIAogaW5s
aW5lIEpTQzo6SlNWYWx1ZSB0b0pTKEpTQzo6RXhlY1N0YXRlKiBleGVjLCBKU0RPTUdsb2JhbE9i
amVjdCogZ2xvYmFsT2JqZWN0LCBOb2RlKiBub2RlKQogewpJbmRleDogU291cmNlL1dlYkNvcmUv
YmluZGluZ3MvanMvSlNOb2RlTGlzdEN1c3RvbS5oCj09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT0KLS0tIFNvdXJjZS9XZWJD
b3JlL2JpbmRpbmdzL2pzL0pTTm9kZUxpc3RDdXN0b20uaAkocmV2aXNpb24gMTcyODQ3KQorKysg
U291cmNlL1dlYkNvcmUvYmluZGluZ3MvanMvSlNOb2RlTGlzdEN1c3RvbS5oCSh3b3JraW5nIGNv
cHkpCkBAIC0zMSw3ICszMSw3IEBACiAKIG5hbWVzcGFjZSBXZWJDb3JlIHsKIAotSlNDOjpKU1Zh
bHVlIGNyZWF0ZVdyYXBwZXIoSlNET01HbG9iYWxPYmplY3QmLCBOb2RlTGlzdCYpOworV0VCQ09S
RV9FWFBPUlQgSlNDOjpKU1ZhbHVlIGNyZWF0ZVdyYXBwZXIoSlNET01HbG9iYWxPYmplY3QmLCBO
b2RlTGlzdCYpOwogCiBBTFdBWVNfSU5MSU5FIEpTQzo6SlNWYWx1ZSB0b0pTKEpTQzo6RXhlY1N0
YXRlKiwgSlNET01HbG9iYWxPYmplY3QqIGdsb2JhbE9iamVjdCwgTm9kZUxpc3QqIG5vZGVMaXN0
KQogewpJbmRleDogU291cmNlL1dlYkNvcmUvYmluZGluZ3MvanMvSlNQbHVnaW5FbGVtZW50RnVu
Y3Rpb25zLmgKPT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PQotLS0gU291cmNlL1dlYkNvcmUvYmluZGluZ3MvanMvSlNQbHVn
aW5FbGVtZW50RnVuY3Rpb25zLmgJKHJldmlzaW9uIDE3Mjg0NykKKysrIFNvdXJjZS9XZWJDb3Jl
L2JpbmRpbmdzL2pzL0pTUGx1Z2luRWxlbWVudEZ1bmN0aW9ucy5oCSh3b3JraW5nIGNvcHkpCkBA
IC0zNiw3ICszNiw3IEBAIG5hbWVzcGFjZSBXZWJDb3JlIHsKICAgICAvLyBKYXZhU2NyaXB0IGFj
Y2VzcyB0byBwbHVnLWluLWV4cG9ydGVkIHByb3BlcnRpZXMgZm9yIEpTSFRNTEFwcGxldEVsZW1l
bnQsIEpTSFRNTEVtYmVkRWxlbWVudCBhbmQgSlNIVE1MT2JqZWN0RWxlbWVudC4KIAogICAgIEpT
Qzo6QmluZGluZ3M6Okluc3RhbmNlKiBwbHVnaW5JbnN0YW5jZShIVE1MRWxlbWVudCYpOwotICAg
IEpTQzo6SlNPYmplY3QqIHBsdWdpblNjcmlwdE9iamVjdChKU0M6OkV4ZWNTdGF0ZSosIEpTSFRN
TEVsZW1lbnQqKTsKKyAgICBXRUJDT1JFX0VYUE9SVCBKU0M6OkpTT2JqZWN0KiBwbHVnaW5TY3Jp
cHRPYmplY3QoSlNDOjpFeGVjU3RhdGUqLCBKU0hUTUxFbGVtZW50Kik7CiAKICAgICBKU0M6OkVu
Y29kZWRKU1ZhbHVlIHBsdWdpbkVsZW1lbnRQcm9wZXJ0eUdldHRlcihKU0M6OkV4ZWNTdGF0ZSos
IEpTQzo6SlNPYmplY3QqLCBKU0M6OkVuY29kZWRKU1ZhbHVlLCBKU0M6OlByb3BlcnR5TmFtZSk7
CiAgICAgYm9vbCBwbHVnaW5FbGVtZW50Q3VzdG9tR2V0T3duUHJvcGVydHlTbG90KEpTQzo6RXhl
Y1N0YXRlKiwgSlNDOjpQcm9wZXJ0eU5hbWUsIEpTQzo6UHJvcGVydHlTbG90JiwgSlNIVE1MRWxl
bWVudCopOwpJbmRleDogU291cmNlL1dlYkNvcmUvYmluZGluZ3MvanMvU2NyaXB0Q29udHJvbGxl
ci5oCj09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT0KLS0tIFNvdXJjZS9XZWJDb3JlL2JpbmRpbmdzL2pzL1NjcmlwdENvbnRy
b2xsZXIuaAkocmV2aXNpb24gMTcyODQ3KQorKysgU291cmNlL1dlYkNvcmUvYmluZGluZ3MvanMv
U2NyaXB0Q29udHJvbGxlci5oCSh3b3JraW5nIGNvcHkpCkBAIC03Nyw3ICs3Nyw3IEBAIHB1Ymxp
YzoKICAgICBleHBsaWNpdCBTY3JpcHRDb250cm9sbGVyKEZyYW1lJik7CiAgICAgflNjcmlwdENv
bnRyb2xsZXIoKTsKIAotICAgIHN0YXRpYyBQYXNzUmVmUHRyPERPTVdyYXBwZXJXb3JsZD4gY3Jl
YXRlV29ybGQoKTsKKyAgICBXRUJDT1JFX0VYUE9SVCBzdGF0aWMgUGFzc1JlZlB0cjxET01XcmFw
cGVyV29ybGQ+IGNyZWF0ZVdvcmxkKCk7CiAKICAgICBKU0RPTVdpbmRvd1NoZWxsKiBjcmVhdGVX
aW5kb3dTaGVsbChET01XcmFwcGVyV29ybGQmKTsKICAgICB2b2lkIGRlc3Ryb3lXaW5kb3dTaGVs
bChET01XcmFwcGVyV29ybGQmKTsKQEAgLTEwMiw4ICsxMDIsOCBAQCBwdWJsaWM6CiAgICAgc3Rh
dGljIHZvaWQgZ2V0QWxsV29ybGRzKFZlY3RvcjxSZWY8RE9NV3JhcHBlcldvcmxkPj4mKTsKIAog
ICAgIERlcHJlY2F0ZWQ6OlNjcmlwdFZhbHVlIGV4ZWN1dGVTY3JpcHQoY29uc3QgU2NyaXB0U291
cmNlQ29kZSYpOwotICAgIERlcHJlY2F0ZWQ6OlNjcmlwdFZhbHVlIGV4ZWN1dGVTY3JpcHQoY29u
c3QgU3RyaW5nJiBzY3JpcHQsIGJvb2wgZm9yY2VVc2VyR2VzdHVyZSA9IGZhbHNlKTsKLSAgICBE
ZXByZWNhdGVkOjpTY3JpcHRWYWx1ZSBleGVjdXRlU2NyaXB0SW5Xb3JsZChET01XcmFwcGVyV29y
bGQmLCBjb25zdCBTdHJpbmcmIHNjcmlwdCwgYm9vbCBmb3JjZVVzZXJHZXN0dXJlID0gZmFsc2Up
OworICAgIFdFQkNPUkVfRVhQT1JUIERlcHJlY2F0ZWQ6OlNjcmlwdFZhbHVlIGV4ZWN1dGVTY3Jp
cHQoY29uc3QgU3RyaW5nJiBzY3JpcHQsIGJvb2wgZm9yY2VVc2VyR2VzdHVyZSA9IGZhbHNlKTsK
KyAgICBXRUJDT1JFX0VYUE9SVCBEZXByZWNhdGVkOjpTY3JpcHRWYWx1ZSBleGVjdXRlU2NyaXB0
SW5Xb3JsZChET01XcmFwcGVyV29ybGQmLCBjb25zdCBTdHJpbmcmIHNjcmlwdCwgYm9vbCBmb3Jj
ZVVzZXJHZXN0dXJlID0gZmFsc2UpOwogCiAgICAgLy8gUmV0dXJucyB0cnVlIGlmIGFyZ3VtZW50
IGlzIGEgSmF2YVNjcmlwdCBVUkwuCiAgICAgYm9vbCBleGVjdXRlSWZKYXZhU2NyaXB0VVJMKGNv
bnN0IFVSTCYsIFNob3VsZFJlcGxhY2VEb2N1bWVudElmSmF2YVNjcmlwdFVSTCBzaG91bGRSZXBs
YWNlRG9jdW1lbnRJZkphdmFTY3JpcHRVUkwgPSBSZXBsYWNlRG9jdW1lbnRJZkphdmFTY3JpcHRV
UkwpOwpAQCAtMTIwLDEwICsxMjAsMTAgQEAgcHVibGljOgogICAgIHZvaWQgZW5hYmxlRXZhbCgp
OwogICAgIHZvaWQgZGlzYWJsZUV2YWwoY29uc3QgU3RyaW5nJiBlcnJvck1lc3NhZ2UpOwogCi0g
ICAgc3RhdGljIGJvb2wgcHJvY2Vzc2luZ1VzZXJHZXN0dXJlKCk7CisgICAgV0VCQ09SRV9FWFBP
UlQgc3RhdGljIGJvb2wgcHJvY2Vzc2luZ1VzZXJHZXN0dXJlKCk7CiAKICAgICBzdGF0aWMgYm9v
bCBjYW5BY2Nlc3NGcm9tQ3VycmVudE9yaWdpbihGcmFtZSopOwotICAgIGJvb2wgY2FuRXhlY3V0
ZVNjcmlwdHMoUmVhc29uRm9yQ2FsbGluZ0NhbkV4ZWN1dGVTY3JpcHRzKTsKKyAgICBXRUJDT1JF
X0VYUE9SVCBib29sIGNhbkV4ZWN1dGVTY3JpcHRzKFJlYXNvbkZvckNhbGxpbmdDYW5FeGVjdXRl
U2NyaXB0cyk7CiAKICAgICAvLyBEZWJ1Z2dlciBjYW4gYmUgMCB0byBkZXRhY2ggYW55IGV4aXN0
aW5nIERlYnVnZ2VyLgogICAgIHZvaWQgYXR0YWNoRGVidWdnZXIoSlNDOjpEZWJ1Z2dlciopOyAv
LyBBdHRhY2hlcy9kZXRhY2hlcyBpbiBhbGwgd29ybGRzL3dpbmRvdyBzaGVsbHMuCkBAIC0xNDEs
NyArMTQxLDcgQEAgcHVibGljOgogICAgIHZvaWQgbmFtZWRJdGVtUmVtb3ZlZChIVE1MRG9jdW1l
bnQqLCBjb25zdCBBdG9taWNTdHJpbmcmKSB7IH0KIAogICAgIHZvaWQgY2xlYXJTY3JpcHRPYmpl
Y3RzKCk7Ci0gICAgdm9pZCBjbGVhbnVwU2NyaXB0T2JqZWN0c0ZvclBsdWdpbih2b2lkKik7Cisg
ICAgV0VCQ09SRV9FWFBPUlQgdm9pZCBjbGVhbnVwU2NyaXB0T2JqZWN0c0ZvclBsdWdpbih2b2lk
Kik7CiAKICAgICB2b2lkIHVwZGF0ZVBsYXRmb3JtU2NyaXB0T2JqZWN0cygpOwogCkBAIC0xNDks
MjggKzE0OSwyOCBAQCBwdWJsaWM6CiAgICAgSlNDOjpCaW5kaW5nczo6Um9vdE9iamVjdCogYmlu
ZGluZ1Jvb3RPYmplY3QoKTsKICAgICBKU0M6OkJpbmRpbmdzOjpSb290T2JqZWN0KiBjYWNoZWFi
bGVCaW5kaW5nUm9vdE9iamVjdCgpOwogCi0gICAgUGFzc1JlZlB0cjxKU0M6OkJpbmRpbmdzOjpS
b290T2JqZWN0PiBjcmVhdGVSb290T2JqZWN0KHZvaWQqIG5hdGl2ZUhhbmRsZSk7CisgICAgV0VC
Q09SRV9FWFBPUlQgUGFzc1JlZlB0cjxKU0M6OkJpbmRpbmdzOjpSb290T2JqZWN0PiBjcmVhdGVS
b290T2JqZWN0KHZvaWQqIG5hdGl2ZUhhbmRsZSk7CiAKICNpZiBFTkFCTEUoSU5TUEVDVE9SKQog
ICAgIHZvaWQgY29sbGVjdElzb2xhdGVkQ29udGV4dHMoVmVjdG9yPHN0ZDo6cGFpcjxKU0M6OkV4
ZWNTdGF0ZSosIFNlY3VyaXR5T3JpZ2luKj4+Jik7CiAjZW5kaWYKIAogI2lmIFBMQVRGT1JNKENP
Q09BKQotICAgIFdlYlNjcmlwdE9iamVjdCogd2luZG93U2NyaXB0T2JqZWN0KCk7Ci0gICAgSlND
b250ZXh0ICpqYXZhU2NyaXB0Q29udGV4dCgpOworICAgIFdFQkNPUkVfRVhQT1JUIFdlYlNjcmlw
dE9iamVjdCogd2luZG93U2NyaXB0T2JqZWN0KCk7CisgICAgV0VCQ09SRV9FWFBPUlQgSlNDb250
ZXh0ICpqYXZhU2NyaXB0Q29udGV4dCgpOwogI2VuZGlmCiAKLSAgICBKU0M6OkpTT2JqZWN0KiBq
c09iamVjdEZvclBsdWdpbkVsZW1lbnQoSFRNTFBsdWdJbkVsZW1lbnQqKTsKKyAgICBXRUJDT1JF
X0VYUE9SVCBKU0M6OkpTT2JqZWN0KiBqc09iamVjdEZvclBsdWdpbkVsZW1lbnQoSFRNTFBsdWdJ
bkVsZW1lbnQqKTsKICAgICAKICNpZiBFTkFCTEUoTkVUU0NBUEVfUExVR0lOX0FQSSkKICAgICBO
UE9iamVjdCogY3JlYXRlU2NyaXB0T2JqZWN0Rm9yUGx1Z2luRWxlbWVudChIVE1MUGx1Z0luRWxl
bWVudCopOwotICAgIE5QT2JqZWN0KiB3aW5kb3dTY3JpcHROUE9iamVjdCgpOworICAgIFdFQkNP
UkVfRVhQT1JUIE5QT2JqZWN0KiB3aW5kb3dTY3JpcHROUE9iamVjdCgpOwogI2VuZGlmCiAKICAg
ICBib29sIHNob3VsZEJ5cGFzc01haW5Xb3JsZENvbnRlbnRTZWN1cml0eVBvbGljeSgpOwogCiBw
cml2YXRlOgotICAgIEpTRE9NV2luZG93U2hlbGwqIGluaXRTY3JpcHQoRE9NV3JhcHBlcldvcmxk
Jik7CisgICAgV0VCQ09SRV9FWFBPUlQgSlNET01XaW5kb3dTaGVsbCogaW5pdFNjcmlwdChET01X
cmFwcGVyV29ybGQmKTsKIAogICAgIHZvaWQgZGlzY29ubmVjdFBsYXRmb3JtU2NyaXB0T2JqZWN0
cygpOwogCkluZGV4OiBTb3VyY2UvV2ViQ29yZS9iaW5kaW5ncy9qcy9TZXJpYWxpemVkU2NyaXB0
VmFsdWUuaAo9PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09Ci0tLSBTb3VyY2UvV2ViQ29yZS9iaW5kaW5ncy9qcy9TZXJpYWxp
emVkU2NyaXB0VmFsdWUuaAkocmV2aXNpb24gMTcyODQ3KQorKysgU291cmNlL1dlYkNvcmUvYmlu
ZGluZ3MvanMvU2VyaWFsaXplZFNjcmlwdFZhbHVlLmgJKHdvcmtpbmcgY29weSkKQEAgLTY3LDkg
KzY3LDkgQEAgY2xhc3MgU2VyaWFsaXplZFNjcmlwdFZhbHVlIDoKICAgICBwdWJsaWMgUmVmQ291
bnRlZDxTZXJpYWxpemVkU2NyaXB0VmFsdWU+IHsKICNlbmRpZgogcHVibGljOgotICAgIHN0YXRp
YyBQYXNzUmVmUHRyPFNlcmlhbGl6ZWRTY3JpcHRWYWx1ZT4gY3JlYXRlKEpTQzo6RXhlY1N0YXRl
KiwgSlNDOjpKU1ZhbHVlLCBNZXNzYWdlUG9ydEFycmF5KiwgQXJyYXlCdWZmZXJBcnJheSosIFNl
cmlhbGl6YXRpb25FcnJvck1vZGUgPSBUaHJvd2luZyk7CisgICAgV0VCQ09SRV9FWFBPUlQgc3Rh
dGljIFBhc3NSZWZQdHI8U2VyaWFsaXplZFNjcmlwdFZhbHVlPiBjcmVhdGUoSlNDOjpFeGVjU3Rh
dGUqLCBKU0M6OkpTVmFsdWUsIE1lc3NhZ2VQb3J0QXJyYXkqLCBBcnJheUJ1ZmZlckFycmF5Kiwg
U2VyaWFsaXphdGlvbkVycm9yTW9kZSA9IFRocm93aW5nKTsKIAotICAgIHN0YXRpYyBQYXNzUmVm
UHRyPFNlcmlhbGl6ZWRTY3JpcHRWYWx1ZT4gY3JlYXRlKGNvbnN0IFN0cmluZyYpOworICAgIFdF
QkNPUkVfRVhQT1JUIHN0YXRpYyBQYXNzUmVmUHRyPFNlcmlhbGl6ZWRTY3JpcHRWYWx1ZT4gY3Jl
YXRlKGNvbnN0IFN0cmluZyYpOwogICAgIHN0YXRpYyBQYXNzUmVmUHRyPFNlcmlhbGl6ZWRTY3Jp
cHRWYWx1ZT4gYWRvcHQoVmVjdG9yPHVpbnQ4X3Q+JiBidWZmZXIpCiAgICAgewogICAgICAgICBy
ZXR1cm4gYWRvcHRSZWYobmV3IFNlcmlhbGl6ZWRTY3JpcHRWYWx1ZShidWZmZXIpKTsKQEAgLTc3
LDE1ICs3NywxNSBAQCBwdWJsaWM6CiAKICAgICBzdGF0aWMgUGFzc1JlZlB0cjxTZXJpYWxpemVk
U2NyaXB0VmFsdWU+IG51bGxWYWx1ZSgpOwogCi0gICAgSlNDOjpKU1ZhbHVlIGRlc2VyaWFsaXpl
KEpTQzo6RXhlY1N0YXRlKiwgSlNDOjpKU0dsb2JhbE9iamVjdCosIE1lc3NhZ2VQb3J0QXJyYXkq
LCBTZXJpYWxpemF0aW9uRXJyb3JNb2RlID0gVGhyb3dpbmcpOworICAgIFdFQkNPUkVfRVhQT1JU
IEpTQzo6SlNWYWx1ZSBkZXNlcmlhbGl6ZShKU0M6OkV4ZWNTdGF0ZSosIEpTQzo6SlNHbG9iYWxP
YmplY3QqLCBNZXNzYWdlUG9ydEFycmF5KiwgU2VyaWFsaXphdGlvbkVycm9yTW9kZSA9IFRocm93
aW5nKTsKIAogICAgIHN0YXRpYyB1aW50MzJfdCB3aXJlRm9ybWF0VmVyc2lvbigpOwogCiAgICAg
U3RyaW5nIHRvU3RyaW5nKCk7CiAKICAgICAvLyBBUEkgaW1wbGVtZW50YXRpb24gaGVscGVycy4g
VGhlc2UgZG9uJ3QgZXhwb3NlIHNwZWNpYWwgYmVoYXZpb3IgZm9yIEFycmF5QnVmZmVycyBvciBN
ZXNzYWdlUG9ydHMuCi0gICAgc3RhdGljIFBhc3NSZWZQdHI8U2VyaWFsaXplZFNjcmlwdFZhbHVl
PiBjcmVhdGUoSlNDb250ZXh0UmVmLCBKU1ZhbHVlUmVmLCBKU1ZhbHVlUmVmKiBleGNlcHRpb24p
OwotICAgIEpTVmFsdWVSZWYgZGVzZXJpYWxpemUoSlNDb250ZXh0UmVmLCBKU1ZhbHVlUmVmKiBl
eGNlcHRpb24pOworICAgIFdFQkNPUkVfRVhQT1JUIHN0YXRpYyBQYXNzUmVmUHRyPFNlcmlhbGl6
ZWRTY3JpcHRWYWx1ZT4gY3JlYXRlKEpTQ29udGV4dFJlZiwgSlNWYWx1ZVJlZiwgSlNWYWx1ZVJl
ZiogZXhjZXB0aW9uKTsKKyAgICBXRUJDT1JFX0VYUE9SVCBKU1ZhbHVlUmVmIGRlc2VyaWFsaXpl
KEpTQ29udGV4dFJlZiwgSlNWYWx1ZVJlZiogZXhjZXB0aW9uKTsKIAogICAgIGNvbnN0IFZlY3Rv
cjx1aW50OF90PiYgZGF0YSgpIGNvbnN0IHsgcmV0dXJuIG1fZGF0YTsgfQogICAgIGJvb2wgaGFz
QmxvYlVSTHMoKSBjb25zdCB7IHJldHVybiAhbV9ibG9iVVJMcy5pc0VtcHR5KCk7IH0KQEAgLTEw
Myw3ICsxMDMsNyBAQCBwdWJsaWM6CiAgICAgfQogICAgIGNvbnN0IFZlY3Rvcjx1aW50OF90PiYg
dG9XaXJlQnl0ZXMoKSBjb25zdCB7IHJldHVybiBtX2RhdGE7IH0KIAotICAgIH5TZXJpYWxpemVk
U2NyaXB0VmFsdWUoKTsKKyAgICBXRUJDT1JFX0VYUE9SVCB+U2VyaWFsaXplZFNjcmlwdFZhbHVl
KCk7CiAKIHByaXZhdGU6CiAgICAgdHlwZWRlZiBWZWN0b3I8SlNDOjpBcnJheUJ1ZmZlckNvbnRl
bnRzPiBBcnJheUJ1ZmZlckNvbnRlbnRzQXJyYXk7CkBAIC0xMTMsNyArMTEzLDcgQEAgcHJpdmF0
ZToKICAgICB2b2lkIGFkZEJsb2JVUkwoY29uc3QgU3RyaW5nJik7CiAKICAgICBTZXJpYWxpemVk
U2NyaXB0VmFsdWUoY29uc3QgVmVjdG9yPHVuc2lnbmVkIGNoYXI+Jik7Ci0gICAgU2VyaWFsaXpl
ZFNjcmlwdFZhbHVlKFZlY3Rvcjx1bnNpZ25lZCBjaGFyPiYpOworICAgIFdFQkNPUkVfRVhQT1JU
IFNlcmlhbGl6ZWRTY3JpcHRWYWx1ZShWZWN0b3I8dW5zaWduZWQgY2hhcj4mKTsKICAgICBTZXJp
YWxpemVkU2NyaXB0VmFsdWUoVmVjdG9yPHVuc2lnbmVkIGNoYXI+JiwgVmVjdG9yPFN0cmluZz4m
IGJsb2JVUkxzKTsKICAgICBTZXJpYWxpemVkU2NyaXB0VmFsdWUoVmVjdG9yPHVuc2lnbmVkIGNo
YXI+JiwgVmVjdG9yPFN0cmluZz4mIGJsb2JVUkxzLCBQYXNzT3duUHRyPEFycmF5QnVmZmVyQ29u
dGVudHNBcnJheT4pOwogCkluZGV4OiBTb3VyY2UvV2ViQ29yZS9jcnlwdG8vU2VyaWFsaXplZENy
eXB0b0tleVdyYXAuaAo9PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09Ci0tLSBTb3VyY2UvV2ViQ29yZS9jcnlwdG8vU2VyaWFs
aXplZENyeXB0b0tleVdyYXAuaAkocmV2aXNpb24gMTcyODQ3KQorKysgU291cmNlL1dlYkNvcmUv
Y3J5cHRvL1NlcmlhbGl6ZWRDcnlwdG9LZXlXcmFwLmgJKHdvcmtpbmcgY29weSkKQEAgLTMzLDEw
ICszMywxMCBAQAogCiBuYW1lc3BhY2UgV2ViQ29yZSB7CiAKLWJvb2wgZ2V0RGVmYXVsdFdlYkNy
eXB0b01hc3RlcktleShWZWN0b3I8dWludDhfdD4mKTsKK1dFQkNPUkVfRVhQT1JUIGJvb2wgZ2V0
RGVmYXVsdFdlYkNyeXB0b01hc3RlcktleShWZWN0b3I8dWludDhfdD4mKTsKIAotYm9vbCB3cmFw
U2VyaWFsaXplZENyeXB0b0tleShjb25zdCBWZWN0b3I8dWludDhfdD4mIG1hc3RlcktleSwgY29u
c3QgVmVjdG9yPHVpbnQ4X3Q+JiBrZXksIFZlY3Rvcjx1aW50OF90PiYgcmVzdWx0KTsKLWJvb2wg
dW53cmFwU2VyaWFsaXplZENyeXB0b0tleShjb25zdCBWZWN0b3I8dWludDhfdD4mIG1hc3Rlcktl
eSwgY29uc3QgVmVjdG9yPHVpbnQ4X3Q+JiB3cmFwcGVkS2V5LCBWZWN0b3I8dWludDhfdD4mIGtl
eSk7CitXRUJDT1JFX0VYUE9SVCBib29sIHdyYXBTZXJpYWxpemVkQ3J5cHRvS2V5KGNvbnN0IFZl
Y3Rvcjx1aW50OF90PiYgbWFzdGVyS2V5LCBjb25zdCBWZWN0b3I8dWludDhfdD4mIGtleSwgVmVj
dG9yPHVpbnQ4X3Q+JiByZXN1bHQpOworV0VCQ09SRV9FWFBPUlQgYm9vbCB1bndyYXBTZXJpYWxp
emVkQ3J5cHRvS2V5KGNvbnN0IFZlY3Rvcjx1aW50OF90PiYgbWFzdGVyS2V5LCBjb25zdCBWZWN0
b3I8dWludDhfdD4mIHdyYXBwZWRLZXksIFZlY3Rvcjx1aW50OF90PiYga2V5KTsKIAogfQogCklu
ZGV4OiBTb3VyY2UvV2ViQ29yZS9jc3MvTGVuZ3RoRnVuY3Rpb25zLmgKPT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PQotLS0g
U291cmNlL1dlYkNvcmUvY3NzL0xlbmd0aEZ1bmN0aW9ucy5oCShyZXZpc2lvbiAxNzI4NDcpCisr
KyBTb3VyY2UvV2ViQ29yZS9jc3MvTGVuZ3RoRnVuY3Rpb25zLmgJKHdvcmtpbmcgY29weSkKQEAg
LTM3LDcgKzM3LDcgQEAgaW50IGludFZhbHVlRm9yTGVuZ3RoKGNvbnN0IExlbmd0aCYsIExheQog
TGF5b3V0VW5pdCBtaW5pbXVtVmFsdWVGb3JMZW5ndGgoY29uc3QgTGVuZ3RoJiwgTGF5b3V0VW5p
dCBtYXhpbXVtVmFsdWUsIGJvb2wgcm91bmRQZXJjZW50YWdlcyA9IGZhbHNlKTsKIExheW91dFVu
aXQgdmFsdWVGb3JMZW5ndGgoY29uc3QgTGVuZ3RoJiwgTGF5b3V0VW5pdCBtYXhpbXVtVmFsdWUp
OwogZmxvYXQgZmxvYXRWYWx1ZUZvckxlbmd0aChjb25zdCBMZW5ndGgmLCBMYXlvdXRVbml0IG1h
eGltdW1WYWx1ZSk7Ci1mbG9hdCBmbG9hdFZhbHVlRm9yTGVuZ3RoKGNvbnN0IExlbmd0aCYsIGZs
b2F0IG1heGltdW1WYWx1ZSk7CitXRUJDT1JFX0VYUE9SVCBmbG9hdCBmbG9hdFZhbHVlRm9yTGVu
Z3RoKGNvbnN0IExlbmd0aCYsIGZsb2F0IG1heGltdW1WYWx1ZSk7CiBGbG9hdFNpemUgZmxvYXRT
aXplRm9yTGVuZ3RoU2l6ZShjb25zdCBMZW5ndGhTaXplJiwgY29uc3QgRmxvYXRTaXplJik7CiAK
IH0gLy8gbmFtZXNwYWNlIFdlYkNvcmUKSW5kZXg6IFNvdXJjZS9XZWJDb3JlL2Nzcy9TdHlsZVBy
b3BlcnRpZXMuaAo9PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09Ci0tLSBTb3VyY2UvV2ViQ29yZS9jc3MvU3R5bGVQcm9wZXJ0
aWVzLmgJKHJldmlzaW9uIDE3Mjg0NykKKysrIFNvdXJjZS9XZWJDb3JlL2Nzcy9TdHlsZVByb3Bl
cnRpZXMuaAkod29ya2luZyBjb3B5KQpAQCAtMTAxLDcgKzEwMSw3IEBAIHB1YmxpYzoKIAogICAg
IHZvaWQgYWRkU3VicmVzb3VyY2VTdHlsZVVSTHMoTGlzdEhhc2hTZXQ8VVJMPiYsIFN0eWxlU2hl
ZXRDb250ZW50cyogY29udGV4dFN0eWxlU2hlZXQpIGNvbnN0OwogCi0gICAgUGFzc1JlZjxNdXRh
YmxlU3R5bGVQcm9wZXJ0aWVzPiBtdXRhYmxlQ29weSgpIGNvbnN0OworICAgIFdFQkNPUkVfRVhQ
T1JUIFBhc3NSZWY8TXV0YWJsZVN0eWxlUHJvcGVydGllcz4gbXV0YWJsZUNvcHkoKSBjb25zdDsK
ICAgICBQYXNzUmVmPEltbXV0YWJsZVN0eWxlUHJvcGVydGllcz4gaW1tdXRhYmxlQ29weUlmTmVl
ZGVkKCkgY29uc3Q7CiAKICAgICBQYXNzUmVmPE11dGFibGVTdHlsZVByb3BlcnRpZXM+IGNvcHlQ
cm9wZXJ0aWVzSW5TZXQoY29uc3QgQ1NTUHJvcGVydHlJRCogc2V0LCB1bnNpZ25lZCBsZW5ndGgp
IGNvbnN0OwpJbmRleDogU291cmNlL1dlYkNvcmUvY3NzL1N0eWxlU2hlZXRDb250ZW50cy5oCj09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT0KLS0tIFNvdXJjZS9XZWJDb3JlL2Nzcy9TdHlsZVNoZWV0Q29udGVudHMuaAkocmV2
aXNpb24gMTcyODQ3KQorKysgU291cmNlL1dlYkNvcmUvY3NzL1N0eWxlU2hlZXRDb250ZW50cy5o
CSh3b3JraW5nIGNvcHkpCkBAIC01NCwxNCArNTQsMTQgQEAgcHVibGljOgogICAgICAgICByZXR1
cm4gYWRvcHRSZWYoKm5ldyBTdHlsZVNoZWV0Q29udGVudHMob3duZXJSdWxlLCBvcmlnaW5hbFVS
TCwgY29udGV4dCkpOwogICAgIH0KIAotICAgIH5TdHlsZVNoZWV0Q29udGVudHMoKTsKKyAgICBX
RUJDT1JFX0VYUE9SVCB+U3R5bGVTaGVldENvbnRlbnRzKCk7CiAgICAgCiAgICAgY29uc3QgQ1NT
UGFyc2VyQ29udGV4dCYgcGFyc2VyQ29udGV4dCgpIGNvbnN0IHsgcmV0dXJuIG1fcGFyc2VyQ29u
dGV4dDsgfQogCiAgICAgY29uc3QgQXRvbWljU3RyaW5nJiBkZXRlcm1pbmVOYW1lc3BhY2UoY29u
c3QgQXRvbWljU3RyaW5nJiBwcmVmaXgpOwogCiAgICAgdm9pZCBwYXJzZUF1dGhvclN0eWxlU2hl
ZXQoY29uc3QgQ2FjaGVkQ1NTU3R5bGVTaGVldCosIGNvbnN0IFNlY3VyaXR5T3JpZ2luKik7Ci0g
ICAgYm9vbCBwYXJzZVN0cmluZyhjb25zdCBTdHJpbmcmKTsKKyAgICBXRUJDT1JFX0VYUE9SVCBi
b29sIHBhcnNlU3RyaW5nKGNvbnN0IFN0cmluZyYpOwogICAgIGJvb2wgcGFyc2VTdHJpbmdBdExp
bmUoY29uc3QgU3RyaW5nJiwgaW50IHN0YXJ0TGluZU51bWJlciwgYm9vbCk7CiAKICAgICBib29s
IGlzQ2FjaGVhYmxlKCkgY29uc3Q7CkluZGV4OiBTb3VyY2UvV2ViQ29yZS9kb20vRGV2aWNlT3Jp
ZW50YXRpb25DbGllbnQuaAo9PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09Ci0tLSBTb3VyY2UvV2ViQ29yZS9kb20vRGV2aWNl
T3JpZW50YXRpb25DbGllbnQuaAkocmV2aXNpb24gMTcyODQ3KQorKysgU291cmNlL1dlYkNvcmUv
ZG9tL0RldmljZU9yaWVudGF0aW9uQ2xpZW50LmgJKHdvcmtpbmcgY29weSkKQEAgLTQ2LDcgKzQ2
LDcgQEAgcHVibGljOgogICAgIHZpcnR1YWwgdm9pZCBkZXZpY2VPcmllbnRhdGlvbkNvbnRyb2xs
ZXJEZXN0cm95ZWQoKSA9IDA7CiB9OwogCi12b2lkIHByb3ZpZGVEZXZpY2VPcmllbnRhdGlvblRv
KFBhZ2UqLCBEZXZpY2VPcmllbnRhdGlvbkNsaWVudCopOworV0VCQ09SRV9FWFBPUlQgdm9pZCBw
cm92aWRlRGV2aWNlT3JpZW50YXRpb25UbyhQYWdlKiwgRGV2aWNlT3JpZW50YXRpb25DbGllbnQq
KTsKIAogfSAvLyBuYW1lc3BhY2UgV2ViQ29yZQogCkluZGV4OiBTb3VyY2UvV2ViQ29yZS9kb20v
UmFuZ2UuaAo9PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09Ci0tLSBTb3VyY2UvV2ViQ29yZS9kb20vUmFuZ2UuaAkocmV2aXNp
b24gMTcyODQ3KQorKysgU291cmNlL1dlYkNvcmUvZG9tL1JhbmdlLmgJKHdvcmtpbmcgY29weSkK
QEAgLTE4OCw3ICsxODgsNyBAQCBwcml2YXRlOgogCiBQYXNzUmVmUHRyPFJhbmdlPiByYW5nZU9m
Q29udGVudHMoTm9kZSYpOwogCi1ib29sIGFyZVJhbmdlc0VxdWFsKGNvbnN0IFJhbmdlKiwgY29u
c3QgUmFuZ2UqKTsKK1dFQkNPUkVfRVhQT1JUIGJvb2wgYXJlUmFuZ2VzRXF1YWwoY29uc3QgUmFu
Z2UqLCBjb25zdCBSYW5nZSopOwogYm9vbCByYW5nZXNPdmVybGFwKGNvbnN0IFJhbmdlKiwgY29u
c3QgUmFuZ2UqKTsKIAogfSAvLyBuYW1lc3BhY2UKSW5kZXg6IFNvdXJjZS9XZWJDb3JlL2RvbS9T
Y3JpcHRFeGVjdXRpb25Db250ZXh0LmgKPT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PQotLS0gU291cmNlL1dlYkNvcmUvZG9t
L1NjcmlwdEV4ZWN1dGlvbkNvbnRleHQuaAkocmV2aXNpb24gMTcyODQ3KQorKysgU291cmNlL1dl
YkNvcmUvZG9tL1NjcmlwdEV4ZWN1dGlvbkNvbnRleHQuaAkod29ya2luZyBjb3B5KQpAQCAtODMs
NyArODMsNyBAQCBwdWJsaWM6CiAgICAgUHVibGljVVJMTWFuYWdlciYgcHVibGljVVJMTWFuYWdl
cigpOwogCiAgICAgLy8gQWN0aXZlIG9iamVjdHMgYXJlIG5vdCBnYXJiYWdlIGNvbGxlY3RlZCBl
dmVuIGlmIGluYWNjZXNzaWJsZSwgZS5nLiBiZWNhdXNlIHRoZWlyIGFjdGl2aXR5IG1heSByZXN1
bHQgaW4gY2FsbGJhY2tzIGJlaW5nIGludm9rZWQuCi0gICAgYm9vbCBjYW5TdXNwZW5kQWN0aXZl
RE9NT2JqZWN0cygpOworICAgIFdFQkNPUkVfRVhQT1JUIGJvb2wgY2FuU3VzcGVuZEFjdGl2ZURP
TU9iamVjdHMoKTsKICAgICAvLyBBY3RpdmUgb2JqZWN0cyBjYW4gYmUgYXNrZWQgdG8gc3VzcGVu
ZCBldmVuIGlmIGNhblN1c3BlbmRBY3RpdmVET01PYmplY3RzKCkgcmV0dXJucyAnZmFsc2UnIC0K
ICAgICAvLyBzdGVwLWJ5LXN0ZXAgSlMgZGVidWdnaW5nIGlzIG9uZSBleGFtcGxlLgogICAgIHZp
cnR1YWwgdm9pZCBzdXNwZW5kQWN0aXZlRE9NT2JqZWN0cyhBY3RpdmVET01PYmplY3Q6OlJlYXNv
bkZvclN1c3BlbnNpb24pOwpAQCAtMTU0LDcgKzE1NCw3IEBAIHB1YmxpYzoKICAgICB2b2lkIHJl
bW92ZVRpbWVvdXQoaW50IHRpbWVvdXRJZCkgeyBtX3RpbWVvdXRzLnJlbW92ZSh0aW1lb3V0SWQp
OyB9CiAgICAgRE9NVGltZXIqIGZpbmRUaW1lb3V0KGludCB0aW1lb3V0SWQpIHsgcmV0dXJuIG1f
dGltZW91dHMuZ2V0KHRpbWVvdXRJZCk7IH0KIAotICAgIEpTQzo6Vk0mIHZtKCk7CisgICAgV0VC
Q09SRV9FWFBPUlQgSlNDOjpWTSYgdm0oKTsKIAogICAgIC8vIEludGVydmFsIGlzIGluIHNlY29u
ZHMuCiAgICAgdm9pZCBhZGp1c3RNaW5pbXVtVGltZXJJbnRlcnZhbChkb3VibGUgb2xkTWluaW11
bVRpbWVySW50ZXJ2YWwpOwpJbmRleDogU291cmNlL1dlYkNvcmUvZG9tL1N0eWxlZEVsZW1lbnQu
aAo9PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09Ci0tLSBTb3VyY2UvV2ViQ29yZS9kb20vU3R5bGVkRWxlbWVudC5oCShyZXZp
c2lvbiAxNzI4NDcpCisrKyBTb3VyY2UvV2ViQ29yZS9kb20vU3R5bGVkRWxlbWVudC5oCSh3b3Jr
aW5nIGNvcHkpCkBAIC01MCw4ICs1MCw4IEBAIHB1YmxpYzoKICAgICAKICAgICBib29sIHNldElu
bGluZVN0eWxlUHJvcGVydHkoQ1NTUHJvcGVydHlJRCwgQ1NTVmFsdWVJRCBpZGVudGlmaWVyLCBi
b29sIGltcG9ydGFudCA9IGZhbHNlKTsKICAgICBib29sIHNldElubGluZVN0eWxlUHJvcGVydHko
Q1NTUHJvcGVydHlJRCwgQ1NTUHJvcGVydHlJRCBpZGVudGlmaWVyLCBib29sIGltcG9ydGFudCA9
IGZhbHNlKTsKLSAgICBib29sIHNldElubGluZVN0eWxlUHJvcGVydHkoQ1NTUHJvcGVydHlJRCwg
ZG91YmxlIHZhbHVlLCBDU1NQcmltaXRpdmVWYWx1ZTo6VW5pdFR5cGVzLCBib29sIGltcG9ydGFu
dCA9IGZhbHNlKTsKLSAgICBib29sIHNldElubGluZVN0eWxlUHJvcGVydHkoQ1NTUHJvcGVydHlJ
RCwgY29uc3QgU3RyaW5nJiB2YWx1ZSwgYm9vbCBpbXBvcnRhbnQgPSBmYWxzZSk7CisgICAgV0VC
Q09SRV9FWFBPUlQgYm9vbCBzZXRJbmxpbmVTdHlsZVByb3BlcnR5KENTU1Byb3BlcnR5SUQsIGRv
dWJsZSB2YWx1ZSwgQ1NTUHJpbWl0aXZlVmFsdWU6OlVuaXRUeXBlcywgYm9vbCBpbXBvcnRhbnQg
PSBmYWxzZSk7CisgICAgV0VCQ09SRV9FWFBPUlQgYm9vbCBzZXRJbmxpbmVTdHlsZVByb3BlcnR5
KENTU1Byb3BlcnR5SUQsIGNvbnN0IFN0cmluZyYgdmFsdWUsIGJvb2wgaW1wb3J0YW50ID0gZmFs
c2UpOwogICAgIGJvb2wgcmVtb3ZlSW5saW5lU3R5bGVQcm9wZXJ0eShDU1NQcm9wZXJ0eUlEKTsK
ICAgICB2b2lkIHJlbW92ZUFsbElubGluZVN0eWxlUHJvcGVydGllcygpOwogCkluZGV4OiBTb3Vy
Y2UvV2ViQ29yZS9kb20vVHJlZVNjb3BlLmgKPT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PQotLS0gU291cmNlL1dlYkNvcmUv
ZG9tL1RyZWVTY29wZS5oCShyZXZpc2lvbiAxNzI4NDcpCisrKyBTb3VyY2UvV2ViQ29yZS9kb20v
VHJlZVNjb3BlLmgJKHdvcmtpbmcgY29weSkKQEAgLTU1LDcgKzU1LDcgQEAgcHVibGljOgogCiAg
ICAgRWxlbWVudCogZm9jdXNlZEVsZW1lbnQoKTsKICAgICBFbGVtZW50KiBnZXRFbGVtZW50QnlJ
ZChjb25zdCBBdG9taWNTdHJpbmcmKSBjb25zdDsKLSAgICBFbGVtZW50KiBnZXRFbGVtZW50QnlJ
ZChjb25zdCBTdHJpbmcmKSBjb25zdDsKKyAgICBXRUJDT1JFX0VYUE9SVCBFbGVtZW50KiBnZXRF
bGVtZW50QnlJZChjb25zdCBTdHJpbmcmKSBjb25zdDsKICAgICBjb25zdCBWZWN0b3I8RWxlbWVu
dCo+KiBnZXRBbGxFbGVtZW50c0J5SWQoY29uc3QgQXRvbWljU3RyaW5nJikgY29uc3Q7CiAgICAg
Ym9vbCBoYXNFbGVtZW50V2l0aElkKGNvbnN0IEF0b21pY1N0cmluZ0ltcGwmKSBjb25zdDsKICAg
ICBib29sIGNvbnRhaW5zTXVsdGlwbGVFbGVtZW50c1dpdGhJZChjb25zdCBBdG9taWNTdHJpbmcm
IGlkKSBjb25zdDsKSW5kZXg6IFNvdXJjZS9XZWJDb3JlL2RvbS9VSUV2ZW50V2l0aEtleVN0YXRl
LmgKPT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PQotLS0gU291cmNlL1dlYkNvcmUvZG9tL1VJRXZlbnRXaXRoS2V5U3RhdGUu
aAkocmV2aXNpb24gMTcyODQ3KQorKysgU291cmNlL1dlYkNvcmUvZG9tL1VJRXZlbnRXaXRoS2V5
U3RhdGUuaAkod29ya2luZyBjb3B5KQpAQCAtNzEsNyArNzEsNyBAQCBuYW1lc3BhY2UgV2ViQ29y
ZSB7CiAgICAgICAgIGJvb2wgbV9tZXRhS2V5IDogMTsKICAgICB9OwogCi0gICAgVUlFdmVudFdp
dGhLZXlTdGF0ZSogZmluZEV2ZW50V2l0aEtleVN0YXRlKEV2ZW50Kik7CisgICAgV0VCQ09SRV9F
WFBPUlQgVUlFdmVudFdpdGhLZXlTdGF0ZSogZmluZEV2ZW50V2l0aEtleVN0YXRlKEV2ZW50Kik7
CiAKIH0gLy8gbmFtZXNwYWNlIFdlYkNvcmUKIApJbmRleDogU291cmNlL1dlYkNvcmUvZG9tL1Vz
ZXJHZXN0dXJlSW5kaWNhdG9yLmgKPT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PQotLS0gU291cmNlL1dlYkNvcmUvZG9tL1Vz
ZXJHZXN0dXJlSW5kaWNhdG9yLmgJKHJldmlzaW9uIDE3Mjg0NykKKysrIFNvdXJjZS9XZWJDb3Jl
L2RvbS9Vc2VyR2VzdHVyZUluZGljYXRvci5oCSh3b3JraW5nIGNvcHkpCkBAIC00MSwxMiArNDEs
MTIgQEAgY2xhc3MgVXNlckdlc3R1cmVJbmRpY2F0b3IgewogcHVibGljOgogICAgIHN0YXRpYyBi
b29sIHByb2Nlc3NpbmdVc2VyR2VzdHVyZSgpOwogCi0gICAgZXhwbGljaXQgVXNlckdlc3R1cmVJ
bmRpY2F0b3IoUHJvY2Vzc2luZ1VzZXJHZXN0dXJlU3RhdGUpOwotICAgIH5Vc2VyR2VzdHVyZUlu
ZGljYXRvcigpOworICAgIFdFQkNPUkVfRVhQT1JUIGV4cGxpY2l0IFVzZXJHZXN0dXJlSW5kaWNh
dG9yKFByb2Nlc3NpbmdVc2VyR2VzdHVyZVN0YXRlKTsKKyAgICBXRUJDT1JFX0VYUE9SVCB+VXNl
ckdlc3R1cmVJbmRpY2F0b3IoKTsKIAogCiBwcml2YXRlOgotICAgIHN0YXRpYyBQcm9jZXNzaW5n
VXNlckdlc3R1cmVTdGF0ZSBzX3N0YXRlOworICAgIFdFQkNPUkVfRVhQT1JUIHN0YXRpYyBQcm9j
ZXNzaW5nVXNlckdlc3R1cmVTdGF0ZSBzX3N0YXRlOwogICAgIFByb2Nlc3NpbmdVc2VyR2VzdHVy
ZVN0YXRlIG1fcHJldmlvdXNTdGF0ZTsKIH07CiAKSW5kZXg6IFNvdXJjZS9XZWJDb3JlL2RvbS9V
c2VyVHlwaW5nR2VzdHVyZUluZGljYXRvci5oCj09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT0KLS0tIFNvdXJjZS9XZWJDb3Jl
L2RvbS9Vc2VyVHlwaW5nR2VzdHVyZUluZGljYXRvci5oCShyZXZpc2lvbiAxNzI4NDcpCisrKyBT
b3VyY2UvV2ViQ29yZS9kb20vVXNlclR5cGluZ0dlc3R1cmVJbmRpY2F0b3IuaAkod29ya2luZyBj
b3B5KQpAQCAtMzcsOCArMzcsOCBAQCBjbGFzcyBOb2RlOwogY2xhc3MgVXNlclR5cGluZ0dlc3R1
cmVJbmRpY2F0b3IgewogICAgIFdURl9NQUtFX05PTkNPUFlBQkxFKFVzZXJUeXBpbmdHZXN0dXJl
SW5kaWNhdG9yKTsKIHB1YmxpYzoKLSAgICBzdGF0aWMgYm9vbCBwcm9jZXNzaW5nVXNlclR5cGlu
Z0dlc3R1cmUoKTsKLSAgICBzdGF0aWMgTm9kZSogZm9jdXNlZEVsZW1lbnRBdEdlc3R1cmVTdGFy
dCgpOworICAgIFdFQkNPUkVfRVhQT1JUIHN0YXRpYyBib29sIHByb2Nlc3NpbmdVc2VyVHlwaW5n
R2VzdHVyZSgpOworICAgIFdFQkNPUkVfRVhQT1JUIHN0YXRpYyBOb2RlKiBmb2N1c2VkRWxlbWVu
dEF0R2VzdHVyZVN0YXJ0KCk7CiAKICAgICBleHBsaWNpdCBVc2VyVHlwaW5nR2VzdHVyZUluZGlj
YXRvcihGcmFtZSYpOwogICAgIH5Vc2VyVHlwaW5nR2VzdHVyZUluZGljYXRvcigpOwpJbmRleDog
U291cmNlL1dlYkNvcmUvZG9tL1ZpZXdwb3J0QXJndW1lbnRzLmgKPT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PQotLS0gU291
cmNlL1dlYkNvcmUvZG9tL1ZpZXdwb3J0QXJndW1lbnRzLmgJKHJldmlzaW9uIDE3Mjg0NykKKysr
IFNvdXJjZS9XZWJDb3JlL2RvbS9WaWV3cG9ydEFyZ3VtZW50cy5oCSh3b3JraW5nIGNvcHkpCkBA
IC0xNDMsMTAgKzE0MywxMCBAQCBzdHJ1Y3QgVmlld3BvcnRBcmd1bWVudHMgewogI2VuZGlmCiB9
OwogCi1WaWV3cG9ydEF0dHJpYnV0ZXMgY29tcHV0ZVZpZXdwb3J0QXR0cmlidXRlcyhWaWV3cG9y
dEFyZ3VtZW50cyBhcmdzLCBpbnQgZGVza3RvcFdpZHRoLCBpbnQgZGV2aWNlV2lkdGgsIGludCBk
ZXZpY2VIZWlnaHQsIGZsb2F0IGRldmljZVBpeGVsUmF0aW8sIEludFNpemUgdmlzaWJsZVZpZXdw
b3J0KTsKK1dFQkNPUkVfRVhQT1JUIFZpZXdwb3J0QXR0cmlidXRlcyBjb21wdXRlVmlld3BvcnRB
dHRyaWJ1dGVzKFZpZXdwb3J0QXJndW1lbnRzIGFyZ3MsIGludCBkZXNrdG9wV2lkdGgsIGludCBk
ZXZpY2VXaWR0aCwgaW50IGRldmljZUhlaWdodCwgZmxvYXQgZGV2aWNlUGl4ZWxSYXRpbywgSW50
U2l6ZSB2aXNpYmxlVmlld3BvcnQpOwogCi12b2lkIHJlc3RyaWN0TWluaW11bVNjYWxlRmFjdG9y
VG9WaWV3cG9ydFNpemUoVmlld3BvcnRBdHRyaWJ1dGVzJiByZXN1bHQsIEludFNpemUgdmlzaWJs
ZVZpZXdwb3J0LCBmbG9hdCBkZXZpY2VQaXhlbFJhdGlvKTsKLXZvaWQgcmVzdHJpY3RTY2FsZUZh
Y3RvclRvSW5pdGlhbFNjYWxlSWZOb3RVc2VyU2NhbGFibGUoVmlld3BvcnRBdHRyaWJ1dGVzJiBy
ZXN1bHQpOworV0VCQ09SRV9FWFBPUlQgdm9pZCByZXN0cmljdE1pbmltdW1TY2FsZUZhY3RvclRv
Vmlld3BvcnRTaXplKFZpZXdwb3J0QXR0cmlidXRlcyYgcmVzdWx0LCBJbnRTaXplIHZpc2libGVW
aWV3cG9ydCwgZmxvYXQgZGV2aWNlUGl4ZWxSYXRpbyk7CitXRUJDT1JFX0VYUE9SVCB2b2lkIHJl
c3RyaWN0U2NhbGVGYWN0b3JUb0luaXRpYWxTY2FsZUlmTm90VXNlclNjYWxhYmxlKFZpZXdwb3J0
QXR0cmlidXRlcyYgcmVzdWx0KTsKIGZsb2F0IGNvbXB1dGVNaW5pbXVtU2NhbGVGYWN0b3JGb3JD
b250ZW50Q29udGFpbmVkKGNvbnN0IFZpZXdwb3J0QXR0cmlidXRlcyYgcmVzdWx0LCBjb25zdCBJ
bnRTaXplJiB2aWV3cG9ydFNpemUsIGNvbnN0IEludFNpemUmIGNvbnRlbnRTaXplKTsKIAogdm9p
ZCBzZXRWaWV3cG9ydEZlYXR1cmUoY29uc3QgU3RyaW5nJiBrZXlTdHJpbmcsIGNvbnN0IFN0cmlu
ZyYgdmFsdWVTdHJpbmcsIERvY3VtZW50Kiwgdm9pZCogZGF0YSk7CkluZGV4OiBTb3VyY2UvV2Vi
Q29yZS9lZGl0aW5nL1NtYXJ0UmVwbGFjZS5oCj09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT0KLS0tIFNvdXJjZS9XZWJDb3Jl
L2VkaXRpbmcvU21hcnRSZXBsYWNlLmgJKHJldmlzaW9uIDE3Mjg0NykKKysrIFNvdXJjZS9XZWJD
b3JlL2VkaXRpbmcvU21hcnRSZXBsYWNlLmgJKHdvcmtpbmcgY29weSkKQEAgLTMzLDcgKzMzLDcg
QEAKIAogbmFtZXNwYWNlIFdlYkNvcmUgewogCi1ib29sIGlzQ2hhcmFjdGVyU21hcnRSZXBsYWNl
RXhlbXB0KFVDaGFyMzIgYywgYm9vbCBpc1ByZXZpb3VzQ2hhcmFjdGVyKTsKK1dFQkNPUkVfRVhQ
T1JUIGJvb2wgaXNDaGFyYWN0ZXJTbWFydFJlcGxhY2VFeGVtcHQoVUNoYXIzMiBjLCBib29sIGlz
UHJldmlvdXNDaGFyYWN0ZXIpOwogCiB9IC8vIG5hbWVzcGFjZSBXZWJDb3JlCiAKSW5kZXg6IFNv
dXJjZS9XZWJDb3JlL2VkaXRpbmcvVGV4dEl0ZXJhdG9yLmgKPT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PQotLS0gU291cmNl
L1dlYkNvcmUvZWRpdGluZy9UZXh0SXRlcmF0b3IuaAkocmV2aXNpb24gMTcyODQ3KQorKysgU291
cmNlL1dlYkNvcmUvZWRpdGluZy9UZXh0SXRlcmF0b3IuaAkod29ya2luZyBjb3B5KQpAQCAtNDAs
OCArNDAsOCBAQCBjbGFzcyBJbmxpbmVUZXh0Qm94OwogY2xhc3MgUmVuZGVyVGV4dDsKIGNsYXNz
IFJlbmRlclRleHRGcmFnbWVudDsKIAotU3RyaW5nIHBsYWluVGV4dChjb25zdCBSYW5nZSosIFRl
eHRJdGVyYXRvckJlaGF2aW9yID0gVGV4dEl0ZXJhdG9yRGVmYXVsdEJlaGF2aW9yLCBib29sIGlz
RGlzcGxheVN0cmluZyA9IGZhbHNlKTsKLVN0cmluZyBwbGFpblRleHRSZXBsYWNpbmdOb0JyZWFr
U3BhY2UoY29uc3QgUmFuZ2UqLCBUZXh0SXRlcmF0b3JCZWhhdmlvciA9IFRleHRJdGVyYXRvckRl
ZmF1bHRCZWhhdmlvciwgYm9vbCBpc0Rpc3BsYXlTdHJpbmcgPSBmYWxzZSk7CitXRUJDT1JFX0VY
UE9SVCBTdHJpbmcgcGxhaW5UZXh0KGNvbnN0IFJhbmdlKiwgVGV4dEl0ZXJhdG9yQmVoYXZpb3Ig
PSBUZXh0SXRlcmF0b3JEZWZhdWx0QmVoYXZpb3IsIGJvb2wgaXNEaXNwbGF5U3RyaW5nID0gZmFs
c2UpOworV0VCQ09SRV9FWFBPUlQgU3RyaW5nIHBsYWluVGV4dFJlcGxhY2luZ05vQnJlYWtTcGFj
ZShjb25zdCBSYW5nZSosIFRleHRJdGVyYXRvckJlaGF2aW9yID0gVGV4dEl0ZXJhdG9yRGVmYXVs
dEJlaGF2aW9yLCBib29sIGlzRGlzcGxheVN0cmluZyA9IGZhbHNlKTsKIFBhc3NSZWZQdHI8UmFu
Z2U+IGZpbmRQbGFpblRleHQoY29uc3QgUmFuZ2UmLCBjb25zdCBTdHJpbmcmLCBGaW5kT3B0aW9u
cyk7CiAKIC8vIEZJWE1FOiBNb3ZlIHRoaXMgc29tZXdoZXJlIGVsc2UgaW4gdGhlIGVkaXRpbmcg
ZGlyZWN0b3J5LiBJdCBkb2Vzbid0IGJlbG9uZyBoZXJlLgpAQCAtOTMsMjMgKzkzLDIzIEBAIHBy
aXZhdGU6CiAKIGNsYXNzIFRleHRJdGVyYXRvciB7CiBwdWJsaWM6Ci0gICAgZXhwbGljaXQgVGV4
dEl0ZXJhdG9yKGNvbnN0IFJhbmdlKiwgVGV4dEl0ZXJhdG9yQmVoYXZpb3IgPSBUZXh0SXRlcmF0
b3JEZWZhdWx0QmVoYXZpb3IpOwotICAgIH5UZXh0SXRlcmF0b3IoKTsKKyAgICBXRUJDT1JFX0VY
UE9SVCBleHBsaWNpdCBUZXh0SXRlcmF0b3IoY29uc3QgUmFuZ2UqLCBUZXh0SXRlcmF0b3JCZWhh
dmlvciA9IFRleHRJdGVyYXRvckRlZmF1bHRCZWhhdmlvcik7CisgICAgV0VCQ09SRV9FWFBPUlQg
flRleHRJdGVyYXRvcigpOwogCiAgICAgYm9vbCBhdEVuZCgpIGNvbnN0IHsgcmV0dXJuICFtX3Bv
c2l0aW9uTm9kZTsgfQotICAgIHZvaWQgYWR2YW5jZSgpOworICAgIFdFQkNPUkVfRVhQT1JUIHZv
aWQgYWR2YW5jZSgpOwogCiAgICAgU3RyaW5nVmlldyB0ZXh0KCkgY29uc3QgeyBBU1NFUlQoIWF0
RW5kKCkpOyByZXR1cm4gbV90ZXh0OyB9CiAgICAgUGFzc1JlZlB0cjxSYW5nZT4gcmFuZ2UoKSBj
b25zdDsKLSAgICBOb2RlKiBub2RlKCkgY29uc3Q7CisgICAgV0VCQ09SRV9FWFBPUlQgTm9kZSog
bm9kZSgpIGNvbnN0OwogCiAgICAgY29uc3QgVGV4dEl0ZXJhdG9yQ29weWFibGVUZXh0JiBjb3B5
YWJsZVRleHQoKSBjb25zdCB7IEFTU0VSVCghYXRFbmQoKSk7IHJldHVybiBtX2NvcHlhYmxlVGV4
dDsgfQogICAgIHZvaWQgYXBwZW5kVGV4dFRvU3RyaW5nQnVpbGRlcihTdHJpbmdCdWlsZGVyJiBi
dWlsZGVyKSBjb25zdCB7IGNvcHlhYmxlVGV4dCgpLmFwcGVuZFRvU3RyaW5nQnVpbGRlcihidWls
ZGVyKTsgfQogCi0gICAgc3RhdGljIGludCByYW5nZUxlbmd0aChjb25zdCBSYW5nZSosIGJvb2wg
c3BhY2VzRm9yUmVwbGFjZWRFbGVtZW50cyA9IGZhbHNlKTsKLSAgICBzdGF0aWMgUGFzc1JlZlB0
cjxSYW5nZT4gcmFuZ2VGcm9tTG9jYXRpb25BbmRMZW5ndGgoQ29udGFpbmVyTm9kZSogc2NvcGUs
IGludCByYW5nZUxvY2F0aW9uLCBpbnQgcmFuZ2VMZW5ndGgsIGJvb2wgc3BhY2VzRm9yUmVwbGFj
ZWRFbGVtZW50cyA9IGZhbHNlKTsKLSAgICBzdGF0aWMgYm9vbCBnZXRMb2NhdGlvbkFuZExlbmd0
aEZyb21SYW5nZShOb2RlKiBzY29wZSwgY29uc3QgUmFuZ2UqLCBzaXplX3QmIGxvY2F0aW9uLCBz
aXplX3QmIGxlbmd0aCk7Ci0gICAgc3RhdGljIFBhc3NSZWZQdHI8UmFuZ2U+IHN1YnJhbmdlKFJh
bmdlKiBlbnRpcmVSYW5nZSwgaW50IGNoYXJhY3Rlck9mZnNldCwgaW50IGNoYXJhY3RlckNvdW50
KTsKKyAgICBXRUJDT1JFX0VYUE9SVCBzdGF0aWMgaW50IHJhbmdlTGVuZ3RoKGNvbnN0IFJhbmdl
KiwgYm9vbCBzcGFjZXNGb3JSZXBsYWNlZEVsZW1lbnRzID0gZmFsc2UpOworICAgIFdFQkNPUkVf
RVhQT1JUIHN0YXRpYyBQYXNzUmVmUHRyPFJhbmdlPiByYW5nZUZyb21Mb2NhdGlvbkFuZExlbmd0
aChDb250YWluZXJOb2RlKiBzY29wZSwgaW50IHJhbmdlTG9jYXRpb24sIGludCByYW5nZUxlbmd0
aCwgYm9vbCBzcGFjZXNGb3JSZXBsYWNlZEVsZW1lbnRzID0gZmFsc2UpOworICAgIFdFQkNPUkVf
RVhQT1JUIHN0YXRpYyBib29sIGdldExvY2F0aW9uQW5kTGVuZ3RoRnJvbVJhbmdlKE5vZGUqIHNj
b3BlLCBjb25zdCBSYW5nZSosIHNpemVfdCYgbG9jYXRpb24sIHNpemVfdCYgbGVuZ3RoKTsKKyAg
ICBXRUJDT1JFX0VYUE9SVCBzdGF0aWMgUGFzc1JlZlB0cjxSYW5nZT4gc3VicmFuZ2UoUmFuZ2Uq
IGVudGlyZVJhbmdlLCBpbnQgY2hhcmFjdGVyT2Zmc2V0LCBpbnQgY2hhcmFjdGVyQ291bnQpOwog
CiBwcml2YXRlOgogICAgIHZvaWQgZXhpdE5vZGUoKTsKQEAgLTE4NSw3ICsxODUsNyBAQCBwdWJs
aWM6CiAgICAgdm9pZCBhZHZhbmNlKCk7CiAKICAgICBTdHJpbmdWaWV3IHRleHQoKSBjb25zdCB7
IEFTU0VSVCghYXRFbmQoKSk7IHJldHVybiBtX3RleHQ7IH0KLSAgICBQYXNzUmVmUHRyPFJhbmdl
PiByYW5nZSgpIGNvbnN0OworICAgIFdFQkNPUkVfRVhQT1JUIFBhc3NSZWZQdHI8UmFuZ2U+IHJh
bmdlKCkgY29uc3Q7CiAgICAgTm9kZSogbm9kZSgpIGNvbnN0IHsgQVNTRVJUKCFhdEVuZCgpKTsg
cmV0dXJuIG1fbm9kZTsgfQogCiBwcml2YXRlOgpJbmRleDogU291cmNlL1dlYkNvcmUvZWRpdGlu
Zy9WaXNpYmxlUG9zaXRpb24uaAo9PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09Ci0tLSBTb3VyY2UvV2ViQ29yZS9lZGl0aW5n
L1Zpc2libGVQb3NpdGlvbi5oCShyZXZpc2lvbiAxNzI4NDcpCisrKyBTb3VyY2UvV2ViQ29yZS9l
ZGl0aW5nL1Zpc2libGVQb3NpdGlvbi5oCSh3b3JraW5nIGNvcHkpCkBAIC01Myw3ICs1Myw3IEBA
IHB1YmxpYzoKICAgICAvLyBOT1RFOiBVUFNUUkVBTSBhZmZpbml0eSB3aWxsIGJlIHVzZWQgb25s
eSBpZiBwb3MgaXMgYXQgZW5kIG9mIGEgd3JhcHBlZCBsaW5lLAogICAgIC8vIG90aGVyd2lzZSBp
dCB3aWxsIGJlIGNvbnZlcnRlZCB0byBET1dOU1RSRUFNCiAgICAgVmlzaWJsZVBvc2l0aW9uKCkg
OiBtX2FmZmluaXR5KFZQX0RFRkFVTFRfQUZGSU5JVFkpIHsgfQotICAgIFZpc2libGVQb3NpdGlv
bihjb25zdCBQb3NpdGlvbiYsIEVBZmZpbml0eSA9IFZQX0RFRkFVTFRfQUZGSU5JVFkpOworICAg
IFdFQkNPUkVfRVhQT1JUIFZpc2libGVQb3NpdGlvbihjb25zdCBQb3NpdGlvbiYsIEVBZmZpbml0
eSA9IFZQX0RFRkFVTFRfQUZGSU5JVFkpOwogCiAgICAgdm9pZCBjbGVhcigpIHsgbV9kZWVwUG9z
aXRpb24uY2xlYXIoKTsgfQogCkBAIC02OCwxNSArNjgsMTUgQEAgcHVibGljOgogICAgIC8vIEZJ
WE1FOiBDaGFuZ2UgdGhlIGZvbGxvd2luZyBmdW5jdGlvbnMnIHBhcmFtZXRlciBmcm9tIGEgYm9v
bGVhbiB0byBTdGF5SW5FZGl0YWJsZUNvbnRlbnQuCiAKICAgICAvLyBuZXh0KCkgYW5kIHByZXZp
b3VzKCkgd2lsbCBpbmNyZW1lbnQvZGVjcmVtZW50IGJ5IGEgY2hhcmFjdGVyIGNsdXN0ZXIuCi0g
ICAgVmlzaWJsZVBvc2l0aW9uIG5leHQoRWRpdGluZ0JvdW5kYXJ5Q3Jvc3NpbmdSdWxlID0gQ2Fu
Q3Jvc3NFZGl0aW5nQm91bmRhcnkpIGNvbnN0OwotICAgIFZpc2libGVQb3NpdGlvbiBwcmV2aW91
cyhFZGl0aW5nQm91bmRhcnlDcm9zc2luZ1J1bGUgPSBDYW5Dcm9zc0VkaXRpbmdCb3VuZGFyeSkg
Y29uc3Q7CisgICAgV0VCQ09SRV9FWFBPUlQgVmlzaWJsZVBvc2l0aW9uIG5leHQoRWRpdGluZ0Jv
dW5kYXJ5Q3Jvc3NpbmdSdWxlID0gQ2FuQ3Jvc3NFZGl0aW5nQm91bmRhcnkpIGNvbnN0OworICAg
IFdFQkNPUkVfRVhQT1JUIFZpc2libGVQb3NpdGlvbiBwcmV2aW91cyhFZGl0aW5nQm91bmRhcnlD
cm9zc2luZ1J1bGUgPSBDYW5Dcm9zc0VkaXRpbmdCb3VuZGFyeSkgY29uc3Q7CiAgICAgVmlzaWJs
ZVBvc2l0aW9uIGhvbm9yRWRpdGluZ0JvdW5kYXJ5QXRPckJlZm9yZShjb25zdCBWaXNpYmxlUG9z
aXRpb24mKSBjb25zdDsKICAgICBWaXNpYmxlUG9zaXRpb24gaG9ub3JFZGl0aW5nQm91bmRhcnlB
dE9yQWZ0ZXIoY29uc3QgVmlzaWJsZVBvc2l0aW9uJikgY29uc3Q7CiAKLSAgICBWaXNpYmxlUG9z
aXRpb24gbGVmdChib29sIHN0YXlJbkVkaXRhYmxlQ29udGVudCA9IGZhbHNlKSBjb25zdDsKLSAg
ICBWaXNpYmxlUG9zaXRpb24gcmlnaHQoYm9vbCBzdGF5SW5FZGl0YWJsZUNvbnRlbnQgPSBmYWxz
ZSkgY29uc3Q7CisgICAgV0VCQ09SRV9FWFBPUlQgVmlzaWJsZVBvc2l0aW9uIGxlZnQoYm9vbCBz
dGF5SW5FZGl0YWJsZUNvbnRlbnQgPSBmYWxzZSkgY29uc3Q7CisgICAgV0VCQ09SRV9FWFBPUlQg
VmlzaWJsZVBvc2l0aW9uIHJpZ2h0KGJvb2wgc3RheUluRWRpdGFibGVDb250ZW50ID0gZmFsc2Up
IGNvbnN0OwogCi0gICAgVUNoYXIzMiBjaGFyYWN0ZXJBZnRlcigpIGNvbnN0OworICAgIFdFQkNP
UkVfRVhQT1JUIFVDaGFyMzIgY2hhcmFjdGVyQWZ0ZXIoKSBjb25zdDsKICAgICBVQ2hhcjMyIGNo
YXJhY3RlckJlZm9yZSgpIGNvbnN0IHsgcmV0dXJuIHByZXZpb3VzKCkuY2hhcmFjdGVyQWZ0ZXIo
KTsgfQogCiAgICAgLy8gRklYTUU6IFRoaXMgZG9lcyBub3QgaGFuZGxlIFt0YWJsZSwgMF0gY29y
cmVjdGx5LgpAQCAtOTMsMTIgKzkzLDEyIEBAIHB1YmxpYzoKICAgICB9CiAKICAgICAvLyBSZWN0
IGlzIGxvY2FsIHRvIHRoZSByZXR1cm5lZCByZW5kZXJlcgotICAgIExheW91dFJlY3QgbG9jYWxD
YXJldFJlY3QoUmVuZGVyT2JqZWN0KiYpIGNvbnN0OworICAgIFdFQkNPUkVfRVhQT1JUIExheW91
dFJlY3QgbG9jYWxDYXJldFJlY3QoUmVuZGVyT2JqZWN0KiYpIGNvbnN0OwogICAgIC8vIEJvdW5k
cyBvZiAocG9zc2libHkgdHJhbnNmb3JtZWQpIGNhcmV0IGluIGFic29sdXRlIGNvb3JkcwotICAg
IEludFJlY3QgYWJzb2x1dGVDYXJldEJvdW5kcygpIGNvbnN0OworICAgIFdFQkNPUkVfRVhQT1JU
IEludFJlY3QgYWJzb2x1dGVDYXJldEJvdW5kcygpIGNvbnN0OwogICAgIC8vIEFicyB4L3kgcG9z
aXRpb24gb2YgdGhlIGNhcmV0IGlnbm9yaW5nIHRyYW5zZm9ybXMuCiAgICAgLy8gRklYTUU6IG5h
dmlnYXRpb24gd2l0aCB0cmFuc2Zvcm1zIHNob3VsZCBiZSBzbWFydGVyLgotICAgIGludCBsaW5l
RGlyZWN0aW9uUG9pbnRGb3JCbG9ja0RpcmVjdGlvbk5hdmlnYXRpb24oKSBjb25zdDsKKyAgICBX
RUJDT1JFX0VYUE9SVCBpbnQgbGluZURpcmVjdGlvblBvaW50Rm9yQmxvY2tEaXJlY3Rpb25OYXZp
Z2F0aW9uKCkgY29uc3Q7CiAgICAgCiAjaWZuZGVmIE5ERUJVRwogICAgIHZvaWQgZGVidWdQb3Np
dGlvbihjb25zdCBjaGFyKiBtc2cgPSAiIikgY29uc3Q7CkBAIC0xNTAsMTMgKzE1MCwxMyBAQCBp
bmxpbmUgYm9vbCBvcGVyYXRvcj49KGNvbnN0IFZpc2libGVQb3NpCiB9ICAgIAogI2VuZGlmCiAK
LVBhc3NSZWZQdHI8UmFuZ2U+IG1ha2VSYW5nZShjb25zdCBWaXNpYmxlUG9zaXRpb24mLCBjb25z
dCBWaXNpYmxlUG9zaXRpb24mKTsKK1dFQkNPUkVfRVhQT1JUIFBhc3NSZWZQdHI8UmFuZ2U+IG1h
a2VSYW5nZShjb25zdCBWaXNpYmxlUG9zaXRpb24mLCBjb25zdCBWaXNpYmxlUG9zaXRpb24mKTsK
IGJvb2wgc2V0U3RhcnQoUmFuZ2UqLCBjb25zdCBWaXNpYmxlUG9zaXRpb24mKTsKIGJvb2wgc2V0
RW5kKFJhbmdlKiwgY29uc3QgVmlzaWJsZVBvc2l0aW9uJik7CiBWaXNpYmxlUG9zaXRpb24gc3Rh
cnRWaXNpYmxlUG9zaXRpb24oY29uc3QgUmFuZ2UqLCBFQWZmaW5pdHkpOwogVmlzaWJsZVBvc2l0
aW9uIGVuZFZpc2libGVQb3NpdGlvbihjb25zdCBSYW5nZSosIEVBZmZpbml0eSk7CiAKLUVsZW1l
bnQqIGVuY2xvc2luZ0Jsb2NrRmxvd0VsZW1lbnQoY29uc3QgVmlzaWJsZVBvc2l0aW9uJik7CitX
RUJDT1JFX0VYUE9SVCBFbGVtZW50KiBlbmNsb3NpbmdCbG9ja0Zsb3dFbGVtZW50KGNvbnN0IFZp
c2libGVQb3NpdGlvbiYpOwogCiBib29sIGlzRmlyc3RWaXNpYmxlUG9zaXRpb25Jbk5vZGUoY29u
c3QgVmlzaWJsZVBvc2l0aW9uJiwgY29uc3QgTm9kZSopOwogYm9vbCBpc0xhc3RWaXNpYmxlUG9z
aXRpb25Jbk5vZGUoY29uc3QgVmlzaWJsZVBvc2l0aW9uJiwgY29uc3QgTm9kZSopOwpJbmRleDog
U291cmNlL1dlYkNvcmUvZWRpdGluZy9WaXNpYmxlU2VsZWN0aW9uLmgKPT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PQotLS0g
U291cmNlL1dlYkNvcmUvZWRpdGluZy9WaXNpYmxlU2VsZWN0aW9uLmgJKHJldmlzaW9uIDE3Mjg0
NykKKysrIFNvdXJjZS9XZWJDb3JlL2VkaXRpbmcvVmlzaWJsZVNlbGVjdGlvbi5oCSh3b3JraW5n
IGNvcHkpCkBAIC00MCwxNyArNDAsMTcgQEAgY2xhc3MgVmlzaWJsZVNlbGVjdGlvbiB7CiBwdWJs
aWM6CiAgICAgZW51bSBTZWxlY3Rpb25UeXBlIHsgTm9TZWxlY3Rpb24sIENhcmV0U2VsZWN0aW9u
LCBSYW5nZVNlbGVjdGlvbiB9OwogCi0gICAgVmlzaWJsZVNlbGVjdGlvbigpOworICAgIFdFQkNP
UkVfRVhQT1JUIFZpc2libGVTZWxlY3Rpb24oKTsKIAogICAgIFZpc2libGVTZWxlY3Rpb24oY29u
c3QgUG9zaXRpb24mLCBFQWZmaW5pdHksIGJvb2wgaXNEaXJlY3Rpb25hbCA9IGZhbHNlKTsKICAg
ICBWaXNpYmxlU2VsZWN0aW9uKGNvbnN0IFBvc2l0aW9uJiwgY29uc3QgUG9zaXRpb24mLCBFQWZm
aW5pdHkgPSBTRUxfREVGQVVMVF9BRkZJTklUWSwgYm9vbCBpc0RpcmVjdGlvbmFsID0gZmFsc2Up
OwogCi0gICAgVmlzaWJsZVNlbGVjdGlvbihjb25zdCBSYW5nZSosIEVBZmZpbml0eSA9IFNFTF9E
RUZBVUxUX0FGRklOSVRZLCBib29sIGlzRGlyZWN0aW9uYWwgPSBmYWxzZSk7CisgICAgV0VCQ09S
RV9FWFBPUlQgVmlzaWJsZVNlbGVjdGlvbihjb25zdCBSYW5nZSosIEVBZmZpbml0eSA9IFNFTF9E
RUZBVUxUX0FGRklOSVRZLCBib29sIGlzRGlyZWN0aW9uYWwgPSBmYWxzZSk7CiAgICAgCi0gICAg
VmlzaWJsZVNlbGVjdGlvbihjb25zdCBWaXNpYmxlUG9zaXRpb24mLCBib29sIGlzRGlyZWN0aW9u
YWwgPSBmYWxzZSk7Ci0gICAgVmlzaWJsZVNlbGVjdGlvbihjb25zdCBWaXNpYmxlUG9zaXRpb24m
LCBjb25zdCBWaXNpYmxlUG9zaXRpb24mLCBib29sIGlzRGlyZWN0aW9uYWwgPSBmYWxzZSk7Cisg
ICAgV0VCQ09SRV9FWFBPUlQgVmlzaWJsZVNlbGVjdGlvbihjb25zdCBWaXNpYmxlUG9zaXRpb24m
LCBib29sIGlzRGlyZWN0aW9uYWwgPSBmYWxzZSk7CisgICAgV0VCQ09SRV9FWFBPUlQgVmlzaWJs
ZVNlbGVjdGlvbihjb25zdCBWaXNpYmxlUG9zaXRpb24mLCBjb25zdCBWaXNpYmxlUG9zaXRpb24m
LCBib29sIGlzRGlyZWN0aW9uYWwgPSBmYWxzZSk7CiAKLSAgICBzdGF0aWMgVmlzaWJsZVNlbGVj
dGlvbiBzZWxlY3Rpb25Gcm9tQ29udGVudHNPZk5vZGUoTm9kZSopOworICAgIFdFQkNPUkVfRVhQ
T1JUIHN0YXRpYyBWaXNpYmxlU2VsZWN0aW9uIHNlbGVjdGlvbkZyb21Db250ZW50c09mTm9kZShO
b2RlKik7CiAKICAgICBTZWxlY3Rpb25UeXBlIHNlbGVjdGlvblR5cGUoKSBjb25zdCB7IHJldHVy
biBtX3NlbGVjdGlvblR5cGU7IH0KIApAQCAtODMsMjkgKzgzLDI5IEBAIHB1YmxpYzoKICAgICBi
b29sIGlzRGlyZWN0aW9uYWwoKSBjb25zdCB7IHJldHVybiBtX2lzRGlyZWN0aW9uYWw7IH0KICAg
ICB2b2lkIHNldElzRGlyZWN0aW9uYWwoYm9vbCBpc0RpcmVjdGlvbmFsKSB7IG1faXNEaXJlY3Rp
b25hbCA9IGlzRGlyZWN0aW9uYWw7IH0KIAotICAgIGJvb2wgaXNBbGwoRWRpdGluZ0JvdW5kYXJ5
Q3Jvc3NpbmdSdWxlKSBjb25zdDsKKyAgICBXRUJDT1JFX0VYUE9SVCBib29sIGlzQWxsKEVkaXRp
bmdCb3VuZGFyeUNyb3NzaW5nUnVsZSkgY29uc3Q7CiAKICAgICB2b2lkIGFwcGVuZFRyYWlsaW5n
V2hpdGVzcGFjZSgpOwogCi0gICAgYm9vbCBleHBhbmRVc2luZ0dyYW51bGFyaXR5KFRleHRHcmFu
dWxhcml0eSBncmFudWxhcml0eSk7CisgICAgV0VCQ09SRV9FWFBPUlQgYm9vbCBleHBhbmRVc2lu
Z0dyYW51bGFyaXR5KFRleHRHcmFudWxhcml0eSBncmFudWxhcml0eSk7CiAgICAgCiAgICAgLy8g
V2UgZG9uJ3QgeWV0IHN1cHBvcnQgbXVsdGktcmFuZ2Ugc2VsZWN0aW9ucywgc28gd2Ugb25seSBl
dmVyIGhhdmUgb25lIHJhbmdlIHRvIHJldHVybi4KLSAgICBQYXNzUmVmUHRyPFJhbmdlPiBmaXJz
dFJhbmdlKCkgY29uc3Q7CisgICAgV0VCQ09SRV9FWFBPUlQgUGFzc1JlZlB0cjxSYW5nZT4gZmly
c3RSYW5nZSgpIGNvbnN0OwogCiAgICAgLy8gRklYTUU6IE1vc3QgY2FsbGVycyBwcm9iYWJseSBk
b24ndCB3YW50IHRoaXMgZnVuY3Rpb24sIGJ1dCBhcmUgdXNpbmcgaXQKICAgICAvLyBmb3IgaGlz
dG9yaWNhbCByZWFzb25zLiAgdG9Ob3JtYWxpemVkUmFuZ2UgY29udHJhY3RzIHRoZSByYW5nZSBh
cm91bmQKICAgICAvLyB0ZXh0LCBhbmQgbW92ZXMgdGhlIGNhcmV0IHVwc3RyZWFtIGJlZm9yZSBy
ZXR1cm5pbmcgdGhlIHJhbmdlLgotICAgIFBhc3NSZWZQdHI8UmFuZ2U+IHRvTm9ybWFsaXplZFJh
bmdlKCkgY29uc3Q7CisgICAgV0VCQ09SRV9FWFBPUlQgUGFzc1JlZlB0cjxSYW5nZT4gdG9Ob3Jt
YWxpemVkUmFuZ2UoKSBjb25zdDsKICAgICAKLSAgICBFbGVtZW50KiByb290RWRpdGFibGVFbGVt
ZW50KCkgY29uc3Q7Ci0gICAgYm9vbCBpc0NvbnRlbnRFZGl0YWJsZSgpIGNvbnN0OworICAgIFdF
QkNPUkVfRVhQT1JUIEVsZW1lbnQqIHJvb3RFZGl0YWJsZUVsZW1lbnQoKSBjb25zdDsKKyAgICBX
RUJDT1JFX0VYUE9SVCBib29sIGlzQ29udGVudEVkaXRhYmxlKCkgY29uc3Q7CiAgICAgYm9vbCBo
YXNFZGl0YWJsZVN0eWxlKCkgY29uc3Q7Ci0gICAgYm9vbCBpc0NvbnRlbnRSaWNobHlFZGl0YWJs
ZSgpIGNvbnN0OworICAgIFdFQkNPUkVfRVhQT1JUIGJvb2wgaXNDb250ZW50UmljaGx5RWRpdGFi
bGUoKSBjb25zdDsKICAgICAvLyBSZXR1cm5zIGEgc2hhZG93IHRyZWUgbm9kZSBmb3IgbGVnYWN5
IHNoYWRvdyB0cmVlcywgYSBjaGlsZCBvZiB0aGUKICAgICAvLyBTaGFkb3dSb290IG5vZGUgZm9y
IG5ldyBzaGFkb3cgdHJlZXMsIG9yIDAgZm9yIG5vbi1zaGFkb3cgdHJlZXMuCiAgICAgTm9kZSog
bm9uQm91bmRhcnlTaGFkb3dUcmVlUm9vdE5vZGUoKSBjb25zdDsKIAotICAgIGJvb2wgaXNJblBh
c3N3b3JkRmllbGQoKSBjb25zdDsKKyAgICBXRUJDT1JFX0VYUE9SVCBib29sIGlzSW5QYXNzd29y
ZEZpZWxkKCkgY29uc3Q7CiAKICNpZm5kZWYgTkRFQlVHCiAgICAgdm9pZCBkZWJ1Z1Bvc2l0aW9u
KCkgY29uc3Q7CkluZGV4OiBTb3VyY2UvV2ViQ29yZS9lZGl0aW5nL1Zpc2libGVVbml0cy5oCj09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT0KLS0tIFNvdXJjZS9XZWJDb3JlL2VkaXRpbmcvVmlzaWJsZVVuaXRzLmgJKHJldmlz
aW9uIDE3Mjg0NykKKysrIFNvdXJjZS9XZWJDb3JlL2VkaXRpbmcvVmlzaWJsZVVuaXRzLmgJKHdv
cmtpbmcgY29weSkKQEAgLTM4LDQxICszOCw0MSBAQCBjbGFzcyBWaXNpYmxlUG9zaXRpb247CiBl
bnVtIEVXb3JkU2lkZSB7IFJpZ2h0V29yZElmT25Cb3VuZGFyeSA9IGZhbHNlLCBMZWZ0V29yZElm
T25Cb3VuZGFyeSA9IHRydWUgfTsKIAogLy8gd29yZHMKLVZpc2libGVQb3NpdGlvbiBzdGFydE9m
V29yZChjb25zdCBWaXNpYmxlUG9zaXRpb24gJiwgRVdvcmRTaWRlID0gUmlnaHRXb3JkSWZPbkJv
dW5kYXJ5KTsKLVZpc2libGVQb3NpdGlvbiBlbmRPZldvcmQoY29uc3QgVmlzaWJsZVBvc2l0aW9u
ICYsIEVXb3JkU2lkZSA9IFJpZ2h0V29yZElmT25Cb3VuZGFyeSk7Ci1WaXNpYmxlUG9zaXRpb24g
cHJldmlvdXNXb3JkUG9zaXRpb24oY29uc3QgVmlzaWJsZVBvc2l0aW9uICYpOwotVmlzaWJsZVBv
c2l0aW9uIG5leHRXb3JkUG9zaXRpb24oY29uc3QgVmlzaWJsZVBvc2l0aW9uICYpOworV0VCQ09S
RV9FWFBPUlQgVmlzaWJsZVBvc2l0aW9uIHN0YXJ0T2ZXb3JkKGNvbnN0IFZpc2libGVQb3NpdGlv
biAmLCBFV29yZFNpZGUgPSBSaWdodFdvcmRJZk9uQm91bmRhcnkpOworV0VCQ09SRV9FWFBPUlQg
VmlzaWJsZVBvc2l0aW9uIGVuZE9mV29yZChjb25zdCBWaXNpYmxlUG9zaXRpb24gJiwgRVdvcmRT
aWRlID0gUmlnaHRXb3JkSWZPbkJvdW5kYXJ5KTsKK1dFQkNPUkVfRVhQT1JUIFZpc2libGVQb3Np
dGlvbiBwcmV2aW91c1dvcmRQb3NpdGlvbihjb25zdCBWaXNpYmxlUG9zaXRpb24gJik7CitXRUJD
T1JFX0VYUE9SVCBWaXNpYmxlUG9zaXRpb24gbmV4dFdvcmRQb3NpdGlvbihjb25zdCBWaXNpYmxl
UG9zaXRpb24gJik7CiBWaXNpYmxlUG9zaXRpb24gcmlnaHRXb3JkUG9zaXRpb24oY29uc3QgVmlz
aWJsZVBvc2l0aW9uJiwgYm9vbCBza2lwc1NwYWNlV2hlbk1vdmluZ1JpZ2h0KTsKIFZpc2libGVQ
b3NpdGlvbiBsZWZ0V29yZFBvc2l0aW9uKGNvbnN0IFZpc2libGVQb3NpdGlvbiYsIGJvb2wgc2tp
cHNTcGFjZVdoZW5Nb3ZpbmdSaWdodCk7CiBib29sIGlzU3RhcnRPZldvcmQoY29uc3QgVmlzaWJs
ZVBvc2l0aW9uJik7CiAKIC8vIHNlbnRlbmNlcwotVmlzaWJsZVBvc2l0aW9uIHN0YXJ0T2ZTZW50
ZW5jZShjb25zdCBWaXNpYmxlUG9zaXRpb24gJik7Ci1WaXNpYmxlUG9zaXRpb24gZW5kT2ZTZW50
ZW5jZShjb25zdCBWaXNpYmxlUG9zaXRpb24gJik7Ci1WaXNpYmxlUG9zaXRpb24gcHJldmlvdXNT
ZW50ZW5jZVBvc2l0aW9uKGNvbnN0IFZpc2libGVQb3NpdGlvbiAmKTsKLVZpc2libGVQb3NpdGlv
biBuZXh0U2VudGVuY2VQb3NpdGlvbihjb25zdCBWaXNpYmxlUG9zaXRpb24gJik7CitXRUJDT1JF
X0VYUE9SVCBWaXNpYmxlUG9zaXRpb24gc3RhcnRPZlNlbnRlbmNlKGNvbnN0IFZpc2libGVQb3Np
dGlvbiAmKTsKK1dFQkNPUkVfRVhQT1JUIFZpc2libGVQb3NpdGlvbiBlbmRPZlNlbnRlbmNlKGNv
bnN0IFZpc2libGVQb3NpdGlvbiAmKTsKK1dFQkNPUkVfRVhQT1JUIFZpc2libGVQb3NpdGlvbiBw
cmV2aW91c1NlbnRlbmNlUG9zaXRpb24oY29uc3QgVmlzaWJsZVBvc2l0aW9uICYpOworV0VCQ09S
RV9FWFBPUlQgVmlzaWJsZVBvc2l0aW9uIG5leHRTZW50ZW5jZVBvc2l0aW9uKGNvbnN0IFZpc2li
bGVQb3NpdGlvbiAmKTsKIAogLy8gbGluZXMKLVZpc2libGVQb3NpdGlvbiBzdGFydE9mTGluZShj
b25zdCBWaXNpYmxlUG9zaXRpb24gJik7Ci1WaXNpYmxlUG9zaXRpb24gZW5kT2ZMaW5lKGNvbnN0
IFZpc2libGVQb3NpdGlvbiAmKTsKLVZpc2libGVQb3NpdGlvbiBwcmV2aW91c0xpbmVQb3NpdGlv
bihjb25zdCBWaXNpYmxlUG9zaXRpb24mLCBpbnQgbGluZURpcmVjdGlvblBvaW50LCBFZGl0YWJs
ZVR5cGUgPSBDb250ZW50SXNFZGl0YWJsZSk7Ci1WaXNpYmxlUG9zaXRpb24gbmV4dExpbmVQb3Np
dGlvbihjb25zdCBWaXNpYmxlUG9zaXRpb24mLCBpbnQgbGluZURpcmVjdGlvblBvaW50LCBFZGl0
YWJsZVR5cGUgPSBDb250ZW50SXNFZGl0YWJsZSk7Ci1ib29sIGluU2FtZUxpbmUoY29uc3QgVmlz
aWJsZVBvc2l0aW9uICYsIGNvbnN0IFZpc2libGVQb3NpdGlvbiAmKTsKLWJvb2wgaXNTdGFydE9m
TGluZShjb25zdCBWaXNpYmxlUG9zaXRpb24gJik7Ci1ib29sIGlzRW5kT2ZMaW5lKGNvbnN0IFZp
c2libGVQb3NpdGlvbiAmKTsKK1dFQkNPUkVfRVhQT1JUIFZpc2libGVQb3NpdGlvbiBzdGFydE9m
TGluZShjb25zdCBWaXNpYmxlUG9zaXRpb24gJik7CitXRUJDT1JFX0VYUE9SVCBWaXNpYmxlUG9z
aXRpb24gZW5kT2ZMaW5lKGNvbnN0IFZpc2libGVQb3NpdGlvbiAmKTsKK1dFQkNPUkVfRVhQT1JU
IFZpc2libGVQb3NpdGlvbiBwcmV2aW91c0xpbmVQb3NpdGlvbihjb25zdCBWaXNpYmxlUG9zaXRp
b24mLCBpbnQgbGluZURpcmVjdGlvblBvaW50LCBFZGl0YWJsZVR5cGUgPSBDb250ZW50SXNFZGl0
YWJsZSk7CitXRUJDT1JFX0VYUE9SVCBWaXNpYmxlUG9zaXRpb24gbmV4dExpbmVQb3NpdGlvbihj
b25zdCBWaXNpYmxlUG9zaXRpb24mLCBpbnQgbGluZURpcmVjdGlvblBvaW50LCBFZGl0YWJsZVR5
cGUgPSBDb250ZW50SXNFZGl0YWJsZSk7CitXRUJDT1JFX0VYUE9SVCBib29sIGluU2FtZUxpbmUo
Y29uc3QgVmlzaWJsZVBvc2l0aW9uICYsIGNvbnN0IFZpc2libGVQb3NpdGlvbiAmKTsKK1dFQkNP
UkVfRVhQT1JUIGJvb2wgaXNTdGFydE9mTGluZShjb25zdCBWaXNpYmxlUG9zaXRpb24gJik7CitX
RUJDT1JFX0VYUE9SVCBib29sIGlzRW5kT2ZMaW5lKGNvbnN0IFZpc2libGVQb3NpdGlvbiAmKTsK
IFZpc2libGVQb3NpdGlvbiBsb2dpY2FsU3RhcnRPZkxpbmUoY29uc3QgVmlzaWJsZVBvc2l0aW9u
ICYpOwogVmlzaWJsZVBvc2l0aW9uIGxvZ2ljYWxFbmRPZkxpbmUoY29uc3QgVmlzaWJsZVBvc2l0
aW9uICYpOwogVmlzaWJsZVBvc2l0aW9uIGxlZnRCb3VuZGFyeU9mTGluZShjb25zdCBWaXNpYmxl
UG9zaXRpb24mLCBUZXh0RGlyZWN0aW9uKTsKIFZpc2libGVQb3NpdGlvbiByaWdodEJvdW5kYXJ5
T2ZMaW5lKGNvbnN0IFZpc2libGVQb3NpdGlvbiYsIFRleHREaXJlY3Rpb24pOwogCiAvLyBwYXJh
Z3JhcGhzIChwZXJoYXBzIGEgbWlzbm9tZXIsIGNhbiBiZSBkaXZpZGVkIGJ5IGxpbmUgYnJlYWsg
ZWxlbWVudHMpCi1WaXNpYmxlUG9zaXRpb24gc3RhcnRPZlBhcmFncmFwaChjb25zdCBWaXNpYmxl
UG9zaXRpb24mLCBFZGl0aW5nQm91bmRhcnlDcm9zc2luZ1J1bGUgPSBDYW5ub3RDcm9zc0VkaXRp
bmdCb3VuZGFyeSk7Ci1WaXNpYmxlUG9zaXRpb24gZW5kT2ZQYXJhZ3JhcGgoY29uc3QgVmlzaWJs
ZVBvc2l0aW9uJiwgRWRpdGluZ0JvdW5kYXJ5Q3Jvc3NpbmdSdWxlID0gQ2Fubm90Q3Jvc3NFZGl0
aW5nQm91bmRhcnkpOworV0VCQ09SRV9FWFBPUlQgVmlzaWJsZVBvc2l0aW9uIHN0YXJ0T2ZQYXJh
Z3JhcGgoY29uc3QgVmlzaWJsZVBvc2l0aW9uJiwgRWRpdGluZ0JvdW5kYXJ5Q3Jvc3NpbmdSdWxl
ID0gQ2Fubm90Q3Jvc3NFZGl0aW5nQm91bmRhcnkpOworV0VCQ09SRV9FWFBPUlQgVmlzaWJsZVBv
c2l0aW9uIGVuZE9mUGFyYWdyYXBoKGNvbnN0IFZpc2libGVQb3NpdGlvbiYsIEVkaXRpbmdCb3Vu
ZGFyeUNyb3NzaW5nUnVsZSA9IENhbm5vdENyb3NzRWRpdGluZ0JvdW5kYXJ5KTsKIFZpc2libGVQ
b3NpdGlvbiBzdGFydE9mTmV4dFBhcmFncmFwaChjb25zdCBWaXNpYmxlUG9zaXRpb24mKTsKLVZp
c2libGVQb3NpdGlvbiBwcmV2aW91c1BhcmFncmFwaFBvc2l0aW9uKGNvbnN0IFZpc2libGVQb3Np
dGlvbiAmLCBpbnQgeCk7Ci1WaXNpYmxlUG9zaXRpb24gbmV4dFBhcmFncmFwaFBvc2l0aW9uKGNv
bnN0IFZpc2libGVQb3NpdGlvbiAmLCBpbnQgeCk7Ci1ib29sIGlzU3RhcnRPZlBhcmFncmFwaChj
b25zdCBWaXNpYmxlUG9zaXRpb24gJiwgRWRpdGluZ0JvdW5kYXJ5Q3Jvc3NpbmdSdWxlID0gQ2Fu
bm90Q3Jvc3NFZGl0aW5nQm91bmRhcnkpOwotYm9vbCBpc0VuZE9mUGFyYWdyYXBoKGNvbnN0IFZp
c2libGVQb3NpdGlvbiAmLCBFZGl0aW5nQm91bmRhcnlDcm9zc2luZ1J1bGUgPSBDYW5ub3RDcm9z
c0VkaXRpbmdCb3VuZGFyeSk7CitXRUJDT1JFX0VYUE9SVCBWaXNpYmxlUG9zaXRpb24gcHJldmlv
dXNQYXJhZ3JhcGhQb3NpdGlvbihjb25zdCBWaXNpYmxlUG9zaXRpb24gJiwgaW50IHgpOworV0VC
Q09SRV9FWFBPUlQgVmlzaWJsZVBvc2l0aW9uIG5leHRQYXJhZ3JhcGhQb3NpdGlvbihjb25zdCBW
aXNpYmxlUG9zaXRpb24gJiwgaW50IHgpOworV0VCQ09SRV9FWFBPUlQgYm9vbCBpc1N0YXJ0T2ZQ
YXJhZ3JhcGgoY29uc3QgVmlzaWJsZVBvc2l0aW9uICYsIEVkaXRpbmdCb3VuZGFyeUNyb3NzaW5n
UnVsZSA9IENhbm5vdENyb3NzRWRpdGluZ0JvdW5kYXJ5KTsKK1dFQkNPUkVfRVhQT1JUIGJvb2wg
aXNFbmRPZlBhcmFncmFwaChjb25zdCBWaXNpYmxlUG9zaXRpb24gJiwgRWRpdGluZ0JvdW5kYXJ5
Q3Jvc3NpbmdSdWxlID0gQ2Fubm90Q3Jvc3NFZGl0aW5nQm91bmRhcnkpOwogYm9vbCBpblNhbWVQ
YXJhZ3JhcGgoY29uc3QgVmlzaWJsZVBvc2l0aW9uICYsIGNvbnN0IFZpc2libGVQb3NpdGlvbiAm
LCBFZGl0aW5nQm91bmRhcnlDcm9zc2luZ1J1bGUgPSBDYW5ub3RDcm9zc0VkaXRpbmdCb3VuZGFy
eSk7CiAKIC8vIGJsb2NrcyAodHJ1ZSBwYXJhZ3JhcGhzOyBsaW5lIGJyZWFrIGVsZW1lbnRzIGRv
bid0IGJyZWFrIGJsb2NrcykKQEAgLTgzLDI4ICs4MywyOCBAQCBib29sIGlzU3RhcnRPZkJsb2Nr
KGNvbnN0IFZpc2libGVQb3NpdGlvCiBib29sIGlzRW5kT2ZCbG9jayhjb25zdCBWaXNpYmxlUG9z
aXRpb24gJik7CiAKIC8vIGRvY3VtZW50Ci1WaXNpYmxlUG9zaXRpb24gc3RhcnRPZkRvY3VtZW50
KGNvbnN0IE5vZGUqKTsKLVZpc2libGVQb3NpdGlvbiBlbmRPZkRvY3VtZW50KGNvbnN0IE5vZGUq
KTsKLVZpc2libGVQb3NpdGlvbiBzdGFydE9mRG9jdW1lbnQoY29uc3QgVmlzaWJsZVBvc2l0aW9u
ICYpOwotVmlzaWJsZVBvc2l0aW9uIGVuZE9mRG9jdW1lbnQoY29uc3QgVmlzaWJsZVBvc2l0aW9u
ICYpOworV0VCQ09SRV9FWFBPUlQgVmlzaWJsZVBvc2l0aW9uIHN0YXJ0T2ZEb2N1bWVudChjb25z
dCBOb2RlKik7CitXRUJDT1JFX0VYUE9SVCBWaXNpYmxlUG9zaXRpb24gZW5kT2ZEb2N1bWVudChj
b25zdCBOb2RlKik7CitXRUJDT1JFX0VYUE9SVCBWaXNpYmxlUG9zaXRpb24gc3RhcnRPZkRvY3Vt
ZW50KGNvbnN0IFZpc2libGVQb3NpdGlvbiAmKTsKK1dFQkNPUkVfRVhQT1JUIFZpc2libGVQb3Np
dGlvbiBlbmRPZkRvY3VtZW50KGNvbnN0IFZpc2libGVQb3NpdGlvbiAmKTsKIGJvb2wgaW5TYW1l
RG9jdW1lbnQoY29uc3QgVmlzaWJsZVBvc2l0aW9uICYsIGNvbnN0IFZpc2libGVQb3NpdGlvbiAm
KTsKLWJvb2wgaXNTdGFydE9mRG9jdW1lbnQoY29uc3QgVmlzaWJsZVBvc2l0aW9uICYpOwotYm9v
bCBpc0VuZE9mRG9jdW1lbnQoY29uc3QgVmlzaWJsZVBvc2l0aW9uICYpOworV0VCQ09SRV9FWFBP
UlQgYm9vbCBpc1N0YXJ0T2ZEb2N1bWVudChjb25zdCBWaXNpYmxlUG9zaXRpb24gJik7CitXRUJD
T1JFX0VYUE9SVCBib29sIGlzRW5kT2ZEb2N1bWVudChjb25zdCBWaXNpYmxlUG9zaXRpb24gJik7
CiAKIC8vIGVkaXRhYmxlIGNvbnRlbnQKLVZpc2libGVQb3NpdGlvbiBzdGFydE9mRWRpdGFibGVD
b250ZW50KGNvbnN0IFZpc2libGVQb3NpdGlvbiYpOwotVmlzaWJsZVBvc2l0aW9uIGVuZE9mRWRp
dGFibGVDb250ZW50KGNvbnN0IFZpc2libGVQb3NpdGlvbiYpOwotYm9vbCBpc0VuZE9mRWRpdGFi
bGVPck5vbkVkaXRhYmxlQ29udGVudChjb25zdCBWaXNpYmxlUG9zaXRpb24mKTsKK1dFQkNPUkVf
RVhQT1JUIFZpc2libGVQb3NpdGlvbiBzdGFydE9mRWRpdGFibGVDb250ZW50KGNvbnN0IFZpc2li
bGVQb3NpdGlvbiYpOworV0VCQ09SRV9FWFBPUlQgVmlzaWJsZVBvc2l0aW9uIGVuZE9mRWRpdGFi
bGVDb250ZW50KGNvbnN0IFZpc2libGVQb3NpdGlvbiYpOworV0VCQ09SRV9FWFBPUlQgYm9vbCBp
c0VuZE9mRWRpdGFibGVPck5vbkVkaXRhYmxlQ29udGVudChjb25zdCBWaXNpYmxlUG9zaXRpb24m
KTsKIAogI2lmIFBMQVRGT1JNKElPUykKLWJvb2wgYXRCb3VuZGFyeU9mR3JhbnVsYXJpdHkoY29u
c3QgVmlzaWJsZVBvc2l0aW9uJiwgVGV4dEdyYW51bGFyaXR5LCBTZWxlY3Rpb25EaXJlY3Rpb24p
OwotYm9vbCB3aXRoaW5UZXh0VW5pdE9mR3JhbnVsYXJpdHkoY29uc3QgVmlzaWJsZVBvc2l0aW9u
JiwgVGV4dEdyYW51bGFyaXR5LCBTZWxlY3Rpb25EaXJlY3Rpb24pOwotVmlzaWJsZVBvc2l0aW9u
IHBvc2l0aW9uT2ZOZXh0Qm91bmRhcnlPZkdyYW51bGFyaXR5KGNvbnN0IFZpc2libGVQb3NpdGlv
biYsIFRleHRHcmFudWxhcml0eSwgU2VsZWN0aW9uRGlyZWN0aW9uKTsKLVBhc3NSZWZQdHI8UmFu
Z2U+IGVuY2xvc2luZ1RleHRVbml0T2ZHcmFudWxhcml0eShjb25zdCBWaXNpYmxlUG9zaXRpb24m
LCBUZXh0R3JhbnVsYXJpdHksIFNlbGVjdGlvbkRpcmVjdGlvbik7Ci1pbnQgZGlzdGFuY2VCZXR3
ZWVuUG9zaXRpb25zKGNvbnN0IFZpc2libGVQb3NpdGlvbiYsIGNvbnN0IFZpc2libGVQb3NpdGlv
biYpOwotUGFzc1JlZlB0cjxSYW5nZT4gd29yZFJhbmdlRnJvbVBvc2l0aW9uKGNvbnN0IFZpc2li
bGVQb3NpdGlvbiYgcG9zaXRpb24pOwotVmlzaWJsZVBvc2l0aW9uIGNsb3Nlc3RXb3JkQm91bmRh
cnlGb3JQb3NpdGlvbihjb25zdCBWaXNpYmxlUG9zaXRpb24mIHBvc2l0aW9uKTsKLXZvaWQgY2hh
cmFjdGVyc0Fyb3VuZFBvc2l0aW9uKGNvbnN0IFZpc2libGVQb3NpdGlvbiYsIFVDaGFyMzImIG9u
ZUFmdGVyLCBVQ2hhcjMyJiBvbmVCZWZvcmUsIFVDaGFyMzImIHR3b0JlZm9yZSk7CitXRUJDT1JF
X0VYUE9SVCBib29sIGF0Qm91bmRhcnlPZkdyYW51bGFyaXR5KGNvbnN0IFZpc2libGVQb3NpdGlv
biYsIFRleHRHcmFudWxhcml0eSwgU2VsZWN0aW9uRGlyZWN0aW9uKTsKK1dFQkNPUkVfRVhQT1JU
IGJvb2wgd2l0aGluVGV4dFVuaXRPZkdyYW51bGFyaXR5KGNvbnN0IFZpc2libGVQb3NpdGlvbiYs
IFRleHRHcmFudWxhcml0eSwgU2VsZWN0aW9uRGlyZWN0aW9uKTsKK1dFQkNPUkVfRVhQT1JUIFZp
c2libGVQb3NpdGlvbiBwb3NpdGlvbk9mTmV4dEJvdW5kYXJ5T2ZHcmFudWxhcml0eShjb25zdCBW
aXNpYmxlUG9zaXRpb24mLCBUZXh0R3JhbnVsYXJpdHksIFNlbGVjdGlvbkRpcmVjdGlvbik7CitX
RUJDT1JFX0VYUE9SVCBQYXNzUmVmUHRyPFJhbmdlPiBlbmNsb3NpbmdUZXh0VW5pdE9mR3JhbnVs
YXJpdHkoY29uc3QgVmlzaWJsZVBvc2l0aW9uJiwgVGV4dEdyYW51bGFyaXR5LCBTZWxlY3Rpb25E
aXJlY3Rpb24pOworV0VCQ09SRV9FWFBPUlQgaW50IGRpc3RhbmNlQmV0d2VlblBvc2l0aW9ucyhj
b25zdCBWaXNpYmxlUG9zaXRpb24mLCBjb25zdCBWaXNpYmxlUG9zaXRpb24mKTsKK1dFQkNPUkVf
RVhQT1JUIFBhc3NSZWZQdHI8UmFuZ2U+IHdvcmRSYW5nZUZyb21Qb3NpdGlvbihjb25zdCBWaXNp
YmxlUG9zaXRpb24mIHBvc2l0aW9uKTsKK1dFQkNPUkVfRVhQT1JUIFZpc2libGVQb3NpdGlvbiBj
bG9zZXN0V29yZEJvdW5kYXJ5Rm9yUG9zaXRpb24oY29uc3QgVmlzaWJsZVBvc2l0aW9uJiBwb3Np
dGlvbik7CitXRUJDT1JFX0VYUE9SVCB2b2lkIGNoYXJhY3RlcnNBcm91bmRQb3NpdGlvbihjb25z
dCBWaXNpYmxlUG9zaXRpb24mLCBVQ2hhcjMyJiBvbmVBZnRlciwgVUNoYXIzMiYgb25lQmVmb3Jl
LCBVQ2hhcjMyJiB0d29CZWZvcmUpOwogI2VuZGlmCiB9IC8vIG5hbWVzcGFjZSBXZWJDb3JlCiAK
SW5kZXg6IFNvdXJjZS9XZWJDb3JlL2VkaXRpbmcvaHRtbGVkaXRpbmcuaAo9PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09Ci0t
LSBTb3VyY2UvV2ViQ29yZS9lZGl0aW5nL2h0bWxlZGl0aW5nLmgJKHJldmlzaW9uIDE3Mjg0NykK
KysrIFNvdXJjZS9XZWJDb3JlL2VkaXRpbmcvaHRtbGVkaXRpbmcuaAkod29ya2luZyBjb3B5KQpA
QCAtNzgsNyArNzgsNyBAQCBOb2RlKiBwcmV2aW91c0xlYWZOb2RlKGNvbnN0IE5vZGUqKTsKIAog
Ly8gb2Zmc2V0IGZ1bmN0aW9ucyBvbiBOb2RlCiAKLWludCBsYXN0T2Zmc2V0Rm9yRWRpdGluZyhj
b25zdCBOb2RlKik7CitXRUJDT1JFX0VYUE9SVCBpbnQgbGFzdE9mZnNldEZvckVkaXRpbmcoY29u
c3QgTm9kZSopOwogaW50IGNhcmV0TWluT2Zmc2V0KGNvbnN0IE5vZGUqKTsKIGludCBjYXJldE1h
eE9mZnNldChjb25zdCBOb2RlKik7CiAKQEAgLTE1OSw3ICsxNTksNyBAQCBpbnQgY29tcGFyZVBv
c2l0aW9ucyhjb25zdCBQb3NpdGlvbiYsIGNvCiAvLyBib29sZWFuIGZ1bmN0aW9ucyBvbiBQb3Np
dGlvbgogCiBlbnVtIEVVcGRhdGVTdHlsZSB7IFVwZGF0ZVN0eWxlLCBEb05vdFVwZGF0ZVN0eWxl
IH07Ci1ib29sIGlzRWRpdGFibGVQb3NpdGlvbihjb25zdCBQb3NpdGlvbiYsIEVkaXRhYmxlVHlw
ZSA9IENvbnRlbnRJc0VkaXRhYmxlLCBFVXBkYXRlU3R5bGUgPSBVcGRhdGVTdHlsZSk7CitXRUJD
T1JFX0VYUE9SVCBib29sIGlzRWRpdGFibGVQb3NpdGlvbihjb25zdCBQb3NpdGlvbiYsIEVkaXRh
YmxlVHlwZSA9IENvbnRlbnRJc0VkaXRhYmxlLCBFVXBkYXRlU3R5bGUgPSBVcGRhdGVTdHlsZSk7
CiBib29sIGlzUmljaGx5RWRpdGFibGVQb3NpdGlvbihjb25zdCBQb3NpdGlvbiYsIEVkaXRhYmxl
VHlwZSA9IENvbnRlbnRJc0VkaXRhYmxlKTsKIGJvb2wgaXNGaXJzdFZpc2libGVQb3NpdGlvbklu
U3BlY2lhbEVsZW1lbnQoY29uc3QgUG9zaXRpb24mKTsKIGJvb2wgaXNMYXN0VmlzaWJsZVBvc2l0
aW9uSW5TcGVjaWFsRWxlbWVudChjb25zdCBQb3NpdGlvbiYpOwpAQCAtMTk4LDcgKzE5OCw3IEBA
IFZpc2libGVQb3NpdGlvbiB2aXNpYmxlUG9zaXRpb25Gb3JJbmRleFUKICAgICAKIC8vIEZ1bmN0
aW9ucyByZXR1cm5pbmcgSFRNTEVsZW1lbnQKICAgICAKLVBhc3NSZWZQdHI8SFRNTEVsZW1lbnQ+
IGNyZWF0ZURlZmF1bHRQYXJhZ3JhcGhFbGVtZW50KERvY3VtZW50Jik7CitXRUJDT1JFX0VYUE9S
VCBQYXNzUmVmUHRyPEhUTUxFbGVtZW50PiBjcmVhdGVEZWZhdWx0UGFyYWdyYXBoRWxlbWVudChE
b2N1bWVudCYpOwogUGFzc1JlZlB0cjxIVE1MRWxlbWVudD4gY3JlYXRlQnJlYWtFbGVtZW50KERv
Y3VtZW50Jik7CiBQYXNzUmVmUHRyPEhUTUxFbGVtZW50PiBjcmVhdGVPcmRlcmVkTGlzdEVsZW1l
bnQoRG9jdW1lbnQmKTsKIFBhc3NSZWZQdHI8SFRNTEVsZW1lbnQ+IGNyZWF0ZVVub3JkZXJlZExp
c3RFbGVtZW50KERvY3VtZW50Jik7CkluZGV4OiBTb3VyY2UvV2ViQ29yZS9lZGl0aW5nL21hcmt1
cC5oCj09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT0KLS0tIFNvdXJjZS9XZWJDb3JlL2VkaXRpbmcvbWFya3VwLmgJKHJldmlz
aW9uIDE3Mjg0NykKKysrIFNvdXJjZS9XZWJDb3JlL2VkaXRpbmcvbWFya3VwLmgJKHdvcmtpbmcg
Y29weSkKQEAgLTQ5LDggKzQ5LDggQEAgZW51bSBFQ2hpbGRyZW5Pbmx5IHsgSW5jbHVkZU5vZGUs
IENoaWxkcgogZW51bSBFQWJzb2x1dGVVUkxzIHsgRG9Ob3RSZXNvbHZlVVJMcywgUmVzb2x2ZUFs
bFVSTHMsIFJlc29sdmVOb25Mb2NhbFVSTHMgfTsKIGVudW0gRUZyYWdtZW50U2VyaWFsaXphdGlv
biB7IEhUTUxGcmFnbWVudFNlcmlhbGl6YXRpb24sIFhNTEZyYWdtZW50U2VyaWFsaXphdGlvbiB9
OwogCi1QYXNzUmVmUHRyPERvY3VtZW50RnJhZ21lbnQ+IGNyZWF0ZUZyYWdtZW50RnJvbVRleHQo
UmFuZ2UmIGNvbnRleHQsIGNvbnN0IFN0cmluZyYgdGV4dCk7Ci1QYXNzUmVmUHRyPERvY3VtZW50
RnJhZ21lbnQ+IGNyZWF0ZUZyYWdtZW50RnJvbU1hcmt1cChEb2N1bWVudCYsIGNvbnN0IFN0cmlu
ZyYgbWFya3VwLCBjb25zdCBTdHJpbmcmIGJhc2VVUkwsIFBhcnNlckNvbnRlbnRQb2xpY3kgPSBB
bGxvd1NjcmlwdGluZ0NvbnRlbnQpOworV0VCQ09SRV9FWFBPUlQgUGFzc1JlZlB0cjxEb2N1bWVu
dEZyYWdtZW50PiBjcmVhdGVGcmFnbWVudEZyb21UZXh0KFJhbmdlJiBjb250ZXh0LCBjb25zdCBT
dHJpbmcmIHRleHQpOworV0VCQ09SRV9FWFBPUlQgUGFzc1JlZlB0cjxEb2N1bWVudEZyYWdtZW50
PiBjcmVhdGVGcmFnbWVudEZyb21NYXJrdXAoRG9jdW1lbnQmLCBjb25zdCBTdHJpbmcmIG1hcmt1
cCwgY29uc3QgU3RyaW5nJiBiYXNlVVJMLCBQYXJzZXJDb250ZW50UG9saWN5ID0gQWxsb3dTY3Jp
cHRpbmdDb250ZW50KTsKIFBhc3NSZWZQdHI8RG9jdW1lbnRGcmFnbWVudD4gY3JlYXRlRnJhZ21l
bnRGb3JJbm5lck91dGVySFRNTChjb25zdCBTdHJpbmcmLCBFbGVtZW50KiwgUGFyc2VyQ29udGVu
dFBvbGljeSwgRXhjZXB0aW9uQ29kZSYpOwogUGFzc1JlZlB0cjxEb2N1bWVudEZyYWdtZW50PiBj
cmVhdGVGcmFnbWVudEZvclRyYW5zZm9ybVRvRnJhZ21lbnQoY29uc3QgU3RyaW5nJiwgY29uc3Qg
U3RyaW5nJiBzb3VyY2VNSU1FVHlwZSwgRG9jdW1lbnQqIG91dHB1dERvYyk7CiBQYXNzUmVmUHRy
PERvY3VtZW50RnJhZ21lbnQ+IGNyZWF0ZUNvbnRleHR1YWxGcmFnbWVudChjb25zdCBTdHJpbmcm
LCBIVE1MRWxlbWVudCosIFBhcnNlckNvbnRlbnRQb2xpY3ksIEV4Y2VwdGlvbkNvZGUmKTsKQEAg
LTY1LDggKzY1LDggQEAgdm9pZCByZXBsYWNlQ2hpbGRyZW5XaXRoVGV4dChDb250YWluZXJObwog
U3RyaW5nIGNyZWF0ZU1hcmt1cChjb25zdCBSYW5nZSYsIFZlY3RvcjxOb2RlKj4qID0gMCwgRUFu
bm90YXRlRm9ySW50ZXJjaGFuZ2UgPSBEb05vdEFubm90YXRlRm9ySW50ZXJjaGFuZ2UsIGJvb2wg
Y29udmVydEJsb2Nrc1RvSW5saW5lcyA9IGZhbHNlLCBFQWJzb2x1dGVVUkxzID0gRG9Ob3RSZXNv
bHZlVVJMcyk7CiBTdHJpbmcgY3JlYXRlTWFya3VwKGNvbnN0IE5vZGUmLCBFQ2hpbGRyZW5Pbmx5
ID0gSW5jbHVkZU5vZGUsIFZlY3RvcjxOb2RlKj4qID0gMCwgRUFic29sdXRlVVJMcyA9IERvTm90
UmVzb2x2ZVVSTHMsIFZlY3RvcjxRdWFsaWZpZWROYW1lPiogdGFnTmFtZXNUb1NraXAgPSAwLCBF
RnJhZ21lbnRTZXJpYWxpemF0aW9uID0gSFRNTEZyYWdtZW50U2VyaWFsaXphdGlvbik7CiAKLVN0
cmluZyBjcmVhdGVGdWxsTWFya3VwKGNvbnN0IE5vZGUmKTsKLVN0cmluZyBjcmVhdGVGdWxsTWFy
a3VwKGNvbnN0IFJhbmdlJik7CitXRUJDT1JFX0VYUE9SVCBTdHJpbmcgY3JlYXRlRnVsbE1hcmt1
cChjb25zdCBOb2RlJik7CitXRUJDT1JFX0VYUE9SVCBTdHJpbmcgY3JlYXRlRnVsbE1hcmt1cChj
b25zdCBSYW5nZSYpOwogCiBTdHJpbmcgdXJsVG9NYXJrdXAoY29uc3QgVVJMJiwgY29uc3QgU3Ry
aW5nJiB0aXRsZSk7CiAKSW5kZXg6IFNvdXJjZS9XZWJDb3JlL2VkaXRpbmcvY29jb2EvSFRNTENv
bnZlcnRlci5oCj09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT0KLS0tIFNvdXJjZS9XZWJDb3JlL2VkaXRpbmcvY29jb2EvSFRN
TENvbnZlcnRlci5oCShyZXZpc2lvbiAxNzI4NDcpCisrKyBTb3VyY2UvV2ViQ29yZS9lZGl0aW5n
L2NvY29hL0hUTUxDb252ZXJ0ZXIuaAkod29ya2luZyBjb3B5KQpAQCAtMzIsOSArMzIsOSBAQCBu
YW1lc3BhY2UgV2ViQ29yZSB7CiAgICAgCiBjbGFzcyBSYW5nZTsKICAgICAKLU5TQXR0cmlidXRl
ZFN0cmluZyAqYXR0cmlidXRlZFN0cmluZ0Zyb21SYW5nZShSYW5nZSYpOworV0VCQ09SRV9FWFBP
UlQgTlNBdHRyaWJ1dGVkU3RyaW5nICphdHRyaWJ1dGVkU3RyaW5nRnJvbVJhbmdlKFJhbmdlJik7
CiAjaWYgIVBMQVRGT1JNKElPUykKLU5TQXR0cmlidXRlZFN0cmluZyAqZWRpdGluZ0F0dHJpYnV0
ZWRTdHJpbmdGcm9tUmFuZ2UoUmFuZ2UmKTsKK1dFQkNPUkVfRVhQT1JUIE5TQXR0cmlidXRlZFN0
cmluZyAqZWRpdGluZ0F0dHJpYnV0ZWRTdHJpbmdGcm9tUmFuZ2UoUmFuZ2UmKTsKICNlbmRpZgog
CiB9CkluZGV4OiBTb3VyY2UvV2ViQ29yZS9lZGl0aW5nL21hYy9UZXh0QWx0ZXJuYXRpdmVXaXRo
UmFuZ2UuaAo9PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09Ci0tLSBTb3VyY2UvV2ViQ29yZS9lZGl0aW5nL21hYy9UZXh0QWx0
ZXJuYXRpdmVXaXRoUmFuZ2UuaAkocmV2aXNpb24gMTcyODQ3KQorKysgU291cmNlL1dlYkNvcmUv
ZWRpdGluZy9tYWMvVGV4dEFsdGVybmF0aXZlV2l0aFJhbmdlLmgJKHdvcmtpbmcgY29weSkKQEAg
LTM3LDEyICszNywxMiBAQCBuYW1lc3BhY2UgV2ViQ29yZSB7CiAKICNpZiBVU0UoRElDVEFUSU9O
X0FMVEVSTkFUSVZFUykKIHN0cnVjdCBUZXh0QWx0ZXJuYXRpdmVXaXRoUmFuZ2UgewotICAgIFRl
eHRBbHRlcm5hdGl2ZVdpdGhSYW5nZShOU1RleHRBbHRlcm5hdGl2ZXMqIGFuQWx0ZXJuYXRpdmVz
LCBOU1JhbmdlIGFSYW5nZSk7CisgICAgV0VCQ09SRV9FWFBPUlQgVGV4dEFsdGVybmF0aXZlV2l0
aFJhbmdlKE5TVGV4dEFsdGVybmF0aXZlcyogYW5BbHRlcm5hdGl2ZXMsIE5TUmFuZ2UgYVJhbmdl
KTsKICAgICBOU1JhbmdlIHJhbmdlOwogICAgIFJldGFpblB0cjxOU1RleHRBbHRlcm5hdGl2ZXM+
IGFsdGVybmF0aXZlczsKIH07CiAKLXZvaWQgY29sbGVjdERpY3RhdGlvblRleHRBbHRlcm5hdGl2
ZXMoTlNBdHRyaWJ1dGVkU3RyaW5nKiwgVmVjdG9yPFRleHRBbHRlcm5hdGl2ZVdpdGhSYW5nZT4m
IGFsdGVybmF0aXZlcyk7CitXRUJDT1JFX0VYUE9SVCB2b2lkIGNvbGxlY3REaWN0YXRpb25UZXh0
QWx0ZXJuYXRpdmVzKE5TQXR0cmlidXRlZFN0cmluZyosIFZlY3RvcjxUZXh0QWx0ZXJuYXRpdmVX
aXRoUmFuZ2U+JiBhbHRlcm5hdGl2ZXMpOwogCiAjZWxzZQogc3RydWN0IFRleHRBbHRlcm5hdGl2
ZVdpdGhSYW5nZSB7IH07CkluZGV4OiBTb3VyY2UvV2ViQ29yZS9lZGl0aW5nL21hYy9UZXh0VW5k
b0luc2VydGlvbk1hcmt1cE1hYy5oCj09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT0KLS0tIFNvdXJjZS9XZWJDb3JlL2VkaXRp
bmcvbWFjL1RleHRVbmRvSW5zZXJ0aW9uTWFya3VwTWFjLmgJKHJldmlzaW9uIDE3Mjg0NykKKysr
IFNvdXJjZS9XZWJDb3JlL2VkaXRpbmcvbWFjL1RleHRVbmRvSW5zZXJ0aW9uTWFya3VwTWFjLmgJ
KHdvcmtpbmcgY29weSkKQEAgLTM5LDggKzM5LDggQEAgZXh0ZXJuICJDIiBOU1N0cmluZyAqTlNU
ZXh0SW5zZXJ0aW9uVW5kbwogbmFtZXNwYWNlIFdlYkNvcmUgewogICAgIAogI2lmIFVTRShJTlNF
UlRJT05fVU5ET19HUk9VUElORykKLWJvb2wgc2hvdWxkUmVnaXN0ZXJJbnNlcnRpb25VbmRvR3Jv
dXAoTlNBdHRyaWJ1dGVkU3RyaW5nKik7Ci12b2lkIHJlZ2lzdGVySW5zZXJ0aW9uVW5kb0dyb3Vw
aW5nV2l0aFVuZG9NYW5hZ2VyKE5TVW5kb01hbmFnZXIqKTsKK1dFQkNPUkVfRVhQT1JUIGJvb2wg
c2hvdWxkUmVnaXN0ZXJJbnNlcnRpb25VbmRvR3JvdXAoTlNBdHRyaWJ1dGVkU3RyaW5nKik7CitX
RUJDT1JFX0VYUE9SVCB2b2lkIHJlZ2lzdGVySW5zZXJ0aW9uVW5kb0dyb3VwaW5nV2l0aFVuZG9N
YW5hZ2VyKE5TVW5kb01hbmFnZXIqKTsKICNlbmRpZgogICAgIAogfSAvLyBuYW1lc3BhY2UgV2Vi
Q29yZQpJbmRleDogU291cmNlL1dlYkNvcmUvaGlzdG9yeS9IaXN0b3J5SXRlbS5jcHAKPT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PQotLS0gU291cmNlL1dlYkNvcmUvaGlzdG9yeS9IaXN0b3J5SXRlbS5jcHAJKHJldmlzaW9u
IDE3Mjg0NykKKysrIFNvdXJjZS9XZWJDb3JlL2hpc3RvcnkvSGlzdG9yeUl0ZW0uY3BwCSh3b3Jr
aW5nIGNvcHkpCkBAIC01Myw3ICs1Myw3IEBAIHN0YXRpYyB2b2lkIGRlZmF1bHROb3RpZnlIaXN0
b3J5SXRlbUNoYW4KIHsKIH0KIAotdm9pZCAoKm5vdGlmeUhpc3RvcnlJdGVtQ2hhbmdlZCkoSGlz
dG9yeUl0ZW0qKSA9IGRlZmF1bHROb3RpZnlIaXN0b3J5SXRlbUNoYW5nZWQ7CitXRUJDT1JFX0VY
UE9SVCB2b2lkICgqbm90aWZ5SGlzdG9yeUl0ZW1DaGFuZ2VkKShIaXN0b3J5SXRlbSopID0gZGVm
YXVsdE5vdGlmeUhpc3RvcnlJdGVtQ2hhbmdlZDsKIAogSGlzdG9yeUl0ZW06Okhpc3RvcnlJdGVt
KCkKICAgICA6IG1fcGFnZVNjYWxlRmFjdG9yKDApCkluZGV4OiBTb3VyY2UvV2ViQ29yZS9oaXN0
b3J5L1BhZ2VDYWNoZS5oCj09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT0KLS0tIFNvdXJjZS9XZWJDb3JlL2hpc3RvcnkvUGFn
ZUNhY2hlLmgJKHJldmlzaW9uIDE3Mjg0NykKKysrIFNvdXJjZS9XZWJDb3JlL2hpc3RvcnkvUGFn
ZUNhY2hlLmgJKHdvcmtpbmcgY29weSkKQEAgLTk0LDcgKzk0LDcgQEAgbmFtZXNwYWNlIFdlYkNv
cmUgewogICAgICB9OwogCiAgICAgLy8gRnVuY3Rpb24gdG8gb2J0YWluIHRoZSBnbG9iYWwgcGFn
ZSBjYWNoZS4KLSAgICBQYWdlQ2FjaGUqIHBhZ2VDYWNoZSgpOworICAgIFdFQkNPUkVfRVhQT1JU
IFBhZ2VDYWNoZSogcGFnZUNhY2hlKCk7CiAKIH0gLy8gbmFtZXNwYWNlIFdlYkNvcmUKIApJbmRl
eDogU291cmNlL1dlYkNvcmUvaHRtbC9UaW1lUmFuZ2VzLmgKPT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PQotLS0gU291cmNl
L1dlYkNvcmUvaHRtbC9UaW1lUmFuZ2VzLmgJKHJldmlzaW9uIDE3Mjg0NykKKysrIFNvdXJjZS9X
ZWJDb3JlL2h0bWwvVGltZVJhbmdlcy5oCSh3b3JraW5nIGNvcHkpCkBAIC0zOCwzMSArMzgsMzEg
QEAgdHlwZWRlZiBpbnQgRXhjZXB0aW9uQ29kZTsKIAogY2xhc3MgVGltZVJhbmdlcyA6IHB1Ymxp
YyBSZWZDb3VudGVkPFRpbWVSYW5nZXM+IHsKIHB1YmxpYzoKLSAgICBzdGF0aWMgUGFzc1JlZlB0
cjxUaW1lUmFuZ2VzPiBjcmVhdGUoKTsKLSAgICBzdGF0aWMgUGFzc1JlZlB0cjxUaW1lUmFuZ2Vz
PiBjcmVhdGUoZG91YmxlIHN0YXJ0LCBkb3VibGUgZW5kKTsKKyAgICBXRUJDT1JFX0VYUE9SVCBz
dGF0aWMgUGFzc1JlZlB0cjxUaW1lUmFuZ2VzPiBjcmVhdGUoKTsKKyAgICBXRUJDT1JFX0VYUE9S
VCBzdGF0aWMgUGFzc1JlZlB0cjxUaW1lUmFuZ2VzPiBjcmVhdGUoZG91YmxlIHN0YXJ0LCBkb3Vi
bGUgZW5kKTsKICAgICBzdGF0aWMgUGFzc1JlZlB0cjxUaW1lUmFuZ2VzPiBjcmVhdGUoY29uc3Qg
UGxhdGZvcm1UaW1lUmFuZ2VzJik7CiAKLSAgICBkb3VibGUgc3RhcnQodW5zaWduZWQgaW5kZXgs
IEV4Y2VwdGlvbkNvZGUmKSBjb25zdDsKLSAgICBkb3VibGUgZW5kKHVuc2lnbmVkIGluZGV4LCBF
eGNlcHRpb25Db2RlJikgY29uc3Q7CisgICAgV0VCQ09SRV9FWFBPUlQgZG91YmxlIHN0YXJ0KHVu
c2lnbmVkIGluZGV4LCBFeGNlcHRpb25Db2RlJikgY29uc3Q7CisgICAgV0VCQ09SRV9FWFBPUlQg
ZG91YmxlIGVuZCh1bnNpZ25lZCBpbmRleCwgRXhjZXB0aW9uQ29kZSYpIGNvbnN0OwogCi0gICAg
UGFzc1JlZlB0cjxUaW1lUmFuZ2VzPiBjb3B5KCkgY29uc3Q7CisgICAgV0VCQ09SRV9FWFBPUlQg
UGFzc1JlZlB0cjxUaW1lUmFuZ2VzPiBjb3B5KCkgY29uc3Q7CiAgICAgdm9pZCBpbnZlcnQoKTsK
LSAgICB2b2lkIGludGVyc2VjdFdpdGgoY29uc3QgVGltZVJhbmdlcyYpOworICAgIFdFQkNPUkVf
RVhQT1JUIHZvaWQgaW50ZXJzZWN0V2l0aChjb25zdCBUaW1lUmFuZ2VzJik7CiAgICAgdm9pZCB1
bmlvbldpdGgoY29uc3QgVGltZVJhbmdlcyYpOwogICAgIAotICAgIHVuc2lnbmVkIGxlbmd0aCgp
IGNvbnN0OworICAgIFdFQkNPUkVfRVhQT1JUIHVuc2lnbmVkIGxlbmd0aCgpIGNvbnN0OwogCi0g
ICAgdm9pZCBhZGQoZG91YmxlIHN0YXJ0LCBkb3VibGUgZW5kKTsKKyAgICBXRUJDT1JFX0VYUE9S
VCB2b2lkIGFkZChkb3VibGUgc3RhcnQsIGRvdWJsZSBlbmQpOwogICAgIGJvb2wgY29udGFpbihk
b3VibGUgdGltZSkgY29uc3Q7CiAgICAgCiAgICAgc2l6ZV90IGZpbmQoZG91YmxlIHRpbWUpIGNv
bnN0OwotICAgIGRvdWJsZSBuZWFyZXN0KGRvdWJsZSB0aW1lKSBjb25zdDsKKyAgICBXRUJDT1JF
X0VYUE9SVCBkb3VibGUgbmVhcmVzdChkb3VibGUgdGltZSkgY29uc3Q7CiAgICAgZG91YmxlIHRv
dGFsRHVyYXRpb24oKSBjb25zdDsKIAogICAgIGNvbnN0IFBsYXRmb3JtVGltZVJhbmdlcyYgcmFu
Z2VzKCkgY29uc3QgeyByZXR1cm4gbV9yYW5nZXM7IH0KIAogcHJpdmF0ZToKLSAgICBleHBsaWNp
dCBUaW1lUmFuZ2VzKCk7CisgICAgV0VCQ09SRV9FWFBPUlQgZXhwbGljaXQgVGltZVJhbmdlcygp
OwogICAgIFRpbWVSYW5nZXMoZG91YmxlIHN0YXJ0LCBkb3VibGUgZW5kKTsKICAgICBUaW1lUmFu
Z2VzKGNvbnN0IFBsYXRmb3JtVGltZVJhbmdlcyYpOwogCkluZGV4OiBTb3VyY2UvV2ViQ29yZS9o
dG1sL3BhcnNlci9IVE1MUGFyc2VySWRpb21zLmgKPT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PQotLS0gU291cmNlL1dlYkNv
cmUvaHRtbC9wYXJzZXIvSFRNTFBhcnNlcklkaW9tcy5oCShyZXZpc2lvbiAxNzI4NDcpCisrKyBT
b3VyY2UvV2ViQ29yZS9odG1sL3BhcnNlci9IVE1MUGFyc2VySWRpb21zLmgJKHdvcmtpbmcgY29w
eSkKQEAgLTM5LDcgKzM5LDcgQEAgYm9vbCBpc05vdEhUTUxTcGFjZShVQ2hhcik7CiBib29sIGlz
SFRNTFNwYWNlQnV0Tm90TGluZUJyZWFrKFVDaGFyIGNoYXJhY3Rlcik7CiAKIC8vIFN0cmlwIGxl
YWRpbmcgYW5kIHRyYWlsaW5nIHdoaXRlc3BhY2UgYXMgZGVmaW5lZCBieSB0aGUgSFRNTCBzcGVj
aWZpY2F0aW9uLiAKLVN0cmluZyBzdHJpcExlYWRpbmdBbmRUcmFpbGluZ0hUTUxTcGFjZXMoY29u
c3QgU3RyaW5nJik7CitXRUJDT1JFX0VYUE9SVCBTdHJpbmcgc3RyaXBMZWFkaW5nQW5kVHJhaWxp
bmdIVE1MU3BhY2VzKGNvbnN0IFN0cmluZyYpOwogdGVtcGxhdGU8c2l6ZV90IGlubGluZUNhcGFj
aXR5PgogU3RyaW5nIHN0cmlwTGVhZGluZ0FuZFRyYWlsaW5nSFRNTFNwYWNlcyhjb25zdCBWZWN0
b3I8VUNoYXIsIGlubGluZUNhcGFjaXR5PiYgdmVjdG9yKQogewpJbmRleDogU291cmNlL1dlYkNv
cmUvaW5zcGVjdG9yL0luc3RydW1lbnRpbmdBZ2VudHMuaAo9PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09Ci0tLSBTb3VyY2Uv
V2ViQ29yZS9pbnNwZWN0b3IvSW5zdHJ1bWVudGluZ0FnZW50cy5oCShyZXZpc2lvbiAxNzI4NDcp
CisrKyBTb3VyY2UvV2ViQ29yZS9pbnNwZWN0b3IvSW5zdHJ1bWVudGluZ0FnZW50cy5oCSh3b3Jr
aW5nIGNvcHkpCkBAIC0xNzMsNyArMTczLDcgQEAgcHJpdmF0ZToKICAgICBJbnNwZWN0b3JXb3Jr
ZXJBZ2VudCogbV9pbnNwZWN0b3JXb3JrZXJBZ2VudDsKIH07CiAKLUluc3RydW1lbnRpbmdBZ2Vu
dHMqIGluc3RydW1lbnRhdGlvbkZvclBhZ2UoUGFnZSopOworV0VCQ09SRV9FWFBPUlQgSW5zdHJ1
bWVudGluZ0FnZW50cyogaW5zdHJ1bWVudGF0aW9uRm9yUGFnZShQYWdlKik7CiBJbnN0cnVtZW50
aW5nQWdlbnRzKiBpbnN0cnVtZW50YXRpb25Gb3JXb3JrZXJHbG9iYWxTY29wZShXb3JrZXJHbG9i
YWxTY29wZSopOwogCiB9CkluZGV4OiBTb3VyY2UvV2ViQ29yZS9sb2FkZXIvRnJhbWVMb2FkZXIu
aAo9PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09Ci0tLSBTb3VyY2UvV2ViQ29yZS9sb2FkZXIvRnJhbWVMb2FkZXIuaAkocmV2
aXNpb24gMTcyODQ3KQorKysgU291cmNlL1dlYkNvcmUvbG9hZGVyL0ZyYW1lTG9hZGVyLmgJKHdv
cmtpbmcgY29weSkKQEAgLTgwLDcgKzgwLDcgQEAgY2xhc3MgU3Vic3RpdHV0ZURhdGE7CiBzdHJ1
Y3QgRnJhbWVMb2FkUmVxdWVzdDsKIHN0cnVjdCBXaW5kb3dGZWF0dXJlczsKIAotYm9vbCBpc0Jh
Y2tGb3J3YXJkTG9hZFR5cGUoRnJhbWVMb2FkVHlwZSk7CitXRUJDT1JFX0VYUE9SVCBib29sIGlz
QmFja0ZvcndhcmRMb2FkVHlwZShGcmFtZUxvYWRUeXBlKTsKIAogY2xhc3MgRnJhbWVMb2FkZXIg
ewogICAgIFdURl9NQUtFX05PTkNPUFlBQkxFKEZyYW1lTG9hZGVyKTsKSW5kZXg6IFNvdXJjZS9X
ZWJDb3JlL2xvYWRlci9SZXNvdXJjZUJ1ZmZlci5oCj09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT0KLS0tIFNvdXJjZS9XZWJD
b3JlL2xvYWRlci9SZXNvdXJjZUJ1ZmZlci5oCShyZXZpc2lvbiAxNzI4NDcpCisrKyBTb3VyY2Uv
V2ViQ29yZS9sb2FkZXIvUmVzb3VyY2VCdWZmZXIuaAkod29ya2luZyBjb3B5KQpAQCAtNDcsMTMg
KzQ3LDEzIEBAIHB1YmxpYzoKICAgICBzdGF0aWMgUGFzc1JlZlB0cjxSZXNvdXJjZUJ1ZmZlcj4g
Y3JlYXRlKGNvbnN0IGNoYXIqIGRhdGEsIHVuc2lnbmVkIHNpemUpIHsgcmV0dXJuIGFkb3B0UmVm
KG5ldyBSZXNvdXJjZUJ1ZmZlcihkYXRhLCBzaXplKSk7IH0KICAgICBzdGF0aWMgUGFzc1JlZlB0
cjxSZXNvdXJjZUJ1ZmZlcj4gYWRvcHRTaGFyZWRCdWZmZXIoUGFzc1JlZlB0cjxTaGFyZWRCdWZm
ZXI+KTsKIAotICAgIHZpcnR1YWwgflJlc291cmNlQnVmZmVyKCk7CisgICAgV0VCQ09SRV9FWFBP
UlQgdmlydHVhbCB+UmVzb3VyY2VCdWZmZXIoKTsKIAotICAgIHZpcnR1YWwgY29uc3QgY2hhciog
ZGF0YSgpIGNvbnN0OwotICAgIHZpcnR1YWwgdW5zaWduZWQgc2l6ZSgpIGNvbnN0OwotICAgIHZp
cnR1YWwgYm9vbCBpc0VtcHR5KCkgY29uc3Q7CisgICAgV0VCQ09SRV9FWFBPUlQgdmlydHVhbCBj
b25zdCBjaGFyKiBkYXRhKCkgY29uc3Q7CisgICAgV0VCQ09SRV9FWFBPUlQgdmlydHVhbCB1bnNp
Z25lZCBzaXplKCkgY29uc3Q7CisgICAgV0VCQ09SRV9FWFBPUlQgdmlydHVhbCBib29sIGlzRW1w
dHkoKSBjb25zdDsKIAotICAgIHZvaWQgYXBwZW5kKGNvbnN0IGNoYXIqLCB1bnNpZ25lZCk7Cisg
ICAgV0VCQ09SRV9FWFBPUlQgdm9pZCBhcHBlbmQoY29uc3QgY2hhciosIHVuc2lnbmVkKTsKICAg
ICB2b2lkIGFwcGVuZChTaGFyZWRCdWZmZXIqKTsKICNpZiBVU0UoTkVUV09SS19DRkRBVEFfQVJS
QVlfQ0FMTEJBQ0spCiAgICAgdm9pZCBhcHBlbmQoQ0ZEYXRhUmVmKTsKQEAgLTYyLDE0ICs2Miwx
NCBAQCBwdWJsaWM6CiAgICAgCiAgICAgdW5zaWduZWQgZ2V0U29tZURhdGEoY29uc3QgY2hhciom
IGRhdGEsIHVuc2lnbmVkIHBvc2l0aW9uID0gMCkgY29uc3Q7CiAgICAgCi0gICAgU2hhcmVkQnVm
ZmVyKiBzaGFyZWRCdWZmZXIoKSBjb25zdDsKKyAgICBXRUJDT1JFX0VYUE9SVCBTaGFyZWRCdWZm
ZXIqIHNoYXJlZEJ1ZmZlcigpIGNvbnN0OwogI2lmIFVTRShGT1VOREFUSU9OKQogICAgIHZvaWQg
dHJ5UmVwbGFjZVNoYXJlZEJ1ZmZlckNvbnRlbnRzKFNoYXJlZEJ1ZmZlciopOwogI2VuZGlmCiAg
ICAgUGFzc1JlZlB0cjxSZXNvdXJjZUJ1ZmZlcj4gY29weSgpIGNvbnN0OwogCiAjaWYgVVNFKEZP
VU5EQVRJT04pCi0gICAgUmV0YWluUHRyPE5TRGF0YT4gY3JlYXRlTlNEYXRhKCk7CisgICAgV0VC
Q09SRV9FWFBPUlQgUmV0YWluUHRyPE5TRGF0YT4gY3JlYXRlTlNEYXRhKCk7CiAjZW5kaWYKICNp
ZiBVU0UoQ0YpCiAgICAgUmV0YWluUHRyPENGRGF0YVJlZj4gY3JlYXRlQ0ZEYXRhKCk7CkBAIC03
OSwxMCArNzksMTAgQEAgcHVibGljOgogI2VuZGlmCiAKIHByb3RlY3RlZDoKLSAgICBSZXNvdXJj
ZUJ1ZmZlcigpOworICAgIFdFQkNPUkVfRVhQT1JUIFJlc291cmNlQnVmZmVyKCk7CiAKIHByaXZh
dGU6Ci0gICAgUmVzb3VyY2VCdWZmZXIoY29uc3QgY2hhciosIHVuc2lnbmVkKTsKKyAgICBXRUJD
T1JFX0VYUE9SVCBSZXNvdXJjZUJ1ZmZlcihjb25zdCBjaGFyKiwgdW5zaWduZWQpOwogICAgIFJl
c291cmNlQnVmZmVyKFBhc3NSZWZQdHI8U2hhcmVkQnVmZmVyPik7CiAKICAgICBSZWZQdHI8U2hh
cmVkQnVmZmVyPiBtX3NoYXJlZEJ1ZmZlcjsKSW5kZXg6IFNvdXJjZS9XZWJDb3JlL2xvYWRlci9S
ZXNvdXJjZUxvYWRTY2hlZHVsZXIuaAo9PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09Ci0tLSBTb3VyY2UvV2ViQ29yZS9sb2Fk
ZXIvUmVzb3VyY2VMb2FkU2NoZWR1bGVyLmgJKHJldmlzaW9uIDE3Mjg0NykKKysrIFNvdXJjZS9X
ZWJDb3JlL2xvYWRlci9SZXNvdXJjZUxvYWRTY2hlZHVsZXIuaAkod29ya2luZyBjb3B5KQpAQCAt
NTAsMTUgKzUwLDE1IEBAIGNsYXNzIFJlc291cmNlTG9hZFNjaGVkdWxlciB7CiBwdWJsaWM6CiAg
ICAgZnJpZW5kIFJlc291cmNlTG9hZFNjaGVkdWxlciogcmVzb3VyY2VMb2FkU2NoZWR1bGVyKCk7
CiAKLSAgICB2aXJ0dWFsIFBhc3NSZWZQdHI8U3VicmVzb3VyY2VMb2FkZXI+IHNjaGVkdWxlU3Vi
cmVzb3VyY2VMb2FkKEZyYW1lKiwgQ2FjaGVkUmVzb3VyY2UqLCBjb25zdCBSZXNvdXJjZVJlcXVl
c3QmLCBSZXNvdXJjZUxvYWRQcmlvcml0eSwgY29uc3QgUmVzb3VyY2VMb2FkZXJPcHRpb25zJik7
Ci0gICAgdmlydHVhbCBQYXNzUmVmUHRyPE5ldHNjYXBlUGx1Z0luU3RyZWFtTG9hZGVyPiBzY2hl
ZHVsZVBsdWdpblN0cmVhbUxvYWQoRnJhbWUqLCBOZXRzY2FwZVBsdWdJblN0cmVhbUxvYWRlckNs
aWVudCosIGNvbnN0IFJlc291cmNlUmVxdWVzdCYpOwotICAgIHZpcnR1YWwgdm9pZCByZW1vdmUo
UmVzb3VyY2VMb2FkZXIqKTsKKyAgICBXRUJDT1JFX0VYUE9SVCB2aXJ0dWFsIFBhc3NSZWZQdHI8
U3VicmVzb3VyY2VMb2FkZXI+IHNjaGVkdWxlU3VicmVzb3VyY2VMb2FkKEZyYW1lKiwgQ2FjaGVk
UmVzb3VyY2UqLCBjb25zdCBSZXNvdXJjZVJlcXVlc3QmLCBSZXNvdXJjZUxvYWRQcmlvcml0eSwg
Y29uc3QgUmVzb3VyY2VMb2FkZXJPcHRpb25zJik7CisgICAgV0VCQ09SRV9FWFBPUlQgdmlydHVh
bCBQYXNzUmVmUHRyPE5ldHNjYXBlUGx1Z0luU3RyZWFtTG9hZGVyPiBzY2hlZHVsZVBsdWdpblN0
cmVhbUxvYWQoRnJhbWUqLCBOZXRzY2FwZVBsdWdJblN0cmVhbUxvYWRlckNsaWVudCosIGNvbnN0
IFJlc291cmNlUmVxdWVzdCYpOworICAgIFdFQkNPUkVfRVhQT1JUIHZpcnR1YWwgdm9pZCByZW1v
dmUoUmVzb3VyY2VMb2FkZXIqKTsKICAgICB2aXJ0dWFsIHZvaWQgc2V0RGVmZXJzTG9hZGluZyhS
ZXNvdXJjZUxvYWRlciosIGJvb2wpOwogICAgIHZpcnR1YWwgdm9pZCBjcm9zc09yaWdpblJlZGly
ZWN0UmVjZWl2ZWQoUmVzb3VyY2VMb2FkZXIqLCBjb25zdCBVUkwmIHJlZGlyZWN0VVJMKTsKICAg
ICAKLSAgICB2aXJ0dWFsIHZvaWQgc2VydmVQZW5kaW5nUmVxdWVzdHMoUmVzb3VyY2VMb2FkUHJp
b3JpdHkgbWluaW11bVByaW9yaXR5ID0gUmVzb3VyY2VMb2FkUHJpb3JpdHlWZXJ5TG93KTsKLSAg
ICB2aXJ0dWFsIHZvaWQgc3VzcGVuZFBlbmRpbmdSZXF1ZXN0cygpOwotICAgIHZpcnR1YWwgdm9p
ZCByZXN1bWVQZW5kaW5nUmVxdWVzdHMoKTsKKyAgICBXRUJDT1JFX0VYUE9SVCB2aXJ0dWFsIHZv
aWQgc2VydmVQZW5kaW5nUmVxdWVzdHMoUmVzb3VyY2VMb2FkUHJpb3JpdHkgbWluaW11bVByaW9y
aXR5ID0gUmVzb3VyY2VMb2FkUHJpb3JpdHlWZXJ5TG93KTsKKyAgICBXRUJDT1JFX0VYUE9SVCB2
aXJ0dWFsIHZvaWQgc3VzcGVuZFBlbmRpbmdSZXF1ZXN0cygpOworICAgIFdFQkNPUkVfRVhQT1JU
IHZpcnR1YWwgdm9pZCByZXN1bWVQZW5kaW5nUmVxdWVzdHMoKTsKICAgICAKICAgICBib29sIGlz
U2VyaWFsTG9hZGluZ0VuYWJsZWQoKSBjb25zdCB7IHJldHVybiBtX2lzU2VyaWFsTG9hZGluZ0Vu
YWJsZWQ7IH0KICAgICB2aXJ0dWFsIHZvaWQgc2V0U2VyaWFsTG9hZGluZ0VuYWJsZWQoYm9vbCBi
KSB7IG1faXNTZXJpYWxMb2FkaW5nRW5hYmxlZCA9IGI7IH0KQEAgLTcyLDEzICs3MiwxMyBAQCBw
dWJsaWM6CiAgICAgfTsKIAogcHJvdGVjdGVkOgotICAgIFJlc291cmNlTG9hZFNjaGVkdWxlcigp
OwotICAgIHZpcnR1YWwgflJlc291cmNlTG9hZFNjaGVkdWxlcigpOworICAgIFdFQkNPUkVfRVhQ
T1JUIFJlc291cmNlTG9hZFNjaGVkdWxlcigpOworICAgIFdFQkNPUkVfRVhQT1JUIHZpcnR1YWwg
flJlc291cmNlTG9hZFNjaGVkdWxlcigpOwogCi0gICAgdm9pZCBub3RpZnlEaWRTY2hlZHVsZVJl
c291cmNlUmVxdWVzdChSZXNvdXJjZUxvYWRlciopOworICAgIFdFQkNPUkVfRVhQT1JUIHZvaWQg
bm90aWZ5RGlkU2NoZWR1bGVSZXNvdXJjZVJlcXVlc3QoUmVzb3VyY2VMb2FkZXIqKTsKIAogI2lm
IFVTRShRVUlDS19MT09LKQotICAgIGJvb2wgbWF5YmVMb2FkUXVpY2tMb29rUmVzb3VyY2UoUmVz
b3VyY2VMb2FkZXImKTsKKyAgICBXRUJDT1JFX0VYUE9SVCBib29sIG1heWJlTG9hZFF1aWNrTG9v
a1Jlc291cmNlKFJlc291cmNlTG9hZGVyJik7CiAjZW5kaWYKIAogcHJpdmF0ZToKQEAgLTExOCw3
ICsxMTgsNyBAQCBwcml2YXRlOgogICAgIH07CiAgICAgCiAgICAgSG9zdEluZm9ybWF0aW9uKiBo
b3N0Rm9yVVJMKGNvbnN0IFVSTCYsIENyZWF0ZUhvc3RQb2xpY3kgPSBGaW5kT25seSk7Ci0gICAg
dm9pZCBzZXJ2ZVBlbmRpbmdSZXF1ZXN0cyhIb3N0SW5mb3JtYXRpb24qLCBSZXNvdXJjZUxvYWRQ
cmlvcml0eSk7CisgICAgV0VCQ09SRV9FWFBPUlQgdm9pZCBzZXJ2ZVBlbmRpbmdSZXF1ZXN0cyhI
b3N0SW5mb3JtYXRpb24qLCBSZXNvdXJjZUxvYWRQcmlvcml0eSk7CiAKICAgICB0eXBlZGVmIEhh
c2hNYXA8U3RyaW5nLCBIb3N0SW5mb3JtYXRpb24qLCBTdHJpbmdIYXNoPiBIb3N0TWFwOwogICAg
IEhvc3RNYXAgbV9ob3N0czsKQEAgLTEzMCw3ICsxMzAsNyBAQCBwcml2YXRlOgogICAgIGJvb2wg
bV9pc1NlcmlhbExvYWRpbmdFbmFibGVkOwogfTsKIAotUmVzb3VyY2VMb2FkU2NoZWR1bGVyKiBy
ZXNvdXJjZUxvYWRTY2hlZHVsZXIoKTsKK1dFQkNPUkVfRVhQT1JUIFJlc291cmNlTG9hZFNjaGVk
dWxlciogcmVzb3VyY2VMb2FkU2NoZWR1bGVyKCk7CiAKIH0KIApJbmRleDogU291cmNlL1dlYkNv
cmUvbG9hZGVyL1Jlc291cmNlTG9hZGVyLmgKPT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PQotLS0gU291cmNlL1dlYkNvcmUv
bG9hZGVyL1Jlc291cmNlTG9hZGVyLmgJKHJldmlzaW9uIDE3Mjg0NykKKysrIFNvdXJjZS9XZWJD
b3JlL2xvYWRlci9SZXNvdXJjZUxvYWRlci5oCSh3b3JraW5nIGNvcHkpCkBAIC01Nyw3ICs1Nyw3
IEBAIGNsYXNzIFJlc291cmNlTG9hZGVyIDogcHVibGljIFJlZkNvdW50ZWQKIHB1YmxpYzoKICAg
ICB2aXJ0dWFsIH5SZXNvdXJjZUxvYWRlcigpID0gMDsKIAotICAgIHZvaWQgY2FuY2VsKCk7Cisg
ICAgV0VCQ09SRV9FWFBPUlQgdm9pZCBjYW5jZWwoKTsKIAogICAgIHZpcnR1YWwgYm9vbCBpbml0
KGNvbnN0IFJlc291cmNlUmVxdWVzdCYpOwogCkBAIC03MSwxMiArNzEsMTIgQEAgcHVibGljOgog
ICAgIHZpcnR1YWwgY29uc3QgUmVzb3VyY2VSZXF1ZXN0JiBpT1NPcmlnaW5hbFJlcXVlc3QoKSBj
b25zdCB7IHJldHVybiByZXF1ZXN0KCk7IH0KICNlbmRpZgogCi0gICAgRnJhbWVMb2FkZXIqIGZy
YW1lTG9hZGVyKCkgY29uc3Q7CisgICAgV0VCQ09SRV9FWFBPUlQgRnJhbWVMb2FkZXIqIGZyYW1l
TG9hZGVyKCkgY29uc3Q7CiAgICAgRG9jdW1lbnRMb2FkZXIqIGRvY3VtZW50TG9hZGVyKCkgY29u
c3QgeyByZXR1cm4gbV9kb2N1bWVudExvYWRlci5nZXQoKTsgfQotICAgIGNvbnN0IFJlc291cmNl
UmVxdWVzdCYgb3JpZ2luYWxSZXF1ZXN0KCkgY29uc3QgeyByZXR1cm4gbV9vcmlnaW5hbFJlcXVl
c3Q7IH0KKyAgICBXRUJDT1JFX0VYUE9SVCBjb25zdCBSZXNvdXJjZVJlcXVlc3QmIG9yaWdpbmFs
UmVxdWVzdCgpIGNvbnN0IHsgcmV0dXJuIG1fb3JpZ2luYWxSZXF1ZXN0OyB9CiAgICAgCi0gICAg
dm9pZCBjYW5jZWwoY29uc3QgUmVzb3VyY2VFcnJvciYpOwotICAgIFJlc291cmNlRXJyb3IgY2Fu
Y2VsbGVkRXJyb3IoKTsKKyAgICBXRUJDT1JFX0VYUE9SVCB2b2lkIGNhbmNlbChjb25zdCBSZXNv
dXJjZUVycm9yJik7CisgICAgV0VCQ09SRV9FWFBPUlQgUmVzb3VyY2VFcnJvciBjYW5jZWxsZWRF
cnJvcigpOwogICAgIFJlc291cmNlRXJyb3IgYmxvY2tlZEVycm9yKCk7CiAgICAgUmVzb3VyY2VF
cnJvciBjYW5ub3RTaG93VVJMRXJyb3IoKTsKICAgICAKQEAgLTEwNyw3ICsxMDcsNyBAQCBwdWJs
aWM6CiAKICAgICB2aXJ0dWFsIGJvb2wgc2hvdWxkVXNlQ3JlZGVudGlhbFN0b3JhZ2UoKTsKICAg
ICB2aXJ0dWFsIHZvaWQgZGlkUmVjZWl2ZUF1dGhlbnRpY2F0aW9uQ2hhbGxlbmdlKGNvbnN0IEF1
dGhlbnRpY2F0aW9uQ2hhbGxlbmdlJik7Ci0gICAgdm9pZCBkaWRDYW5jZWxBdXRoZW50aWNhdGlv
bkNoYWxsZW5nZShjb25zdCBBdXRoZW50aWNhdGlvbkNoYWxsZW5nZSYpOworICAgIFdFQkNPUkVf
RVhQT1JUIHZvaWQgZGlkQ2FuY2VsQXV0aGVudGljYXRpb25DaGFsbGVuZ2UoY29uc3QgQXV0aGVu
dGljYXRpb25DaGFsbGVuZ2UmKTsKICNpZiBVU0UoUFJPVEVDVElPTl9TUEFDRV9BVVRIX0NBTExC
QUNLKQogICAgIHZpcnR1YWwgYm9vbCBjYW5BdXRoZW50aWNhdGVBZ2FpbnN0UHJvdGVjdGlvblNw
YWNlKGNvbnN0IFByb3RlY3Rpb25TcGFjZSYpOwogI2VuZGlmCkluZGV4OiBTb3VyY2UvV2ViQ29y
ZS9sb2FkZXIvU3ViZnJhbWVMb2FkZXIuaAo9PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09Ci0tLSBTb3VyY2UvV2ViQ29yZS9s
b2FkZXIvU3ViZnJhbWVMb2FkZXIuaAkocmV2aXNpb24gMTcyODQ3KQorKysgU291cmNlL1dlYkNv
cmUvbG9hZGVyL1N1YmZyYW1lTG9hZGVyLmgJKHdvcmtpbmcgY29weSkKQEAgLTY1LDcgKzY1LDcg
QEAgcHVibGljOgogCiAgICAgUGFzc1JlZlB0cjxXaWRnZXQ+IGNyZWF0ZUphdmFBcHBsZXRXaWRn
ZXQoY29uc3QgSW50U2l6ZSYsIEhUTUxBcHBsZXRFbGVtZW50JiwgY29uc3QgVmVjdG9yPFN0cmlu
Zz4mIHBhcmFtTmFtZXMsIGNvbnN0IFZlY3RvcjxTdHJpbmc+JiBwYXJhbVZhbHVlcyk7CiAKLSAg
ICBib29sIGFsbG93UGx1Z2lucyhSZWFzb25Gb3JDYWxsaW5nQWxsb3dQbHVnaW5zKTsKKyAgICBX
RUJDT1JFX0VYUE9SVCBib29sIGFsbG93UGx1Z2lucyhSZWFzb25Gb3JDYWxsaW5nQWxsb3dQbHVn
aW5zKTsKIAogICAgIGJvb2wgY29udGFpbnNQbHVnaW5zKCkgY29uc3QgeyByZXR1cm4gbV9jb250
YWluc1BsdWdpbnM7IH0KICAgICAKSW5kZXg6IFNvdXJjZS9XZWJDb3JlL2xvYWRlci9TdWJyZXNv
dXJjZUxvYWRlci5oCj09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT0KLS0tIFNvdXJjZS9XZWJDb3JlL2xvYWRlci9TdWJyZXNv
dXJjZUxvYWRlci5oCShyZXZpc2lvbiAxNzI4NDcpCisrKyBTb3VyY2UvV2ViQ29yZS9sb2FkZXIv
U3VicmVzb3VyY2VMb2FkZXIuaAkod29ya2luZyBjb3B5KQpAQCAtNDQsNyArNDQsNyBAQCBjbGFz
cyBSZXNvdXJjZVJlcXVlc3Q7CiAKIGNsYXNzIFN1YnJlc291cmNlTG9hZGVyIGZpbmFsIDogcHVi
bGljIFJlc291cmNlTG9hZGVyIHsKIHB1YmxpYzoKLSAgICBzdGF0aWMgUGFzc1JlZlB0cjxTdWJy
ZXNvdXJjZUxvYWRlcj4gY3JlYXRlKEZyYW1lKiwgQ2FjaGVkUmVzb3VyY2UqLCBjb25zdCBSZXNv
dXJjZVJlcXVlc3QmLCBjb25zdCBSZXNvdXJjZUxvYWRlck9wdGlvbnMmKTsKKyAgICBXRUJDT1JF
X0VYUE9SVCBzdGF0aWMgUGFzc1JlZlB0cjxTdWJyZXNvdXJjZUxvYWRlcj4gY3JlYXRlKEZyYW1l
KiwgQ2FjaGVkUmVzb3VyY2UqLCBjb25zdCBSZXNvdXJjZVJlcXVlc3QmLCBjb25zdCBSZXNvdXJj
ZUxvYWRlck9wdGlvbnMmKTsKIAogICAgIHZpcnR1YWwgflN1YnJlc291cmNlTG9hZGVyKCk7CiAK
SW5kZXg6IFNvdXJjZS9XZWJDb3JlL2xvYWRlci9UZXh0UmVzb3VyY2VEZWNvZGVyLmgKPT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PQotLS0gU291cmNlL1dlYkNvcmUvbG9hZGVyL1RleHRSZXNvdXJjZURlY29kZXIuaAkocmV2
aXNpb24gMTcyODQ3KQorKysgU291cmNlL1dlYkNvcmUvbG9hZGVyL1RleHRSZXNvdXJjZURlY29k
ZXIuaAkod29ya2luZyBjb3B5KQpAQCAtNDcsMTUgKzQ3LDE1IEBAIHB1YmxpYzoKICAgICB7CiAg
ICAgICAgIHJldHVybiBhZG9wdFJlZihuZXcgVGV4dFJlc291cmNlRGVjb2RlcihtaW1lVHlwZSwg
ZGVmYXVsdEVuY29kaW5nLCB1c2VzRW5jb2RpbmdEZXRlY3RvcikpOwogICAgIH0KLSAgICB+VGV4
dFJlc291cmNlRGVjb2RlcigpOworICAgIFdFQkNPUkVfRVhQT1JUIH5UZXh0UmVzb3VyY2VEZWNv
ZGVyKCk7CiAKICAgICB2b2lkIHNldEVuY29kaW5nKGNvbnN0IFRleHRFbmNvZGluZyYsIEVuY29k
aW5nU291cmNlKTsKICAgICBjb25zdCBUZXh0RW5jb2RpbmcmIGVuY29kaW5nKCkgY29uc3QgeyBy
ZXR1cm4gbV9lbmNvZGluZzsgfQogCi0gICAgU3RyaW5nIGRlY29kZShjb25zdCBjaGFyKiBkYXRh
LCBzaXplX3QgbGVuZ3RoKTsKLSAgICBTdHJpbmcgZmx1c2goKTsKKyAgICBXRUJDT1JFX0VYUE9S
VCBTdHJpbmcgZGVjb2RlKGNvbnN0IGNoYXIqIGRhdGEsIHNpemVfdCBsZW5ndGgpOworICAgIFdF
QkNPUkVfRVhQT1JUIFN0cmluZyBmbHVzaCgpOwogCi0gICAgU3RyaW5nIGRlY29kZUFuZEZsdXNo
KGNvbnN0IGNoYXIqIGRhdGEsIHNpemVfdCBsZW5ndGgpOworICAgIFdFQkNPUkVfRVhQT1JUIFN0
cmluZyBkZWNvZGVBbmRGbHVzaChjb25zdCBjaGFyKiBkYXRhLCBzaXplX3QgbGVuZ3RoKTsKIAog
ICAgIHZvaWQgc2V0SGludEVuY29kaW5nKGNvbnN0IFRleHRSZXNvdXJjZURlY29kZXIqIGhpbnRE
ZWNvZGVyKQogICAgIHsKQEAgLTY5LDcgKzY5LDcgQEAgcHVibGljOgogICAgIGJvb2wgc2F3RXJy
b3IoKSBjb25zdCB7IHJldHVybiBtX3Nhd0Vycm9yOyB9CiAKIHByaXZhdGU6Ci0gICAgVGV4dFJl
c291cmNlRGVjb2Rlcihjb25zdCBTdHJpbmcmIG1pbWVUeXBlLCBjb25zdCBUZXh0RW5jb2Rpbmcm
IGRlZmF1bHRFbmNvZGluZywgYm9vbCB1c2VzRW5jb2RpbmdEZXRlY3Rvcik7CisgICAgV0VCQ09S
RV9FWFBPUlQgVGV4dFJlc291cmNlRGVjb2Rlcihjb25zdCBTdHJpbmcmIG1pbWVUeXBlLCBjb25z
dCBUZXh0RW5jb2RpbmcmIGRlZmF1bHRFbmNvZGluZywgYm9vbCB1c2VzRW5jb2RpbmdEZXRlY3Rv
cik7CiAKICAgICBlbnVtIENvbnRlbnRUeXBlIHsgUGxhaW5UZXh0LCBIVE1MLCBYTUwsIENTUyB9
OyAvLyBQbGFpblRleHQgb25seSBjaGVja3MgZm9yIEJPTS4KICAgICBzdGF0aWMgQ29udGVudFR5
cGUgZGV0ZXJtaW5lQ29udGVudFR5cGUoY29uc3QgU3RyaW5nJiBtaW1lVHlwZSk7CkluZGV4OiBT
b3VyY2UvV2ViQ29yZS9sb2FkZXIvYXBwY2FjaGUvQXBwbGljYXRpb25DYWNoZVN0b3JhZ2UuaAo9
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09Ci0tLSBTb3VyY2UvV2ViQ29yZS9sb2FkZXIvYXBwY2FjaGUvQXBwbGljYXRpb25D
YWNoZVN0b3JhZ2UuaAkocmV2aXNpb24gMTcyODQ3KQorKysgU291cmNlL1dlYkNvcmUvbG9hZGVy
L2FwcGNhY2hlL0FwcGxpY2F0aW9uQ2FjaGVTdG9yYWdlLmgJKHdvcmtpbmcgY29weSkKQEAgLTE1
MCw3ICsxNTAsNyBAQCBwcml2YXRlOgogICAgIGZyaWVuZCBjbGFzcyBXVEY6Ok5ldmVyRGVzdHJv
eWVkPEFwcGxpY2F0aW9uQ2FjaGVTdG9yYWdlPjsKIH07CiAKLUFwcGxpY2F0aW9uQ2FjaGVTdG9y
YWdlJiBjYWNoZVN0b3JhZ2UoKTsKK1dFQkNPUkVfRVhQT1JUIEFwcGxpY2F0aW9uQ2FjaGVTdG9y
YWdlJiBjYWNoZVN0b3JhZ2UoKTsKIAogfSAvLyBuYW1lc3BhY2UgV2ViQ29yZQogCkluZGV4OiBT
b3VyY2UvV2ViQ29yZS9sb2FkZXIvY2FjaGUvTWVtb3J5Q2FjaGUuaAo9PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09Ci0tLSBT
b3VyY2UvV2ViQ29yZS9sb2FkZXIvY2FjaGUvTWVtb3J5Q2FjaGUuaAkocmV2aXNpb24gMTcyODQ3
KQorKysgU291cmNlL1dlYkNvcmUvbG9hZGVyL2NhY2hlL01lbW9yeUNhY2hlLmgJKHdvcmtpbmcg
Y29weSkKQEAgLTI0Nyw3ICsyNDcsNyBAQCBwcml2YXRlOgogfTsKIAogLy8gRnVuY3Rpb24gdG8g
b2J0YWluIHRoZSBnbG9iYWwgY2FjaGUuCi1NZW1vcnlDYWNoZSogbWVtb3J5Q2FjaGUoKTsKK1dF
QkNPUkVfRVhQT1JUIE1lbW9yeUNhY2hlKiBtZW1vcnlDYWNoZSgpOwogCiB9CiAKSW5kZXg6IFNv
dXJjZS9XZWJDb3JlL2xvYWRlci9pY29uL0ljb25EYXRhYmFzZUJhc2UuaAo9PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09Ci0t
LSBTb3VyY2UvV2ViQ29yZS9sb2FkZXIvaWNvbi9JY29uRGF0YWJhc2VCYXNlLmgJKHJldmlzaW9u
IDE3Mjg0NykKKysrIFNvdXJjZS9XZWJDb3JlL2xvYWRlci9pY29uL0ljb25EYXRhYmFzZUJhc2Uu
aAkod29ya2luZyBjb3B5KQpAQCAtMjEzLDggKzIxMyw4IEBAIHB1YmxpYzoKIH07CiAKIC8vIEZ1
bmN0aW9ucyB0byBnZXQvc2V0IHRoZSBnbG9iYWwgaWNvbiBkYXRhYmFzZS4KLUljb25EYXRhYmFz
ZUJhc2UmIGljb25EYXRhYmFzZSgpOwotdm9pZCBzZXRHbG9iYWxJY29uRGF0YWJhc2UoSWNvbkRh
dGFiYXNlQmFzZSopOworV0VCQ09SRV9FWFBPUlQgSWNvbkRhdGFiYXNlQmFzZSYgaWNvbkRhdGFi
YXNlKCk7CitXRUJDT1JFX0VYUE9SVCB2b2lkIHNldEdsb2JhbEljb25EYXRhYmFzZShJY29uRGF0
YWJhc2VCYXNlKik7CiBib29sIGRvY3VtZW50Q2FuSGF2ZUljb24oY29uc3QgU3RyaW5nJik7CiAK
IH0gLy8gbmFtZXNwYWNlIFdlYkNvcmUKSW5kZXg6IFNvdXJjZS9XZWJDb3JlL2xvYWRlci9pb3Mv
RGlza0ltYWdlQ2FjaGVJT1MuaAo9PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09Ci0tLSBTb3VyY2UvV2ViQ29yZS9sb2FkZXIv
aW9zL0Rpc2tJbWFnZUNhY2hlSU9TLmgJKHJldmlzaW9uIDE3Mjg0NykKKysrIFNvdXJjZS9XZWJD
b3JlL2xvYWRlci9pb3MvRGlza0ltYWdlQ2FjaGVJT1MuaAkod29ya2luZyBjb3B5KQpAQCAtMTM4
LDcgKzEzOCw3IEBAIHByaXZhdGU6CiB9OwogCiAvLyBGdW5jdGlvbiB0byBvYnRhaW4gdGhlIGds
b2JhbCBkaXNrIGltYWdlIGNhY2hlLgotRGlza0ltYWdlQ2FjaGUmIGRpc2tJbWFnZUNhY2hlKCk7
CitXRUJDT1JFX0VYUE9SVCBEaXNrSW1hZ2VDYWNoZSYgZGlza0ltYWdlQ2FjaGUoKTsKIAogfSAv
LyBuYW1lc3BhY2UgV2ViQ29yZQogCkluZGV4OiBTb3VyY2UvV2ViQ29yZS9wYWdlL0Nocm9tZS5o
Cj09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT0KLS0tIFNvdXJjZS9XZWJDb3JlL3BhZ2UvQ2hyb21lLmgJKHJldmlzaW9uIDE3
Mjg0NykKKysrIFNvdXJjZS9XZWJDb3JlL3BhZ2UvQ2hyb21lLmgJKHdvcmtpbmcgY29weSkKQEAg
LTE1Niw4ICsxNTYsOCBAQCBwdWJsaWM6CiAKICAgICBXRUJDT1JFX0VYUE9SVCB2b2lkIHByaW50
KEZyYW1lKik7CiAKLSAgICB2b2lkIGVuYWJsZVN1ZGRlblRlcm1pbmF0aW9uKCk7Ci0gICAgdm9p
ZCBkaXNhYmxlU3VkZGVuVGVybWluYXRpb24oKTsKKyAgICBXRUJDT1JFX0VYUE9SVCB2b2lkIGVu
YWJsZVN1ZGRlblRlcm1pbmF0aW9uKCk7CisgICAgV0VCQ09SRV9FWFBPUlQgdm9pZCBkaXNhYmxl
U3VkZGVuVGVybWluYXRpb24oKTsKIAogI2lmIEVOQUJMRShJTlBVVF9UWVBFX0NPTE9SKQogICAg
IFBhc3NPd25QdHI8Q29sb3JDaG9vc2VyPiBjcmVhdGVDb2xvckNob29zZXIoQ29sb3JDaG9vc2Vy
Q2xpZW50KiwgY29uc3QgQ29sb3ImIGluaXRpYWxDb2xvcik7CkluZGV4OiBTb3VyY2UvV2ViQ29y
ZS9wYWdlL1NlY3VyaXR5T3JpZ2luLmgKPT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PQotLS0gU291cmNlL1dlYkNvcmUvcGFn
ZS9TZWN1cml0eU9yaWdpbi5oCShyZXZpc2lvbiAxNzI4NDcpCisrKyBTb3VyY2UvV2ViQ29yZS9w
YWdlL1NlY3VyaXR5T3JpZ2luLmgJKHdvcmtpbmcgY29weSkKQEAgLTUwLDE3ICs1MCwxNyBAQCBw
dWJsaWM6CiAgICAgICAgIEJsb2NrQWxsU3RvcmFnZQogICAgIH07CiAKLSAgICBzdGF0aWMgUGFz
c1JlZlB0cjxTZWN1cml0eU9yaWdpbj4gY3JlYXRlKGNvbnN0IFVSTCYpOworICAgIFdFQkNPUkVf
RVhQT1JUIHN0YXRpYyBQYXNzUmVmUHRyPFNlY3VyaXR5T3JpZ2luPiBjcmVhdGUoY29uc3QgVVJM
Jik7CiAgICAgc3RhdGljIFBhc3NSZWZQdHI8U2VjdXJpdHlPcmlnaW4+IGNyZWF0ZVVuaXF1ZSgp
OwogCi0gICAgc3RhdGljIFBhc3NSZWZQdHI8U2VjdXJpdHlPcmlnaW4+IGNyZWF0ZUZyb21EYXRh
YmFzZUlkZW50aWZpZXIoY29uc3QgU3RyaW5nJik7CisgICAgV0VCQ09SRV9FWFBPUlQgc3RhdGlj
IFBhc3NSZWZQdHI8U2VjdXJpdHlPcmlnaW4+IGNyZWF0ZUZyb21EYXRhYmFzZUlkZW50aWZpZXIo
Y29uc3QgU3RyaW5nJik7CiAgICAgLy8gQWx0ZXJuYXRlIGZvcm0gb2YgY3JlYXRlRnJvbURhdGFi
YXNlSWRlbnRpZmllciB0aGF0IHJldHVybnMgYSBudWxscHRyIG9uIGZhaWx1cmUsIGluc3RlYWQg
b2YgYW4gZW1wdHkgb3JpZ2luLgogICAgIC8vIEZJWE1FOiBNYW55IHVzZXJzIG9mIGNyZWF0ZUZy
b21EYXRhYmFzZUlkZW50aWZpZXIgc2VlbSB0byBleHBlY3QgbWF5YmVDcmVhdGVGcm9tRGF0YWJh
c2VJZGVudGlmaWVyIGJlaGF2aW9yLAogICAgIC8vIGJ1dCB0aGV5IGFyZW4ndCBnZXR0aW5nIGl0
IHNvIHRoZXkgbWlnaHQgYmUgYnVnZ3kuCi0gICAgc3RhdGljIFBhc3NSZWZQdHI8U2VjdXJpdHlP
cmlnaW4+IG1heWJlQ3JlYXRlRnJvbURhdGFiYXNlSWRlbnRpZmllcihjb25zdCBTdHJpbmcmKTsK
KyAgICBXRUJDT1JFX0VYUE9SVCBzdGF0aWMgUGFzc1JlZlB0cjxTZWN1cml0eU9yaWdpbj4gbWF5
YmVDcmVhdGVGcm9tRGF0YWJhc2VJZGVudGlmaWVyKGNvbnN0IFN0cmluZyYpOwogCi0gICAgc3Rh
dGljIFBhc3NSZWZQdHI8U2VjdXJpdHlPcmlnaW4+IGNyZWF0ZUZyb21TdHJpbmcoY29uc3QgU3Ry
aW5nJik7Ci0gICAgc3RhdGljIFBhc3NSZWZQdHI8U2VjdXJpdHlPcmlnaW4+IGNyZWF0ZShjb25z
dCBTdHJpbmcmIHByb3RvY29sLCBjb25zdCBTdHJpbmcmIGhvc3QsIGludCBwb3J0KTsKKyAgICBX
RUJDT1JFX0VYUE9SVCBzdGF0aWMgUGFzc1JlZlB0cjxTZWN1cml0eU9yaWdpbj4gY3JlYXRlRnJv
bVN0cmluZyhjb25zdCBTdHJpbmcmKTsKKyAgICBXRUJDT1JFX0VYUE9SVCBzdGF0aWMgUGFzc1Jl
ZlB0cjxTZWN1cml0eU9yaWdpbj4gY3JlYXRlKGNvbnN0IFN0cmluZyYgcHJvdG9jb2wsIGNvbnN0
IFN0cmluZyYgaG9zdCwgaW50IHBvcnQpOwogCiAgICAgLy8gU29tZSBVUkwgc2NoZW1lcyB1c2Ug
bmVzdGVkIFVSTHMgZm9yIHRoZWlyIHNlY3VyaXR5IGNvbnRleHQuIEZvciBleGFtcGxlLAogICAg
IC8vIGZpbGVzeXN0ZW0gVVJMcyBsb29rIGxpa2UgdGhlIGZvbGxvd2luZzoKQEAgLTc3LDcgKzc3
LDcgQEAgcHVibGljOgogCiAgICAgLy8gQ3JlYXRlIGEgZGVlcCBjb3B5IG9mIHRoaXMgU2VjdXJp
dHlPcmlnaW4uIFRoaXMgbWV0aG9kIGlzIHVzZWZ1bAogICAgIC8vIHdoZW4gbWFyc2hhbGxpbmcg
YSBTZWN1cml0eU9yaWdpbiB0byBhbm90aGVyIHRocmVhZC4KLSAgICBQYXNzUmVmUHRyPFNlY3Vy
aXR5T3JpZ2luPiBpc29sYXRlZENvcHkoKSBjb25zdDsKKyAgICBXRUJDT1JFX0VYUE9SVCBQYXNz
UmVmUHRyPFNlY3VyaXR5T3JpZ2luPiBpc29sYXRlZENvcHkoKSBjb25zdDsKIAogICAgIC8vIFNl
dCB0aGUgZG9tYWluIHByb3BlcnR5IG9mIHRoaXMgc2VjdXJpdHkgb3JpZ2luIHRvIG5ld0RvbWFp
bi4gVGhpcwogICAgIC8vIGZ1bmN0aW9uIGRvZXMgbm90IGNoZWNrIHdoZXRoZXIgbmV3RG9tYWlu
IGlzIGEgc3VmZml4IG9mIHRoZSBjdXJyZW50CkBAIC05OSw3ICs5OSw3IEBAIHB1YmxpYzoKICAg
ICAvLyBTZWN1cml0eU9yaWdpbi4gRm9yIGV4YW1wbGUsIGNhbGwgdGhpcyBmdW5jdGlvbiBiZWZv
cmUgYWxsb3dpbmcKICAgICAvLyBzY3JpcHQgZnJvbSBvbmUgc2VjdXJpdHkgb3JpZ2luIHRvIHJl
YWQgb3Igd3JpdGUgb2JqZWN0cyBmcm9tCiAgICAgLy8gYW5vdGhlciBTZWN1cml0eU9yaWdpbi4K
LSAgICBib29sIGNhbkFjY2Vzcyhjb25zdCBTZWN1cml0eU9yaWdpbiopIGNvbnN0OworICAgIFdF
QkNPUkVfRVhQT1JUIGJvb2wgY2FuQWNjZXNzKGNvbnN0IFNlY3VyaXR5T3JpZ2luKikgY29uc3Q7
CiAKICAgICAvLyBSZXR1cm5zIHRydWUgaWYgdGhpcyBTZWN1cml0eU9yaWdpbiBjYW4gcmVhZCBj
b250ZW50IHJldHJpZXZlZCBmcm9tCiAgICAgLy8gdGhlIGdpdmVuIFVSTC4gRm9yIGV4YW1wbGUs
IGNhbGwgdGhpcyBmdW5jdGlvbiBiZWZvcmUgaXNzdWluZwpAQCAtMTE5LDcgKzExOSw3IEBAIHB1
YmxpYzoKICAgICAvLyBSZXR1cm5zIHRydWUgaWYgfGRvY3VtZW50fCBjYW4gZGlzcGxheSBjb250
ZW50IGZyb20gdGhlIGdpdmVuIFVSTCAoZS5nLiwKICAgICAvLyBpbiBhbiBpZnJhbWUgb3IgYXMg
YW4gaW1hZ2UpLiBGb3IgZXhhbXBsZSwgd2ViIHNpdGVzIGdlbmVyYWxseSBjYW5ub3QKICAgICAv
LyBkaXNwbGF5IGNvbnRlbnQgZnJvbSB0aGUgdXNlcidzIGZpbGVzIHN5c3RlbS4KLSAgICBib29s
IGNhbkRpc3BsYXkoY29uc3QgVVJMJikgY29uc3Q7CisgICAgV0VCQ09SRV9FWFBPUlQgYm9vbCBj
YW5EaXNwbGF5KGNvbnN0IFVSTCYpIGNvbnN0OwogCiAgICAgLy8gUmV0dXJucyB0cnVlIGlmIHRo
aXMgU2VjdXJpdHlPcmlnaW4gY2FuIGxvYWQgbG9jYWwgcmVzb3VyY2VzLCBzdWNoCiAgICAgLy8g
YXMgaW1hZ2VzLCBpZnJhbWVzLCBhbmQgc3R5bGUgc2hlZXRzLCBhbmQgY2FuIGxpbmsgdG8gbG9j
YWwgVVJMcy4KQEAgLTE0Nyw3ICsxNDcsNyBAQCBwdWJsaWM6CiAgICAgdm9pZCBzZXRTdG9yYWdl
QmxvY2tpbmdQb2xpY3koU3RvcmFnZUJsb2NraW5nUG9saWN5IHBvbGljeSkgeyBtX3N0b3JhZ2VC
bG9ja2luZ1BvbGljeSA9IHBvbGljeTsgfQogCiAjaWYgRU5BQkxFKENBQ0hFX1BBUlRJVElPTklO
RykKLSAgICBTdHJpbmcgY2FjaGVQYXJ0aXRpb24oKSBjb25zdDsKKyAgICBXRUJDT1JFX0VYUE9S
VCBTdHJpbmcgY2FjaGVQYXJ0aXRpb24oKSBjb25zdDsKICNlbmRpZgogCiAgICAgYm9vbCBjYW5B
Y2Nlc3NEYXRhYmFzZShjb25zdCBTZWN1cml0eU9yaWdpbiogdG9wT3JpZ2luID0gMCkgY29uc3Qg
eyByZXR1cm4gY2FuQWNjZXNzU3RvcmFnZSh0b3BPcmlnaW4pOyB9OwpAQCAtMTg5LDI2ICsxODks
MjYgQEAgcHVibGljOgogICAgIC8vIHRoaXMgU2VjdXJpdHlPcmlnaW4gbWlnaHQgaGF2ZSBjb21l
IGZyb20gYSBzYW5kYm94ZWQgaWZyYW1lLCB0aGUKICAgICAvLyBTZWN1cml0eU9yaWdpbiBtaWdo
dCBiZSBlbXB0eSwgb3Igd2UgbWlnaHQgaGF2ZSBleHBsaWNpdGx5IGRlY2lkZWQgdGhhdAogICAg
IC8vIHdlIHNob3VsZFRyZWF0VVJMU2NoZW1lQXNOb0FjY2Vzcy4KLSAgICBTdHJpbmcgdG9TdHJp
bmcoKSBjb25zdDsKKyAgICBXRUJDT1JFX0VYUE9SVCBTdHJpbmcgdG9TdHJpbmcoKSBjb25zdDsK
IAogICAgIC8vIFNpbWlsYXIgdG8gdG9TdHJpbmcoKSwgYnV0IGRvZXMgbm90IHRha2UgaW50byBh
Y2NvdW50IGFueSBmYWN0b3JzIHRoYXQKICAgICAvLyBjb3VsZCBtYWtlIHRoZSBzdHJpbmcgcmV0
dXJuICJudWxsIi4KLSAgICBTdHJpbmcgdG9SYXdTdHJpbmcoKSBjb25zdDsKKyAgICBXRUJDT1JF
X0VYUE9SVCBTdHJpbmcgdG9SYXdTdHJpbmcoKSBjb25zdDsKIAogICAgIC8vIFNlcmlhbGl6ZSB0
aGUgc2VjdXJpdHkgb3JpZ2luIHRvIGEgc3RyaW5nIHRoYXQgY291bGQgYmUgdXNlZCBhcyBwYXJ0
IG9mCiAgICAgLy8gZmlsZSBuYW1lcy4gVGhpcyBmb3JtYXQgc2hvdWxkIGJlIHVzZWQgaW4gc3Rv
cmFnZSBBUElzIG9ubHkuCi0gICAgU3RyaW5nIGRhdGFiYXNlSWRlbnRpZmllcigpIGNvbnN0Owor
ICAgIFdFQkNPUkVfRVhQT1JUIFN0cmluZyBkYXRhYmFzZUlkZW50aWZpZXIoKSBjb25zdDsKIAog
ICAgIC8vIFRoaXMgbWV0aG9kIGNoZWNrcyBmb3IgZXF1YWxpdHkgYmV0d2VlbiBTZWN1cml0eU9y
aWdpbnMsIG5vdCB3aGV0aGVyCiAgICAgLy8gb25lIG9yaWdpbiBjYW4gYWNjZXNzIGFub3RoZXIu
IEl0IGlzIHVzZWQgZm9yIGhhc2ggdGFibGUga2V5cy4KICAgICAvLyBGb3IgYWNjZXNzIGNoZWNr
cywgdXNlIGNhbkFjY2VzcygpLgogICAgIC8vIEZJWE1FOiBJZiB0aGlzIG1ldGhvZCBpcyByZWFs
bHkgb25seSB1c2VmdWwgZm9yIGhhc2ggdGFibGUga2V5cywgaXQKICAgICAvLyBzaG91bGQgYmUg
cmVmYWN0b3JlZCBpbnRvIFNlY3VyaXR5T3JpZ2luSGFzaC4KLSAgICBib29sIGVxdWFsKGNvbnN0
IFNlY3VyaXR5T3JpZ2luKikgY29uc3Q7CisgICAgV0VCQ09SRV9FWFBPUlQgYm9vbCBlcXVhbChj
b25zdCBTZWN1cml0eU9yaWdpbiopIGNvbnN0OwogCiAgICAgLy8gVGhpcyBtZXRob2QgY2hlY2tz
IGZvciBlcXVhbGl0eSwgaWdub3JpbmcgdGhlIHZhbHVlIG9mIGRvY3VtZW50LmRvbWFpbgogICAg
IC8vIChhbmQgd2hldGhlciBpdCB3YXMgc2V0KSBidXQgY29uc2lkZXJpbmcgdGhlIGhvc3QuIEl0
IGlzIHVzZWQgZm9yIHBvc3RNZXNzYWdlLgotICAgIGJvb2wgaXNTYW1lU2NoZW1lSG9zdFBvcnQo
Y29uc3QgU2VjdXJpdHlPcmlnaW4qKSBjb25zdDsKKyAgICBXRUJDT1JFX0VYUE9SVCBib29sIGlz
U2FtZVNjaGVtZUhvc3RQb3J0KGNvbnN0IFNlY3VyaXR5T3JpZ2luKikgY29uc3Q7CiAKICAgICBz
dGF0aWMgVVJMIHVybFdpdGhVbmlxdWVTZWN1cml0eU9yaWdpbigpOwogCkBAIC0yMjYsNyArMjI2
LDcgQEAgcHJpdmF0ZToKICAgICBib29sIGlzSFRUUEZhbWlseSgpIGNvbnN0IHsgcmV0dXJuIG1f
cHJvdG9jb2wgPT0gImh0dHAiIHx8IG1fcHJvdG9jb2wgPT0gImh0dHBzIjsgfQogICAgIAogICAg
IGVudW0gU2hvdWxkQWxsb3dGcm9tVGhpcmRQYXJ0eSB7IEFsd2F5c0FsbG93RnJvbVRoaXJkUGFy
dHksIE1heWJlQWxsb3dGcm9tVGhpcmRQYXJ0eSB9OwotICAgIGJvb2wgY2FuQWNjZXNzU3RvcmFn
ZShjb25zdCBTZWN1cml0eU9yaWdpbiosIFNob3VsZEFsbG93RnJvbVRoaXJkUGFydHkgPSBNYXli
ZUFsbG93RnJvbVRoaXJkUGFydHkpIGNvbnN0OworICAgIFdFQkNPUkVfRVhQT1JUIGJvb2wgY2Fu
QWNjZXNzU3RvcmFnZShjb25zdCBTZWN1cml0eU9yaWdpbiosIFNob3VsZEFsbG93RnJvbVRoaXJk
UGFydHkgPSBNYXliZUFsbG93RnJvbVRoaXJkUGFydHkpIGNvbnN0OwogCiAgICAgU3RyaW5nIG1f
cHJvdG9jb2w7CiAgICAgU3RyaW5nIG1faG9zdDsKSW5kZXg6IFNvdXJjZS9XZWJDb3JlL3BhZ2Uv
U2VjdXJpdHlQb2xpY3kuaAo9PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09Ci0tLSBTb3VyY2UvV2ViQ29yZS9wYWdlL1NlY3Vy
aXR5UG9saWN5LmgJKHJldmlzaW9uIDE3Mjg0NykKKysrIFNvdXJjZS9XZWJDb3JlL3BhZ2UvU2Vj
dXJpdHlQb2xpY3kuaAkod29ya2luZyBjb3B5KQpAQCAtNDIsNyArNDIsNyBAQCBwdWJsaWM6CiAg
ICAgLy8gVHJ1ZSBpZiB0aGUgcmVmZXJyZXIgc2hvdWxkIGJlIG9taXR0ZWQgYWNjb3JkaW5nIHRv
IHRoZQogICAgIC8vIFJlZmVycmVyUG9saWN5RGVmYXVsdC4gSWYgeW91IGludGVuZCB0byBzZW5k
IGEgcmVmZXJyZXIgaGVhZGVyLCB5b3UKICAgICAvLyBzaG91bGQgdXNlIGdlbmVyYXRlUmVmZXJy
ZXJIZWFkZXIgaW5zdGVhZC4KLSAgICBzdGF0aWMgYm9vbCBzaG91bGRIaWRlUmVmZXJyZXIoY29u
c3QgVVJMJiwgY29uc3QgU3RyaW5nJiByZWZlcnJlcik7CisgICAgV0VCQ09SRV9FWFBPUlQgc3Rh
dGljIGJvb2wgc2hvdWxkSGlkZVJlZmVycmVyKGNvbnN0IFVSTCYsIGNvbnN0IFN0cmluZyYgcmVm
ZXJyZXIpOwogCiAgICAgLy8gUmV0dXJucyB0aGUgcmVmZXJyZXIgbW9kaWZpZWQgYWNjb3JkaW5n
IHRvIHRoZSByZWZlcnJlciBwb2xpY3kgZm9yIGEKICAgICAvLyBuYXZpZ2F0aW9uIHRvIGEgZ2l2
ZW4gVVJMLiBJZiB0aGUgcmVmZXJyZXIgcmV0dXJuZWQgaXMgZW1wdHksIHRoZQpAQCAtNTUsMTMg
KzU1LDEzIEBAIHB1YmxpYzoKICAgICAgICAgQWxsb3dMb2NhbExvYWRzRm9yTG9jYWxPbmx5LAog
ICAgIH07CiAKLSAgICBzdGF0aWMgdm9pZCBzZXRMb2NhbExvYWRQb2xpY3koTG9jYWxMb2FkUG9s
aWN5KTsKKyAgICBXRUJDT1JFX0VYUE9SVCBzdGF0aWMgdm9pZCBzZXRMb2NhbExvYWRQb2xpY3ko
TG9jYWxMb2FkUG9saWN5KTsKICAgICBzdGF0aWMgYm9vbCByZXN0cmljdEFjY2Vzc1RvTG9jYWwo
KTsKICAgICBzdGF0aWMgYm9vbCBhbGxvd1N1YnN0aXR1dGVEYXRhQWNjZXNzVG9Mb2NhbCgpOwog
Ci0gICAgc3RhdGljIHZvaWQgYWRkT3JpZ2luQWNjZXNzV2hpdGVsaXN0RW50cnkoY29uc3QgU2Vj
dXJpdHlPcmlnaW4mIHNvdXJjZU9yaWdpbiwgY29uc3QgU3RyaW5nJiBkZXN0aW5hdGlvblByb3Rv
Y29sLCBjb25zdCBTdHJpbmcmIGRlc3RpbmF0aW9uRG9tYWluLCBib29sIGFsbG93RGVzdGluYXRp
b25TdWJkb21haW5zKTsKLSAgICBzdGF0aWMgdm9pZCByZW1vdmVPcmlnaW5BY2Nlc3NXaGl0ZWxp
c3RFbnRyeShjb25zdCBTZWN1cml0eU9yaWdpbiYgc291cmNlT3JpZ2luLCBjb25zdCBTdHJpbmcm
IGRlc3RpbmF0aW9uUHJvdG9jb2wsIGNvbnN0IFN0cmluZyYgZGVzdGluYXRpb25Eb21haW4sIGJv
b2wgYWxsb3dEZXN0aW5hdGlvblN1YmRvbWFpbnMpOwotICAgIHN0YXRpYyB2b2lkIHJlc2V0T3Jp
Z2luQWNjZXNzV2hpdGVsaXN0cygpOworICAgIFdFQkNPUkVfRVhQT1JUIHN0YXRpYyB2b2lkIGFk
ZE9yaWdpbkFjY2Vzc1doaXRlbGlzdEVudHJ5KGNvbnN0IFNlY3VyaXR5T3JpZ2luJiBzb3VyY2VP
cmlnaW4sIGNvbnN0IFN0cmluZyYgZGVzdGluYXRpb25Qcm90b2NvbCwgY29uc3QgU3RyaW5nJiBk
ZXN0aW5hdGlvbkRvbWFpbiwgYm9vbCBhbGxvd0Rlc3RpbmF0aW9uU3ViZG9tYWlucyk7CisgICAg
V0VCQ09SRV9FWFBPUlQgc3RhdGljIHZvaWQgcmVtb3ZlT3JpZ2luQWNjZXNzV2hpdGVsaXN0RW50
cnkoY29uc3QgU2VjdXJpdHlPcmlnaW4mIHNvdXJjZU9yaWdpbiwgY29uc3QgU3RyaW5nJiBkZXN0
aW5hdGlvblByb3RvY29sLCBjb25zdCBTdHJpbmcmIGRlc3RpbmF0aW9uRG9tYWluLCBib29sIGFs
bG93RGVzdGluYXRpb25TdWJkb21haW5zKTsKKyAgICBXRUJDT1JFX0VYUE9SVCBzdGF0aWMgdm9p
ZCByZXNldE9yaWdpbkFjY2Vzc1doaXRlbGlzdHMoKTsKIAogICAgIHN0YXRpYyBib29sIGlzQWNj
ZXNzV2hpdGVMaXN0ZWQoY29uc3QgU2VjdXJpdHlPcmlnaW4qIGFjdGl2ZU9yaWdpbiwgY29uc3Qg
U2VjdXJpdHlPcmlnaW4qIHRhcmdldE9yaWdpbik7CiAgICAgc3RhdGljIGJvb2wgaXNBY2Nlc3NU
b1VSTFdoaXRlTGlzdGVkKGNvbnN0IFNlY3VyaXR5T3JpZ2luKiBhY3RpdmVPcmlnaW4sIGNvbnN0
IFVSTCYpOwpJbmRleDogU291cmNlL1dlYkNvcmUvcGFnZS9TZXR0aW5ncy5oCj09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT0K
LS0tIFNvdXJjZS9XZWJDb3JlL3BhZ2UvU2V0dGluZ3MuaAkocmV2aXNpb24gMTcyODQ3KQorKysg
U291cmNlL1dlYkNvcmUvcGFnZS9TZXR0aW5ncy5oCSh3b3JraW5nIGNvcHkpCkBAIC02NiwyNiAr
NjYsMjYgQEAgcHVibGljOgogICAgIHN0YXRpYyBQYXNzUmVmUHRyPFNldHRpbmdzPiBjcmVhdGUo
UGFnZSopOwogICAgIH5TZXR0aW5ncygpOwogCi0gICAgdm9pZCBzZXRTdGFuZGFyZEZvbnRGYW1p
bHkoY29uc3QgQXRvbWljU3RyaW5nJiwgVVNjcmlwdENvZGUgPSBVU0NSSVBUX0NPTU1PTik7Ci0g
ICAgY29uc3QgQXRvbWljU3RyaW5nJiBzdGFuZGFyZEZvbnRGYW1pbHkoVVNjcmlwdENvZGUgPSBV
U0NSSVBUX0NPTU1PTikgY29uc3Q7CisgICAgV0VCQ09SRV9FWFBPUlQgdm9pZCBzZXRTdGFuZGFy
ZEZvbnRGYW1pbHkoY29uc3QgQXRvbWljU3RyaW5nJiwgVVNjcmlwdENvZGUgPSBVU0NSSVBUX0NP
TU1PTik7CisgICAgV0VCQ09SRV9FWFBPUlQgY29uc3QgQXRvbWljU3RyaW5nJiBzdGFuZGFyZEZv
bnRGYW1pbHkoVVNjcmlwdENvZGUgPSBVU0NSSVBUX0NPTU1PTikgY29uc3Q7CiAKLSAgICB2b2lk
IHNldEZpeGVkRm9udEZhbWlseShjb25zdCBBdG9taWNTdHJpbmcmLCBVU2NyaXB0Q29kZSA9IFVT
Q1JJUFRfQ09NTU9OKTsKLSAgICBjb25zdCBBdG9taWNTdHJpbmcmIGZpeGVkRm9udEZhbWlseShV
U2NyaXB0Q29kZSA9IFVTQ1JJUFRfQ09NTU9OKSBjb25zdDsKKyAgICBXRUJDT1JFX0VYUE9SVCB2
b2lkIHNldEZpeGVkRm9udEZhbWlseShjb25zdCBBdG9taWNTdHJpbmcmLCBVU2NyaXB0Q29kZSA9
IFVTQ1JJUFRfQ09NTU9OKTsKKyAgICBXRUJDT1JFX0VYUE9SVCBjb25zdCBBdG9taWNTdHJpbmcm
IGZpeGVkRm9udEZhbWlseShVU2NyaXB0Q29kZSA9IFVTQ1JJUFRfQ09NTU9OKSBjb25zdDsKIAot
ICAgIHZvaWQgc2V0U2VyaWZGb250RmFtaWx5KGNvbnN0IEF0b21pY1N0cmluZyYsIFVTY3JpcHRD
b2RlID0gVVNDUklQVF9DT01NT04pOwotICAgIGNvbnN0IEF0b21pY1N0cmluZyYgc2VyaWZGb250
RmFtaWx5KFVTY3JpcHRDb2RlID0gVVNDUklQVF9DT01NT04pIGNvbnN0OworICAgIFdFQkNPUkVf
RVhQT1JUIHZvaWQgc2V0U2VyaWZGb250RmFtaWx5KGNvbnN0IEF0b21pY1N0cmluZyYsIFVTY3Jp
cHRDb2RlID0gVVNDUklQVF9DT01NT04pOworICAgIFdFQkNPUkVfRVhQT1JUIGNvbnN0IEF0b21p
Y1N0cmluZyYgc2VyaWZGb250RmFtaWx5KFVTY3JpcHRDb2RlID0gVVNDUklQVF9DT01NT04pIGNv
bnN0OwogCi0gICAgdm9pZCBzZXRTYW5zU2VyaWZGb250RmFtaWx5KGNvbnN0IEF0b21pY1N0cmlu
ZyYsIFVTY3JpcHRDb2RlID0gVVNDUklQVF9DT01NT04pOwotICAgIGNvbnN0IEF0b21pY1N0cmlu
ZyYgc2Fuc1NlcmlmRm9udEZhbWlseShVU2NyaXB0Q29kZSA9IFVTQ1JJUFRfQ09NTU9OKSBjb25z
dDsKKyAgICBXRUJDT1JFX0VYUE9SVCB2b2lkIHNldFNhbnNTZXJpZkZvbnRGYW1pbHkoY29uc3Qg
QXRvbWljU3RyaW5nJiwgVVNjcmlwdENvZGUgPSBVU0NSSVBUX0NPTU1PTik7CisgICAgV0VCQ09S
RV9FWFBPUlQgY29uc3QgQXRvbWljU3RyaW5nJiBzYW5zU2VyaWZGb250RmFtaWx5KFVTY3JpcHRD
b2RlID0gVVNDUklQVF9DT01NT04pIGNvbnN0OwogCi0gICAgdm9pZCBzZXRDdXJzaXZlRm9udEZh
bWlseShjb25zdCBBdG9taWNTdHJpbmcmLCBVU2NyaXB0Q29kZSA9IFVTQ1JJUFRfQ09NTU9OKTsK
LSAgICBjb25zdCBBdG9taWNTdHJpbmcmIGN1cnNpdmVGb250RmFtaWx5KFVTY3JpcHRDb2RlID0g
VVNDUklQVF9DT01NT04pIGNvbnN0OworICAgIFdFQkNPUkVfRVhQT1JUIHZvaWQgc2V0Q3Vyc2l2
ZUZvbnRGYW1pbHkoY29uc3QgQXRvbWljU3RyaW5nJiwgVVNjcmlwdENvZGUgPSBVU0NSSVBUX0NP
TU1PTik7CisgICAgV0VCQ09SRV9FWFBPUlQgY29uc3QgQXRvbWljU3RyaW5nJiBjdXJzaXZlRm9u
dEZhbWlseShVU2NyaXB0Q29kZSA9IFVTQ1JJUFRfQ09NTU9OKSBjb25zdDsKIAotICAgIHZvaWQg
c2V0RmFudGFzeUZvbnRGYW1pbHkoY29uc3QgQXRvbWljU3RyaW5nJiwgVVNjcmlwdENvZGUgPSBV
U0NSSVBUX0NPTU1PTik7Ci0gICAgY29uc3QgQXRvbWljU3RyaW5nJiBmYW50YXN5Rm9udEZhbWls
eShVU2NyaXB0Q29kZSA9IFVTQ1JJUFRfQ09NTU9OKSBjb25zdDsKKyAgICBXRUJDT1JFX0VYUE9S
VCB2b2lkIHNldEZhbnRhc3lGb250RmFtaWx5KGNvbnN0IEF0b21pY1N0cmluZyYsIFVTY3JpcHRD
b2RlID0gVVNDUklQVF9DT01NT04pOworICAgIFdFQkNPUkVfRVhQT1JUIGNvbnN0IEF0b21pY1N0
cmluZyYgZmFudGFzeUZvbnRGYW1pbHkoVVNjcmlwdENvZGUgPSBVU0NSSVBUX0NPTU1PTikgY29u
c3Q7CiAKLSAgICB2b2lkIHNldFBpY3RvZ3JhcGhGb250RmFtaWx5KGNvbnN0IEF0b21pY1N0cmlu
ZyYsIFVTY3JpcHRDb2RlID0gVVNDUklQVF9DT01NT04pOwotICAgIGNvbnN0IEF0b21pY1N0cmlu
ZyYgcGljdG9ncmFwaEZvbnRGYW1pbHkoVVNjcmlwdENvZGUgPSBVU0NSSVBUX0NPTU1PTikgY29u
c3Q7CisgICAgV0VCQ09SRV9FWFBPUlQgdm9pZCBzZXRQaWN0b2dyYXBoRm9udEZhbWlseShjb25z
dCBBdG9taWNTdHJpbmcmLCBVU2NyaXB0Q29kZSA9IFVTQ1JJUFRfQ09NTU9OKTsKKyAgICBXRUJD
T1JFX0VYUE9SVCBjb25zdCBBdG9taWNTdHJpbmcmIHBpY3RvZ3JhcGhGb250RmFtaWx5KFVTY3Jp
cHRDb2RlID0gVVNDUklQVF9DT01NT04pIGNvbnN0OwogCiAjaWYgRU5BQkxFKFRFWFRfQVVUT1NJ
WklORykKICAgICB2b2lkIHNldFRleHRBdXRvc2l6aW5nRW5hYmxlZChib29sKTsKQEAgLTEwMCwz
NiArMTAwLDM2IEBAIHB1YmxpYzoKICNlbmRpZgogCiAgICAgLy8gT25seSBzZXQgYnkgTGF5b3V0
IFRlc3RzLgotICAgIHZvaWQgc2V0TWVkaWFUeXBlT3ZlcnJpZGUoY29uc3QgU3RyaW5nJik7Cisg
ICAgV0VCQ09SRV9FWFBPUlQgdm9pZCBzZXRNZWRpYVR5cGVPdmVycmlkZShjb25zdCBTdHJpbmcm
KTsKICAgICBjb25zdCBTdHJpbmcmIG1lZGlhVHlwZU92ZXJyaWRlKCkgY29uc3QgeyByZXR1cm4g
bV9tZWRpYVR5cGVPdmVycmlkZTsgfQogCiAgICAgLy8gVW5saWtlIGFyZUltYWdlc0VuYWJsZWQs
IHRoaXMgb25seSBzdXBwcmVzc2VzIHRoZSBuZXR3b3JrIGxvYWQgb2YKICAgICAvLyB0aGUgaW1h
Z2UgVVJMLiAgQSBjYWNoZWQgaW1hZ2Ugd2lsbCBzdGlsbCBiZSByZW5kZXJlZCBpZiByZXF1ZXN0
ZWQuCi0gICAgdm9pZCBzZXRMb2Fkc0ltYWdlc0F1dG9tYXRpY2FsbHkoYm9vbCk7CisgICAgV0VC
Q09SRV9FWFBPUlQgdm9pZCBzZXRMb2Fkc0ltYWdlc0F1dG9tYXRpY2FsbHkoYm9vbCk7CiAgICAg
Ym9vbCBsb2Fkc0ltYWdlc0F1dG9tYXRpY2FsbHkoKSBjb25zdCB7IHJldHVybiBtX2xvYWRzSW1h
Z2VzQXV0b21hdGljYWxseTsgfQogCiAgICAgLy8gQ2xpZW50cyB0aGF0IGV4ZWN1dGUgc2NyaXB0
IHNob3VsZCBjYWxsIFNjcmlwdENvbnRyb2xsZXI6OmNhbkV4ZWN1dGVTY3JpcHRzKCkKICAgICAv
LyBpbnN0ZWFkIG9mIHRoaXMgZnVuY3Rpb24uIFNjcmlwdENvbnRyb2xsZXI6OmNhbkV4ZWN1dGVT
Y3JpcHRzKCkgY2hlY2tzIHRoZQogICAgIC8vIEhUTUwgc2FuZGJveCwgcGx1Zy1pbiBzYW5kYm94
aW5nLCBhbmQgb3RoZXIgaW1wb3J0YW50IGRldGFpbHMuCiAgICAgYm9vbCBpc1NjcmlwdEVuYWJs
ZWQoKSBjb25zdCB7IHJldHVybiBtX2lzU2NyaXB0RW5hYmxlZDsgfQotICAgIHZvaWQgc2V0U2Ny
aXB0RW5hYmxlZChib29sKTsKKyAgICBXRUJDT1JFX0VYUE9SVCB2b2lkIHNldFNjcmlwdEVuYWJs
ZWQoYm9vbCk7CiAKICAgICBTRVRUSU5HU19HRVRURVJTX0FORF9TRVRURVJTCiAKLSAgICB2b2lk
IHNldFNjcmVlbkZvbnRTdWJzdGl0dXRpb25FbmFibGVkKGJvb2wpOworICAgIFdFQkNPUkVfRVhQ
T1JUIHZvaWQgc2V0U2NyZWVuRm9udFN1YnN0aXR1dGlvbkVuYWJsZWQoYm9vbCk7CiAgICAgYm9v
bCBzY3JlZW5Gb250U3Vic3RpdHV0aW9uRW5hYmxlZCgpIGNvbnN0IHsgcmV0dXJuIG1fc2NyZWVu
Rm9udFN1YnN0aXR1dGlvbkVuYWJsZWQ7IH0KIAotICAgIHZvaWQgc2V0SmF2YUVuYWJsZWQoYm9v
bCk7CisgICAgV0VCQ09SRV9FWFBPUlQgdm9pZCBzZXRKYXZhRW5hYmxlZChib29sKTsKICAgICBi
b29sIGlzSmF2YUVuYWJsZWQoKSBjb25zdCB7IHJldHVybiBtX2lzSmF2YUVuYWJsZWQ7IH0KIAog
ICAgIC8vIFRoaXMgc2V0dGluZ3MgaXMgb25seSBjb25zdWx0ZWQgaWYgaXNKYXZhRW5hYmxlZCgp
IHJldHVybnMgdHJ1ZTsKLSAgICB2b2lkIHNldEphdmFFbmFibGVkRm9yTG9jYWxGaWxlcyhib29s
KTsKKyAgICBXRUJDT1JFX0VYUE9SVCB2b2lkIHNldEphdmFFbmFibGVkRm9yTG9jYWxGaWxlcyhi
b29sKTsKICAgICBib29sIGlzSmF2YUVuYWJsZWRGb3JMb2NhbEZpbGVzKCkgY29uc3QgeyByZXR1
cm4gbV9pc0phdmFFbmFibGVkRm9yTG9jYWxGaWxlczsgfQogCi0gICAgdm9pZCBzZXRJbWFnZXNF
bmFibGVkKGJvb2wpOworICAgIFdFQkNPUkVfRVhQT1JUIHZvaWQgc2V0SW1hZ2VzRW5hYmxlZChi
b29sKTsKICAgICBib29sIGFyZUltYWdlc0VuYWJsZWQoKSBjb25zdCB7IHJldHVybiBtX2FyZUlt
YWdlc0VuYWJsZWQ7IH0KIAotICAgIHZvaWQgc2V0UGx1Z2luc0VuYWJsZWQoYm9vbCk7CisgICAg
V0VCQ09SRV9FWFBPUlQgdm9pZCBzZXRQbHVnaW5zRW5hYmxlZChib29sKTsKICAgICBib29sIGFy
ZVBsdWdpbnNFbmFibGVkKCkgY29uc3QgeyByZXR1cm4gbV9hcmVQbHVnaW5zRW5hYmxlZDsgfQog
CiAgICAgLy8gV2hlbiB0aGlzIG9wdGlvbiBpcyBzZXQsIFdlYkNvcmUgd2lsbCBhdm9pZCBzdG9y
aW5nIGFueSByZWNvcmQgb2YgYnJvd3NpbmcgYWN0aXZpdHkKQEAgLTE0NywyNiArMTQ3LDI2IEBA
IHB1YmxpYzoKICAgICAvLyAgLSBQbHVnLWlucyAodGhhdCBzdXBwb3J0IE5QTlZwcml2YXRlTW9k
ZUJvb2wpCiAgICAgdm9pZCBzZXRQcml2YXRlQnJvd3NpbmdFbmFibGVkKGJvb2wpOwogCi0gICAg
dm9pZCBzZXRETlNQcmVmZXRjaGluZ0VuYWJsZWQoYm9vbCk7CisgICAgV0VCQ09SRV9FWFBPUlQg
dm9pZCBzZXRETlNQcmVmZXRjaGluZ0VuYWJsZWQoYm9vbCk7CiAgICAgYm9vbCBkbnNQcmVmZXRj
aGluZ0VuYWJsZWQoKSBjb25zdCB7IHJldHVybiBtX2Ruc1ByZWZldGNoaW5nRW5hYmxlZDsgfQog
Ci0gICAgdm9pZCBzZXRVc2VyU3R5bGVTaGVldExvY2F0aW9uKGNvbnN0IFVSTCYpOworICAgIFdF
QkNPUkVfRVhQT1JUIHZvaWQgc2V0VXNlclN0eWxlU2hlZXRMb2NhdGlvbihjb25zdCBVUkwmKTsK
ICAgICBjb25zdCBVUkwmIHVzZXJTdHlsZVNoZWV0TG9jYXRpb24oKSBjb25zdCB7IHJldHVybiBt
X3VzZXJTdHlsZVNoZWV0TG9jYXRpb247IH0KIAotICAgIHZvaWQgc2V0TmVlZHNBZG9iZUZyYW1l
UmVsb2FkaW5nUXVpcmsoYm9vbCk7CisgICAgV0VCQ09SRV9FWFBPUlQgdm9pZCBzZXROZWVkc0Fk
b2JlRnJhbWVSZWxvYWRpbmdRdWlyayhib29sKTsKICAgICBib29sIG5lZWRzQWNyb2JhdEZyYW1l
UmVsb2FkaW5nUXVpcmsoKSBjb25zdCB7IHJldHVybiBtX25lZWRzQWRvYmVGcmFtZVJlbG9hZGlu
Z1F1aXJrOyB9CiAKLSAgICBzdGF0aWMgdm9pZCBzZXREZWZhdWx0TWluRE9NVGltZXJJbnRlcnZh
bChkb3VibGUpOyAvLyBJbnRlcnZhbCBzcGVjaWZpZWQgaW4gc2Vjb25kcy4KLSAgICBzdGF0aWMg
ZG91YmxlIGRlZmF1bHRNaW5ET01UaW1lckludGVydmFsKCk7CisgICAgV0VCQ09SRV9FWFBPUlQg
c3RhdGljIHZvaWQgc2V0RGVmYXVsdE1pbkRPTVRpbWVySW50ZXJ2YWwoZG91YmxlKTsgLy8gSW50
ZXJ2YWwgc3BlY2lmaWVkIGluIHNlY29uZHMuCisgICAgV0VCQ09SRV9FWFBPUlQgc3RhdGljIGRv
dWJsZSBkZWZhdWx0TWluRE9NVGltZXJJbnRlcnZhbCgpOwogICAgICAgICAKICAgICBzdGF0aWMg
dm9pZCBzZXRIaWRkZW5QYWdlRE9NVGltZXJBbGlnbm1lbnRJbnRlcnZhbChkb3VibGUpOyAvLyBJ
bnRlcnZhbCBzcGVjaWZpZWQgaW4gc2Vjb25kcy4KICAgICBzdGF0aWMgZG91YmxlIGhpZGRlblBh
Z2VET01UaW1lckFsaWdubWVudEludGVydmFsKCk7CiAKLSAgICB2b2lkIHNldE1pbkRPTVRpbWVy
SW50ZXJ2YWwoZG91YmxlKTsgLy8gUGVyLXBhZ2U7IGluaXRpYWxpemVkIHRvIGRlZmF1bHQgdmFs
dWUuCi0gICAgZG91YmxlIG1pbkRPTVRpbWVySW50ZXJ2YWwoKTsKKyAgICBXRUJDT1JFX0VYUE9S
VCB2b2lkIHNldE1pbkRPTVRpbWVySW50ZXJ2YWwoZG91YmxlKTsgLy8gUGVyLXBhZ2U7IGluaXRp
YWxpemVkIHRvIGRlZmF1bHQgdmFsdWUuCisgICAgV0VCQ09SRV9FWFBPUlQgZG91YmxlIG1pbkRP
TVRpbWVySW50ZXJ2YWwoKTsKIAogICAgIHN0YXRpYyB2b2lkIHNldERlZmF1bHRET01UaW1lckFs
aWdubWVudEludGVydmFsKGRvdWJsZSk7Ci0gICAgc3RhdGljIGRvdWJsZSBkZWZhdWx0RE9NVGlt
ZXJBbGlnbm1lbnRJbnRlcnZhbCgpOworICAgIFdFQkNPUkVfRVhQT1JUIHN0YXRpYyBkb3VibGUg
ZGVmYXVsdERPTVRpbWVyQWxpZ25tZW50SW50ZXJ2YWwoKTsKIAogICAgIGRvdWJsZSBkb21UaW1l
ckFsaWdubWVudEludGVydmFsKCkgY29uc3Q7CiAKQEAgLTE3NSwxNiArMTc1LDE2IEBAIHB1Ymxp
YzoKIAogI2lmIEVOQUJMRShISURERU5fUEFHRV9ET01fVElNRVJfVEhST1RUTElORykKICAgICBi
b29sIGhpZGRlblBhZ2VET01UaW1lclRocm90dGxpbmdFbmFibGVkKCkgY29uc3QgeyByZXR1cm4g
bV9oaWRkZW5QYWdlRE9NVGltZXJUaHJvdHRsaW5nRW5hYmxlZDsgfQotICAgIHZvaWQgc2V0SGlk
ZGVuUGFnZURPTVRpbWVyVGhyb3R0bGluZ0VuYWJsZWQoYm9vbCk7CisgICAgV0VCQ09SRV9FWFBP
UlQgdm9pZCBzZXRIaWRkZW5QYWdlRE9NVGltZXJUaHJvdHRsaW5nRW5hYmxlZChib29sKTsKICNl
bmRpZgogCi0gICAgdm9pZCBzZXRVc2VzUGFnZUNhY2hlKGJvb2wpOworICAgIFdFQkNPUkVfRVhQ
T1JUIHZvaWQgc2V0VXNlc1BhZ2VDYWNoZShib29sKTsKICAgICBib29sIHVzZXNQYWdlQ2FjaGUo
KSBjb25zdCB7IHJldHVybiBtX3VzZXNQYWdlQ2FjaGU7IH0KICAgICAgICAgCiAgICAgdm9pZCBz
ZXRGb250UmVuZGVyaW5nTW9kZShGb250UmVuZGVyaW5nTW9kZSBtb2RlKTsKICAgICBGb250UmVu
ZGVyaW5nTW9kZSBmb250UmVuZGVyaW5nTW9kZSgpIGNvbnN0OwogCi0gICAgdm9pZCBzZXRTaG93
VGlsZWRTY3JvbGxpbmdJbmRpY2F0b3IoYm9vbCk7CisgICAgV0VCQ09SRV9FWFBPUlQgdm9pZCBz
ZXRTaG93VGlsZWRTY3JvbGxpbmdJbmRpY2F0b3IoYm9vbCk7CiAgICAgYm9vbCBzaG93VGlsZWRT
Y3JvbGxpbmdJbmRpY2F0b3IoKSBjb25zdCB7IHJldHVybiBtX3Nob3dUaWxlZFNjcm9sbGluZ0lu
ZGljYXRvcjsgfQogCiAjaWYgUExBVEZPUk0oV0lOKQpAQCAtMTkyLDE2ICsxOTIsMTYgQEAgcHVi
bGljOgogICAgIHN0YXRpYyBib29sIHNob3VsZFVzZUhpZ2hSZXNvbHV0aW9uVGltZXJzKCkgeyBy
ZXR1cm4gZ1Nob3VsZFVzZUhpZ2hSZXNvbHV0aW9uVGltZXJzOyB9CiAjZW5kaWYKIAotICAgIHZv
aWQgc2V0QmFja2dyb3VuZFNob3VsZEV4dGVuZEJleW9uZFBhZ2UoYm9vbCk7CisgICAgV0VCQ09S
RV9FWFBPUlQgdm9pZCBzZXRCYWNrZ3JvdW5kU2hvdWxkRXh0ZW5kQmV5b25kUGFnZShib29sKTsK
ICAgICBib29sIGJhY2tncm91bmRTaG91bGRFeHRlbmRCZXlvbmRQYWdlKCkgY29uc3QgeyByZXR1
cm4gbV9iYWNrZ3JvdW5kU2hvdWxkRXh0ZW5kQmV5b25kUGFnZTsgfQogCiAjaWYgVVNFKEFWRk9V
TkRBVElPTikKLSAgICBzdGF0aWMgdm9pZCBzZXRBVkZvdW5kYXRpb25FbmFibGVkKGJvb2wgZmxh
Zyk7CisgICAgV0VCQ09SRV9FWFBPUlQgc3RhdGljIHZvaWQgc2V0QVZGb3VuZGF0aW9uRW5hYmxl
ZChib29sIGZsYWcpOwogICAgIHN0YXRpYyBib29sIGlzQVZGb3VuZGF0aW9uRW5hYmxlZCgpIHsg
cmV0dXJuIGdBVkZvdW5kYXRpb25FbmFibGVkOyB9CiAjZW5kaWYKIAogI2lmIFBMQVRGT1JNKENP
Q09BKQotICAgIHN0YXRpYyB2b2lkIHNldFFUS2l0RW5hYmxlZChib29sIGZsYWcpOworICAgIFdF
QkNPUkVfRVhQT1JUIHN0YXRpYyB2b2lkIHNldFFUS2l0RW5hYmxlZChib29sIGZsYWcpOwogICAg
IHN0YXRpYyBib29sIGlzUVRLaXRFbmFibGVkKCkgeyByZXR1cm4gZ1FUS2l0RW5hYmxlZDsgfQog
I2VuZGlmCiAKQEAgLTIxMywxMCArMjEzLDEwIEBAIHB1YmxpYzoKICAgICBzdGF0aWMgYm9vbCBz
aG91bGRQYWludE5hdGl2ZUNvbnRyb2xzKCkgeyByZXR1cm4gZ1Nob3VsZFBhaW50TmF0aXZlQ29u
dHJvbHM7IH0KICNlbmRpZgogCi0gICAgc3RhdGljIHZvaWQgc2V0TW9ja1Njcm9sbGJhcnNFbmFi
bGVkKGJvb2wgZmxhZyk7Ci0gICAgc3RhdGljIGJvb2wgbW9ja1Njcm9sbGJhcnNFbmFibGVkKCk7
CisgICAgV0VCQ09SRV9FWFBPUlQgc3RhdGljIHZvaWQgc2V0TW9ja1Njcm9sbGJhcnNFbmFibGVk
KGJvb2wgZmxhZyk7CisgICAgV0VCQ09SRV9FWFBPUlQgc3RhdGljIGJvb2wgbW9ja1Njcm9sbGJh
cnNFbmFibGVkKCk7CiAKLSAgICBzdGF0aWMgdm9pZCBzZXRVc2VzT3ZlcmxheVNjcm9sbGJhcnMo
Ym9vbCBmbGFnKTsKKyAgICBXRUJDT1JFX0VYUE9SVCBzdGF0aWMgdm9pZCBzZXRVc2VzT3Zlcmxh
eVNjcm9sbGJhcnMoYm9vbCBmbGFnKTsKICAgICBzdGF0aWMgYm9vbCB1c2VzT3ZlcmxheVNjcm9s
bGJhcnMoKTsKIAogI2lmIEVOQUJMRShUT1VDSF9FVkVOVFMpCkBAIC0yMjQsMzUgKzIyNCwzNSBA
QCBwdWJsaWM6CiAgICAgYm9vbCBpc1RvdWNoRXZlbnRFbXVsYXRpb25FbmFibGVkKCkgY29uc3Qg
eyByZXR1cm4gbV90b3VjaEV2ZW50RW11bGF0aW9uRW5hYmxlZDsgfQogI2VuZGlmCiAKLSAgICB2
b2lkIHNldFN0b3JhZ2VCbG9ja2luZ1BvbGljeShTZWN1cml0eU9yaWdpbjo6U3RvcmFnZUJsb2Nr
aW5nUG9saWN5KTsKKyAgICBXRUJDT1JFX0VYUE9SVCB2b2lkIHNldFN0b3JhZ2VCbG9ja2luZ1Bv
bGljeShTZWN1cml0eU9yaWdpbjo6U3RvcmFnZUJsb2NraW5nUG9saWN5KTsKICAgICBTZWN1cml0
eU9yaWdpbjo6U3RvcmFnZUJsb2NraW5nUG9saWN5IHN0b3JhZ2VCbG9ja2luZ1BvbGljeSgpIGNv
bnN0IHsgcmV0dXJuIG1fc3RvcmFnZUJsb2NraW5nUG9saWN5OyB9CiAKLSAgICB2b2lkIHNldFNj
cm9sbGluZ1BlcmZvcm1hbmNlTG9nZ2luZ0VuYWJsZWQoYm9vbCk7CisgICAgV0VCQ09SRV9FWFBP
UlQgdm9pZCBzZXRTY3JvbGxpbmdQZXJmb3JtYW5jZUxvZ2dpbmdFbmFibGVkKGJvb2wpOwogICAg
IGJvb2wgc2Nyb2xsaW5nUGVyZm9ybWFuY2VMb2dnaW5nRW5hYmxlZCgpIHsgcmV0dXJuIG1fc2Ny
b2xsaW5nUGVyZm9ybWFuY2VMb2dnaW5nRW5hYmxlZDsgfQogCi0gICAgc3RhdGljIHZvaWQgc2V0
U2hvdWxkUmVzcGVjdFByaW9yaXR5SW5DU1NBdHRyaWJ1dGVTZXR0ZXJzKGJvb2wpOworICAgIFdF
QkNPUkVfRVhQT1JUIHN0YXRpYyB2b2lkIHNldFNob3VsZFJlc3BlY3RQcmlvcml0eUluQ1NTQXR0
cmlidXRlU2V0dGVycyhib29sKTsKICAgICBzdGF0aWMgYm9vbCBzaG91bGRSZXNwZWN0UHJpb3Jp
dHlJbkNTU0F0dHJpYnV0ZVNldHRlcnMoKTsKIAogICAgIHZvaWQgc2V0VGltZVdpdGhvdXRNb3Vz
ZU1vdmVtZW50QmVmb3JlSGlkaW5nQ29udHJvbHMoZG91YmxlIHRpbWUpIHsgbV90aW1lV2l0aG91
dE1vdXNlTW92ZW1lbnRCZWZvcmVIaWRpbmdDb250cm9scyA9IHRpbWU7IH0KICAgICBkb3VibGUg
dGltZVdpdGhvdXRNb3VzZU1vdmVtZW50QmVmb3JlSGlkaW5nQ29udHJvbHMoKSBjb25zdCB7IHJl
dHVybiBtX3RpbWVXaXRob3V0TW91c2VNb3ZlbWVudEJlZm9yZUhpZGluZ0NvbnRyb2xzOyB9CiAK
ICAgICBib29sIGhpZGRlblBhZ2VDU1NBbmltYXRpb25TdXNwZW5zaW9uRW5hYmxlZCgpIGNvbnN0
IHsgcmV0dXJuIG1faGlkZGVuUGFnZUNTU0FuaW1hdGlvblN1c3BlbnNpb25FbmFibGVkOyB9Ci0g
ICAgdm9pZCBzZXRIaWRkZW5QYWdlQ1NTQW5pbWF0aW9uU3VzcGVuc2lvbkVuYWJsZWQoYm9vbCk7
CisgICAgV0VCQ09SRV9FWFBPUlQgdm9pZCBzZXRIaWRkZW5QYWdlQ1NTQW5pbWF0aW9uU3VzcGVu
c2lvbkVuYWJsZWQoYm9vbCk7CiAKLSAgICB2b2lkIHNldEZvbnRGYWxsYmFja1ByZWZlcnNQaWN0
b2dyYXBocyhib29sKTsKKyAgICBXRUJDT1JFX0VYUE9SVCB2b2lkIHNldEZvbnRGYWxsYmFja1By
ZWZlcnNQaWN0b2dyYXBocyhib29sKTsKICAgICBib29sIGZvbnRGYWxsYmFja1ByZWZlcnNQaWN0
b2dyYXBocygpIGNvbnN0IHsgcmV0dXJuIG1fZm9udEZhbGxiYWNrUHJlZmVyc1BpY3RvZ3JhcGhz
OyB9CiAKICAgICBzdGF0aWMgYm9vbCBsb3dQb3dlclZpZGVvQXVkaW9CdWZmZXJTaXplRW5hYmxl
ZCgpIHsgcmV0dXJuIGdMb3dQb3dlclZpZGVvQXVkaW9CdWZmZXJTaXplRW5hYmxlZDsgfQotICAg
IHN0YXRpYyB2b2lkIHNldExvd1Bvd2VyVmlkZW9BdWRpb0J1ZmZlclNpemVFbmFibGVkKGJvb2wp
OworICAgIFdFQkNPUkVfRVhQT1JUIHN0YXRpYyB2b2lkIHNldExvd1Bvd2VyVmlkZW9BdWRpb0J1
ZmZlclNpemVFbmFibGVkKGJvb2wpOwogCiAjaWYgUExBVEZPUk0oSU9TKQotICAgIHN0YXRpYyB2
b2lkIHNldEF1ZGlvU2Vzc2lvbkNhdGVnb3J5T3ZlcnJpZGUodW5zaWduZWQpOworICAgIFdFQkNP
UkVfRVhQT1JUIHN0YXRpYyB2b2lkIHNldEF1ZGlvU2Vzc2lvbkNhdGVnb3J5T3ZlcnJpZGUodW5z
aWduZWQpOwogICAgIHN0YXRpYyB1bnNpZ25lZCBhdWRpb1Nlc3Npb25DYXRlZ29yeU92ZXJyaWRl
KCk7CiAKLSAgICBzdGF0aWMgdm9pZCBzZXROZXR3b3JrRGF0YVVzYWdlVHJhY2tpbmdFbmFibGVk
KGJvb2wpOworICAgIFdFQkNPUkVfRVhQT1JUIHN0YXRpYyB2b2lkIHNldE5ldHdvcmtEYXRhVXNh
Z2VUcmFja2luZ0VuYWJsZWQoYm9vbCk7CiAgICAgc3RhdGljIGJvb2wgbmV0d29ya0RhdGFVc2Fn
ZVRyYWNraW5nRW5hYmxlZCgpOwogCi0gICAgc3RhdGljIHZvaWQgc2V0TmV0d29ya0ludGVyZmFj
ZU5hbWUoY29uc3QgU3RyaW5nJik7CisgICAgV0VCQ09SRV9FWFBPUlQgc3RhdGljIHZvaWQgc2V0
TmV0d29ya0ludGVyZmFjZU5hbWUoY29uc3QgU3RyaW5nJik7CiAgICAgc3RhdGljIGNvbnN0IFN0
cmluZyYgbmV0d29ya0ludGVyZmFjZU5hbWUoKTsKIAogICAgIHN0YXRpYyB2b2lkIHNldEFWS2l0
RW5hYmxlZChib29sIGZsYWcpIHsgZ0FWS2l0RW5hYmxlZCA9IGZsYWc7IH0KQEAgLTMyMCwxMSAr
MzIwLDExIEBAIHByaXZhdGU6CiAgICAgc3RhdGljIGRvdWJsZSBnRGVmYXVsdERPTVRpbWVyQWxp
Z25tZW50SW50ZXJ2YWw7CiAKICNpZiBVU0UoQVZGT1VOREFUSU9OKQotICAgIHN0YXRpYyBib29s
IGdBVkZvdW5kYXRpb25FbmFibGVkOworICAgIFdFQkNPUkVfRVhQT1JUIHN0YXRpYyBib29sIGdB
VkZvdW5kYXRpb25FbmFibGVkOwogI2VuZGlmCiAKICNpZiBQTEFURk9STShDT0NPQSkKLSAgICBz
dGF0aWMgYm9vbCBnUVRLaXRFbmFibGVkOworICAgIFdFQkNPUkVfRVhQT1JUIHN0YXRpYyBib29s
IGdRVEtpdEVuYWJsZWQ7CiAjZW5kaWYKICAgICAgICAgCiAgICAgc3RhdGljIGJvb2wgZ01vY2tT
Y3JvbGxiYXJzRW5hYmxlZDsKQEAgLTMzOSw5ICszMzksOSBAQCBwcml2YXRlOgogICAgIHN0YXRp
YyBib29sIGdTaG91bGRSZXNwZWN0UHJpb3JpdHlJbkNTU0F0dHJpYnV0ZVNldHRlcnM7CiAjaWYg
UExBVEZPUk0oSU9TKQogICAgIHN0YXRpYyBib29sIGdOZXR3b3JrRGF0YVVzYWdlVHJhY2tpbmdF
bmFibGVkOwotICAgIHN0YXRpYyBib29sIGdBVktpdEVuYWJsZWQ7Ci0gICAgc3RhdGljIGJvb2wg
Z1Nob3VsZE9wdE91dE9mTmV0d29ya1N0YXRlT2JzZXJ2YXRpb247Ci0gICAgc3RhdGljIGJvb2wg
Z01hbmFnZUF1ZGlvU2Vzc2lvbjsKKyAgICBXRUJDT1JFX0VYUE9SVCBzdGF0aWMgYm9vbCBnQVZL
aXRFbmFibGVkOworICAgIFdFQkNPUkVfRVhQT1JUIHN0YXRpYyBib29sIGdTaG91bGRPcHRPdXRP
Zk5ldHdvcmtTdGF0ZU9ic2VydmF0aW9uOworICAgIFdFQkNPUkVfRVhQT1JUIHN0YXRpYyBib29s
IGdNYW5hZ2VBdWRpb1Nlc3Npb247CiAjZW5kaWYKIAogICAgIHN0YXRpYyBkb3VibGUgZ0hpZGRl
blBhZ2VET01UaW1lckFsaWdubWVudEludGVydmFsOwpJbmRleDogU291cmNlL1dlYkNvcmUvcGFn
ZS9Vc2VyQ29udGVudENvbnRyb2xsZXIuaAo9PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09Ci0tLSBTb3VyY2UvV2ViQ29yZS9w
YWdlL1VzZXJDb250ZW50Q29udHJvbGxlci5oCShyZXZpc2lvbiAxNzI4NDcpCisrKyBTb3VyY2Uv
V2ViQ29yZS9wYWdlL1VzZXJDb250ZW50Q29udHJvbGxlci5oCSh3b3JraW5nIGNvcHkpCkBAIC00
NywzMSArNDcsMzEgQEAgY2xhc3MgVXNlck1lc3NhZ2VIYW5kbGVyRGVzY3JpcHRvcjsKIAogY2xh
c3MgVXNlckNvbnRlbnRDb250cm9sbGVyIDogcHVibGljIFJlZkNvdW50ZWQ8VXNlckNvbnRlbnRD
b250cm9sbGVyPiB7CiBwdWJsaWM6Ci0gICAgc3RhdGljIFJlZlB0cjxVc2VyQ29udGVudENvbnRy
b2xsZXI+IGNyZWF0ZSgpOwotICAgIH5Vc2VyQ29udGVudENvbnRyb2xsZXIoKTsKKyAgICBXRUJD
T1JFX0VYUE9SVCBzdGF0aWMgUmVmUHRyPFVzZXJDb250ZW50Q29udHJvbGxlcj4gY3JlYXRlKCk7
CisgICAgV0VCQ09SRV9FWFBPUlQgflVzZXJDb250ZW50Q29udHJvbGxlcigpOwogCiAgICAgdm9p
ZCBhZGRQYWdlKFBhZ2UmKTsKICAgICB2b2lkIHJlbW92ZVBhZ2UoUGFnZSYpOwogCiAgICAgY29u
c3QgVXNlclNjcmlwdE1hcCogdXNlclNjcmlwdHMoKSBjb25zdCB7IHJldHVybiBtX3VzZXJTY3Jp
cHRzLmdldCgpOyB9CiAKLSAgICB2b2lkIGFkZFVzZXJTY3JpcHQoRE9NV3JhcHBlcldvcmxkJiwg
c3RkOjp1bmlxdWVfcHRyPFVzZXJTY3JpcHQ+KTsKKyAgICBXRUJDT1JFX0VYUE9SVCB2b2lkIGFk
ZFVzZXJTY3JpcHQoRE9NV3JhcHBlcldvcmxkJiwgc3RkOjp1bmlxdWVfcHRyPFVzZXJTY3JpcHQ+
KTsKICAgICB2b2lkIHJlbW92ZVVzZXJTY3JpcHQoRE9NV3JhcHBlcldvcmxkJiwgY29uc3QgVVJM
Jik7Ci0gICAgdm9pZCByZW1vdmVVc2VyU2NyaXB0cyhET01XcmFwcGVyV29ybGQmKTsKKyAgICBX
RUJDT1JFX0VYUE9SVCB2b2lkIHJlbW92ZVVzZXJTY3JpcHRzKERPTVdyYXBwZXJXb3JsZCYpOwog
CiAgICAgY29uc3QgVXNlclN0eWxlU2hlZXRNYXAqIHVzZXJTdHlsZVNoZWV0cygpIGNvbnN0IHsg
cmV0dXJuIG1fdXNlclN0eWxlU2hlZXRzLmdldCgpOyB9CiAKLSAgICB2b2lkIGFkZFVzZXJTdHls
ZVNoZWV0KERPTVdyYXBwZXJXb3JsZCYsIHN0ZDo6dW5pcXVlX3B0cjxVc2VyU3R5bGVTaGVldD4s
IFVzZXJTdHlsZUluamVjdGlvblRpbWUpOworICAgIFdFQkNPUkVfRVhQT1JUIHZvaWQgYWRkVXNl
clN0eWxlU2hlZXQoRE9NV3JhcHBlcldvcmxkJiwgc3RkOjp1bmlxdWVfcHRyPFVzZXJTdHlsZVNo
ZWV0PiwgVXNlclN0eWxlSW5qZWN0aW9uVGltZSk7CiAgICAgdm9pZCByZW1vdmVVc2VyU3R5bGVT
aGVldChET01XcmFwcGVyV29ybGQmLCBjb25zdCBVUkwmKTsKLSAgICB2b2lkIHJlbW92ZVVzZXJT
dHlsZVNoZWV0cyhET01XcmFwcGVyV29ybGQmKTsKKyAgICBXRUJDT1JFX0VYUE9SVCB2b2lkIHJl
bW92ZVVzZXJTdHlsZVNoZWV0cyhET01XcmFwcGVyV29ybGQmKTsKIAogICAgIHZvaWQgcmVtb3Zl
QWxsVXNlckNvbnRlbnQoKTsKIAogI2lmIEVOQUJMRShVU0VSX01FU1NBR0VfSEFORExFUlMpCiAg
ICAgY29uc3QgVXNlck1lc3NhZ2VIYW5kbGVyRGVzY3JpcHRvck1hcCogdXNlck1lc3NhZ2VIYW5k
bGVyRGVzY3JpcHRvcnMoKSBjb25zdCB7IHJldHVybiBtX3VzZXJNZXNzYWdlSGFuZGxlckRlc2Ny
aXB0b3JzLmdldCgpOyB9CiAKLSAgICB2b2lkIGFkZFVzZXJNZXNzYWdlSGFuZGxlckRlc2NyaXB0
b3IoVXNlck1lc3NhZ2VIYW5kbGVyRGVzY3JpcHRvciYpOwotICAgIHZvaWQgcmVtb3ZlVXNlck1l
c3NhZ2VIYW5kbGVyRGVzY3JpcHRvcihVc2VyTWVzc2FnZUhhbmRsZXJEZXNjcmlwdG9yJik7Cisg
ICAgV0VCQ09SRV9FWFBPUlQgdm9pZCBhZGRVc2VyTWVzc2FnZUhhbmRsZXJEZXNjcmlwdG9yKFVz
ZXJNZXNzYWdlSGFuZGxlckRlc2NyaXB0b3ImKTsKKyAgICBXRUJDT1JFX0VYUE9SVCB2b2lkIHJl
bW92ZVVzZXJNZXNzYWdlSGFuZGxlckRlc2NyaXB0b3IoVXNlck1lc3NhZ2VIYW5kbGVyRGVzY3Jp
cHRvciYpOwogI2VuZGlmCiAKIHByaXZhdGU6CkluZGV4OiBTb3VyY2UvV2ViQ29yZS9wYWdlL1Vz
ZXJDb250ZW50VVJMUGF0dGVybi5oCj09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT0KLS0tIFNvdXJjZS9XZWJDb3JlL3BhZ2Uv
VXNlckNvbnRlbnRVUkxQYXR0ZXJuLmgJKHJldmlzaW9uIDE3Mjg0NykKKysrIFNvdXJjZS9XZWJD
b3JlL3BhZ2UvVXNlckNvbnRlbnRVUkxQYXR0ZXJuLmgJKHdvcmtpbmcgY29weSkKQEAgLTQ1LDcg
KzQ1LDcgQEAgcHVibGljOgogCiAgICAgYm9vbCBpc1ZhbGlkKCkgY29uc3QgeyByZXR1cm4gIW1f
aW52YWxpZDsgfQogCi0gICAgYm9vbCBtYXRjaGVzKGNvbnN0IFVSTCYpIGNvbnN0OworICAgIFdF
QkNPUkVfRVhQT1JUIGJvb2wgbWF0Y2hlcyhjb25zdCBVUkwmKSBjb25zdDsKIAogICAgIGNvbnN0
IFN0cmluZyYgc2NoZW1lKCkgY29uc3QgeyByZXR1cm4gbV9zY2hlbWU7IH0KICAgICBjb25zdCBT
dHJpbmcmIGhvc3QoKSBjb25zdCB7IHJldHVybiBtX2hvc3Q7IH0KQEAgLTU2LDcgKzU2LDcgQEAg
cHVibGljOgogICAgIHN0YXRpYyBib29sIG1hdGNoZXNQYXR0ZXJucyhjb25zdCBVUkwmLCBjb25z
dCBWZWN0b3I8U3RyaW5nPiYgd2hpdGVsaXN0LCBjb25zdCBWZWN0b3I8U3RyaW5nPiYgYmxhY2ts
aXN0KTsKIAogcHJpdmF0ZToKLSAgICBib29sIHBhcnNlKGNvbnN0IFN0cmluZyYgcGF0dGVybik7
CisgICAgV0VCQ09SRV9FWFBPUlQgYm9vbCBwYXJzZShjb25zdCBTdHJpbmcmIHBhdHRlcm4pOwog
CiAgICAgYm9vbCBtYXRjaGVzSG9zdChjb25zdCBVUkwmKSBjb25zdDsKICAgICBib29sIG1hdGNo
ZXNQYXRoKGNvbnN0IFVSTCYpIGNvbnN0OwpJbmRleDogU291cmNlL1dlYkNvcmUvcGFnZS9Vc2Vy
TWVzc2FnZUhhbmRsZXJEZXNjcmlwdG9yLmgKPT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PQotLS0gU291cmNlL1dlYkNvcmUv
cGFnZS9Vc2VyTWVzc2FnZUhhbmRsZXJEZXNjcmlwdG9yLmgJKHJldmlzaW9uIDE3Mjg0NykKKysr
IFNvdXJjZS9XZWJDb3JlL3BhZ2UvVXNlck1lc3NhZ2VIYW5kbGVyRGVzY3JpcHRvci5oCSh3b3Jr
aW5nIGNvcHkpCkBAIC01MiwxNSArNTIsMTUgQEAgcHVibGljOgogICAgIHsKICAgICAgICAgcmV0
dXJuIGFkb3B0UmVmKG5ldyBVc2VyTWVzc2FnZUhhbmRsZXJEZXNjcmlwdG9yKG5hbWUsIHdvcmxk
LCBjbGllbnQpKTsKICAgICB9Ci0gICAgflVzZXJNZXNzYWdlSGFuZGxlckRlc2NyaXB0b3IoKTsK
KyAgICBXRUJDT1JFX0VYUE9SVCB+VXNlck1lc3NhZ2VIYW5kbGVyRGVzY3JpcHRvcigpOwogCiAg
ICAgY29uc3QgQXRvbWljU3RyaW5nJiBuYW1lKCk7CiAgICAgRE9NV3JhcHBlcldvcmxkJiB3b3Js
ZCgpOwogICAgIAogICAgIENsaWVudCYgY2xpZW50KCkgY29uc3QgeyByZXR1cm4gbV9jbGllbnQ7
IH0KLQorICAgIAogcHJpdmF0ZToKLSAgICBleHBsaWNpdCBVc2VyTWVzc2FnZUhhbmRsZXJEZXNj
cmlwdG9yKGNvbnN0IEF0b21pY1N0cmluZyYsIERPTVdyYXBwZXJXb3JsZCYsIENsaWVudCYpOwor
ICAgIFdFQkNPUkVfRVhQT1JUIGV4cGxpY2l0IFVzZXJNZXNzYWdlSGFuZGxlckRlc2NyaXB0b3Io
Y29uc3QgQXRvbWljU3RyaW5nJiwgRE9NV3JhcHBlcldvcmxkJiwgQ2xpZW50Jik7CiAgICAgCiAg
ICAgQXRvbWljU3RyaW5nIG1fbmFtZTsKICAgICBSZWY8RE9NV3JhcHBlcldvcmxkPiBtX3dvcmxk
OwpJbmRleDogU291cmNlL1dlYkNvcmUvcGFnZS9WaWV3cG9ydENvbmZpZ3VyYXRpb24uaAo9PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09Ci0tLSBTb3VyY2UvV2ViQ29yZS9wYWdlL1ZpZXdwb3J0Q29uZmlndXJhdGlvbi5oCShy
ZXZpc2lvbiAxNzI4NDcpCisrKyBTb3VyY2UvV2ViQ29yZS9wYWdlL1ZpZXdwb3J0Q29uZmlndXJh
dGlvbi5oCSh3b3JraW5nIGNvcHkpCkBAIC02Myw0MCArNjMsNDAgQEAgcHVibGljOgogICAgICAg
ICBib29sIGluaXRpYWxTY2FsZUlzU2V0OwogICAgIH07CiAKLSAgICBWaWV3cG9ydENvbmZpZ3Vy
YXRpb24oKTsKKyAgICBXRUJDT1JFX0VYUE9SVCBWaWV3cG9ydENvbmZpZ3VyYXRpb24oKTsKIAog
ICAgIGNvbnN0IFBhcmFtZXRlcnMmIGRlZmF1bHRDb25maWd1cmF0aW9uKCkgY29uc3QgeyByZXR1
cm4gbV9kZWZhdWx0Q29uZmlndXJhdGlvbjsgfQotICAgIHZvaWQgc2V0RGVmYXVsdENvbmZpZ3Vy
YXRpb24oY29uc3QgUGFyYW1ldGVycyYpOworICAgIFdFQkNPUkVfRVhQT1JUIHZvaWQgc2V0RGVm
YXVsdENvbmZpZ3VyYXRpb24oY29uc3QgUGFyYW1ldGVycyYpOwogCiAgICAgY29uc3QgSW50U2l6
ZSYgY29udGVudHNTaXplKCkgY29uc3QgeyByZXR1cm4gbV9jb250ZW50U2l6ZTsgfQotICAgIHZv
aWQgc2V0Q29udGVudHNTaXplKGNvbnN0IEludFNpemUmKTsKKyAgICBXRUJDT1JFX0VYUE9SVCB2
b2lkIHNldENvbnRlbnRzU2l6ZShjb25zdCBJbnRTaXplJik7CiAKICAgICBjb25zdCBGbG9hdFNp
emUmIG1pbmltdW1MYXlvdXRTaXplKCkgY29uc3QgeyByZXR1cm4gbV9taW5pbXVtTGF5b3V0U2l6
ZTsgfQotICAgIHZvaWQgc2V0TWluaW11bUxheW91dFNpemUoY29uc3QgRmxvYXRTaXplJik7Cisg
ICAgV0VCQ09SRV9FWFBPUlQgdm9pZCBzZXRNaW5pbXVtTGF5b3V0U2l6ZShjb25zdCBGbG9hdFNp
emUmKTsKIAogICAgIGNvbnN0IEZsb2F0U2l6ZSYgbWluaW11bUxheW91dFNpemVGb3JNaW5pbWFs
VUkoKSBjb25zdCB7IHJldHVybiBtX21pbmltdW1MYXlvdXRTaXplRm9yTWluaW1hbFVJLmlzRW1w
dHkoKSA/IG1fbWluaW11bUxheW91dFNpemUgOiBtX21pbmltdW1MYXlvdXRTaXplRm9yTWluaW1h
bFVJOyB9Ci0gICAgdm9pZCBzZXRNaW5pbXVtTGF5b3V0U2l6ZUZvck1pbmltYWxVSShjb25zdCBG
bG9hdFNpemUmKTsKKyAgICBXRUJDT1JFX0VYUE9SVCB2b2lkIHNldE1pbmltdW1MYXlvdXRTaXpl
Rm9yTWluaW1hbFVJKGNvbnN0IEZsb2F0U2l6ZSYpOwogCi0gICAgY29uc3QgRmxvYXRTaXplJiBh
Y3RpdmVNaW5pbXVtTGF5b3V0U2l6ZUluU2Nyb2xsVmlld0Nvb3JkaW5hdGVzKCkgY29uc3Q7Cisg
ICAgV0VCQ09SRV9FWFBPUlQgY29uc3QgRmxvYXRTaXplJiBhY3RpdmVNaW5pbXVtTGF5b3V0U2l6
ZUluU2Nyb2xsVmlld0Nvb3JkaW5hdGVzKCkgY29uc3Q7CiAKICAgICBjb25zdCBWaWV3cG9ydEFy
Z3VtZW50cyYgdmlld3BvcnRBcmd1bWVudHMoKSBjb25zdCB7IHJldHVybiBtX3ZpZXdwb3J0QXJn
dW1lbnRzOyB9Ci0gICAgdm9pZCBzZXRWaWV3cG9ydEFyZ3VtZW50cyhjb25zdCBWaWV3cG9ydEFy
Z3VtZW50cyYpOworICAgIFdFQkNPUkVfRVhQT1JUIHZvaWQgc2V0Vmlld3BvcnRBcmd1bWVudHMo
Y29uc3QgVmlld3BvcnRBcmd1bWVudHMmKTsKIAotICAgIHZvaWQgcmVzZXRNaW5pbWFsVUkoKTsK
LSAgICB2b2lkIGRpZEZpbmlzaERvY3VtZW50TG9hZCgpOworICAgIFdFQkNPUkVfRVhQT1JUIHZv
aWQgcmVzZXRNaW5pbWFsVUkoKTsKKyAgICBXRUJDT1JFX0VYUE9SVCB2b2lkIGRpZEZpbmlzaERv
Y3VtZW50TG9hZCgpOwogCi0gICAgSW50U2l6ZSBsYXlvdXRTaXplKCkgY29uc3Q7Ci0gICAgZG91
YmxlIGluaXRpYWxTY2FsZSgpIGNvbnN0OwotICAgIGRvdWJsZSBtaW5pbXVtU2NhbGUoKSBjb25z
dDsKKyAgICBXRUJDT1JFX0VYUE9SVCBJbnRTaXplIGxheW91dFNpemUoKSBjb25zdDsKKyAgICBX
RUJDT1JFX0VYUE9SVCBkb3VibGUgaW5pdGlhbFNjYWxlKCkgY29uc3Q7CisgICAgV0VCQ09SRV9F
WFBPUlQgZG91YmxlIG1pbmltdW1TY2FsZSgpIGNvbnN0OwogICAgIGRvdWJsZSBtYXhpbXVtU2Nh
bGUoKSBjb25zdCB7IHJldHVybiBtX2NvbmZpZ3VyYXRpb24ubWF4aW11bVNjYWxlOyB9CiAgICAg
Ym9vbCBhbGxvd3NVc2VyU2NhbGluZygpIGNvbnN0IHsgcmV0dXJuIG1fY29uZmlndXJhdGlvbi5h
bGxvd3NVc2VyU2NhbGluZzsgfQogICAgIGJvb2wgdXNlc01pbmltYWxVSSgpIGNvbnN0IHsgcmV0
dXJuIG1fdXNlc01pbmltYWxVSTsgfQogCi0gICAgc3RhdGljIFBhcmFtZXRlcnMgd2VicGFnZVBh
cmFtZXRlcnMoKTsKLSAgICBzdGF0aWMgUGFyYW1ldGVycyB0ZXh0RG9jdW1lbnRQYXJhbWV0ZXJz
KCk7Ci0gICAgc3RhdGljIFBhcmFtZXRlcnMgaW1hZ2VEb2N1bWVudFBhcmFtZXRlcnMoKTsKLSAg
ICBzdGF0aWMgUGFyYW1ldGVycyB4aHRtbE1vYmlsZVBhcmFtZXRlcnMoKTsKLSAgICBzdGF0aWMg
UGFyYW1ldGVycyB0ZXN0aW5nUGFyYW1ldGVycygpOworICAgIFdFQkNPUkVfRVhQT1JUIHN0YXRp
YyBQYXJhbWV0ZXJzIHdlYnBhZ2VQYXJhbWV0ZXJzKCk7CisgICAgV0VCQ09SRV9FWFBPUlQgc3Rh
dGljIFBhcmFtZXRlcnMgdGV4dERvY3VtZW50UGFyYW1ldGVycygpOworICAgIFdFQkNPUkVfRVhQ
T1JUIHN0YXRpYyBQYXJhbWV0ZXJzIGltYWdlRG9jdW1lbnRQYXJhbWV0ZXJzKCk7CisgICAgV0VC
Q09SRV9FWFBPUlQgc3RhdGljIFBhcmFtZXRlcnMgeGh0bWxNb2JpbGVQYXJhbWV0ZXJzKCk7Cisg
ICAgV0VCQ09SRV9FWFBPUlQgc3RhdGljIFBhcmFtZXRlcnMgdGVzdGluZ1BhcmFtZXRlcnMoKTsK
ICAgICAKICNpZm5kZWYgTkRFQlVHCiAgICAgV1RGOjpDU3RyaW5nIGRlc2NyaXB0aW9uKCkgY29u
c3Q7CkluZGV4OiBTb3VyY2UvV2ViQ29yZS9wYWdlL1Zpc2l0ZWRMaW5rU3RvcmUuaAo9PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09Ci0tLSBTb3VyY2UvV2ViQ29yZS9wYWdlL1Zpc2l0ZWRMaW5rU3RvcmUuaAkocmV2aXNpb24g
MTcyODQ3KQorKysgU291cmNlL1dlYkNvcmUvcGFnZS9WaXNpdGVkTGlua1N0b3JlLmgJKHdvcmtp
bmcgY29weSkKQEAgLTM5LDggKzM5LDggQEAgY2xhc3MgVVJMOwogCiBjbGFzcyBWaXNpdGVkTGlu
a1N0b3JlIDogcHVibGljIFJlZkNvdW50ZWQ8VmlzaXRlZExpbmtTdG9yZT4gewogcHVibGljOgot
ICAgIFZpc2l0ZWRMaW5rU3RvcmUoKTsKLSAgICB2aXJ0dWFsIH5WaXNpdGVkTGlua1N0b3JlKCk7
CisgICAgV0VCQ09SRV9FWFBPUlQgVmlzaXRlZExpbmtTdG9yZSgpOworICAgIFdFQkNPUkVfRVhQ
T1JUIHZpcnR1YWwgflZpc2l0ZWRMaW5rU3RvcmUoKTsKIAogICAgIC8vIEZJWE1FOiBUaGVzZSB0
d28gbWVtYmVycyBzaG91bGQgb25seSB0YWtlIHRoZSBsaW5rIGhhc2guCiAgICAgdmlydHVhbCBi
b29sIGlzTGlua1Zpc2l0ZWQoUGFnZSYsIExpbmtIYXNoLCBjb25zdCBVUkwmIGJhc2VVUkwsIGNv
bnN0IEF0b21pY1N0cmluZyYgYXR0cmlidXRlVVJMKSA9IDA7CkBAIC00OSw4ICs0OSw4IEBAIHB1
YmxpYzoKICAgICB2b2lkIGFkZFBhZ2UoUGFnZSYpOwogICAgIHZvaWQgcmVtb3ZlUGFnZShQYWdl
Jik7CiAKLSAgICB2b2lkIGludmFsaWRhdGVTdHlsZXNGb3JBbGxMaW5rcygpOwotICAgIHZvaWQg
aW52YWxpZGF0ZVN0eWxlc0ZvckxpbmsoTGlua0hhc2gpOworICAgIFdFQkNPUkVfRVhQT1JUIHZv
aWQgaW52YWxpZGF0ZVN0eWxlc0ZvckFsbExpbmtzKCk7CisgICAgV0VCQ09SRV9FWFBPUlQgdm9p
ZCBpbnZhbGlkYXRlU3R5bGVzRm9yTGluayhMaW5rSGFzaCk7CiAKIHByaXZhdGU6CiAgICAgSGFz
aFNldDxQYWdlKj4gbV9wYWdlczsKSW5kZXg6IFNvdXJjZS9XZWJDb3JlL3BhZ2UvV2hlZWxFdmVu
dERlbHRhVHJhY2tlci5oCj09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT0KLS0tIFNvdXJjZS9XZWJDb3JlL3BhZ2UvV2hlZWxF
dmVudERlbHRhVHJhY2tlci5oCShyZXZpc2lvbiAxNzI4NDcpCisrKyBTb3VyY2UvV2ViQ29yZS9w
YWdlL1doZWVsRXZlbnREZWx0YVRyYWNrZXIuaAkod29ya2luZyBjb3B5KQpAQCAtNDQsMTYgKzQ0
LDE2IEBAIGVudW0gY2xhc3MgRG9taW5hbnRTY3JvbGxHZXN0dXJlRGlyZWN0aW8KIAogY2xhc3Mg
V2hlZWxFdmVudERlbHRhVHJhY2tlciB7CiBwdWJsaWM6Ci0gICAgV2hlZWxFdmVudERlbHRhVHJh
Y2tlcigpOworICAgIFdFQkNPUkVfRVhQT1JUIFdoZWVsRXZlbnREZWx0YVRyYWNrZXIoKTsKICAg
ICB2aXJ0dWFsIH5XaGVlbEV2ZW50RGVsdGFUcmFja2VyKCk7CiAKLSAgICB2b2lkIGJlZ2luVHJh
Y2tpbmdEZWx0YXMoKTsKLSAgICB2b2lkIGVuZFRyYWNraW5nRGVsdGFzKCk7CisgICAgV0VCQ09S
RV9FWFBPUlQgdm9pZCBiZWdpblRyYWNraW5nRGVsdGFzKCk7CisgICAgV0VCQ09SRV9FWFBPUlQg
dm9pZCBlbmRUcmFja2luZ0RlbHRhcygpOwogCiAgICAgYm9vbCBpc1RyYWNraW5nRGVsdGFzKCkg
Y29uc3QgeyByZXR1cm4gbV9pc1RyYWNraW5nRGVsdGFzOyB9CiAKLSAgICB2b2lkIHJlY29yZFdo
ZWVsRXZlbnREZWx0YShjb25zdCBQbGF0Zm9ybVdoZWVsRXZlbnQmKTsKLSAgICBEb21pbmFudFNj
cm9sbEdlc3R1cmVEaXJlY3Rpb24gZG9taW5hbnRTY3JvbGxHZXN0dXJlRGlyZWN0aW9uKCkgY29u
c3Q7CisgICAgV0VCQ09SRV9FWFBPUlQgdm9pZCByZWNvcmRXaGVlbEV2ZW50RGVsdGEoY29uc3Qg
UGxhdGZvcm1XaGVlbEV2ZW50Jik7CisgICAgV0VCQ09SRV9FWFBPUlQgRG9taW5hbnRTY3JvbGxH
ZXN0dXJlRGlyZWN0aW9uIGRvbWluYW50U2Nyb2xsR2VzdHVyZURpcmVjdGlvbigpIGNvbnN0Owog
CiBwcml2YXRlOgogICAgIERlcXVlPEZsb2F0U2l6ZT4gbV9yZWNlbnRXaGVlbEV2ZW50RGVsdGFz
OwpJbmRleDogU291cmNlL1dlYkNvcmUvcGFnZS9jb2NvYS9Vc2VyQWdlbnQuaAo9PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
Ci0tLSBTb3VyY2UvV2ViQ29yZS9wYWdlL2NvY29hL1VzZXJBZ2VudC5oCShyZXZpc2lvbiAxNzI4
NDcpCisrKyBTb3VyY2UvV2ViQ29yZS9wYWdlL2NvY29hL1VzZXJBZ2VudC5oCSh3b3JraW5nIGNv
cHkpCkBAIC0zMCw3ICszMCw3IEBACiAKIG5hbWVzcGFjZSBXZWJDb3JlIHsKIAotU3RyaW5nIHN0
YW5kYXJkVXNlckFnZW50V2l0aEFwcGxpY2F0aW9uTmFtZShjb25zdCBTdHJpbmcmIGFwcGxpY2F0
aW9uTmFtZSwgY29uc3QgU3RyaW5nJiB3ZWJraXRWZXJzaW9uU3RyaW5nKTsKK1dFQkNPUkVfRVhQ
T1JUIFN0cmluZyBzdGFuZGFyZFVzZXJBZ2VudFdpdGhBcHBsaWNhdGlvbk5hbWUoY29uc3QgU3Ry
aW5nJiBhcHBsaWNhdGlvbk5hbWUsIGNvbnN0IFN0cmluZyYgd2Via2l0VmVyc2lvblN0cmluZyk7
CiAKIFN0cmluZyBzeXN0ZW1NYXJrZXRpbmdWZXJzaW9uRm9yVXNlckFnZW50U3RyaW5nKCk7CiBT
dHJpbmcgdXNlckFnZW50QnVuZGxlVmVyc2lvbkZyb21GdWxsVmVyc2lvblN0cmluZyhjb25zdCBT
dHJpbmcmKTsKSW5kZXg6IFNvdXJjZS9XZWJDb3JlL3BhZ2Uvc2Nyb2xsaW5nL1Njcm9sbGluZ0Nv
bnN0cmFpbnRzLmgKPT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PQotLS0gU291cmNlL1dlYkNvcmUvcGFnZS9zY3JvbGxpbmcv
U2Nyb2xsaW5nQ29uc3RyYWludHMuaAkocmV2aXNpb24gMTcyODQ3KQorKysgU291cmNlL1dlYkNv
cmUvcGFnZS9zY3JvbGxpbmcvU2Nyb2xsaW5nQ29uc3RyYWludHMuaAkod29ya2luZyBjb3B5KQpA
QCAtMTM3LDcgKzEzNyw3IEBAIHB1YmxpYzoKICAgICBjb25zdCBGbG9hdFNpemUgc3RpY2t5T2Zm
c2V0QXRMYXN0TGF5b3V0KCkgY29uc3QgeyByZXR1cm4gbV9zdGlja3lPZmZzZXRBdExhc3RMYXlv
dXQ7IH0KICAgICB2b2lkIHNldFN0aWNreU9mZnNldEF0TGFzdExheW91dChjb25zdCBGbG9hdFNp
emUmIG9mZnNldCkgeyBtX3N0aWNreU9mZnNldEF0TGFzdExheW91dCA9IG9mZnNldDsgfQogCi0g
ICAgRmxvYXRQb2ludCBsYXllclBvc2l0aW9uRm9yQ29uc3RyYWluaW5nUmVjdChjb25zdCBGbG9h
dFJlY3QmIGNvbnN0cmFpbmluZ1JlY3QpIGNvbnN0OworICAgIFdFQkNPUkVfRVhQT1JUIEZsb2F0
UG9pbnQgbGF5ZXJQb3NpdGlvbkZvckNvbnN0cmFpbmluZ1JlY3QoY29uc3QgRmxvYXRSZWN0JiBj
b25zdHJhaW5pbmdSZWN0KSBjb25zdDsKIAogICAgIGNvbnN0IEZsb2F0UG9pbnQmIGxheWVyUG9z
aXRpb25BdExhc3RMYXlvdXQoKSBjb25zdCB7IHJldHVybiBtX2xheWVyUG9zaXRpb25BdExhc3RM
YXlvdXQ7IH0KICAgICB2b2lkIHNldExheWVyUG9zaXRpb25BdExhc3RMYXlvdXQoY29uc3QgRmxv
YXRQb2ludCYgcG9pbnQpIHsgbV9sYXllclBvc2l0aW9uQXRMYXN0TGF5b3V0ID0gcG9pbnQ7IH0K
SW5kZXg6IFNvdXJjZS9XZWJDb3JlL3BhZ2Uvc2Nyb2xsaW5nL1Njcm9sbGluZ0Nvb3JkaW5hdG9y
LmgKPT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PQotLS0gU291cmNlL1dlYkNvcmUvcGFnZS9zY3JvbGxpbmcvU2Nyb2xsaW5n
Q29vcmRpbmF0b3IuaAkocmV2aXNpb24gMTcyODQ3KQorKysgU291cmNlL1dlYkNvcmUvcGFnZS9z
Y3JvbGxpbmcvU2Nyb2xsaW5nQ29vcmRpbmF0b3IuaAkod29ya2luZyBjb3B5KQpAQCAtMTA4LDcg
KzEwOCw3IEBAIHB1YmxpYzoKICAgICBzdGF0aWMgUGFzc1JlZlB0cjxTY3JvbGxpbmdDb29yZGlu
YXRvcj4gY3JlYXRlKFBhZ2UqKTsKICAgICB2aXJ0dWFsIH5TY3JvbGxpbmdDb29yZGluYXRvcigp
OwogCi0gICAgdmlydHVhbCB2b2lkIHBhZ2VEZXN0cm95ZWQoKTsKKyAgICBXRUJDT1JFX0VYUE9S
VCB2aXJ0dWFsIHZvaWQgcGFnZURlc3Ryb3llZCgpOwogICAgIAogICAgIHZpcnR1YWwgYm9vbCBp
c0FzeW5jU2Nyb2xsaW5nQ29vcmRpbmF0b3IoKSBjb25zdCB7IHJldHVybiBmYWxzZTsgfQogICAg
IHZpcnR1YWwgYm9vbCBpc1JlbW90ZVNjcm9sbGluZ0Nvb3JkaW5hdG9yKCkgY29uc3QgeyByZXR1
cm4gZmFsc2U7IH0KQEAgLTE1MCw3ICsxNTAsNyBAQCBwdWJsaWM6CiAjZW5kaWYKIAogICAgIC8v
IEZvcmNlIGFsbCBzY3JvbGwgbGF5ZXIgcG9zaXRpb24gdXBkYXRlcyB0byBoYXBwZW4gb24gdGhl
IG1haW4gdGhyZWFkLgotICAgIHZvaWQgc2V0Rm9yY2VTeW5jaHJvbm91c1Njcm9sbExheWVyUG9z
aXRpb25VcGRhdGVzKGJvb2wpOworICAgIFdFQkNPUkVfRVhQT1JUIHZvaWQgc2V0Rm9yY2VTeW5j
aHJvbm91c1Njcm9sbExheWVyUG9zaXRpb25VcGRhdGVzKGJvb2wpOwogCiAgICAgLy8gVGhlc2Ug
dmlydHVhbCBmdW5jdGlvbnMgYXJlIGN1cnJlbnRseSB1bmlxdWUgdG8gdGhlIHRocmVhZGVkIHNj
cm9sbGluZyBhcmNoaXRlY3R1cmUuIAogICAgIC8vIFRoZWlyIG1lYW5pbmdmdWwgaW1wbGVtZW50
YXRpb25zIGFyZSBpbiBTY3JvbGxpbmdDb29yZGluYXRvck1hYy4KSW5kZXg6IFNvdXJjZS9XZWJD
b3JlL3BhZ2Uvc2Nyb2xsaW5nL1Njcm9sbGluZ1N0YXRlRml4ZWROb2RlLmgKPT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PQot
LS0gU291cmNlL1dlYkNvcmUvcGFnZS9zY3JvbGxpbmcvU2Nyb2xsaW5nU3RhdGVGaXhlZE5vZGUu
aAkocmV2aXNpb24gMTcyODQ3KQorKysgU291cmNlL1dlYkNvcmUvcGFnZS9zY3JvbGxpbmcvU2Ny
b2xsaW5nU3RhdGVGaXhlZE5vZGUuaAkod29ya2luZyBjb3B5KQpAQCAtNDksNyArNDksNyBAQCBw
dWJsaWM6CiAgICAgICAgIFZpZXdwb3J0Q29uc3RyYWludHMgPSBOdW1TdGF0ZU5vZGVCaXRzCiAg
ICAgfTsKIAotICAgIHZvaWQgdXBkYXRlQ29uc3RyYWludHMoY29uc3QgRml4ZWRQb3NpdGlvblZp
ZXdwb3J0Q29uc3RyYWludHMmKTsKKyAgICBXRUJDT1JFX0VYUE9SVCB2b2lkIHVwZGF0ZUNvbnN0
cmFpbnRzKGNvbnN0IEZpeGVkUG9zaXRpb25WaWV3cG9ydENvbnN0cmFpbnRzJik7CiAgICAgY29u
c3QgRml4ZWRQb3NpdGlvblZpZXdwb3J0Q29uc3RyYWludHMmIHZpZXdwb3J0Q29uc3RyYWludHMo
KSBjb25zdCB7IHJldHVybiBtX2NvbnN0cmFpbnRzOyB9CiAKIHByaXZhdGU6CkluZGV4OiBTb3Vy
Y2UvV2ViQ29yZS9wYWdlL3Njcm9sbGluZy9TY3JvbGxpbmdTdGF0ZUZyYW1lU2Nyb2xsaW5nTm9k
ZS5oCj09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT0KLS0tIFNvdXJjZS9XZWJDb3JlL3BhZ2Uvc2Nyb2xsaW5nL1Njcm9sbGlu
Z1N0YXRlRnJhbWVTY3JvbGxpbmdOb2RlLmgJKHJldmlzaW9uIDE3Mjg0NykKKysrIFNvdXJjZS9X
ZWJDb3JlL3BhZ2Uvc2Nyb2xsaW5nL1Njcm9sbGluZ1N0YXRlRnJhbWVTY3JvbGxpbmdOb2RlLmgJ
KHdvcmtpbmcgY29weSkKQEAgLTY1LDUzICs2NSw1MyBAQCBwdWJsaWM6CiAgICAgfTsKIAogICAg
IGZsb2F0IGZyYW1lU2NhbGVGYWN0b3IoKSBjb25zdCB7IHJldHVybiBtX2ZyYW1lU2NhbGVGYWN0
b3I7IH0KLSAgICB2b2lkIHNldEZyYW1lU2NhbGVGYWN0b3IoZmxvYXQpOworICAgIFdFQkNPUkVf
RVhQT1JUIHZvaWQgc2V0RnJhbWVTY2FsZUZhY3RvcihmbG9hdCk7CiAKICAgICBjb25zdCBSZWdp
b24mIG5vbkZhc3RTY3JvbGxhYmxlUmVnaW9uKCkgY29uc3QgeyByZXR1cm4gbV9ub25GYXN0U2Ny
b2xsYWJsZVJlZ2lvbjsgfQotICAgIHZvaWQgc2V0Tm9uRmFzdFNjcm9sbGFibGVSZWdpb24oY29u
c3QgUmVnaW9uJik7CisgICAgV0VCQ09SRV9FWFBPUlQgdm9pZCBzZXROb25GYXN0U2Nyb2xsYWJs
ZVJlZ2lvbihjb25zdCBSZWdpb24mKTsKIAogICAgIHVuc2lnbmVkIHdoZWVsRXZlbnRIYW5kbGVy
Q291bnQoKSBjb25zdCB7IHJldHVybiBtX3doZWVsRXZlbnRIYW5kbGVyQ291bnQ7IH0KLSAgICB2
b2lkIHNldFdoZWVsRXZlbnRIYW5kbGVyQ291bnQodW5zaWduZWQpOworICAgIFdFQkNPUkVfRVhQ
T1JUIHZvaWQgc2V0V2hlZWxFdmVudEhhbmRsZXJDb3VudCh1bnNpZ25lZCk7CiAKICAgICBTeW5j
aHJvbm91c1Njcm9sbGluZ1JlYXNvbnMgc3luY2hyb25vdXNTY3JvbGxpbmdSZWFzb25zKCkgY29u
c3QgeyByZXR1cm4gbV9zeW5jaHJvbm91c1Njcm9sbGluZ1JlYXNvbnM7IH0KLSAgICB2b2lkIHNl
dFN5bmNocm9ub3VzU2Nyb2xsaW5nUmVhc29ucyhTeW5jaHJvbm91c1Njcm9sbGluZ1JlYXNvbnMp
OworICAgIFdFQkNPUkVfRVhQT1JUIHZvaWQgc2V0U3luY2hyb25vdXNTY3JvbGxpbmdSZWFzb25z
KFN5bmNocm9ub3VzU2Nyb2xsaW5nUmVhc29ucyk7CiAKICAgICBTY3JvbGxCZWhhdmlvckZvckZp
eGVkRWxlbWVudHMgc2Nyb2xsQmVoYXZpb3JGb3JGaXhlZEVsZW1lbnRzKCkgY29uc3QgeyByZXR1
cm4gbV9iZWhhdmlvckZvckZpeGVkOyB9Ci0gICAgdm9pZCBzZXRTY3JvbGxCZWhhdmlvckZvckZp
eGVkRWxlbWVudHMoU2Nyb2xsQmVoYXZpb3JGb3JGaXhlZEVsZW1lbnRzKTsKKyAgICBXRUJDT1JF
X0VYUE9SVCB2b2lkIHNldFNjcm9sbEJlaGF2aW9yRm9yRml4ZWRFbGVtZW50cyhTY3JvbGxCZWhh
dmlvckZvckZpeGVkRWxlbWVudHMpOwogCiAgICAgaW50IGhlYWRlckhlaWdodCgpIGNvbnN0IHsg
cmV0dXJuIG1faGVhZGVySGVpZ2h0OyB9Ci0gICAgdm9pZCBzZXRIZWFkZXJIZWlnaHQoaW50KTsK
KyAgICBXRUJDT1JFX0VYUE9SVCB2b2lkIHNldEhlYWRlckhlaWdodChpbnQpOwogCiAgICAgaW50
IGZvb3RlckhlaWdodCgpIGNvbnN0IHsgcmV0dXJuIG1fZm9vdGVySGVpZ2h0OyB9Ci0gICAgdm9p
ZCBzZXRGb290ZXJIZWlnaHQoaW50KTsKKyAgICBXRUJDT1JFX0VYUE9SVCB2b2lkIHNldEZvb3Rl
ckhlaWdodChpbnQpOwogCiAgICAgZmxvYXQgdG9wQ29udGVudEluc2V0KCkgY29uc3QgeyByZXR1
cm4gbV90b3BDb250ZW50SW5zZXQ7IH0KLSAgICB2b2lkIHNldFRvcENvbnRlbnRJbnNldChmbG9h
dCk7CisgICAgV0VCQ09SRV9FWFBPUlQgdm9pZCBzZXRUb3BDb250ZW50SW5zZXQoZmxvYXQpOwog
CiAgICAgY29uc3QgTGF5ZXJSZXByZXNlbnRhdGlvbiYgc2Nyb2xsZWRDb250ZW50c0xheWVyKCkg
Y29uc3QgeyByZXR1cm4gbV9zY3JvbGxlZENvbnRlbnRzTGF5ZXI7IH0KLSAgICB2b2lkIHNldFNj
cm9sbGVkQ29udGVudHNMYXllcihjb25zdCBMYXllclJlcHJlc2VudGF0aW9uJik7CisgICAgV0VC
Q09SRV9FWFBPUlQgdm9pZCBzZXRTY3JvbGxlZENvbnRlbnRzTGF5ZXIoY29uc3QgTGF5ZXJSZXBy
ZXNlbnRhdGlvbiYpOwogCiAgICAgLy8gVGhpcyBpcyBhIGxheWVyIG1vdmVkIGluIHRoZSBvcHBv
c2l0ZSBkaXJlY3Rpb24gdG8gc2Nyb2xsaW5nLCBmb3IgZXhhbXBsZSBmb3IgYmFja2dyb3VuZC1h
dHRhY2htZW50OmZpeGVkCiAgICAgY29uc3QgTGF5ZXJSZXByZXNlbnRhdGlvbiYgY291bnRlclNj
cm9sbGluZ0xheWVyKCkgY29uc3QgeyByZXR1cm4gbV9jb3VudGVyU2Nyb2xsaW5nTGF5ZXI7IH0K
LSAgICB2b2lkIHNldENvdW50ZXJTY3JvbGxpbmdMYXllcihjb25zdCBMYXllclJlcHJlc2VudGF0
aW9uJik7CisgICAgV0VCQ09SRV9FWFBPUlQgdm9pZCBzZXRDb3VudGVyU2Nyb2xsaW5nTGF5ZXIo
Y29uc3QgTGF5ZXJSZXByZXNlbnRhdGlvbiYpOwogCiAgICAgLy8gVGhpcyBpcyBhIGNsaXBwaW5n
IGxheWVyIHRoYXQgd2lsbCBzY3JvbGwgd2l0aCB0aGUgcGFnZSBmb3IgYWxsIHktZGVsdGEgc2Ny
b2xsIHZhbHVlcyBiZXR3ZWVuIDAKICAgICAvLyBhbmQgdG9wQ29udGVudEluc2V0KCkuIE9uY2Ug
dGhlIHktZGVsdGFzIGdldCBiZXlvbmQgdGhlIGNvbnRlbnQgaW5zZXQgcG9pbnQsIHRoaXMgbGF5
ZXIgbm8gbG9uZ2VyCiAgICAgLy8gbmVlZHMgdG8gbW92ZS4gSWYgdGhlIHRvcENvbnRlbnRJbnNl
dCgpIGlzIDAsIHRoaXMgbGF5ZXIgZG9lcyBub3QgbmVlZCB0byBtb3ZlIGF0IGFsbC4gVGhpcyBp
cwogICAgIC8vIG9ubHkgdXNlZCBvbiB0aGUgTWFjLgogICAgIGNvbnN0IExheWVyUmVwcmVzZW50
YXRpb24mIGluc2V0Q2xpcExheWVyKCkgY29uc3QgeyByZXR1cm4gbV9pbnNldENsaXBMYXllcjsg
fQotICAgIHZvaWQgc2V0SW5zZXRDbGlwTGF5ZXIoY29uc3QgTGF5ZXJSZXByZXNlbnRhdGlvbiYp
OworICAgIFdFQkNPUkVfRVhQT1JUIHZvaWQgc2V0SW5zZXRDbGlwTGF5ZXIoY29uc3QgTGF5ZXJS
ZXByZXNlbnRhdGlvbiYpOwogCiAgICAgY29uc3QgTGF5ZXJSZXByZXNlbnRhdGlvbiYgY29udGVu
dFNoYWRvd0xheWVyKCkgY29uc3QgeyByZXR1cm4gbV9jb250ZW50U2hhZG93TGF5ZXI7IH0KLSAg
ICB2b2lkIHNldENvbnRlbnRTaGFkb3dMYXllcihjb25zdCBMYXllclJlcHJlc2VudGF0aW9uJik7
CisgICAgV0VCQ09SRV9FWFBPUlQgdm9pZCBzZXRDb250ZW50U2hhZG93TGF5ZXIoY29uc3QgTGF5
ZXJSZXByZXNlbnRhdGlvbiYpOwogCiAgICAgLy8gVGhlIGhlYWRlciBhbmQgZm9vdGVyIGxheWVy
cyBzY3JvbGwgdmVydGljYWxseSB3aXRoIHRoZSBwYWdlLCB0aGV5IHNob3VsZCByZW1haW4gZml4
ZWQgd2hlbiBzY3JvbGxpbmcgaG9yaXpvbnRhbGx5LgogICAgIGNvbnN0IExheWVyUmVwcmVzZW50
YXRpb24mIGhlYWRlckxheWVyKCkgY29uc3QgeyByZXR1cm4gbV9oZWFkZXJMYXllcjsgfQotICAg
IHZvaWQgc2V0SGVhZGVyTGF5ZXIoY29uc3QgTGF5ZXJSZXByZXNlbnRhdGlvbiYpOworICAgIFdF
QkNPUkVfRVhQT1JUIHZvaWQgc2V0SGVhZGVyTGF5ZXIoY29uc3QgTGF5ZXJSZXByZXNlbnRhdGlv
biYpOwogCiAgICAgLy8gVGhlIGhlYWRlciBhbmQgZm9vdGVyIGxheWVycyBzY3JvbGwgdmVydGlj
YWxseSB3aXRoIHRoZSBwYWdlLCB0aGV5IHNob3VsZCByZW1haW4gZml4ZWQgd2hlbiBzY3JvbGxp
bmcgaG9yaXpvbnRhbGx5LgogICAgIGNvbnN0IExheWVyUmVwcmVzZW50YXRpb24mIGZvb3Rlckxh
eWVyKCkgY29uc3QgeyByZXR1cm4gbV9mb290ZXJMYXllcjsgfQotICAgIHZvaWQgc2V0Rm9vdGVy
TGF5ZXIoY29uc3QgTGF5ZXJSZXByZXNlbnRhdGlvbiYpOworICAgIFdFQkNPUkVfRVhQT1JUIHZv
aWQgc2V0Rm9vdGVyTGF5ZXIoY29uc3QgTGF5ZXJSZXByZXNlbnRhdGlvbiYpOwogCiAjaWYgUExB
VEZPUk0oTUFDKQogICAgIFNjcm9sbGJhclBhaW50ZXIgdmVydGljYWxTY3JvbGxiYXJQYWludGVy
KCkgY29uc3QgeyByZXR1cm4gbV92ZXJ0aWNhbFNjcm9sbGJhclBhaW50ZXIuZ2V0KCk7IH0KSW5k
ZXg6IFNvdXJjZS9XZWJDb3JlL3BhZ2Uvc2Nyb2xsaW5nL1Njcm9sbGluZ1N0YXRlTm9kZS5oCj09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT0KLS0tIFNvdXJjZS9XZWJDb3JlL3BhZ2Uvc2Nyb2xsaW5nL1Njcm9sbGluZ1N0YXRl
Tm9kZS5oCShyZXZpc2lvbiAxNzI4NDcpCisrKyBTb3VyY2UvV2ViQ29yZS9wYWdlL3Njcm9sbGlu
Zy9TY3JvbGxpbmdTdGF0ZU5vZGUuaAkod29ya2luZyBjb3B5KQpAQCAtMjE4LDcgKzIxOCw3IEBA
IHB1YmxpYzoKICAgICB2aXJ0dWFsIHZvaWQgc3luY0xheWVyUG9zaXRpb25Gb3JWaWV3cG9ydFJl
Y3QoY29uc3QgTGF5b3V0UmVjdCYgLyp2aWV3cG9ydFJlY3QqLykgeyB9CiAKICAgICBjb25zdCBM
YXllclJlcHJlc2VudGF0aW9uJiBsYXllcigpIGNvbnN0IHsgcmV0dXJuIG1fbGF5ZXI7IH0KLSAg
ICB2b2lkIHNldExheWVyKGNvbnN0IExheWVyUmVwcmVzZW50YXRpb24mKTsKKyAgICBXRUJDT1JF
X0VYUE9SVCB2b2lkIHNldExheWVyKGNvbnN0IExheWVyUmVwcmVzZW50YXRpb24mKTsKIAogICAg
IFNjcm9sbGluZ1N0YXRlVHJlZSYgc2Nyb2xsaW5nU3RhdGVUcmVlKCkgY29uc3QgeyByZXR1cm4g
bV9zY3JvbGxpbmdTdGF0ZVRyZWU7IH0KIApJbmRleDogU291cmNlL1dlYkNvcmUvcGFnZS9zY3Jv
bGxpbmcvU2Nyb2xsaW5nU3RhdGVPdmVyZmxvd1Njcm9sbGluZ05vZGUuaAo9PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09Ci0t
LSBTb3VyY2UvV2ViQ29yZS9wYWdlL3Njcm9sbGluZy9TY3JvbGxpbmdTdGF0ZU92ZXJmbG93U2Ny
b2xsaW5nTm9kZS5oCShyZXZpc2lvbiAxNzI4NDcpCisrKyBTb3VyY2UvV2ViQ29yZS9wYWdlL3Nj
cm9sbGluZy9TY3JvbGxpbmdTdGF0ZU92ZXJmbG93U2Nyb2xsaW5nTm9kZS5oCSh3b3JraW5nIGNv
cHkpCkBAIC00Niw3ICs0Niw3IEBAIHB1YmxpYzoKIAogICAgIC8vIFRoaXMgaXMgYSBsYXllciB3
aXRoIHRoZSBjb250ZW50cyB0aGF0IG1vdmUuCiAgICAgY29uc3QgTGF5ZXJSZXByZXNlbnRhdGlv
biYgc2Nyb2xsZWRDb250ZW50c0xheWVyKCkgY29uc3QgeyByZXR1cm4gbV9zY3JvbGxlZENvbnRl
bnRzTGF5ZXI7IH0KLSAgICB2b2lkIHNldFNjcm9sbGVkQ29udGVudHNMYXllcihjb25zdCBMYXll
clJlcHJlc2VudGF0aW9uJik7CisgICAgV0VCQ09SRV9FWFBPUlQgdm9pZCBzZXRTY3JvbGxlZENv
bnRlbnRzTGF5ZXIoY29uc3QgTGF5ZXJSZXByZXNlbnRhdGlvbiYpOwogICAgIAogICAgIHZpcnR1
YWwgdm9pZCBkdW1wUHJvcGVydGllcyhUZXh0U3RyZWFtJiwgaW50IGluZGVudCkgY29uc3Qgb3Zl
cnJpZGU7CiAKSW5kZXg6IFNvdXJjZS9XZWJDb3JlL3BhZ2Uvc2Nyb2xsaW5nL1Njcm9sbGluZ1N0
YXRlU2Nyb2xsaW5nTm9kZS5oCj09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT0KLS0tIFNvdXJjZS9XZWJDb3JlL3BhZ2Uvc2Ny
b2xsaW5nL1Njcm9sbGluZ1N0YXRlU2Nyb2xsaW5nTm9kZS5oCShyZXZpc2lvbiAxNzI4NDcpCisr
KyBTb3VyY2UvV2ViQ29yZS9wYWdlL3Njcm9sbGluZy9TY3JvbGxpbmdTdGF0ZVNjcm9sbGluZ05v
ZGUuaAkod29ya2luZyBjb3B5KQpAQCAtNTUsMTkgKzU1LDE5IEBAIHB1YmxpYzoKICAgICB9Owog
CiAgICAgY29uc3QgRmxvYXRTaXplJiBzY3JvbGxhYmxlQXJlYVNpemUoKSBjb25zdCB7IHJldHVy
biBtX3Njcm9sbGFibGVBcmVhU2l6ZTsgfQotICAgIHZvaWQgc2V0U2Nyb2xsYWJsZUFyZWFTaXpl
KGNvbnN0IEZsb2F0U2l6ZSYpOworICAgIFdFQkNPUkVfRVhQT1JUIHZvaWQgc2V0U2Nyb2xsYWJs
ZUFyZWFTaXplKGNvbnN0IEZsb2F0U2l6ZSYpOwogCiAgICAgY29uc3QgRmxvYXRTaXplJiB0b3Rh
bENvbnRlbnRzU2l6ZSgpIGNvbnN0IHsgcmV0dXJuIG1fdG90YWxDb250ZW50c1NpemU7IH0KLSAg
ICB2b2lkIHNldFRvdGFsQ29udGVudHNTaXplKGNvbnN0IEZsb2F0U2l6ZSYpOworICAgIFdFQkNP
UkVfRVhQT1JUIHZvaWQgc2V0VG90YWxDb250ZW50c1NpemUoY29uc3QgRmxvYXRTaXplJik7CiAK
ICAgICBjb25zdCBGbG9hdFNpemUmIHJlYWNoYWJsZUNvbnRlbnRzU2l6ZSgpIGNvbnN0IHsgcmV0
dXJuIG1fcmVhY2hhYmxlQ29udGVudHNTaXplOyB9Ci0gICAgdm9pZCBzZXRSZWFjaGFibGVDb250
ZW50c1NpemUoY29uc3QgRmxvYXRTaXplJik7CisgICAgV0VCQ09SRV9FWFBPUlQgdm9pZCBzZXRS
ZWFjaGFibGVDb250ZW50c1NpemUoY29uc3QgRmxvYXRTaXplJik7CiAKICAgICBjb25zdCBGbG9h
dFBvaW50JiBzY3JvbGxQb3NpdGlvbigpIGNvbnN0IHsgcmV0dXJuIG1fc2Nyb2xsUG9zaXRpb247
IH0KLSAgICB2b2lkIHNldFNjcm9sbFBvc2l0aW9uKGNvbnN0IEZsb2F0UG9pbnQmKTsKKyAgICBX
RUJDT1JFX0VYUE9SVCB2b2lkIHNldFNjcm9sbFBvc2l0aW9uKGNvbnN0IEZsb2F0UG9pbnQmKTsK
IAogICAgIGNvbnN0IEludFBvaW50JiBzY3JvbGxPcmlnaW4oKSBjb25zdCB7IHJldHVybiBtX3Nj
cm9sbE9yaWdpbjsgfQotICAgIHZvaWQgc2V0U2Nyb2xsT3JpZ2luKGNvbnN0IEludFBvaW50Jik7
CisgICAgV0VCQ09SRV9FWFBPUlQgdm9pZCBzZXRTY3JvbGxPcmlnaW4oY29uc3QgSW50UG9pbnQm
KTsKIAogI2lmIEVOQUJMRShDU1NfU0NST0xMX1NOQVApCiAgICAgY29uc3QgVmVjdG9yPGZsb2F0
PiYgaG9yaXpvbnRhbFNuYXBPZmZzZXRzKCkgY29uc3QgeyByZXR1cm4gbV9ob3Jpem9udGFsU25h
cE9mZnNldHM7IH0KQEAgLTc4LDExICs3OCwxMSBAQCBwdWJsaWM6CiAjZW5kaWYKIAogICAgIGNv
bnN0IFNjcm9sbGFibGVBcmVhUGFyYW1ldGVycyYgc2Nyb2xsYWJsZUFyZWFQYXJhbWV0ZXJzKCkg
Y29uc3QgeyByZXR1cm4gbV9zY3JvbGxhYmxlQXJlYVBhcmFtZXRlcnM7IH0KLSAgICB2b2lkIHNl
dFNjcm9sbGFibGVBcmVhUGFyYW1ldGVycyhjb25zdCBTY3JvbGxhYmxlQXJlYVBhcmFtZXRlcnMm
IHBhcmFtcyk7CisgICAgV0VCQ09SRV9FWFBPUlQgdm9pZCBzZXRTY3JvbGxhYmxlQXJlYVBhcmFt
ZXRlcnMoY29uc3QgU2Nyb2xsYWJsZUFyZWFQYXJhbWV0ZXJzJiBwYXJhbXMpOwogCiAgICAgY29u
c3QgRmxvYXRQb2ludCYgcmVxdWVzdGVkU2Nyb2xsUG9zaXRpb24oKSBjb25zdCB7IHJldHVybiBt
X3JlcXVlc3RlZFNjcm9sbFBvc2l0aW9uOyB9CiAgICAgYm9vbCByZXF1ZXN0ZWRTY3JvbGxQb3Np
dGlvblJlcHJlc2VudHNQcm9ncmFtbWF0aWNTY3JvbGwoKSBjb25zdCB7IHJldHVybiBtX3JlcXVl
c3RlZFNjcm9sbFBvc2l0aW9uUmVwcmVzZW50c1Byb2dyYW1tYXRpY1Njcm9sbDsgfQotICAgIHZv
aWQgc2V0UmVxdWVzdGVkU2Nyb2xsUG9zaXRpb24oY29uc3QgRmxvYXRQb2ludCYsIGJvb2wgcmVw
cmVzZW50c1Byb2dyYW1tYXRpY1Njcm9sbCk7CisgICAgV0VCQ09SRV9FWFBPUlQgdm9pZCBzZXRS
ZXF1ZXN0ZWRTY3JvbGxQb3NpdGlvbihjb25zdCBGbG9hdFBvaW50JiwgYm9vbCByZXByZXNlbnRz
UHJvZ3JhbW1hdGljU2Nyb2xsKTsKICAgICAKICAgICB2aXJ0dWFsIHZvaWQgZHVtcFByb3BlcnRp
ZXMoVGV4dFN0cmVhbSYsIGludCBpbmRlbnQpIGNvbnN0IG92ZXJyaWRlOwogICAgIApJbmRleDog
U291cmNlL1dlYkNvcmUvcGFnZS9zY3JvbGxpbmcvU2Nyb2xsaW5nU3RhdGVTdGlja3lOb2RlLmgK
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PQotLS0gU291cmNlL1dlYkNvcmUvcGFnZS9zY3JvbGxpbmcvU2Nyb2xsaW5nU3Rh
dGVTdGlja3lOb2RlLmgJKHJldmlzaW9uIDE3Mjg0NykKKysrIFNvdXJjZS9XZWJDb3JlL3BhZ2Uv
c2Nyb2xsaW5nL1Njcm9sbGluZ1N0YXRlU3RpY2t5Tm9kZS5oCSh3b3JraW5nIGNvcHkpCkBAIC00
OSw3ICs0OSw3IEBAIHB1YmxpYzoKICAgICAgICAgVmlld3BvcnRDb25zdHJhaW50cyA9IE51bVN0
YXRlTm9kZUJpdHMKICAgICB9OwogCi0gICAgdm9pZCB1cGRhdGVDb25zdHJhaW50cyhjb25zdCBT
dGlja3lQb3NpdGlvblZpZXdwb3J0Q29uc3RyYWludHMmKTsKKyAgICBXRUJDT1JFX0VYUE9SVCB2
b2lkIHVwZGF0ZUNvbnN0cmFpbnRzKGNvbnN0IFN0aWNreVBvc2l0aW9uVmlld3BvcnRDb25zdHJh
aW50cyYpOwogICAgIGNvbnN0IFN0aWNreVBvc2l0aW9uVmlld3BvcnRDb25zdHJhaW50cyYgdmll
d3BvcnRDb25zdHJhaW50cygpIGNvbnN0IHsgcmV0dXJuIG1fY29uc3RyYWludHM7IH0KIAogcHJp
dmF0ZToKSW5kZXg6IFNvdXJjZS9XZWJDb3JlL3BhZ2Uvc2Nyb2xsaW5nL1Njcm9sbGluZ1N0YXRl
VHJlZS5oCj09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT0KLS0tIFNvdXJjZS9XZWJDb3JlL3BhZ2Uvc2Nyb2xsaW5nL1Njcm9s
bGluZ1N0YXRlVHJlZS5oCShyZXZpc2lvbiAxNzI4NDcpCisrKyBTb3VyY2UvV2ViQ29yZS9wYWdl
L3Njcm9sbGluZy9TY3JvbGxpbmdTdGF0ZVRyZWUuaAkod29ya2luZyBjb3B5KQpAQCAtNDYsMjMg
KzQ2LDIzIEBAIGNsYXNzIFNjcm9sbGluZ1N0YXRlVHJlZSB7CiAgICAgZnJpZW5kIGNsYXNzIFNj
cm9sbGluZ1N0YXRlTm9kZTsKIHB1YmxpYzoKICAgICAKLSAgICBzdGF0aWMgUGFzc093blB0cjxT
Y3JvbGxpbmdTdGF0ZVRyZWU+IGNyZWF0ZShBc3luY1Njcm9sbGluZ0Nvb3JkaW5hdG9yKiA9IDAp
OwotICAgIH5TY3JvbGxpbmdTdGF0ZVRyZWUoKTsKKyAgICBXRUJDT1JFX0VYUE9SVCBzdGF0aWMg
UGFzc093blB0cjxTY3JvbGxpbmdTdGF0ZVRyZWU+IGNyZWF0ZShBc3luY1Njcm9sbGluZ0Nvb3Jk
aW5hdG9yKiA9IDApOworICAgIFdFQkNPUkVfRVhQT1JUIH5TY3JvbGxpbmdTdGF0ZVRyZWUoKTsK
IAogICAgIFNjcm9sbGluZ1N0YXRlRnJhbWVTY3JvbGxpbmdOb2RlKiByb290U3RhdGVOb2RlKCkg
Y29uc3QgeyByZXR1cm4gbV9yb290U3RhdGVOb2RlLmdldCgpOyB9Ci0gICAgU2Nyb2xsaW5nU3Rh
dGVOb2RlKiBzdGF0ZU5vZGVGb3JJRChTY3JvbGxpbmdOb2RlSUQpOworICAgIFdFQkNPUkVfRVhQ
T1JUIFNjcm9sbGluZ1N0YXRlTm9kZSogc3RhdGVOb2RlRm9ySUQoU2Nyb2xsaW5nTm9kZUlEKTsK
IAotICAgIFNjcm9sbGluZ05vZGVJRCBhdHRhY2hOb2RlKFNjcm9sbGluZ05vZGVUeXBlLCBTY3Jv
bGxpbmdOb2RlSUQsIFNjcm9sbGluZ05vZGVJRCBwYXJlbnRJRCk7CisgICAgV0VCQ09SRV9FWFBP
UlQgU2Nyb2xsaW5nTm9kZUlEIGF0dGFjaE5vZGUoU2Nyb2xsaW5nTm9kZVR5cGUsIFNjcm9sbGlu
Z05vZGVJRCwgU2Nyb2xsaW5nTm9kZUlEIHBhcmVudElEKTsKICAgICB2b2lkIGRldGFjaE5vZGUo
U2Nyb2xsaW5nTm9kZUlEKTsKICAgICB2b2lkIGNsZWFyKCk7CiAgICAgCiAgICAgY29uc3QgSGFz
aFNldDxTY3JvbGxpbmdOb2RlSUQ+JiByZW1vdmVkTm9kZXMoKSBjb25zdCB7IHJldHVybiBtX25v
ZGVzUmVtb3ZlZFNpbmNlTGFzdENvbW1pdDsgfQotICAgIHZvaWQgc2V0UmVtb3ZlZE5vZGVzKEhh
c2hTZXQ8U2Nyb2xsaW5nTm9kZUlEPik7CisgICAgV0VCQ09SRV9FWFBPUlQgdm9pZCBzZXRSZW1v
dmVkTm9kZXMoSGFzaFNldDxTY3JvbGxpbmdOb2RlSUQ+KTsKIAogICAgIC8vIENvcGllcyB0aGUg
Y3VycmVudCB0cmVlIHN0YXRlIGFuZCBjbGVhcnMgdGhlIGNoYW5nZWQgcHJvcGVydGllcyBtYXNr
IGluIHRoZSBvcmlnaW5hbC4KLSAgICBQYXNzT3duUHRyPFNjcm9sbGluZ1N0YXRlVHJlZT4gY29t
bWl0KExheWVyUmVwcmVzZW50YXRpb246OlR5cGUgcHJlZmVycmVkTGF5ZXJSZXByZXNlbnRhdGlv
bik7CisgICAgV0VCQ09SRV9FWFBPUlQgUGFzc093blB0cjxTY3JvbGxpbmdTdGF0ZVRyZWU+IGNv
bW1pdChMYXllclJlcHJlc2VudGF0aW9uOjpUeXBlIHByZWZlcnJlZExheWVyUmVwcmVzZW50YXRp
b24pOwogCi0gICAgdm9pZCBzZXRIYXNDaGFuZ2VkUHJvcGVydGllcyhib29sID0gdHJ1ZSk7Cisg
ICAgV0VCQ09SRV9FWFBPUlQgdm9pZCBzZXRIYXNDaGFuZ2VkUHJvcGVydGllcyhib29sID0gdHJ1
ZSk7CiAgICAgYm9vbCBoYXNDaGFuZ2VkUHJvcGVydGllcygpIGNvbnN0IHsgcmV0dXJuIG1faGFz
Q2hhbmdlZFByb3BlcnRpZXM7IH0KIAogICAgIGJvb2wgaGFzTmV3Um9vdFN0YXRlTm9kZSgpIGNv
bnN0IHsgcmV0dXJuIG1faGFzTmV3Um9vdFN0YXRlTm9kZTsgfQpJbmRleDogU291cmNlL1dlYkNv
cmUvcGFnZS9zY3JvbGxpbmcvU2Nyb2xsaW5nVGhyZWFkLmgKPT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PQotLS0gU291cmNl
L1dlYkNvcmUvcGFnZS9zY3JvbGxpbmcvU2Nyb2xsaW5nVGhyZWFkLmgJKHJldmlzaW9uIDE3Mjg0
NykKKysrIFNvdXJjZS9XZWJDb3JlL3BhZ2Uvc2Nyb2xsaW5nL1Njcm9sbGluZ1RocmVhZC5oCSh3
b3JraW5nIGNvcHkpCkBAIC00NiwxMSArNDYsMTEgQEAgY2xhc3MgU2Nyb2xsaW5nVGhyZWFkIHsK
IAogcHVibGljOgogICAgIHN0YXRpYyBib29sIGlzQ3VycmVudFRocmVhZCgpOwotICAgIHN0YXRp
YyB2b2lkIGRpc3BhdGNoKHN0ZDo6ZnVuY3Rpb248dm9pZCAoKT4pOworICAgIFdFQkNPUkVfRVhQ
T1JUIHN0YXRpYyB2b2lkIGRpc3BhdGNoKHN0ZDo6ZnVuY3Rpb248dm9pZCAoKT4pOwogCiAgICAg
Ly8gV2lsbCBkaXNwYXRjaCB0aGUgZ2l2ZW4gZnVuY3Rpb24gb24gdGhlIG1haW4gdGhyZWFkIG9u
Y2UgYWxsIHBlbmRpbmcgZnVuY3Rpb25zCiAgICAgLy8gb24gdGhlIHNjcm9sbGluZyB0aHJlYWQg
aGF2ZSBmaW5pc2hlZCBleGVjdXRpbmcuIFVzZWQgZm9yIHN5bmNocm9uaXphdGlvbiBwdXJwb3Nl
cy4KLSAgICBzdGF0aWMgdm9pZCBkaXNwYXRjaEJhcnJpZXIoc3RkOjpmdW5jdGlvbjx2b2lkICgp
Pik7CisgICAgV0VCQ09SRV9FWFBPUlQgc3RhdGljIHZvaWQgZGlzcGF0Y2hCYXJyaWVyKHN0ZDo6
ZnVuY3Rpb248dm9pZCAoKT4pOwogCiBwcml2YXRlOgogICAgIGZyaWVuZCBOZXZlckRlc3Ryb3ll
ZDxTY3JvbGxpbmdUaHJlYWQ+OwpJbmRleDogU291cmNlL1dlYkNvcmUvcGFnZS9zY3JvbGxpbmcv
U2Nyb2xsaW5nVHJlZS5oCj09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT0KLS0tIFNvdXJjZS9XZWJDb3JlL3BhZ2Uvc2Nyb2xs
aW5nL1Njcm9sbGluZ1RyZWUuaAkocmV2aXNpb24gMTcyODQ3KQorKysgU291cmNlL1dlYkNvcmUv
cGFnZS9zY3JvbGxpbmcvU2Nyb2xsaW5nVHJlZS5oCSh3b3JraW5nIGNvcHkpCkBAIC00Nyw4ICs0
Nyw4IEBAIGNsYXNzIFNjcm9sbGluZ1RyZWVTY3JvbGxpbmdOb2RlOwogCiBjbGFzcyBTY3JvbGxp
bmdUcmVlIDogcHVibGljIFRocmVhZFNhZmVSZWZDb3VudGVkPFNjcm9sbGluZ1RyZWU+IHsKIHB1
YmxpYzoKLSAgICBTY3JvbGxpbmdUcmVlKCk7Ci0gICAgdmlydHVhbCB+U2Nyb2xsaW5nVHJlZSgp
OworICAgIFdFQkNPUkVfRVhQT1JUIFNjcm9sbGluZ1RyZWUoKTsKKyAgICBXRUJDT1JFX0VYUE9S
VCB2aXJ0dWFsIH5TY3JvbGxpbmdUcmVlKCk7CiAKICAgICBlbnVtIEV2ZW50UmVzdWx0IHsKICAg
ICAgICAgRGlkTm90SGFuZGxlRXZlbnQsCkBAIC02MSwxMyArNjEsMTMgQEAgcHVibGljOgogICAg
IHZpcnR1YWwgYm9vbCBpc1Njcm9sbGluZ1RyZWVJT1MoKSBjb25zdCB7IHJldHVybiBmYWxzZTsg
fQogCiAgICAgdmlydHVhbCBFdmVudFJlc3VsdCB0cnlUb0hhbmRsZVdoZWVsRXZlbnQoY29uc3Qg
UGxhdGZvcm1XaGVlbEV2ZW50JikgPSAwOwotICAgIGJvb2wgc2hvdWxkSGFuZGxlV2hlZWxFdmVu
dFN5bmNocm9ub3VzbHkoY29uc3QgUGxhdGZvcm1XaGVlbEV2ZW50Jik7CisgICAgV0VCQ09SRV9F
WFBPUlQgYm9vbCBzaG91bGRIYW5kbGVXaGVlbEV2ZW50U3luY2hyb25vdXNseShjb25zdCBQbGF0
Zm9ybVdoZWVsRXZlbnQmKTsKICAgICAKICAgICB2b2lkIHNldE1haW5GcmFtZUlzUnViYmVyQmFu
ZGluZyhib29sKTsKICAgICBib29sIGlzUnViYmVyQmFuZEluUHJvZ3Jlc3MoKTsKIAogICAgIHZp
cnR1YWwgdm9pZCBpbnZhbGlkYXRlKCkgeyB9Ci0gICAgdmlydHVhbCB2b2lkIGNvbW1pdE5ld1Ry
ZWVTdGF0ZShQYXNzT3duUHRyPFNjcm9sbGluZ1N0YXRlVHJlZT4pOworICAgIFdFQkNPUkVfRVhQ
T1JUIHZpcnR1YWwgdm9pZCBjb21taXROZXdUcmVlU3RhdGUoUGFzc093blB0cjxTY3JvbGxpbmdT
dGF0ZVRyZWU+KTsKIAogICAgIHZvaWQgc2V0TWFpbkZyYW1lUGluU3RhdGUoYm9vbCBwaW5uZWRU
b1RoZUxlZnQsIGJvb2wgcGlubmVkVG9UaGVSaWdodCwgYm9vbCBwaW5uZWRUb1RoZVRvcCwgYm9v
bCBwaW5uZWRUb1RoZUJvdHRvbSk7CiAKQEAgLTgyLDExICs4MiwxMSBAQCBwdWJsaWM6CiAKICAg
ICAvLyBEZWxlZ2F0ZWQgc2Nyb2xsaW5nL3pvb21pbmcgaGFzIGNhdXNlZCB0aGUgdmlld3BvcnQg
dG8gY2hhbmdlLCBzbyB1cGRhdGUgdmlld3BvcnQtY29uc3RyYWluZWQgbGF5ZXJzCiAgICAgLy8g
KGJ1dCBkb24ndCBjYXVzZSBzY3JvbGwgZXZlbnRzIHRvIGJlIGZpcmVkKS4KLSAgICB2aXJ0dWFs
IHZvaWQgdmlld3BvcnRDaGFuZ2VkVmlhRGVsZWdhdGVkU2Nyb2xsaW5nKFNjcm9sbGluZ05vZGVJ
RCwgY29uc3QgV2ViQ29yZTo6RmxvYXRSZWN0JiBmaXhlZFBvc2l0aW9uUmVjdCwgZG91YmxlIHNj
YWxlKTsKKyAgICBXRUJDT1JFX0VYUE9SVCB2aXJ0dWFsIHZvaWQgdmlld3BvcnRDaGFuZ2VkVmlh
RGVsZWdhdGVkU2Nyb2xsaW5nKFNjcm9sbGluZ05vZGVJRCwgY29uc3QgV2ViQ29yZTo6RmxvYXRS
ZWN0JiBmaXhlZFBvc2l0aW9uUmVjdCwgZG91YmxlIHNjYWxlKTsKIAogICAgIC8vIERlbGVnYXRl
ZCBzY3JvbGxpbmcgaGFzIHNjcm9sbGVkIGEgbm9kZS4gVXBkYXRlIGxheWVyIHBvc2l0aW9ucyBv
biBkZXNjZW5kYW50IHRyZWUgbm9kZXMsCiAgICAgLy8gYW5kIGNhbGwgc2Nyb2xsaW5nVHJlZU5v
ZGVEaWRTY3JvbGwoKS4KLSAgICB2aXJ0dWFsIHZvaWQgc2Nyb2xsUG9zaXRpb25DaGFuZ2VkVmlh
RGVsZWdhdGVkU2Nyb2xsaW5nKFNjcm9sbGluZ05vZGVJRCwgY29uc3QgV2ViQ29yZTo6RmxvYXRQ
b2ludCYgc2Nyb2xsUG9zaXRpb24sIGJvb2wgaW5Vc2VySW50ZXJhdGlvbik7CisgICAgV0VCQ09S
RV9FWFBPUlQgdmlydHVhbCB2b2lkIHNjcm9sbFBvc2l0aW9uQ2hhbmdlZFZpYURlbGVnYXRlZFNj
cm9sbGluZyhTY3JvbGxpbmdOb2RlSUQsIGNvbnN0IFdlYkNvcmU6OkZsb2F0UG9pbnQmIHNjcm9s
bFBvc2l0aW9uLCBib29sIGluVXNlckludGVyYXRpb24pOwogCiAgICAgRmxvYXRQb2ludCBtYWlu
RnJhbWVTY3JvbGxQb3NpdGlvbigpOwogICAgIApAQCAtOTcsMTQgKzk3LDE0IEBAIHB1YmxpYzoK
ICAgICB2aXJ0dWFsIHZvaWQgc2Nyb2xsaW5nVHJlZU5vZGVEaWRFbmRTY3JvbGwoKSB7IH0KICNl
bmRpZgogCi0gICAgYm9vbCBpc1BvaW50SW5Ob25GYXN0U2Nyb2xsYWJsZVJlZ2lvbihJbnRQb2lu
dCk7CisgICAgV0VCQ09SRV9FWFBPUlQgYm9vbCBpc1BvaW50SW5Ob25GYXN0U2Nyb2xsYWJsZVJl
Z2lvbihJbnRQb2ludCk7CiAgICAgCiAjaWYgUExBVEZPUk0oTUFDKQogICAgIHZpcnR1YWwgdm9p
ZCBoYW5kbGVXaGVlbEV2ZW50UGhhc2UoUGxhdGZvcm1XaGVlbEV2ZW50UGhhc2UpID0gMDsKICNl
bmRpZgogCiAgICAgLy8gQ2FuIGJlIGNhbGxlZCBmcm9tIGFueSB0aHJlYWQuIFdpbGwgdXBkYXRl
IHdoYXQgZWRnZXMgYWxsb3cgcnViYmVyLWJhbmRpbmcuCi0gICAgdm9pZCBzZXRDYW5SdWJiZXJC
YW5kU3RhdGUoYm9vbCBjYW5SdWJiZXJCYW5kQXRMZWZ0LCBib29sIGNhblJ1YmJlckJhbmRBdFJp
Z2h0LCBib29sIGNhblJ1YmJlckJhbmRBdFRvcCwgYm9vbCBjYW5SdWJiZXJCYW5kQXRCb3R0b20p
OworICAgIFdFQkNPUkVfRVhQT1JUIHZvaWQgc2V0Q2FuUnViYmVyQmFuZFN0YXRlKGJvb2wgY2Fu
UnViYmVyQmFuZEF0TGVmdCwgYm9vbCBjYW5SdWJiZXJCYW5kQXRSaWdodCwgYm9vbCBjYW5SdWJi
ZXJCYW5kQXRUb3AsIGJvb2wgY2FuUnViYmVyQmFuZEF0Qm90dG9tKTsKIAogICAgIGJvb2wgcnVi
YmVyQmFuZHNBdExlZnQoKTsKICAgICBib29sIHJ1YmJlckJhbmRzQXRSaWdodCgpOwpAQCAtMTE1
LDkgKzExNSw5IEBAIHB1YmxpYzoKICAgICB2b2lkIHNldFNjcm9sbFBpbm5pbmdCZWhhdmlvcihT
Y3JvbGxQaW5uaW5nQmVoYXZpb3IpOwogICAgIFNjcm9sbFBpbm5pbmdCZWhhdmlvciBzY3JvbGxQ
aW5uaW5nQmVoYXZpb3IoKTsKIAotICAgIGJvb2wgd2lsbFdoZWVsRXZlbnRTdGFydFN3aXBlR2Vz
dHVyZShjb25zdCBQbGF0Zm9ybVdoZWVsRXZlbnQmKTsKKyAgICBXRUJDT1JFX0VYUE9SVCBib29s
IHdpbGxXaGVlbEV2ZW50U3RhcnRTd2lwZUdlc3R1cmUoY29uc3QgUGxhdGZvcm1XaGVlbEV2ZW50
Jik7CiAKLSAgICB2b2lkIHNldFNjcm9sbGluZ1BlcmZvcm1hbmNlTG9nZ2luZ0VuYWJsZWQoYm9v
bCBmbGFnKTsKKyAgICBXRUJDT1JFX0VYUE9SVCB2b2lkIHNldFNjcm9sbGluZ1BlcmZvcm1hbmNl
TG9nZ2luZ0VuYWJsZWQoYm9vbCBmbGFnKTsKICAgICBib29sIHNjcm9sbGluZ1BlcmZvcm1hbmNl
TG9nZ2luZ0VuYWJsZWQoKTsKIAogICAgIFNjcm9sbGluZ1RyZWVOb2RlKiByb290Tm9kZSgpIGNv
bnN0IHsgcmV0dXJuIG1fcm9vdE5vZGUuZ2V0KCk7IH0KQEAgLTEzOSw3ICsxMzksNyBAQCBwdWJs
aWM6CiAgICAgCiBwcm90ZWN0ZWQ6CiAgICAgdm9pZCBzZXRNYWluRnJhbWVTY3JvbGxQb3NpdGlv
bihGbG9hdFBvaW50KTsKLSAgICB2aXJ0dWFsIHZvaWQgaGFuZGxlV2hlZWxFdmVudChjb25zdCBQ
bGF0Zm9ybVdoZWVsRXZlbnQmKTsKKyAgICBXRUJDT1JFX0VYUE9SVCB2aXJ0dWFsIHZvaWQgaGFu
ZGxlV2hlZWxFdmVudChjb25zdCBQbGF0Zm9ybVdoZWVsRXZlbnQmKTsKIAogcHJpdmF0ZToKICAg
ICB2b2lkIHJlbW92ZURlc3Ryb3llZE5vZGVzKGNvbnN0IFNjcm9sbGluZ1N0YXRlVHJlZSYpOwpJ
bmRleDogU291cmNlL1dlYkNvcmUvcGFnZS9zY3JvbGxpbmcvU2Nyb2xsaW5nVHJlZU92ZXJmbG93
U2Nyb2xsaW5nTm9kZS5oCj09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT0KLS0tIFNvdXJjZS9XZWJDb3JlL3BhZ2Uvc2Nyb2xs
aW5nL1Njcm9sbGluZ1RyZWVPdmVyZmxvd1Njcm9sbGluZ05vZGUuaAkocmV2aXNpb24gMTcyODQ3
KQorKysgU291cmNlL1dlYkNvcmUvcGFnZS9zY3JvbGxpbmcvU2Nyb2xsaW5nVHJlZU92ZXJmbG93
U2Nyb2xsaW5nTm9kZS5oCSh3b3JraW5nIGNvcHkpCkBAIC0zNCwxMSArMzQsMTEgQEAgbmFtZXNw
YWNlIFdlYkNvcmUgewogCiBjbGFzcyBTY3JvbGxpbmdUcmVlT3ZlcmZsb3dTY3JvbGxpbmdOb2Rl
IDogcHVibGljIFNjcm9sbGluZ1RyZWVTY3JvbGxpbmdOb2RlIHsKIHB1YmxpYzoKLSAgICB2aXJ0
dWFsIH5TY3JvbGxpbmdUcmVlT3ZlcmZsb3dTY3JvbGxpbmdOb2RlKCk7CisgICAgV0VCQ09SRV9F
WFBPUlQgdmlydHVhbCB+U2Nyb2xsaW5nVHJlZU92ZXJmbG93U2Nyb2xsaW5nTm9kZSgpOwogCiAg
ICAgCiBwcm90ZWN0ZWQ6Ci0gICAgU2Nyb2xsaW5nVHJlZU92ZXJmbG93U2Nyb2xsaW5nTm9kZShT
Y3JvbGxpbmdUcmVlJiwgU2Nyb2xsaW5nTm9kZUlEKTsKKyAgICBXRUJDT1JFX0VYUE9SVCBTY3Jv
bGxpbmdUcmVlT3ZlcmZsb3dTY3JvbGxpbmdOb2RlKFNjcm9sbGluZ1RyZWUmLCBTY3JvbGxpbmdO
b2RlSUQpOwogfTsKIAogU0NST0xMSU5HX05PREVfVFlQRV9DQVNUUyhTY3JvbGxpbmdUcmVlT3Zl
cmZsb3dTY3JvbGxpbmdOb2RlLCBpc092ZXJmbG93U2Nyb2xsaW5nTm9kZSgpKTsKSW5kZXg6IFNv
dXJjZS9XZWJDb3JlL3BhZ2Uvc2Nyb2xsaW5nL1Njcm9sbGluZ1RyZWVTY3JvbGxpbmdOb2RlLmgK
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PQotLS0gU291cmNlL1dlYkNvcmUvcGFnZS9zY3JvbGxpbmcvU2Nyb2xsaW5nVHJl
ZVNjcm9sbGluZ05vZGUuaAkocmV2aXNpb24gMTcyODQ3KQorKysgU291cmNlL1dlYkNvcmUvcGFn
ZS9zY3JvbGxpbmcvU2Nyb2xsaW5nVHJlZVNjcm9sbGluZ05vZGUuaAkod29ya2luZyBjb3B5KQpA
QCAtNDMsMTQgKzQzLDE0IEBAIGNsYXNzIFNjcm9sbGluZ1RyZWVTY3JvbGxpbmdOb2RlIDogcHVi
bGkKIHB1YmxpYzoKICAgICB2aXJ0dWFsIH5TY3JvbGxpbmdUcmVlU2Nyb2xsaW5nTm9kZSgpOwog
Ci0gICAgdmlydHVhbCB2b2lkIHVwZGF0ZUJlZm9yZUNoaWxkcmVuKGNvbnN0IFNjcm9sbGluZ1N0
YXRlTm9kZSYpIG92ZXJyaWRlOwotICAgIHZpcnR1YWwgdm9pZCB1cGRhdGVBZnRlckNoaWxkcmVu
KGNvbnN0IFNjcm9sbGluZ1N0YXRlTm9kZSYpIG92ZXJyaWRlOworICAgIFdFQkNPUkVfRVhQT1JU
IHZpcnR1YWwgdm9pZCB1cGRhdGVCZWZvcmVDaGlsZHJlbihjb25zdCBTY3JvbGxpbmdTdGF0ZU5v
ZGUmKSBvdmVycmlkZTsKKyAgICBXRUJDT1JFX0VYUE9SVCB2aXJ0dWFsIHZvaWQgdXBkYXRlQWZ0
ZXJDaGlsZHJlbihjb25zdCBTY3JvbGxpbmdTdGF0ZU5vZGUmKSBvdmVycmlkZTsKIAotICAgIHZp
cnR1YWwgdm9pZCB1cGRhdGVMYXllcnNBZnRlckFuY2VzdG9yQ2hhbmdlKGNvbnN0IFNjcm9sbGlu
Z1RyZWVOb2RlJiBjaGFuZ2VkTm9kZSwgY29uc3QgRmxvYXRSZWN0JiBmaXhlZFBvc2l0aW9uUmVj
dCwgY29uc3QgRmxvYXRTaXplJiBjdW11bGF0aXZlRGVsdGEpIG92ZXJyaWRlOworICAgIFdFQkNP
UkVfRVhQT1JUIHZpcnR1YWwgdm9pZCB1cGRhdGVMYXllcnNBZnRlckFuY2VzdG9yQ2hhbmdlKGNv
bnN0IFNjcm9sbGluZ1RyZWVOb2RlJiBjaGFuZ2VkTm9kZSwgY29uc3QgRmxvYXRSZWN0JiBmaXhl
ZFBvc2l0aW9uUmVjdCwgY29uc3QgRmxvYXRTaXplJiBjdW11bGF0aXZlRGVsdGEpIG92ZXJyaWRl
OwogCiAgICAgdmlydHVhbCB2b2lkIGhhbmRsZVdoZWVsRXZlbnQoY29uc3QgUGxhdGZvcm1XaGVl
bEV2ZW50JikgPSAwOwotICAgIHZpcnR1YWwgdm9pZCBzZXRTY3JvbGxQb3NpdGlvbihjb25zdCBG
bG9hdFBvaW50Jik7Ci0gICAgdmlydHVhbCB2b2lkIHNldFNjcm9sbFBvc2l0aW9uV2l0aG91dENv
bnRlbnRFZGdlQ29uc3RyYWludHMoY29uc3QgRmxvYXRQb2ludCYpOworICAgIFdFQkNPUkVfRVhQ
T1JUIHZpcnR1YWwgdm9pZCBzZXRTY3JvbGxQb3NpdGlvbihjb25zdCBGbG9hdFBvaW50Jik7Cisg
ICAgV0VCQ09SRV9FWFBPUlQgdmlydHVhbCB2b2lkIHNldFNjcm9sbFBvc2l0aW9uV2l0aG91dENv
bnRlbnRFZGdlQ29uc3RyYWludHMoY29uc3QgRmxvYXRQb2ludCYpOwogCiAgICAgdmlydHVhbCB2
b2lkIHVwZGF0ZUxheWVyc0FmdGVyVmlld3BvcnRDaGFuZ2UoY29uc3QgRmxvYXRSZWN0JiBmaXhl
ZFBvc2l0aW9uUmVjdCwgZG91YmxlIHNjYWxlKSA9IDA7CiAgICAgdmlydHVhbCB2b2lkIHVwZGF0
ZUxheWVyc0FmdGVyRGVsZWdhdGVkU2Nyb2xsKGNvbnN0IEZsb2F0UG9pbnQmKSB7IH0KQEAgLTY1
LDggKzY1LDggQEAgcHVibGljOgogcHJvdGVjdGVkOgogICAgIFNjcm9sbGluZ1RyZWVTY3JvbGxp
bmdOb2RlKFNjcm9sbGluZ1RyZWUmLCBTY3JvbGxpbmdOb2RlVHlwZSwgU2Nyb2xsaW5nTm9kZUlE
KTsKIAotICAgIHZpcnR1YWwgRmxvYXRQb2ludCBtaW5pbXVtU2Nyb2xsUG9zaXRpb24oKSBjb25z
dDsKLSAgICB2aXJ0dWFsIEZsb2F0UG9pbnQgbWF4aW11bVNjcm9sbFBvc2l0aW9uKCkgY29uc3Q7
CisgICAgV0VCQ09SRV9FWFBPUlQgdmlydHVhbCBGbG9hdFBvaW50IG1pbmltdW1TY3JvbGxQb3Np
dGlvbigpIGNvbnN0OworICAgIFdFQkNPUkVfRVhQT1JUIHZpcnR1YWwgRmxvYXRQb2ludCBtYXhp
bXVtU2Nyb2xsUG9zaXRpb24oKSBjb25zdDsKIAogICAgIHZpcnR1YWwgdm9pZCBzZXRTY3JvbGxM
YXllclBvc2l0aW9uKGNvbnN0IEZsb2F0UG9pbnQmKSA9IDA7CiAKSW5kZXg6IFNvdXJjZS9XZWJD
b3JlL3BhZ2Uvc2Nyb2xsaW5nL2lvcy9TY3JvbGxpbmdUcmVlRnJhbWVTY3JvbGxpbmdOb2RlSU9T
LmgKPT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PQotLS0gU291cmNlL1dlYkNvcmUvcGFnZS9zY3JvbGxpbmcvaW9zL1Njcm9s
bGluZ1RyZWVGcmFtZVNjcm9sbGluZ05vZGVJT1MuaAkocmV2aXNpb24gMTcyODQ3KQorKysgU291
cmNlL1dlYkNvcmUvcGFnZS9zY3JvbGxpbmcvaW9zL1Njcm9sbGluZ1RyZWVGcmFtZVNjcm9sbGlu
Z05vZGVJT1MuaAkod29ya2luZyBjb3B5KQpAQCAtMzcsNyArMzcsNyBAQCBuYW1lc3BhY2UgV2Vi
Q29yZSB7CiAKIGNsYXNzIFNjcm9sbGluZ1RyZWVGcmFtZVNjcm9sbGluZ05vZGVJT1MgOiBwdWJs
aWMgU2Nyb2xsaW5nVHJlZUZyYW1lU2Nyb2xsaW5nTm9kZSB7CiBwdWJsaWM6Ci0gICAgc3RhdGlj
IFBhc3NSZWZQdHI8U2Nyb2xsaW5nVHJlZUZyYW1lU2Nyb2xsaW5nTm9kZUlPUz4gY3JlYXRlKFNj
cm9sbGluZ1RyZWUmLCBTY3JvbGxpbmdOb2RlSUQpOworICAgIFdFQkNPUkVfRVhQT1JUIHN0YXRp
YyBQYXNzUmVmUHRyPFNjcm9sbGluZ1RyZWVGcmFtZVNjcm9sbGluZ05vZGVJT1M+IGNyZWF0ZShT
Y3JvbGxpbmdUcmVlJiwgU2Nyb2xsaW5nTm9kZUlEKTsKICAgICB2aXJ0dWFsIH5TY3JvbGxpbmdU
cmVlRnJhbWVTY3JvbGxpbmdOb2RlSU9TKCk7CiAKIHByb3RlY3RlZDoKSW5kZXg6IFNvdXJjZS9X
ZWJDb3JlL3BhZ2Uvc2Nyb2xsaW5nL21hYy9TY3JvbGxpbmdUcmVlRml4ZWROb2RlLmgKPT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PQotLS0gU291cmNlL1dlYkNvcmUvcGFnZS9zY3JvbGxpbmcvbWFjL1Njcm9sbGluZ1RyZWVG
aXhlZE5vZGUuaAkocmV2aXNpb24gMTcyODQ3KQorKysgU291cmNlL1dlYkNvcmUvcGFnZS9zY3Jv
bGxpbmcvbWFjL1Njcm9sbGluZ1RyZWVGaXhlZE5vZGUuaAkod29ya2luZyBjb3B5KQpAQCAtNDAs
NyArNDAsNyBAQCBjbGFzcyBGaXhlZFBvc2l0aW9uVmlld3BvcnRDb25zdHJhaW50czsKIAogY2xh
c3MgU2Nyb2xsaW5nVHJlZUZpeGVkTm9kZSA6IHB1YmxpYyBTY3JvbGxpbmdUcmVlTm9kZSB7CiBw
dWJsaWM6Ci0gICAgc3RhdGljIFBhc3NSZWZQdHI8U2Nyb2xsaW5nVHJlZUZpeGVkTm9kZT4gY3Jl
YXRlKFNjcm9sbGluZ1RyZWUmLCBTY3JvbGxpbmdOb2RlSUQpOworICAgIFdFQkNPUkVfRVhQT1JU
IHN0YXRpYyBQYXNzUmVmUHRyPFNjcm9sbGluZ1RyZWVGaXhlZE5vZGU+IGNyZWF0ZShTY3JvbGxp
bmdUcmVlJiwgU2Nyb2xsaW5nTm9kZUlEKTsKIAogICAgIHZpcnR1YWwgflNjcm9sbGluZ1RyZWVG
aXhlZE5vZGUoKTsKIApJbmRleDogU291cmNlL1dlYkNvcmUvcGFnZS9zY3JvbGxpbmcvbWFjL1Nj
cm9sbGluZ1RyZWVGcmFtZVNjcm9sbGluZ05vZGVNYWMuaAo9PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09Ci0tLSBTb3VyY2Uv
V2ViQ29yZS9wYWdlL3Njcm9sbGluZy9tYWMvU2Nyb2xsaW5nVHJlZUZyYW1lU2Nyb2xsaW5nTm9k
ZU1hYy5oCShyZXZpc2lvbiAxNzI4NDcpCisrKyBTb3VyY2UvV2ViQ29yZS9wYWdlL3Njcm9sbGlu
Zy9tYWMvU2Nyb2xsaW5nVHJlZUZyYW1lU2Nyb2xsaW5nTm9kZU1hYy5oCSh3b3JraW5nIGNvcHkp
CkBAIC0zOSw3ICszOSw3IEBAIG5hbWVzcGFjZSBXZWJDb3JlIHsKIAogY2xhc3MgU2Nyb2xsaW5n
VHJlZUZyYW1lU2Nyb2xsaW5nTm9kZU1hYyA6IHB1YmxpYyBTY3JvbGxpbmdUcmVlRnJhbWVTY3Jv
bGxpbmdOb2RlLCBwcml2YXRlIFNjcm9sbEVsYXN0aWNpdHlDb250cm9sbGVyQ2xpZW50IHsKIHB1
YmxpYzoKLSAgICBzdGF0aWMgUGFzc1JlZlB0cjxTY3JvbGxpbmdUcmVlRnJhbWVTY3JvbGxpbmdO
b2RlPiBjcmVhdGUoU2Nyb2xsaW5nVHJlZSYsIFNjcm9sbGluZ05vZGVJRCk7CisgICAgV0VCQ09S
RV9FWFBPUlQgc3RhdGljIFBhc3NSZWZQdHI8U2Nyb2xsaW5nVHJlZUZyYW1lU2Nyb2xsaW5nTm9k
ZT4gY3JlYXRlKFNjcm9sbGluZ1RyZWUmLCBTY3JvbGxpbmdOb2RlSUQpOwogICAgIHZpcnR1YWwg
flNjcm9sbGluZ1RyZWVGcmFtZVNjcm9sbGluZ05vZGVNYWMoKTsKIAogcHJpdmF0ZToKSW5kZXg6
IFNvdXJjZS9XZWJDb3JlL3BhZ2Uvc2Nyb2xsaW5nL21hYy9TY3JvbGxpbmdUcmVlU3RpY2t5Tm9k
ZS5oCj09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT0KLS0tIFNvdXJjZS9XZWJDb3JlL3BhZ2Uvc2Nyb2xsaW5nL21hYy9TY3Jv
bGxpbmdUcmVlU3RpY2t5Tm9kZS5oCShyZXZpc2lvbiAxNzI4NDcpCisrKyBTb3VyY2UvV2ViQ29y
ZS9wYWdlL3Njcm9sbGluZy9tYWMvU2Nyb2xsaW5nVHJlZVN0aWNreU5vZGUuaAkod29ya2luZyBj
b3B5KQpAQCAtNDAsNyArNDAsNyBAQCBjbGFzcyBTdGlja3lQb3NpdGlvblZpZXdwb3J0Q29uc3Ry
YWludHM7CiAKIGNsYXNzIFNjcm9sbGluZ1RyZWVTdGlja3lOb2RlIDogcHVibGljIFNjcm9sbGlu
Z1RyZWVOb2RlIHsKIHB1YmxpYzoKLSAgICBzdGF0aWMgUGFzc1JlZlB0cjxTY3JvbGxpbmdUcmVl
U3RpY2t5Tm9kZT4gY3JlYXRlKFNjcm9sbGluZ1RyZWUmLCBTY3JvbGxpbmdOb2RlSUQpOworICAg
IFdFQkNPUkVfRVhQT1JUIHN0YXRpYyBQYXNzUmVmUHRyPFNjcm9sbGluZ1RyZWVTdGlja3lOb2Rl
PiBjcmVhdGUoU2Nyb2xsaW5nVHJlZSYsIFNjcm9sbGluZ05vZGVJRCk7CiAKICAgICB2aXJ0dWFs
IH5TY3JvbGxpbmdUcmVlU3RpY2t5Tm9kZSgpOwogCkluZGV4OiBTb3VyY2UvV2ViQ29yZS9wbGF0
Zm9ybS9DdXJzb3IuaAo9PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09Ci0tLSBTb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9DdXJz
b3IuaAkocmV2aXNpb24gMTcyODQ3KQorKysgU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vQ3Vyc29y
LmgJKHdvcmtpbmcgY29weSkKQEAgLTE4MywxMSArMTgzLDExIEBAIG5hbWVzcGFjZSBXZWJDb3Jl
IHsKIAogICAgIEludFBvaW50IGRldGVybWluZUhvdFNwb3QoSW1hZ2UqLCBjb25zdCBJbnRQb2lu
dCYgc3BlY2lmaWVkSG90U3BvdCk7CiAgICAgCi0gICAgY29uc3QgQ3Vyc29yJiBwb2ludGVyQ3Vy
c29yKCk7CisgICAgV0VCQ09SRV9FWFBPUlQgY29uc3QgQ3Vyc29yJiBwb2ludGVyQ3Vyc29yKCk7
CiAgICAgY29uc3QgQ3Vyc29yJiBjcm9zc0N1cnNvcigpOwotICAgIGNvbnN0IEN1cnNvciYgaGFu
ZEN1cnNvcigpOworICAgIFdFQkNPUkVfRVhQT1JUIGNvbnN0IEN1cnNvciYgaGFuZEN1cnNvcigp
OwogICAgIGNvbnN0IEN1cnNvciYgbW92ZUN1cnNvcigpOwotICAgIGNvbnN0IEN1cnNvciYgaUJl
YW1DdXJzb3IoKTsKKyAgICBXRUJDT1JFX0VYUE9SVCBjb25zdCBDdXJzb3ImIGlCZWFtQ3Vyc29y
KCk7CiAgICAgY29uc3QgQ3Vyc29yJiB3YWl0Q3Vyc29yKCk7CiAgICAgY29uc3QgQ3Vyc29yJiBo
ZWxwQ3Vyc29yKCk7CiAgICAgY29uc3QgQ3Vyc29yJiBlYXN0UmVzaXplQ3Vyc29yKCk7CkluZGV4
OiBTb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9EcmFnSW1hZ2UuaAo9PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09Ci0tLSBTb3Vy
Y2UvV2ViQ29yZS9wbGF0Zm9ybS9EcmFnSW1hZ2UuaAkocmV2aXNpb24gMTcyODQ3KQorKysgU291
cmNlL1dlYkNvcmUvcGxhdGZvcm0vRHJhZ0ltYWdlLmgJKHdvcmtpbmcgY29weSkKQEAgLTgxLDcg
KzgxLDcgQEAgRHJhZ0ltYWdlUmVmIGNyZWF0ZURyYWdJbWFnZUZyb21JbWFnZShJbQogRHJhZ0lt
YWdlUmVmIGNyZWF0ZURyYWdJbWFnZUljb25Gb3JDYWNoZWRJbWFnZUZpbGVuYW1lKGNvbnN0IFN0
cmluZyYpOwogCiBEcmFnSW1hZ2VSZWYgY3JlYXRlRHJhZ0ltYWdlRm9yTm9kZShGcmFtZSYsIE5v
ZGUmKTsKLURyYWdJbWFnZVJlZiBjcmVhdGVEcmFnSW1hZ2VGb3JTZWxlY3Rpb24oRnJhbWUmLCBi
b29sIGZvcmNlQmxhY2tUZXh0ID0gZmFsc2UpOworV0VCQ09SRV9FWFBPUlQgRHJhZ0ltYWdlUmVm
IGNyZWF0ZURyYWdJbWFnZUZvclNlbGVjdGlvbihGcmFtZSYsIGJvb2wgZm9yY2VCbGFja1RleHQg
PSBmYWxzZSk7CiBEcmFnSW1hZ2VSZWYgY3JlYXRlRHJhZ0ltYWdlRm9yUmFuZ2UoRnJhbWUmLCBS
YW5nZSYsIGJvb2wgZm9yY2VCbGFja1RleHQgPSBmYWxzZSk7CiBEcmFnSW1hZ2VSZWYgY3JlYXRl
RHJhZ0ltYWdlRm9ySW1hZ2UoRnJhbWUmLCBOb2RlJiwgSW50UmVjdCYgaW1hZ2VSZWN0LCBJbnRS
ZWN0JiBlbGVtZW50UmVjdCk7CiBEcmFnSW1hZ2VSZWYgY3JlYXRlRHJhZ0ltYWdlRm9yTGluayhV
UkwmLCBjb25zdCBTdHJpbmcmIGxhYmVsLCBGb250UmVuZGVyaW5nTW9kZSk7CkluZGV4OiBTb3Vy
Y2UvV2ViQ29yZS9wbGF0Zm9ybS9GaWxlU3lzdGVtLmgKPT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PQotLS0gU291cmNlL1dl
YkNvcmUvcGxhdGZvcm0vRmlsZVN5c3RlbS5oCShyZXZpc2lvbiAxNzI4NDcpCisrKyBTb3VyY2Uv
V2ViQ29yZS9wbGF0Zm9ybS9GaWxlU3lzdGVtLmgJKHdvcmtpbmcgY29weSkKQEAgLTEzNCwyNyAr
MTM0LDI3IEBAIHN0YXRpYyBjb25zdCBjaGFyIFBsYXRmb3JtRmlsZVBhdGhTZXBhcmEKIAogc3Ry
dWN0IEZpbGVNZXRhZGF0YTsKIAotYm9vbCBmaWxlRXhpc3RzKGNvbnN0IFN0cmluZyYpOwotYm9v
bCBkZWxldGVGaWxlKGNvbnN0IFN0cmluZyYpOwotYm9vbCBkZWxldGVFbXB0eURpcmVjdG9yeShj
b25zdCBTdHJpbmcmKTsKK1dFQkNPUkVfRVhQT1JUIGJvb2wgZmlsZUV4aXN0cyhjb25zdCBTdHJp
bmcmKTsKK1dFQkNPUkVfRVhQT1JUIGJvb2wgZGVsZXRlRmlsZShjb25zdCBTdHJpbmcmKTsKK1dF
QkNPUkVfRVhQT1JUIGJvb2wgZGVsZXRlRW1wdHlEaXJlY3RvcnkoY29uc3QgU3RyaW5nJik7CiBi
b29sIGdldEZpbGVTaXplKGNvbnN0IFN0cmluZyYsIGxvbmcgbG9uZyYgcmVzdWx0KTsKLWJvb2wg
Z2V0RmlsZU1vZGlmaWNhdGlvblRpbWUoY29uc3QgU3RyaW5nJiwgdGltZV90JiByZXN1bHQpOwot
Ym9vbCBnZXRGaWxlQ3JlYXRpb25UaW1lKGNvbnN0IFN0cmluZyYsIHRpbWVfdCYgcmVzdWx0KTsg
Ly8gTm90IGFsbCBwbGF0Zm9ybXMgc3RvcmUgZmlsZSBjcmVhdGlvbiB0aW1lLgorV0VCQ09SRV9F
WFBPUlQgYm9vbCBnZXRGaWxlTW9kaWZpY2F0aW9uVGltZShjb25zdCBTdHJpbmcmLCB0aW1lX3Qm
IHJlc3VsdCk7CitXRUJDT1JFX0VYUE9SVCBib29sIGdldEZpbGVDcmVhdGlvblRpbWUoY29uc3Qg
U3RyaW5nJiwgdGltZV90JiByZXN1bHQpOyAvLyBOb3QgYWxsIHBsYXRmb3JtcyBzdG9yZSBmaWxl
IGNyZWF0aW9uIHRpbWUuCiBib29sIGdldEZpbGVNZXRhZGF0YShjb25zdCBTdHJpbmcmLCBGaWxl
TWV0YWRhdGEmKTsKLVN0cmluZyBwYXRoQnlBcHBlbmRpbmdDb21wb25lbnQoY29uc3QgU3RyaW5n
JiBwYXRoLCBjb25zdCBTdHJpbmcmIGNvbXBvbmVudCk7Ci1ib29sIG1ha2VBbGxEaXJlY3Rvcmll
cyhjb25zdCBTdHJpbmcmIHBhdGgpOworV0VCQ09SRV9FWFBPUlQgU3RyaW5nIHBhdGhCeUFwcGVu
ZGluZ0NvbXBvbmVudChjb25zdCBTdHJpbmcmIHBhdGgsIGNvbnN0IFN0cmluZyYgY29tcG9uZW50
KTsKK1dFQkNPUkVfRVhQT1JUIGJvb2wgbWFrZUFsbERpcmVjdG9yaWVzKGNvbnN0IFN0cmluZyYg
cGF0aCk7CiBTdHJpbmcgaG9tZURpcmVjdG9yeVBhdGgoKTsKLVN0cmluZyBwYXRoR2V0RmlsZU5h
bWUoY29uc3QgU3RyaW5nJik7Ci1TdHJpbmcgZGlyZWN0b3J5TmFtZShjb25zdCBTdHJpbmcmKTsK
K1dFQkNPUkVfRVhQT1JUIFN0cmluZyBwYXRoR2V0RmlsZU5hbWUoY29uc3QgU3RyaW5nJik7CitX
RUJDT1JFX0VYUE9SVCBTdHJpbmcgZGlyZWN0b3J5TmFtZShjb25zdCBTdHJpbmcmKTsKIAotdm9p
ZCBzZXRNZXRhZGF0YVVSTChTdHJpbmcmIFVSTFN0cmluZywgY29uc3QgU3RyaW5nJiByZWZlcnJl
ciwgY29uc3QgU3RyaW5nJiBwYXRoKTsKK1dFQkNPUkVfRVhQT1JUIHZvaWQgc2V0TWV0YWRhdGFV
UkwoU3RyaW5nJiBVUkxTdHJpbmcsIGNvbnN0IFN0cmluZyYgcmVmZXJyZXIsIGNvbnN0IFN0cmlu
ZyYgcGF0aCk7CiAKIGJvb2wgY2FuRXhjbHVkZUZyb21CYWNrdXAoKTsgLy8gUmV0dXJucyB0cnVl
IGlmIGFueSBmaWxlIGNhbiBldmVyIGJlIGV4Y2x1ZGVkIGZyb20gYmFja3VwLgogYm9vbCBleGNs
dWRlRnJvbUJhY2t1cChjb25zdCBTdHJpbmcmKTsgLy8gUmV0dXJucyB0cnVlIGlmIHN1Y2Nlc3Nm
dWwuCiAKLVZlY3RvcjxTdHJpbmc+IGxpc3REaXJlY3RvcnkoY29uc3QgU3RyaW5nJiBwYXRoLCBj
b25zdCBTdHJpbmcmIGZpbHRlciA9IFN0cmluZygpKTsKK1dFQkNPUkVfRVhQT1JUIFZlY3RvcjxT
dHJpbmc+IGxpc3REaXJlY3RvcnkoY29uc3QgU3RyaW5nJiBwYXRoLCBjb25zdCBTdHJpbmcmIGZp
bHRlciA9IFN0cmluZygpKTsKIAotQ1N0cmluZyBmaWxlU3lzdGVtUmVwcmVzZW50YXRpb24oY29u
c3QgU3RyaW5nJik7CitXRUJDT1JFX0VYUE9SVCBDU3RyaW5nIGZpbGVTeXN0ZW1SZXByZXNlbnRh
dGlvbihjb25zdCBTdHJpbmcmKTsKIAogaW5saW5lIGJvb2wgaXNIYW5kbGVWYWxpZChjb25zdCBQ
bGF0Zm9ybUZpbGVIYW5kbGUmIGhhbmRsZSkgeyByZXR1cm4gaGFuZGxlICE9IGludmFsaWRQbGF0
Zm9ybUZpbGVIYW5kbGU7IH0KIApAQCAtMTYyLDE0ICsxNjIsMTQgQEAgaW5saW5lIGRvdWJsZSBp
bnZhbGlkRmlsZVRpbWUoKSB7IHJldHVybgogaW5saW5lIGJvb2wgaXNWYWxpZEZpbGVUaW1lKGRv
dWJsZSB0aW1lKSB7IHJldHVybiBzdGQ6OmlzZmluaXRlKHRpbWUpOyB9CiAKIC8vIFByZWZpeCBp
cyB3aGF0IHRoZSBmaWxlbmFtZSBzaG91bGQgYmUgcHJlZml4ZWQgd2l0aCwgbm90IHRoZSBmdWxs
IHBhdGguCi1TdHJpbmcgb3BlblRlbXBvcmFyeUZpbGUoY29uc3QgU3RyaW5nJiBwcmVmaXgsIFBs
YXRmb3JtRmlsZUhhbmRsZSYpOwotUGxhdGZvcm1GaWxlSGFuZGxlIG9wZW5GaWxlKGNvbnN0IFN0
cmluZyYgcGF0aCwgRmlsZU9wZW5Nb2RlKTsKLXZvaWQgY2xvc2VGaWxlKFBsYXRmb3JtRmlsZUhh
bmRsZSYpOworV0VCQ09SRV9FWFBPUlQgU3RyaW5nIG9wZW5UZW1wb3JhcnlGaWxlKGNvbnN0IFN0
cmluZyYgcHJlZml4LCBQbGF0Zm9ybUZpbGVIYW5kbGUmKTsKK1dFQkNPUkVfRVhQT1JUIFBsYXRm
b3JtRmlsZUhhbmRsZSBvcGVuRmlsZShjb25zdCBTdHJpbmcmIHBhdGgsIEZpbGVPcGVuTW9kZSk7
CitXRUJDT1JFX0VYUE9SVCB2b2lkIGNsb3NlRmlsZShQbGF0Zm9ybUZpbGVIYW5kbGUmKTsKIC8v
IFJldHVybnMgdGhlIHJlc3VsdGluZyBvZmZzZXQgZnJvbSB0aGUgYmVnaW5uaW5nIG9mIHRoZSBm
aWxlIGlmIHN1Y2Nlc3NmdWwsIC0xIG90aGVyd2lzZS4KIGxvbmcgbG9uZyBzZWVrRmlsZShQbGF0
Zm9ybUZpbGVIYW5kbGUsIGxvbmcgbG9uZyBvZmZzZXQsIEZpbGVTZWVrT3JpZ2luKTsKIGJvb2wg
dHJ1bmNhdGVGaWxlKFBsYXRmb3JtRmlsZUhhbmRsZSwgbG9uZyBsb25nIG9mZnNldCk7CiAvLyBS
ZXR1cm5zIG51bWJlciBvZiBieXRlcyBhY3R1YWxseSByZWFkIGlmIHN1Y2Nlc3NmdWwsIC0xIG90
aGVyd2lzZS4KLWludCB3cml0ZVRvRmlsZShQbGF0Zm9ybUZpbGVIYW5kbGUsIGNvbnN0IGNoYXIq
IGRhdGEsIGludCBsZW5ndGgpOworV0VCQ09SRV9FWFBPUlQgaW50IHdyaXRlVG9GaWxlKFBsYXRm
b3JtRmlsZUhhbmRsZSwgY29uc3QgY2hhciogZGF0YSwgaW50IGxlbmd0aCk7CiAvLyBSZXR1cm5z
IG51bWJlciBvZiBieXRlcyBhY3R1YWxseSB3cml0dGVuIGlmIHN1Y2Nlc3NmdWwsIC0xIG90aGVy
d2lzZS4KIGludCByZWFkRnJvbUZpbGUoUGxhdGZvcm1GaWxlSGFuZGxlLCBjaGFyKiBkYXRhLCBp
bnQgbGVuZ3RoKTsKICNpZiBVU0UoRklMRV9MT0NLKQpAQCAtMTgxLDcgKzE4MSw3IEBAIGJvb2wg
dW5sb2NrRmlsZShQbGF0Zm9ybUZpbGVIYW5kbGUpOwogYm9vbCB1bmxvYWRNb2R1bGUoUGxhdGZv
cm1Nb2R1bGUpOwogCiAvLyBFbmNvZGUgYSBzdHJpbmcgZm9yIHVzZSB3aXRoaW4gYSBmaWxlIG5h
bWUuCi1TdHJpbmcgZW5jb2RlRm9yRmlsZU5hbWUoY29uc3QgU3RyaW5nJik7CitXRUJDT1JFX0VY
UE9SVCBTdHJpbmcgZW5jb2RlRm9yRmlsZU5hbWUoY29uc3QgU3RyaW5nJik7CiAKICNpZiBVU0Uo
Q0YpCiBSZXRhaW5QdHI8Q0ZVUkxSZWY+IHBhdGhBc1VSTChjb25zdCBTdHJpbmcmKTsKSW5kZXg6
IFNvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL0xhbmd1YWdlLmgKPT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PQotLS0gU291cmNl
L1dlYkNvcmUvcGxhdGZvcm0vTGFuZ3VhZ2UuaAkocmV2aXNpb24gMTcyODQ3KQorKysgU291cmNl
L1dlYkNvcmUvcGxhdGZvcm0vTGFuZ3VhZ2UuaAkod29ya2luZyBjb3B5KQpAQCAtMzEsMjMgKzMx
LDIzIEBACiAKIG5hbWVzcGFjZSBXZWJDb3JlIHsKIAotU3RyaW5nIGRlZmF1bHRMYW5ndWFnZSgp
OwotVmVjdG9yPFN0cmluZz4gdXNlclByZWZlcnJlZExhbmd1YWdlcygpOworV0VCQ09SRV9FWFBP
UlQgU3RyaW5nIGRlZmF1bHRMYW5ndWFnZSgpOworV0VCQ09SRV9FWFBPUlQgVmVjdG9yPFN0cmlu
Zz4gdXNlclByZWZlcnJlZExhbmd1YWdlcygpOwogVmVjdG9yPFN0cmluZz4gdXNlclByZWZlcnJl
ZExhbmd1YWdlc092ZXJyaWRlKCk7Ci12b2lkIG92ZXJyaWRlVXNlclByZWZlcnJlZExhbmd1YWdl
cyhjb25zdCBWZWN0b3I8U3RyaW5nPiYpOworV0VCQ09SRV9FWFBPUlQgdm9pZCBvdmVycmlkZVVz
ZXJQcmVmZXJyZWRMYW5ndWFnZXMoY29uc3QgVmVjdG9yPFN0cmluZz4mKTsKIHNpemVfdCBpbmRl
eE9mQmVzdE1hdGNoaW5nTGFuZ3VhZ2VJbkxpc3QoY29uc3QgU3RyaW5nJiBsYW5ndWFnZSwgY29u
c3QgVmVjdG9yPFN0cmluZz4mIGxhbmd1YWdlTGlzdCk7CiAKIC8vIFRoZSBvYnNlcnZlciBmdW5j
dGlvbiB3aWxsIGJlIGNhbGxlZCB3aGVuIHN5c3RlbSBsYW5ndWFnZSBjaGFuZ2VzLgogdHlwZWRl
ZiB2b2lkICgqTGFuZ3VhZ2VDaGFuZ2VPYnNlcnZlckZ1bmN0aW9uKSh2b2lkKiBjb250ZXh0KTsK
LXZvaWQgYWRkTGFuZ3VhZ2VDaGFuZ2VPYnNlcnZlcih2b2lkKiBjb250ZXh0LCBMYW5ndWFnZUNo
YW5nZU9ic2VydmVyRnVuY3Rpb24pOwotdm9pZCByZW1vdmVMYW5ndWFnZUNoYW5nZU9ic2VydmVy
KHZvaWQqIGNvbnRleHQpOworV0VCQ09SRV9FWFBPUlQgdm9pZCBhZGRMYW5ndWFnZUNoYW5nZU9i
c2VydmVyKHZvaWQqIGNvbnRleHQsIExhbmd1YWdlQ2hhbmdlT2JzZXJ2ZXJGdW5jdGlvbik7CitX
RUJDT1JFX0VYUE9SVCB2b2lkIHJlbW92ZUxhbmd1YWdlQ2hhbmdlT2JzZXJ2ZXIodm9pZCogY29u
dGV4dCk7CiAKIFZlY3RvcjxTdHJpbmc+IHBsYXRmb3JtVXNlclByZWZlcnJlZExhbmd1YWdlcygp
OwogCiBTdHJpbmcgZGlzcGxheU5hbWVGb3JMYW5ndWFnZUxvY2FsZShjb25zdCBTdHJpbmcmKTsK
IAogLy8gQ2FsbGVkIGZyb20gcGxhdGZvcm0gc3BlY2lmaWMgY29kZSB3aGVuIHRoZSB1c2VyJ3Mg
cHJlZmVycmVkIGxhbmd1YWdlKHMpIGNoYW5nZS4KLXZvaWQgbGFuZ3VhZ2VEaWRDaGFuZ2UoKTsK
K1dFQkNPUkVfRVhQT1JUIHZvaWQgbGFuZ3VhZ2VEaWRDaGFuZ2UoKTsKIH0KIAogI2VuZGlmCklu
ZGV4OiBTb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9MaW5rSGFzaC5oCj09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT0KLS0tIFNv
dXJjZS9XZWJDb3JlL3BsYXRmb3JtL0xpbmtIYXNoLmgJKHJldmlzaW9uIDE3Mjg0NykKKysrIFNv
dXJjZS9XZWJDb3JlL3BsYXRmb3JtL0xpbmtIYXNoLmgJKHdvcmtpbmcgY29weSkKQEAgLTU0LDgg
KzU0LDggQEAgc3RydWN0IExpbmtIYXNoSGFzaCB7CiB9OwogCiAvLyBSZXR1cm5zIHRoZSBoYXNo
IG9mIHRoZSBzdHJpbmcgdGhhdCB3aWxsIGJlIHVzZWQgZm9yIHZpc2l0ZWQgbGluayBjb2xvcmlu
Zy4KLUxpbmtIYXNoIHZpc2l0ZWRMaW5rSGFzaChjb25zdCBTdHJpbmcmIHVybCk7Ci1MaW5rSGFz
aCB2aXNpdGVkTGlua0hhc2goY29uc3QgVUNoYXIqIHVybCwgdW5zaWduZWQgbGVuZ3RoKTsKK1dF
QkNPUkVfRVhQT1JUIExpbmtIYXNoIHZpc2l0ZWRMaW5rSGFzaChjb25zdCBTdHJpbmcmIHVybCk7
CitXRUJDT1JFX0VYUE9SVCBMaW5rSGFzaCB2aXNpdGVkTGlua0hhc2goY29uc3QgVUNoYXIqIHVy
bCwgdW5zaWduZWQgbGVuZ3RoKTsKIAogLy8gUmVzb2x2ZXMgdGhlIHBvdGVudGlhbGx5IHJlbGF0
aXZlIFVSTCAiYXR0cmlidXRlVVJMIiByZWxhdGl2ZSB0byB0aGUgZ2l2ZW4KIC8vIGJhc2UgVVJM
LCBhbmQgcmV0dXJucyB0aGUgaGFzaCBvZiB0aGUgc3RyaW5nIHRoYXQgd2lsbCBiZSB1c2VkIGZv
ciB2aXNpdGVkCkluZGV4OiBTb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9Mb2NhbGl6ZWRTdHJpbmdz
LmgKPT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PQotLS0gU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vTG9jYWxpemVkU3RyaW5n
cy5oCShyZXZpc2lvbiAxNzI4NDcpCisrKyBTb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9Mb2NhbGl6
ZWRTdHJpbmdzLmgJKHdvcmtpbmcgY29weSkKQEAgLTE5OCw5ICsxOTgsOSBAQCBuYW1lc3BhY2Ug
V2ViQ29yZSB7CiAjZW5kaWYKIAogI2lmIFBMQVRGT1JNKENPQ09BKQotICAgIFN0cmluZyBidWls
dEluUERGUGx1Z2luTmFtZSgpOwotICAgIFN0cmluZyBwZGZEb2N1bWVudFR5cGVEZXNjcmlwdGlv
bigpOwotICAgIFN0cmluZyBwb3N0U2NyaXB0RG9jdW1lbnRUeXBlRGVzY3JpcHRpb24oKTsKKyAg
ICBXRUJDT1JFX0VYUE9SVCBTdHJpbmcgYnVpbHRJblBERlBsdWdpbk5hbWUoKTsKKyAgICBXRUJD
T1JFX0VYUE9SVCBTdHJpbmcgcGRmRG9jdW1lbnRUeXBlRGVzY3JpcHRpb24oKTsKKyAgICBXRUJD
T1JFX0VYUE9SVCBTdHJpbmcgcG9zdFNjcmlwdERvY3VtZW50VHlwZURlc2NyaXB0aW9uKCk7CiAg
ICAgU3RyaW5nIGtleWdlbk1lbnVJdGVtNTEyKCk7CiAgICAgU3RyaW5nIGtleWdlbk1lbnVJdGVt
MTAyNCgpOwogICAgIFN0cmluZyBrZXlnZW5NZW51SXRlbTIwNDgoKTsKQEAgLTI2Miw3ICsyNjIs
NyBAQCBuYW1lc3BhY2UgV2ViQ29yZSB7CiAgICAgU3RyaW5nIHNuYXBzaG90dGVkUGx1Z0luTGFi
ZWxUaXRsZSgpOwogICAgIFN0cmluZyBzbmFwc2hvdHRlZFBsdWdJbkxhYmVsU3VidGl0bGUoKTsK
IAotICAgIFN0cmluZyB1c2VCbG9ja2VkUGx1Z0luQ29udGV4dE1lbnVUaXRsZSgpOworICAgIFdF
QkNPUkVfRVhQT1JUIFN0cmluZyB1c2VCbG9ja2VkUGx1Z0luQ29udGV4dE1lbnVUaXRsZSgpOwog
CiAjaWYgRU5BQkxFKFNVQlRMRV9DUllQVE8pCiAgICAgU3RyaW5nIHdlYkNyeXB0b01hc3Rlcktl
eUtleWNoYWluTGFiZWwoY29uc3QgU3RyaW5nJiBsb2NhbGl6ZWRBcHBsaWNhdGlvbk5hbWUpOwpA
QCAtMjcyLDcgKzI3Miw3IEBAIG5hbWVzcGFjZSBXZWJDb3JlIHsKICNkZWZpbmUgV0VCX1VJX1NU
UklORyhzdHJpbmcsIGRlc2NyaXB0aW9uKSBXZWJDb3JlOjpsb2NhbGl6ZWRTdHJpbmcoc3RyaW5n
KQogI2RlZmluZSBXRUJfVUlfU1RSSU5HX0tFWShzdHJpbmcsIGtleSwgZGVzY3JpcHRpb24pIFdl
YkNvcmU6OmxvY2FsaXplZFN0cmluZyhrZXkpCiAKLSAgICBTdHJpbmcgbG9jYWxpemVkU3RyaW5n
KGNvbnN0IGNoYXIqIGtleSk7CisgICAgV0VCQ09SRV9FWFBPUlQgU3RyaW5nIGxvY2FsaXplZFN0
cmluZyhjb25zdCBjaGFyKiBrZXkpOwogCiB9IC8vIG5hbWVzcGFjZSBXZWJDb3JlCiAKSW5kZXg6
IFNvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL0xvZ2dpbmcuaAo9PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09Ci0tLSBTb3VyY2Uv
V2ViQ29yZS9wbGF0Zm9ybS9Mb2dnaW5nLmgJKHJldmlzaW9uIDE3Mjg0NykKKysrIFNvdXJjZS9X
ZWJDb3JlL3BsYXRmb3JtL0xvZ2dpbmcuaAkod29ya2luZyBjb3B5KQpAQCAtODMsNyArODMsNyBA
QCBXRUJDT1JFX0xPR19DSEFOTkVMUyhERUNMQVJFX0xPR19DSEFOTkVMCiAKICAgICBTdHJpbmcg
bG9nTGV2ZWxTdHJpbmcoKTsKICAgICBib29sIGlzTG9nQ2hhbm5lbEVuYWJsZWQoY29uc3QgU3Ry
aW5nJiBuYW1lKTsKLSAgICB2b2lkIGluaXRpYWxpemVMb2dnaW5nQ2hhbm5lbHNJZk5lY2Vzc2Fy
eSgpOworICAgIFdFQkNPUkVfRVhQT1JUIHZvaWQgaW5pdGlhbGl6ZUxvZ2dpbmdDaGFubmVsc0lm
TmVjZXNzYXJ5KCk7CiB9CiAKICNlbmRpZiAvLyAhTE9HX0RJU0FCTEVECkluZGV4OiBTb3VyY2Uv
V2ViQ29yZS9wbGF0Zm9ybS9NZW1vcnlQcmVzc3VyZUhhbmRsZXIuaAo9PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09Ci0tLSBT
b3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9NZW1vcnlQcmVzc3VyZUhhbmRsZXIuaAkocmV2aXNpb24g
MTcyODQ3KQorKysgU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vTWVtb3J5UHJlc3N1cmVIYW5kbGVy
LmgJKHdvcmtpbmcgY29weSkKQEAgLTEzMSw3ICsxMzEsNyBAQCBwcml2YXRlOgogfTsKICAKIC8v
IEZ1bmN0aW9uIHRvIG9idGFpbiB0aGUgZ2xvYmFsIG1lbW9yeSBwcmVzc3VyZSBvYmplY3QuCi1N
ZW1vcnlQcmVzc3VyZUhhbmRsZXImIG1lbW9yeVByZXNzdXJlSGFuZGxlcigpOworV0VCQ09SRV9F
WFBPUlQgTWVtb3J5UHJlc3N1cmVIYW5kbGVyJiBtZW1vcnlQcmVzc3VyZUhhbmRsZXIoKTsKIAog
fSAvLyBuYW1lc3BhY2UgV2ViQ29yZQogCkluZGV4OiBTb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9O
b3RJbXBsZW1lbnRlZC5oCj09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT0KLS0tIFNvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL05v
dEltcGxlbWVudGVkLmgJKHJldmlzaW9uIDE3Mjg0NykKKysrIFNvdXJjZS9XZWJDb3JlL3BsYXRm
b3JtL05vdEltcGxlbWVudGVkLmgJKHdvcmtpbmcgY29weSkKQEAgLTM5LDcgKzM5LDcgQEAKICNl
bHNlCiAKIG5hbWVzcGFjZSBXZWJDb3JlIHsKLVdURkxvZ0NoYW5uZWwqIG5vdEltcGxlbWVudGVk
TG9nZ2luZ0NoYW5uZWwoKTsKK1dFQkNPUkVfRVhQT1JUIFdURkxvZ0NoYW5uZWwqIG5vdEltcGxl
bWVudGVkTG9nZ2luZ0NoYW5uZWwoKTsKIH0KIAogI2RlZmluZSBub3RJbXBsZW1lbnRlZCgpIGRv
IHsgXApJbmRleDogU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vUGxhdGZvcm1TdHJhdGVnaWVzLmgK
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PQotLS0gU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vUGxhdGZvcm1TdHJhdGVnaWVz
LmgJKHJldmlzaW9uIDE3Mjg0NykKKysrIFNvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL1BsYXRmb3Jt
U3RyYXRlZ2llcy5oCSh3b3JraW5nIGNvcHkpCkBAIC0xMjIsNyArMTIyLDcgQEAgcHJpdmF0ZToK
IH07CiAKIFBsYXRmb3JtU3RyYXRlZ2llcyogcGxhdGZvcm1TdHJhdGVnaWVzKCk7Ci12b2lkIHNl
dFBsYXRmb3JtU3RyYXRlZ2llcyhQbGF0Zm9ybVN0cmF0ZWdpZXMqKTsKK1dFQkNPUkVfRVhQT1JU
IHZvaWQgc2V0UGxhdGZvcm1TdHJhdGVnaWVzKFBsYXRmb3JtU3RyYXRlZ2llcyopOwogYm9vbCBo
YXNQbGF0Zm9ybVN0cmF0ZWdpZXMoKTsKICAgICAKIH0gLy8gbmFtZXNwYWNlIFdlYkNvcmUKSW5k
ZXg6IFNvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL1B1YmxpY1N1ZmZpeC5oCj09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT0KLS0t
IFNvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL1B1YmxpY1N1ZmZpeC5oCShyZXZpc2lvbiAxNzI4NDcp
CisrKyBTb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9QdWJsaWNTdWZmaXguaAkod29ya2luZyBjb3B5
KQpAQCAtMzIsNyArMzIsNyBAQAogCiBuYW1lc3BhY2UgV2ViQ29yZSB7CiAKLWJvb2wgaXNQdWJs
aWNTdWZmaXgoY29uc3QgU3RyaW5nJiBkb21haW4pOworV0VCQ09SRV9FWFBPUlQgYm9vbCBpc1B1
YmxpY1N1ZmZpeChjb25zdCBTdHJpbmcmIGRvbWFpbik7CiBTdHJpbmcgdG9wUHJpdmF0ZWx5Q29u
dHJvbGxlZERvbWFpbihjb25zdCBTdHJpbmcmIGRvbWFpbik7CiAKIH0gLy8gbmFtZXNwYWNlIFdl
YkNvcmUKSW5kZXg6IFNvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL1J1bnRpbWVBcHBsaWNhdGlvbkNo
ZWNrcy5oCj09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT0KLS0tIFNvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL1J1bnRpbWVBcHBs
aWNhdGlvbkNoZWNrcy5oCShyZXZpc2lvbiAxNzI4NDcpCisrKyBTb3VyY2UvV2ViQ29yZS9wbGF0
Zm9ybS9SdW50aW1lQXBwbGljYXRpb25DaGVja3MuaAkod29ya2luZyBjb3B5KQpAQCAtMjgsMTkg
KzI4LDE5IEBACiAKIG5hbWVzcGFjZSBXZWJDb3JlIHsKIAotYm9vbCBhcHBsaWNhdGlvbklzQU9M
SW5zdGFudE1lc3NlbmdlcigpOwotYm9vbCBhcHBsaWNhdGlvbklzQWRvYmVJbnN0YWxsZXIoKTsK
LWJvb2wgYXBwbGljYXRpb25Jc0FwZXJ0dXJlKCk7Ci1ib29sIGFwcGxpY2F0aW9uSXNBcHBsZU1h
aWwoKTsKK1dFQkNPUkVfRVhQT1JUIGJvb2wgYXBwbGljYXRpb25Jc0FPTEluc3RhbnRNZXNzZW5n
ZXIoKTsKK1dFQkNPUkVfRVhQT1JUIGJvb2wgYXBwbGljYXRpb25Jc0Fkb2JlSW5zdGFsbGVyKCk7
CitXRUJDT1JFX0VYUE9SVCBib29sIGFwcGxpY2F0aW9uSXNBcGVydHVyZSgpOworV0VCQ09SRV9F
WFBPUlQgYm9vbCBhcHBsaWNhdGlvbklzQXBwbGVNYWlsKCk7CiBib29sIGFwcGxpY2F0aW9uSXNJ
VHVuZXMoKTsKLWJvb2wgYXBwbGljYXRpb25Jc01pY3Jvc29mdE1lc3NlbmdlcigpOwotYm9vbCBh
cHBsaWNhdGlvbklzTWljcm9zb2Z0TXlEYXkoKTsKLWJvb2wgYXBwbGljYXRpb25Jc01pY3Jvc29m
dE91dGxvb2soKTsKK1dFQkNPUkVfRVhQT1JUIGJvb2wgYXBwbGljYXRpb25Jc01pY3Jvc29mdE1l
c3NlbmdlcigpOworV0VCQ09SRV9FWFBPUlQgYm9vbCBhcHBsaWNhdGlvbklzTWljcm9zb2Z0TXlE
YXkoKTsKK1dFQkNPUkVfRVhQT1JUIGJvb2wgYXBwbGljYXRpb25Jc01pY3Jvc29mdE91dGxvb2so
KTsKIGJvb2wgYXBwbGljYXRpb25Jc1F1aWNrZW5Fc3NlbnRpYWxzKCk7Ci1ib29sIGFwcGxpY2F0
aW9uSXNTYWZhcmkoKTsKK1dFQkNPUkVfRVhQT1JUIGJvb2wgYXBwbGljYXRpb25Jc1NhZmFyaSgp
OwogYm9vbCBhcHBsaWNhdGlvbklzU29saWRTdGF0ZU5ldHdvcmtzRG93bmxvYWRlcigpOwotYm9v
bCBhcHBsaWNhdGlvbklzVmVyc2lvbnMoKTsKLWJvb2wgYXBwbGljYXRpb25Jc0hSQmxvY2soKTsK
K1dFQkNPUkVfRVhQT1JUIGJvb2wgYXBwbGljYXRpb25Jc1ZlcnNpb25zKCk7CitXRUJDT1JFX0VY
UE9SVCBib29sIGFwcGxpY2F0aW9uSXNIUkJsb2NrKCk7CiAKIH0gLy8gbmFtZXNwYWNlIFdlYkNv
cmUKIApJbmRleDogU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vUnVudGltZUFwcGxpY2F0aW9uQ2hl
Y2tzSU9TLmgKPT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PQotLS0gU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vUnVudGltZUFw
cGxpY2F0aW9uQ2hlY2tzSU9TLmgJKHJldmlzaW9uIDE3Mjg0NykKKysrIFNvdXJjZS9XZWJDb3Jl
L3BsYXRmb3JtL1J1bnRpbWVBcHBsaWNhdGlvbkNoZWNrc0lPUy5oCSh3b3JraW5nIGNvcHkpCkBA
IC0zMCwxOCArMzAsMTggQEAKIG5hbWVzcGFjZSBXZWJDb3JlIHsKIAogYm9vbCBhcHBsaWNhdGlv
bklzQWRTaGVldCgpOwotYm9vbCBhcHBsaWNhdGlvbklzTW9iaWxlTWFpbCgpOwotYm9vbCBhcHBs
aWNhdGlvbklzTW9iaWxlU2FmYXJpKCk7CitXRUJDT1JFX0VYUE9SVCBib29sIGFwcGxpY2F0aW9u
SXNNb2JpbGVNYWlsKCk7CitXRUJDT1JFX0VYUE9SVCBib29sIGFwcGxpY2F0aW9uSXNNb2JpbGVT
YWZhcmkoKTsKIGJvb2wgYXBwbGljYXRpb25Jc0R1bXBSZW5kZXJUcmVlKCk7CiBib29sIGFwcGxp
Y2F0aW9uSXNNb2JpbGVTdG9yZSgpOwotYm9vbCBhcHBsaWNhdGlvbklzV2ViQXBwKCk7Ci1ib29s
IGFwcGxpY2F0aW9uSXNPa0N1cGlkKCk7Ci1ib29sIGFwcGxpY2F0aW9uSXNGYWNlYm9vaygpOwor
V0VCQ09SRV9FWFBPUlQgYm9vbCBhcHBsaWNhdGlvbklzV2ViQXBwKCk7CitXRUJDT1JFX0VYUE9S
VCBib29sIGFwcGxpY2F0aW9uSXNPa0N1cGlkKCk7CitXRUJDT1JFX0VYUE9SVCBib29sIGFwcGxp
Y2F0aW9uSXNGYWNlYm9vaygpOwogYm9vbCBhcHBsaWNhdGlvbklzRXBpY3VyaW91cygpOwotYm9v
bCBhcHBsaWNhdGlvbklzRGFpamlzZW5EaWN0aW9uYXJ5KCk7CitXRUJDT1JFX0VYUE9SVCBib29s
IGFwcGxpY2F0aW9uSXNEYWlqaXNlbkRpY3Rpb25hcnkoKTsKIGJvb2wgYXBwbGljYXRpb25Jc05B
U0FIRCgpOwogYm9vbCBhcHBsaWNhdGlvbklzTUFTSCgpOwotYm9vbCBhcHBsaWNhdGlvbklzVGhl
RWNvbm9taXN0T25JUGhvbmUoKTsKK1dFQkNPUkVfRVhQT1JUIGJvb2wgYXBwbGljYXRpb25Jc1Ro
ZUVjb25vbWlzdE9uSVBob25lKCk7CiBib29sIGFwcGxpY2F0aW9uSXNXZWJQcm9jZXNzKCk7CiBi
b29sIGFwcGxpY2F0aW9uSXNJQm9va3NPbklPUygpOwogCkluZGV4OiBTb3VyY2UvV2ViQ29yZS9w
bGF0Zm9ybS9TY2hlbWVSZWdpc3RyeS5oCj09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT0KLS0tIFNvdXJjZS9XZWJDb3JlL3Bs
YXRmb3JtL1NjaGVtZVJlZ2lzdHJ5LmgJKHJldmlzaW9uIDE3Mjg0NykKKysrIFNvdXJjZS9XZWJD
b3JlL3BsYXRmb3JtL1NjaGVtZVJlZ2lzdHJ5LmgJKHdvcmtpbmcgY29weSkKQEAgLTM2LDMwICsz
NiwzMCBAQCB0eXBlZGVmIEhhc2hTZXQ8U3RyaW5nLCBDYXNlRm9sZGluZ0hhc2g+CiAKIGNsYXNz
IFNjaGVtZVJlZ2lzdHJ5IHsKIHB1YmxpYzoKLSAgICBzdGF0aWMgdm9pZCByZWdpc3RlclVSTFNj
aGVtZUFzTG9jYWwoY29uc3QgU3RyaW5nJik7CisgICAgV0VCQ09SRV9FWFBPUlQgc3RhdGljIHZv
aWQgcmVnaXN0ZXJVUkxTY2hlbWVBc0xvY2FsKGNvbnN0IFN0cmluZyYpOwogICAgIHN0YXRpYyB2
b2lkIHJlbW92ZVVSTFNjaGVtZVJlZ2lzdGVyZWRBc0xvY2FsKGNvbnN0IFN0cmluZyYpOwogICAg
IHN0YXRpYyBjb25zdCBVUkxTY2hlbWVzTWFwJiBsb2NhbFNjaGVtZXMoKTsKIAotICAgIHN0YXRp
YyBib29sIHNob3VsZFRyZWF0VVJMU2NoZW1lQXNMb2NhbChjb25zdCBTdHJpbmcmKTsKKyAgICBX
RUJDT1JFX0VYUE9SVCBzdGF0aWMgYm9vbCBzaG91bGRUcmVhdFVSTFNjaGVtZUFzTG9jYWwoY29u
c3QgU3RyaW5nJik7CiAKICAgICAvLyBTZWN1cmUgc2NoZW1lcyBkbyBub3QgdHJpZ2dlciBtaXhl
ZCBjb250ZW50IHdhcm5pbmdzLiBGb3IgZXhhbXBsZSwKICAgICAvLyBodHRwcyBhbmQgZGF0YSBh
cmUgc2VjdXJlIHNjaGVtZXMgYmVjYXVzZSB0aGV5IGNhbm5vdCBiZSBjb3JydXB0ZWQgYnkKICAg
ICAvLyBhY3RpdmUgbmV0d29yayBhdHRhY2tlcnMuCi0gICAgc3RhdGljIHZvaWQgcmVnaXN0ZXJV
UkxTY2hlbWVBc1NlY3VyZShjb25zdCBTdHJpbmcmKTsKKyAgICBXRUJDT1JFX0VYUE9SVCBzdGF0
aWMgdm9pZCByZWdpc3RlclVSTFNjaGVtZUFzU2VjdXJlKGNvbnN0IFN0cmluZyYpOwogICAgIHN0
YXRpYyBib29sIHNob3VsZFRyZWF0VVJMU2NoZW1lQXNTZWN1cmUoY29uc3QgU3RyaW5nJik7CiAK
LSAgICBzdGF0aWMgdm9pZCByZWdpc3RlclVSTFNjaGVtZUFzTm9BY2Nlc3MoY29uc3QgU3RyaW5n
Jik7CisgICAgV0VCQ09SRV9FWFBPUlQgc3RhdGljIHZvaWQgcmVnaXN0ZXJVUkxTY2hlbWVBc05v
QWNjZXNzKGNvbnN0IFN0cmluZyYpOwogICAgIHN0YXRpYyBib29sIHNob3VsZFRyZWF0VVJMU2No
ZW1lQXNOb0FjY2Vzcyhjb25zdCBTdHJpbmcmKTsKIAogICAgIC8vIERpc3BsYXktaXNvbGF0ZWQg
c2NoZW1lcyBjYW4gb25seSBiZSBkaXNwbGF5ZWQgKGluIHRoZSBzZW5zZSBvZgogICAgIC8vIFNl
Y3VyaXR5T3JpZ2luOjpjYW5EaXNwbGF5KSBieSBkb2N1bWVudHMgZnJvbSB0aGUgc2FtZSBzY2hl
bWUuCi0gICAgc3RhdGljIHZvaWQgcmVnaXN0ZXJVUkxTY2hlbWVBc0Rpc3BsYXlJc29sYXRlZChj
b25zdCBTdHJpbmcmKTsKKyAgICBXRUJDT1JFX0VYUE9SVCBzdGF0aWMgdm9pZCByZWdpc3RlclVS
TFNjaGVtZUFzRGlzcGxheUlzb2xhdGVkKGNvbnN0IFN0cmluZyYpOwogICAgIHN0YXRpYyBib29s
IHNob3VsZFRyZWF0VVJMU2NoZW1lQXNEaXNwbGF5SXNvbGF0ZWQoY29uc3QgU3RyaW5nJik7CiAK
LSAgICBzdGF0aWMgdm9pZCByZWdpc3RlclVSTFNjaGVtZUFzRW1wdHlEb2N1bWVudChjb25zdCBT
dHJpbmcmKTsKLSAgICBzdGF0aWMgYm9vbCBzaG91bGRMb2FkVVJMU2NoZW1lQXNFbXB0eURvY3Vt
ZW50KGNvbnN0IFN0cmluZyYpOworICAgIFdFQkNPUkVfRVhQT1JUIHN0YXRpYyB2b2lkIHJlZ2lz
dGVyVVJMU2NoZW1lQXNFbXB0eURvY3VtZW50KGNvbnN0IFN0cmluZyYpOworICAgIFdFQkNPUkVf
RVhQT1JUIHN0YXRpYyBib29sIHNob3VsZExvYWRVUkxTY2hlbWVBc0VtcHR5RG9jdW1lbnQoY29u
c3QgU3RyaW5nJik7CiAKLSAgICBzdGF0aWMgdm9pZCBzZXREb21haW5SZWxheGF0aW9uRm9yYmlk
ZGVuRm9yVVJMU2NoZW1lKGJvb2wgZm9yYmlkZGVuLCBjb25zdCBTdHJpbmcmKTsKKyAgICBXRUJD
T1JFX0VYUE9SVCBzdGF0aWMgdm9pZCBzZXREb21haW5SZWxheGF0aW9uRm9yYmlkZGVuRm9yVVJM
U2NoZW1lKGJvb2wgZm9yYmlkZGVuLCBjb25zdCBTdHJpbmcmKTsKICAgICBzdGF0aWMgYm9vbCBp
c0RvbWFpblJlbGF4YXRpb25Gb3JiaWRkZW5Gb3JVUkxTY2hlbWUoY29uc3QgU3RyaW5nJik7CiAK
ICAgICAvLyBTdWNoIHNjaGVtZXMgc2hvdWxkIGRlbGVnYXRlIHRvIFNlY3VyaXR5T3JpZ2luOjpj
YW5SZXF1ZXN0IGZvciBhbnkgVVJMCkBAIC03NCwxOSArNzQsMTkgQEAgcHVibGljOgogCiAgICAg
Ly8gTGV0IHNvbWUgc2NoZW1lcyBvcHQtb3V0IG9mIFByaXZhdGUgQnJvd3NpbmcncyBkZWZhdWx0
IGJlaGF2aW9yIG9mIHByb2hpYml0aW5nIHJlYWQvd3JpdGUKICAgICAvLyBhY2Nlc3MgdG8gTG9j
YWwgU3RvcmFnZSBhbmQgRGF0YWJhc2VzLgotICAgIHN0YXRpYyB2b2lkIHJlZ2lzdGVyVVJMU2No
ZW1lQXNBbGxvd2luZ0xvY2FsU3RvcmFnZUFjY2Vzc0luUHJpdmF0ZUJyb3dzaW5nKGNvbnN0IFN0
cmluZyYgc2NoZW1lKTsKLSAgICBzdGF0aWMgYm9vbCBhbGxvd3NMb2NhbFN0b3JhZ2VBY2Nlc3NJ
blByaXZhdGVCcm93c2luZyhjb25zdCBTdHJpbmcmIHNjaGVtZSk7Ci0gICAgc3RhdGljIHZvaWQg
cmVnaXN0ZXJVUkxTY2hlbWVBc0FsbG93aW5nRGF0YWJhc2VBY2Nlc3NJblByaXZhdGVCcm93c2lu
Zyhjb25zdCBTdHJpbmcmIHNjaGVtZSk7CisgICAgV0VCQ09SRV9FWFBPUlQgc3RhdGljIHZvaWQg
cmVnaXN0ZXJVUkxTY2hlbWVBc0FsbG93aW5nTG9jYWxTdG9yYWdlQWNjZXNzSW5Qcml2YXRlQnJv
d3NpbmcoY29uc3QgU3RyaW5nJiBzY2hlbWUpOworICAgIFdFQkNPUkVfRVhQT1JUIHN0YXRpYyBi
b29sIGFsbG93c0xvY2FsU3RvcmFnZUFjY2Vzc0luUHJpdmF0ZUJyb3dzaW5nKGNvbnN0IFN0cmlu
ZyYgc2NoZW1lKTsKKyAgICBXRUJDT1JFX0VYUE9SVCBzdGF0aWMgdm9pZCByZWdpc3RlclVSTFNj
aGVtZUFzQWxsb3dpbmdEYXRhYmFzZUFjY2Vzc0luUHJpdmF0ZUJyb3dzaW5nKGNvbnN0IFN0cmlu
ZyYgc2NoZW1lKTsKICAgICBzdGF0aWMgYm9vbCBhbGxvd3NEYXRhYmFzZUFjY2Vzc0luUHJpdmF0
ZUJyb3dzaW5nKGNvbnN0IFN0cmluZyYgc2NoZW1lKTsKIAogICAgIC8vIEFsbG93IG5vbi1IVFRQ
IHNjaGVtZXMgdG8gYmUgcmVnaXN0ZXJlZCB0byBhbGxvdyBDT1JTIHJlcXVlc3RzLgotICAgIHN0
YXRpYyB2b2lkIHJlZ2lzdGVyVVJMU2NoZW1lQXNDT1JTRW5hYmxlZChjb25zdCBTdHJpbmcmIHNj
aGVtZSk7CisgICAgV0VCQ09SRV9FWFBPUlQgc3RhdGljIHZvaWQgcmVnaXN0ZXJVUkxTY2hlbWVB
c0NPUlNFbmFibGVkKGNvbnN0IFN0cmluZyYgc2NoZW1lKTsKICAgICBzdGF0aWMgYm9vbCBzaG91
bGRUcmVhdFVSTFNjaGVtZUFzQ09SU0VuYWJsZWQoY29uc3QgU3RyaW5nJiBzY2hlbWUpOwogCiAg
ICAgLy8gQWxsb3cgcmVzb3VyY2VzIGZyb20gc29tZSBzY2hlbWVzIHRvIGxvYWQgb24gYSBwYWdl
LCByZWdhcmRsZXNzIG9mIGl0cwogICAgIC8vIENvbnRlbnQgU2VjdXJpdHkgUG9saWN5LgotICAg
IHN0YXRpYyB2b2lkIHJlZ2lzdGVyVVJMU2NoZW1lQXNCeXBhc3NpbmdDb250ZW50U2VjdXJpdHlQ
b2xpY3koY29uc3QgU3RyaW5nJiBzY2hlbWUpOwotICAgIHN0YXRpYyB2b2lkIHJlbW92ZVVSTFNj
aGVtZVJlZ2lzdGVyZWRBc0J5cGFzc2luZ0NvbnRlbnRTZWN1cml0eVBvbGljeShjb25zdCBTdHJp
bmcmIHNjaGVtZSk7CisgICAgV0VCQ09SRV9FWFBPUlQgc3RhdGljIHZvaWQgcmVnaXN0ZXJVUkxT
Y2hlbWVBc0J5cGFzc2luZ0NvbnRlbnRTZWN1cml0eVBvbGljeShjb25zdCBTdHJpbmcmIHNjaGVt
ZSk7CisgICAgV0VCQ09SRV9FWFBPUlQgc3RhdGljIHZvaWQgcmVtb3ZlVVJMU2NoZW1lUmVnaXN0
ZXJlZEFzQnlwYXNzaW5nQ29udGVudFNlY3VyaXR5UG9saWN5KGNvbnN0IFN0cmluZyYgc2NoZW1l
KTsKICAgICBzdGF0aWMgYm9vbCBzY2hlbWVTaG91bGRCeXBhc3NDb250ZW50U2VjdXJpdHlQb2xp
Y3koY29uc3QgU3RyaW5nJiBzY2hlbWUpOwogICAgIAogICAgIC8vIFNjaGVtZXMgd2hvc2UgcmVz
cG9uc2VzIGNhbiBiZSBjYWNoZWQgaW5kZWZpbml0ZWx5LgpAQCAtOTQsNyArOTQsNyBAQCBwdWJs
aWM6CiAKICNpZiBFTkFCTEUoQ0FDSEVfUEFSVElUSU9OSU5HKQogICAgIC8vIFNjaGVtZXMgd2hv
c2UgcmVxdWVzdHMgc2hvdWxkIGJlIHBhcnRpdGlvbmVkIGluIHRoZSBjYWNoZQotICAgIHN0YXRp
YyB2b2lkIHJlZ2lzdGVyVVJMU2NoZW1lQXNDYWNoZVBhcnRpdGlvbmVkKGNvbnN0IFN0cmluZyYg
c2NoZW1lKTsKKyAgICBXRUJDT1JFX0VYUE9SVCBzdGF0aWMgdm9pZCByZWdpc3RlclVSTFNjaGVt
ZUFzQ2FjaGVQYXJ0aXRpb25lZChjb25zdCBTdHJpbmcmIHNjaGVtZSk7CiAgICAgc3RhdGljIGJv
b2wgc2hvdWxkUGFydGl0aW9uQ2FjaGVGb3JVUkxTY2hlbWUoY29uc3QgU3RyaW5nJiBzY2hlbWUp
OwogI2VuZGlmCiB9OwpJbmRleDogU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vU2Nyb2xsVmlldy5o
Cj09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT0KLS0tIFNvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL1Njcm9sbFZpZXcuaAkocmV2
aXNpb24gMTcyODQ3KQorKysgU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vU2Nyb2xsVmlldy5oCSh3
b3JraW5nIGNvcHkpCkBAIC03MSw3ICs3MSw3IEBAIHB1YmxpYzoKICAgICAvLyBTY3JvbGxhYmxl
QXJlYSBmdW5jdGlvbnMuCiAgICAgdmlydHVhbCBpbnQgc2Nyb2xsU2l6ZShTY3JvbGxiYXJPcmll
bnRhdGlvbikgY29uc3Qgb3ZlcnJpZGU7CiAgICAgdmlydHVhbCBpbnQgc2Nyb2xsUG9zaXRpb24o
U2Nyb2xsYmFyKikgY29uc3Qgb3ZlcnJpZGU7Ci0gICAgdmlydHVhbCB2b2lkIHNldFNjcm9sbE9m
ZnNldChjb25zdCBJbnRQb2ludCYpIG92ZXJyaWRlOworICAgIFdFQkNPUkVfRVhQT1JUIHZpcnR1
YWwgdm9pZCBzZXRTY3JvbGxPZmZzZXQoY29uc3QgSW50UG9pbnQmKSBvdmVycmlkZTsKICAgICB2
aXJ0dWFsIGJvb2wgaXNTY3JvbGxDb3JuZXJWaXNpYmxlKCkgY29uc3Qgb3ZlcnJpZGU7CiAgICAg
dmlydHVhbCB2b2lkIHNjcm9sbGJhclN0eWxlQ2hhbmdlZChpbnQgbmV3U3R5bGUsIGJvb2wgZm9y
Y2VVcGRhdGUpIG92ZXJyaWRlOwogCkBAIC04OSw3ICs4OSw3IEBAIHB1YmxpYzoKIAogICAgIC8v
IEZ1bmN0aW9ucyBmb3IgY2hpbGQgbWFuaXB1bGF0aW9uIGFuZCBpbnNwZWN0aW9uLgogICAgIGNv
bnN0IEhhc2hTZXQ8UmVmUHRyPFdpZGdldD4+JiBjaGlsZHJlbigpIGNvbnN0IHsgcmV0dXJuIG1f
Y2hpbGRyZW47IH0KLSAgICB2aXJ0dWFsIHZvaWQgYWRkQ2hpbGQoUGFzc1JlZlB0cjxXaWRnZXQ+
KTsKKyAgICBXRUJDT1JFX0VYUE9SVCB2aXJ0dWFsIHZvaWQgYWRkQ2hpbGQoUGFzc1JlZlB0cjxX
aWRnZXQ+KTsKICAgICB2aXJ0dWFsIHZvaWQgcmVtb3ZlQ2hpbGQoV2lkZ2V0Kik7CiAKICAgICAv
LyBJZiB0aGUgc2Nyb2xsIHZpZXcgZG9lcyBub3QgdXNlIGEgbmF0aXZlIHdpZGdldCwgdGhlbiBp
dCB3aWxsIGhhdmUgY3Jvc3MtcGxhdGZvcm0gU2Nyb2xsYmFycy4gVGhlc2UgZnVuY3Rpb25zCkBA
IC0xMDgsNyArMTA4LDcgQEAgcHVibGljOgogICAgIHZvaWQgc2V0U2Nyb2xsYmFyTW9kZXMoU2Ny
b2xsYmFyTW9kZSBob3Jpem9udGFsTW9kZSwgU2Nyb2xsYmFyTW9kZSB2ZXJ0aWNhbE1vZGUsIGJv
b2wgaG9yaXpvbnRhbExvY2sgPSBmYWxzZSwgYm9vbCB2ZXJ0aWNhbExvY2sgPSBmYWxzZSk7CiAg
ICAgdm9pZCBzZXRIb3Jpem9udGFsU2Nyb2xsYmFyTW9kZShTY3JvbGxiYXJNb2RlIG1vZGUsIGJv
b2wgbG9jayA9IGZhbHNlKSB7IHNldFNjcm9sbGJhck1vZGVzKG1vZGUsIHZlcnRpY2FsU2Nyb2xs
YmFyTW9kZSgpLCBsb2NrLCB2ZXJ0aWNhbFNjcm9sbGJhckxvY2soKSk7IH0KICAgICB2b2lkIHNl
dFZlcnRpY2FsU2Nyb2xsYmFyTW9kZShTY3JvbGxiYXJNb2RlIG1vZGUsIGJvb2wgbG9jayA9IGZh
bHNlKSB7IHNldFNjcm9sbGJhck1vZGVzKGhvcml6b250YWxTY3JvbGxiYXJNb2RlKCksIG1vZGUs
IGhvcml6b250YWxTY3JvbGxiYXJMb2NrKCksIGxvY2spOyB9OwotICAgIHZvaWQgc2Nyb2xsYmFy
TW9kZXMoU2Nyb2xsYmFyTW9kZSYgaG9yaXpvbnRhbE1vZGUsIFNjcm9sbGJhck1vZGUmIHZlcnRp
Y2FsTW9kZSkgY29uc3Q7CisgICAgV0VCQ09SRV9FWFBPUlQgdm9pZCBzY3JvbGxiYXJNb2RlcyhT
Y3JvbGxiYXJNb2RlJiBob3Jpem9udGFsTW9kZSwgU2Nyb2xsYmFyTW9kZSYgdmVydGljYWxNb2Rl
KSBjb25zdDsKICAgICBTY3JvbGxiYXJNb2RlIGhvcml6b250YWxTY3JvbGxiYXJNb2RlKCkgY29u
c3QgeyBTY3JvbGxiYXJNb2RlIGhvcml6b250YWwsIHZlcnRpY2FsOyBzY3JvbGxiYXJNb2Rlcyho
b3Jpem9udGFsLCB2ZXJ0aWNhbCk7IHJldHVybiBob3Jpem9udGFsOyB9CiAgICAgU2Nyb2xsYmFy
TW9kZSB2ZXJ0aWNhbFNjcm9sbGJhck1vZGUoKSBjb25zdCB7IFNjcm9sbGJhck1vZGUgaG9yaXpv
bnRhbCwgdmVydGljYWw7IHNjcm9sbGJhck1vZGVzKGhvcml6b250YWwsIHZlcnRpY2FsKTsgcmV0
dXJuIHZlcnRpY2FsOyB9CiAKQEAgLTExOSw3ICsxMTksNyBAQCBwdWJsaWM6CiAKICAgICB2b2lk
IHNldFNjcm9sbGluZ01vZGVzTG9jayhib29sIGxvY2sgPSB0cnVlKSB7IG1faG9yaXpvbnRhbFNj
cm9sbGJhckxvY2sgPSBtX3ZlcnRpY2FsU2Nyb2xsYmFyTG9jayA9IGxvY2s7IH0KIAotICAgIHZp
cnR1YWwgdm9pZCBzZXRDYW5IYXZlU2Nyb2xsYmFycyhib29sKTsKKyAgICBXRUJDT1JFX0VYUE9S
VCB2aXJ0dWFsIHZvaWQgc2V0Q2FuSGF2ZVNjcm9sbGJhcnMoYm9vbCk7CiAgICAgYm9vbCBjYW5I
YXZlU2Nyb2xsYmFycygpIGNvbnN0IHsgcmV0dXJuIGhvcml6b250YWxTY3JvbGxiYXJNb2RlKCkg
IT0gU2Nyb2xsYmFyQWx3YXlzT2ZmIHx8IHZlcnRpY2FsU2Nyb2xsYmFyTW9kZSgpICE9IFNjcm9s
bGJhckFsd2F5c09mZjsgfQogCiAgICAgdmlydHVhbCBib29sIGF2b2lkU2Nyb2xsYmFyQ3JlYXRp
b24oKSBjb25zdCB7IHJldHVybiBmYWxzZTsgfQpAQCAtMTI5LDcgKzEyOSw3IEBAIHB1YmxpYzoK
ICAgICAvLyBCeSBkZWZhdWx0IHlvdSBvbmx5IHJlY2VpdmUgcGFpbnQgZXZlbnRzIGZvciB0aGUg
YXJlYSB0aGF0IGlzIHZpc2libGUuIEluIHRoZSBjYXNlIG9mIHVzaW5nIGEKICAgICAvLyB0aWxl
ZCBiYWNraW5nIHN0b3JlLCB0aGlzIGZ1bmN0aW9uIGNhbiBiZSBzZXQsIHNvIHRoYXQgdGhlIHZp
ZXcgcGFpbnRzIHRoZSBlbnRpcmUgY29udGVudHMuCiAgICAgYm9vbCBwYWludHNFbnRpcmVDb250
ZW50cygpIGNvbnN0IHsgcmV0dXJuIG1fcGFpbnRzRW50aXJlQ29udGVudHM7IH0KLSAgICB2b2lk
IHNldFBhaW50c0VudGlyZUNvbnRlbnRzKGJvb2wpOworICAgIFdFQkNPUkVfRVhQT1JUIHZvaWQg
c2V0UGFpbnRzRW50aXJlQ29udGVudHMoYm9vbCk7CiAKICAgICAvLyBCeSBkZWZhdWx0LCBwYWlu
dCBldmVudHMgYXJlIGNsaXBwZWQgdG8gdGhlIHZpc2libGUgYXJlYS4gIElmIHNldCB0bwogICAg
IC8vIGZhbHNlLCBwYWludCBldmVudHMgYXJlIG5vIGxvbmdlciBjbGlwcGVkLiAgcGFpbnRzRW50
aXJlQ29udGVudHMoKSBpbXBsaWVzICFjbGlwc1JlcGFpbnRzKCkuCkBAIC0xNDAsNyArMTQwLDcg
QEAgcHVibGljOgogICAgIC8vIEluIHRoZSBjYXNlIG9mIHVzaW5nIGEgdGlsZWQgYmFja2luZyBz
dG9yZSwgdGhpcyBtb2RlIGNhbiBiZSBzZXQsIHNvIHRoYXQgdGhlIHNjcm9sbCByZXF1ZXN0cwog
ICAgIC8vIGFyZSBkZWxlZ2F0ZWQgdG8gdGhlIFVJIGFwcGxpY2F0aW9uLgogICAgIGJvb2wgZGVs
ZWdhdGVzU2Nyb2xsaW5nKCkgY29uc3QgeyByZXR1cm4gbV9kZWxlZ2F0ZXNTY3JvbGxpbmc7IH0K
LSAgICB2b2lkIHNldERlbGVnYXRlc1Njcm9sbGluZyhib29sKTsKKyAgICBXRUJDT1JFX0VYUE9S
VCB2b2lkIHNldERlbGVnYXRlc1Njcm9sbGluZyhib29sKTsKIAogICAgIC8vIE92ZXJyaWRkZW4g
YnkgRnJhbWVWaWV3IHRvIGNyZWF0ZSBjdXN0b20gQ1NTIHNjcm9sbGJhcnMgaWYgYXBwbGljYWJs
ZS4KICAgICB2aXJ0dWFsIFBhc3NSZWZQdHI8U2Nyb2xsYmFyPiBjcmVhdGVTY3JvbGxiYXIoU2Ny
b2xsYmFyT3JpZW50YXRpb24pOwpAQCAtMTg5LDEyICsxODksMTIgQEAgcHVibGljOgogCiAjaWYg
UExBVEZPUk0oSU9TKQogICAgIC8vIFRoaXMgaXMgdGhlIGFyZWEgdGhhdCBpcyBwYXJ0aWFsbHkg
b3IgZnVsbHkgZXhwb3NlZCwgYW5kIG1heSBleHRlbmQgdW5kZXIgb3ZlcmxhcHBpbmcgVUkgZWxl
bWVudHMuCi0gICAgRmxvYXRSZWN0IGV4cG9zZWRDb250ZW50UmVjdCgpIGNvbnN0OworICAgIFdF
QkNPUkVfRVhQT1JUIEZsb2F0UmVjdCBleHBvc2VkQ29udGVudFJlY3QoKSBjb25zdDsKIAogICAg
IC8vIFRoZSBnaXZlbiByZWN0cyBhcmUgb25seSB1c2VkIGlmIHRoZXJlIGlzIG5vIHBsYXRmb3Jt
IHdpZGdldC4KLSAgICB2b2lkIHNldEV4cG9zZWRDb250ZW50UmVjdChjb25zdCBGbG9hdFJlY3Qm
KTsKKyAgICBXRUJDT1JFX0VYUE9SVCB2b2lkIHNldEV4cG9zZWRDb250ZW50UmVjdChjb25zdCBG
bG9hdFJlY3QmKTsKICAgICBjb25zdCBGbG9hdFNpemUmIHVub2JzY3VyZWRDb250ZW50U2l6ZSgp
IGNvbnN0IHsgcmV0dXJuIG1fdW5vYnNjdXJlZENvbnRlbnRTaXplOyB9Ci0gICAgdm9pZCBzZXRV
bm9ic2N1cmVkQ29udGVudFNpemUoY29uc3QgRmxvYXRTaXplJik7CisgICAgV0VCQ09SRV9FWFBP
UlQgdm9pZCBzZXRVbm9ic2N1cmVkQ29udGVudFNpemUoY29uc3QgRmxvYXRTaXplJik7CiAKICAg
ICB2b2lkIHNldEFjdHVhbFNjcm9sbFBvc2l0aW9uKGNvbnN0IEludFBvaW50Jik7CiAgICAgTGVn
YWN5VGlsZUNhY2hlKiBsZWdhY3lUaWxlQ2FjaGUoKTsKQEAgLTIxNiwxNCArMjE2LDE0IEBAIHB1
YmxpYzoKICAgICBJbnRTaXplIGxheW91dFNpemUoKSBjb25zdDsKICAgICBpbnQgbGF5b3V0V2lk
dGgoKSBjb25zdCB7IHJldHVybiBsYXlvdXRTaXplKCkud2lkdGgoKTsgfQogICAgIGludCBsYXlv
dXRIZWlnaHQoKSBjb25zdCB7IHJldHVybiBsYXlvdXRTaXplKCkuaGVpZ2h0KCk7IH0KLSAgICBJ
bnRTaXplIGZpeGVkTGF5b3V0U2l6ZSgpIGNvbnN0OwotICAgIHZvaWQgc2V0Rml4ZWRMYXlvdXRT
aXplKGNvbnN0IEludFNpemUmKTsKLSAgICBib29sIHVzZUZpeGVkTGF5b3V0KCkgY29uc3Q7Ci0g
ICAgdm9pZCBzZXRVc2VGaXhlZExheW91dChib29sIGVuYWJsZSk7CisgICAgV0VCQ09SRV9FWFBP
UlQgSW50U2l6ZSBmaXhlZExheW91dFNpemUoKSBjb25zdDsKKyAgICBXRUJDT1JFX0VYUE9SVCB2
b2lkIHNldEZpeGVkTGF5b3V0U2l6ZShjb25zdCBJbnRTaXplJik7CisgICAgV0VCQ09SRV9FWFBP
UlQgYm9vbCB1c2VGaXhlZExheW91dCgpIGNvbnN0OworICAgIFdFQkNPUkVfRVhQT1JUIHZvaWQg
c2V0VXNlRml4ZWRMYXlvdXQoYm9vbCBlbmFibGUpOwogCiAgICAgLy8gRnVuY3Rpb25zIGZvciBn
ZXR0aW5nL3NldHRpbmcgdGhlIHNpemUgb2YgdGhlIGRvY3VtZW50IGNvbnRhaW5lZCBpbnNpZGUg
dGhlIFNjcm9sbFZpZXcgKGFzIGFuIEludFNpemUgb3IgYXMgaW5kaXZpZHVhbCB3aWR0aCBhbmQg
aGVpZ2h0CiAgICAgLy8gdmFsdWVzKS4KLSAgICB2aXJ0dWFsIEludFNpemUgY29udGVudHNTaXpl
KCkgY29uc3Qgb3ZlcnJpZGU7IC8vIEFsd2F5cyBhdCBsZWFzdCBhcyBiaWcgYXMgdGhlIHZpc2li
bGVXaWR0aCgpL3Zpc2libGVIZWlnaHQoKS4KKyAgICBXRUJDT1JFX0VYUE9SVCB2aXJ0dWFsIElu
dFNpemUgY29udGVudHNTaXplKCkgY29uc3Qgb3ZlcnJpZGU7IC8vIEFsd2F5cyBhdCBsZWFzdCBh
cyBiaWcgYXMgdGhlIHZpc2libGVXaWR0aCgpL3Zpc2libGVIZWlnaHQoKS4KICAgICBpbnQgY29u
dGVudHNXaWR0aCgpIGNvbnN0IHsgcmV0dXJuIGNvbnRlbnRzU2l6ZSgpLndpZHRoKCk7IH0KICAg
ICBpbnQgY29udGVudHNIZWlnaHQoKSBjb25zdCB7IHJldHVybiBjb250ZW50c1NpemUoKS5oZWln
aHQoKTsgfQogICAgIHZpcnR1YWwgdm9pZCBzZXRDb250ZW50c1NpemUoY29uc3QgSW50U2l6ZSYp
OwpAQCAtMjYyLDcgKzI2Miw3IEBAIHB1YmxpYzoKICAgICAvLyB0b3Agb2YgdGhlIGRvY3VtZW50
IGFueXdheSwgc2luY2UgdGhlcmUgY291bGQgYWxzbyBiZSBoZWFkZXIuIGRvY3VtZW50U2Nyb2xs
T2Zmc2V0UmVsYXRpdmVUb1ZpZXdPcmlnaW4oKQogICAgIC8vIHdpbGwgcmV0dXJuIGEgdmVyc2lv
biBvZiB0aGUgY3VycmVudCBzY3JvbGwgb2Zmc2V0IHdoaWNoIHRyYWNrcyB0aGUgdG9wIG9mIHRo
ZSBEb2N1bWVudAogICAgIC8vIHJlbGF0aXZlIHRvIHRoZSB2ZXJ5IHRvcCBvZiB0aGUgdmlldy4K
LSAgICBJbnRTaXplIGRvY3VtZW50U2Nyb2xsT2Zmc2V0UmVsYXRpdmVUb1ZpZXdPcmlnaW4oKSBj
b25zdDsKKyAgICBXRUJDT1JFX0VYUE9SVCBJbnRTaXplIGRvY3VtZW50U2Nyb2xsT2Zmc2V0UmVs
YXRpdmVUb1ZpZXdPcmlnaW4oKSBjb25zdDsKICAgICBJbnRQb2ludCBkb2N1bWVudFNjcm9sbFBv
c2l0aW9uUmVsYXRpdmVUb1ZpZXdPcmlnaW4oKSBjb25zdDsKIAogICAgIHZpcnR1YWwgSW50U2l6
ZSBvdmVyaGFuZ0Ftb3VudCgpIGNvbnN0IG92ZXJyaWRlOwpAQCAtMjg0LDI2ICsyODQsMjYgQEAg
cHVibGljOgogICAgIHZvaWQgc2Nyb2xsQ29udGVudHMoY29uc3QgSW50U2l6ZSYgc2Nyb2xsRGVs
dGEpOwogCiAgICAgLy8gVGhpcyBnaXZlcyB1cyBhIG1lYW5zIG9mIGJsb2NraW5nIHBhaW50aW5n
IG9uIG91ciBzY3JvbGxiYXJzIHVudGlsIHRoZSBmaXJzdCBsYXlvdXQgaGFzIG9jY3VycmVkLgot
ICAgIHZvaWQgc2V0U2Nyb2xsYmFyc1N1cHByZXNzZWQoYm9vbCBzdXBwcmVzc2VkLCBib29sIHJl
cGFpbnRPblVuc3VwcHJlc3MgPSBmYWxzZSk7CisgICAgV0VCQ09SRV9FWFBPUlQgdm9pZCBzZXRT
Y3JvbGxiYXJzU3VwcHJlc3NlZChib29sIHN1cHByZXNzZWQsIGJvb2wgcmVwYWludE9uVW5zdXBw
cmVzcyA9IGZhbHNlKTsKICAgICBib29sIHNjcm9sbGJhcnNTdXBwcmVzc2VkKCkgY29uc3QgeyBy
ZXR1cm4gbV9zY3JvbGxiYXJzU3VwcHJlc3NlZDsgfQogCi0gICAgSW50UG9pbnQgcm9vdFZpZXdU
b0NvbnRlbnRzKGNvbnN0IEludFBvaW50JikgY29uc3Q7Ci0gICAgSW50UG9pbnQgY29udGVudHNU
b1Jvb3RWaWV3KGNvbnN0IEludFBvaW50JikgY29uc3Q7CisgICAgV0VCQ09SRV9FWFBPUlQgSW50
UG9pbnQgcm9vdFZpZXdUb0NvbnRlbnRzKGNvbnN0IEludFBvaW50JikgY29uc3Q7CisgICAgV0VC
Q09SRV9FWFBPUlQgSW50UG9pbnQgY29udGVudHNUb1Jvb3RWaWV3KGNvbnN0IEludFBvaW50Jikg
Y29uc3Q7CiAgICAgSW50UmVjdCByb290Vmlld1RvQ29udGVudHMoY29uc3QgSW50UmVjdCYpIGNv
bnN0OwotICAgIEludFJlY3QgY29udGVudHNUb1Jvb3RWaWV3KGNvbnN0IEludFJlY3QmKSBjb25z
dDsKKyAgICBXRUJDT1JFX0VYUE9SVCBJbnRSZWN0IGNvbnRlbnRzVG9Sb290Vmlldyhjb25zdCBJ
bnRSZWN0JikgY29uc3Q7CiAKLSAgICBJbnRQb2ludCByb290Vmlld1RvVG90YWxDb250ZW50cyhj
b25zdCBJbnRQb2ludCYpIGNvbnN0OworICAgIFdFQkNPUkVfRVhQT1JUIEludFBvaW50IHJvb3RW
aWV3VG9Ub3RhbENvbnRlbnRzKGNvbnN0IEludFBvaW50JikgY29uc3Q7CiAKICAgICAvLyBFdmVu
dCBjb29yZGluYXRlcyBhcmUgYXNzdW1lZCB0byBiZSBpbiB0aGUgY29vcmRpbmF0ZSBzcGFjZSBv
ZiBhIHdpbmRvdyB0aGF0IGNvbnRhaW5zCiAgICAgLy8gdGhlIGVudGlyZSB3aWRnZXQgaGllcmFy
Y2h5LiBJdCBpcyB1cCB0byB0aGUgcGxhdGZvcm0gdG8gZGVjaWRlIHdoYXQgdGhlIHByZWNpc2Ug
ZGVmaW5pdGlvbgogICAgIC8vIG9mIGNvbnRhaW5pbmcgd2luZG93IGlzLiAoRm9yIGV4YW1wbGUg
b24gTWFjIGl0IGlzIHRoZSBjb250YWluaW5nIE5TV2luZG93LikKLSAgICBJbnRQb2ludCB3aW5k
b3dUb0NvbnRlbnRzKGNvbnN0IEludFBvaW50JikgY29uc3Q7Ci0gICAgSW50UG9pbnQgY29udGVu
dHNUb1dpbmRvdyhjb25zdCBJbnRQb2ludCYpIGNvbnN0OwotICAgIEludFJlY3Qgd2luZG93VG9D
b250ZW50cyhjb25zdCBJbnRSZWN0JikgY29uc3Q7Ci0gICAgSW50UmVjdCBjb250ZW50c1RvV2lu
ZG93KGNvbnN0IEludFJlY3QmKSBjb25zdDsKKyAgICBXRUJDT1JFX0VYUE9SVCBJbnRQb2ludCB3
aW5kb3dUb0NvbnRlbnRzKGNvbnN0IEludFBvaW50JikgY29uc3Q7CisgICAgV0VCQ09SRV9FWFBP
UlQgSW50UG9pbnQgY29udGVudHNUb1dpbmRvdyhjb25zdCBJbnRQb2ludCYpIGNvbnN0OworICAg
IFdFQkNPUkVfRVhQT1JUIEludFJlY3Qgd2luZG93VG9Db250ZW50cyhjb25zdCBJbnRSZWN0Jikg
Y29uc3Q7CisgICAgV0VCQ09SRV9FWFBPUlQgSW50UmVjdCBjb250ZW50c1RvV2luZG93KGNvbnN0
IEludFJlY3QmKSBjb25zdDsKIAogICAgIC8vIEZ1bmN0aW9ucyBmb3IgY29udmVydGluZyB0byBh
bmQgZnJvbSBzY3JlZW4gY29vcmRpbmF0ZXMuCi0gICAgSW50UmVjdCBjb250ZW50c1RvU2NyZWVu
KGNvbnN0IEludFJlY3QmKSBjb25zdDsKKyAgICBXRUJDT1JFX0VYUE9SVCBJbnRSZWN0IGNvbnRl
bnRzVG9TY3JlZW4oY29uc3QgSW50UmVjdCYpIGNvbnN0OwogICAgIEludFBvaW50IHNjcmVlblRv
Q29udGVudHMoY29uc3QgSW50UG9pbnQmKSBjb25zdDsKIAogICAgIC8vIFRoZSBwdXJwb3NlIG9m
IHRoaXMgZnVuY3Rpb24gaXMgdG8gYW5zd2VyIHdoZXRoZXIgb3Igbm90IHRoZSBzY3JvbGwgdmll
dyBpcyBjdXJyZW50bHkgdmlzaWJsZS4gQW5pbWF0aW9ucyBhbmQgcGFpbnRpbmcgdXBkYXRlcyBj
YW4gYmUgc3VzcGVuZGVkIGlmCkBAIC0zMTUsNyArMzE1LDcgQEAgcHVibGljOgogICAgIHZpcnR1
YWwgSW50UmVjdCB3aW5kb3dSZXNpemVyUmVjdCgpIGNvbnN0IHsgcmV0dXJuIEludFJlY3QoKTsg
fQogICAgIGJvb2wgY29udGFpbnNTY3JvbGxiYXJzQXZvaWRpbmdSZXNpemVyKCkgY29uc3Q7CiAg
ICAgdm9pZCBhZGp1c3RTY3JvbGxiYXJzQXZvaWRpbmdSZXNpemVyQ291bnQoaW50IG92ZXJsYXBE
ZWx0YSk7Ci0gICAgdm9pZCB3aW5kb3dSZXNpemVyUmVjdENoYW5nZWQoKTsKKyAgICBXRUJDT1JF
X0VYUE9SVCB2b2lkIHdpbmRvd1Jlc2l6ZXJSZWN0Q2hhbmdlZCgpOwogCiAgICAgdmlydHVhbCB2
b2lkIHNldFBhcmVudChTY3JvbGxWaWV3Kikgb3ZlcnJpZGU7IC8vIE92ZXJyaWRkZW4gdG8gdXBk
YXRlIHRoZSBvdmVybGFwcGluZyBzY3JvbGxiYXIgY291bnQuCiAKQEAgLTM1MCwxMyArMzUwLDEz
IEBAIHB1YmxpYzoKICAgICB9CiAKICAgICAvLyBXaWRnZXQgb3ZlcnJpZGUuIEhhbmRsZXMgcGFp
bnRpbmcgb2YgdGhlIGNvbnRlbnRzIG9mIHRoZSB2aWV3IGFzIHdlbGwgYXMgdGhlIHNjcm9sbGJh
cnMuCi0gICAgdmlydHVhbCB2b2lkIHBhaW50KEdyYXBoaWNzQ29udGV4dCosIGNvbnN0IEludFJl
Y3QmKSBvdmVycmlkZTsKKyAgICBXRUJDT1JFX0VYUE9SVCB2aXJ0dWFsIHZvaWQgcGFpbnQoR3Jh
cGhpY3NDb250ZXh0KiwgY29uc3QgSW50UmVjdCYpIG92ZXJyaWRlOwogICAgIHZvaWQgcGFpbnRT
Y3JvbGxiYXJzKEdyYXBoaWNzQ29udGV4dCosIGNvbnN0IEludFJlY3QmKTsKIAogICAgIC8vIFdp
ZGdldCBvdmVycmlkZXMgdG8gZW5zdXJlIHRoYXQgb3VyIGNoaWxkcmVuJ3MgdmlzaWJpbGl0eSBz
dGF0dXMgaXMga2VwdCB1cCB0byBkYXRlIHdoZW4gd2UgZ2V0IHNob3duIGFuZCBoaWRkZW4uCi0g
ICAgdmlydHVhbCB2b2lkIHNob3coKSBvdmVycmlkZTsKLSAgICB2aXJ0dWFsIHZvaWQgaGlkZSgp
IG92ZXJyaWRlOwotICAgIHZpcnR1YWwgdm9pZCBzZXRQYXJlbnRWaXNpYmxlKGJvb2wpIG92ZXJy
aWRlOworICAgIFdFQkNPUkVfRVhQT1JUIHZpcnR1YWwgdm9pZCBzaG93KCkgb3ZlcnJpZGU7Cisg
ICAgV0VCQ09SRV9FWFBPUlQgdmlydHVhbCB2b2lkIGhpZGUoKSBvdmVycmlkZTsKKyAgICBXRUJD
T1JFX0VYUE9SVCB2aXJ0dWFsIHZvaWQgc2V0UGFyZW50VmlzaWJsZShib29sKSBvdmVycmlkZTsK
ICAgICAKICAgICAvLyBQYW4gc2Nyb2xsaW5nLgogICAgIHN0YXRpYyBjb25zdCBpbnQgbm9QYW5T
Y3JvbGxSYWRpdXMgPSAxNTsKQEAgLTQxOSw3ICs0MTksNyBAQCBwcm90ZWN0ZWQ6CiAKIHByaXZh
dGU6CiAgICAgdmlydHVhbCBJbnRSZWN0IHZpc2libGVDb250ZW50UmVjdEludGVybmFsKFZpc2li
bGVDb250ZW50UmVjdEluY2x1ZGVzU2Nyb2xsYmFycywgVmlzaWJsZUNvbnRlbnRSZWN0QmVoYXZp
b3IpIGNvbnN0IG92ZXJyaWRlOwotICAgIEludFJlY3QgdW5vYnNjdXJlZENvbnRlbnRSZWN0SW50
ZXJuYWwoVmlzaWJsZUNvbnRlbnRSZWN0SW5jbHVkZXNTY3JvbGxiYXJzID0gRXhjbHVkZVNjcm9s
bGJhcnMpIGNvbnN0OworICAgIFdFQkNPUkVfRVhQT1JUIEludFJlY3QgdW5vYnNjdXJlZENvbnRl
bnRSZWN0SW50ZXJuYWwoVmlzaWJsZUNvbnRlbnRSZWN0SW5jbHVkZXNTY3JvbGxiYXJzID0gRXhj
bHVkZVNjcm9sbGJhcnMpIGNvbnN0OwogCiAgICAgUmVmUHRyPFNjcm9sbGJhcj4gbV9ob3Jpem9u
dGFsU2Nyb2xsYmFyOwogICAgIFJlZlB0cjxTY3JvbGxiYXI+IG1fdmVydGljYWxTY3JvbGxiYXI7
CkBAIC01MDAsNyArNTAwLDcgQEAgcHJpdmF0ZToKIAogI2lmIFBMQVRGT1JNKENPQ09BKSAmJiBk
ZWZpbmVkIF9fT0JKQ19fCiBwdWJsaWM6Ci0gICAgTlNWaWV3KiBkb2N1bWVudFZpZXcoKSBjb25z
dDsKKyAgICBXRUJDT1JFX0VYUE9SVCBOU1ZpZXcqIGRvY3VtZW50VmlldygpIGNvbnN0OwogCiBw
cml2YXRlOgogICAgIE5TU2Nyb2xsVmlldzxXZWJDb3JlRnJhbWVTY3JvbGxWaWV3Piogc2Nyb2xs
VmlldygpIGNvbnN0OwpJbmRleDogU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vU2Nyb2xsYWJsZUFy
ZWEuaAo9PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09Ci0tLSBTb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9TY3JvbGxhYmxlQXJl
YS5oCShyZXZpc2lvbiAxNzI4NDcpCisrKyBTb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9TY3JvbGxh
YmxlQXJlYS5oCSh3b3JraW5nIGNvcHkpCkBAIC00MywyMCArNDMsMjAgQEAgY2xhc3MgVGlsZWRC
YWNraW5nOwogCiBjbGFzcyBTY3JvbGxhYmxlQXJlYSB7CiBwdWJsaWM6Ci0gICAgYm9vbCBzY3Jv
bGwoU2Nyb2xsRGlyZWN0aW9uLCBTY3JvbGxHcmFudWxhcml0eSwgZmxvYXQgbXVsdGlwbGllciA9
IDEpOwotICAgIHZvaWQgc2Nyb2xsVG9PZmZzZXRXaXRob3V0QW5pbWF0aW9uKGNvbnN0IEZsb2F0
UG9pbnQmKTsKKyAgICBXRUJDT1JFX0VYUE9SVCBib29sIHNjcm9sbChTY3JvbGxEaXJlY3Rpb24s
IFNjcm9sbEdyYW51bGFyaXR5LCBmbG9hdCBtdWx0aXBsaWVyID0gMSk7CisgICAgV0VCQ09SRV9F
WFBPUlQgdm9pZCBzY3JvbGxUb09mZnNldFdpdGhvdXRBbmltYXRpb24oY29uc3QgRmxvYXRQb2lu
dCYpOwogICAgIHZvaWQgc2Nyb2xsVG9PZmZzZXRXaXRob3V0QW5pbWF0aW9uKFNjcm9sbGJhck9y
aWVudGF0aW9uLCBmbG9hdCBvZmZzZXQpOwogCiAgICAgLy8gU2hvdWxkIGJlIGNhbGxlZCB3aGVu
IHRoZSBzY3JvbGwgcG9zaXRpb24gY2hhbmdlcyBleHRlcm5hbGx5LCBmb3IgZXhhbXBsZSBpZiB0
aGUgc2Nyb2xsIGxheWVyIHBvc2l0aW9uCiAgICAgLy8gaXMgdXBkYXRlZCBvbiB0aGUgc2Nyb2xs
aW5nIHRocmVhZCBhbmQgd2UgbmVlZCB0byBub3RpZnkgdGhlIG1haW4gdGhyZWFkLgotICAgIHZv
aWQgbm90aWZ5U2Nyb2xsUG9zaXRpb25DaGFuZ2VkKGNvbnN0IEludFBvaW50Jik7CisgICAgV0VC
Q09SRV9FWFBPUlQgdm9pZCBub3RpZnlTY3JvbGxQb3NpdGlvbkNoYW5nZWQoY29uc3QgSW50UG9p
bnQmKTsKIAogICAgIC8vIEFsbG93cyBzdWJjbGFzc2VzIHRvIGhhbmRsZSBzY3JvbGwgcG9zaXRp
b24gdXBkYXRlcyB0aGVtc2VsdmVzLiBJZiB0aGlzIG1lbWJlciBmdW5jdGlvbgogICAgIC8vIHJl
dHVybnMgdHJ1ZSwgdGhlIHNjcm9sbGFibGUgYXJlYSB3b24ndCBhY3R1YWxseSB1cGRhdGUgdGhl
IHNjcm9sbCBwb3NpdGlvbiBhbmQgaW5zdGVhZAogICAgIC8vIGV4cGVjdCBpdCB0byBoYXBwZW4g
c29tZXRpbWUgaW4gdGhlIGZ1dHVyZS4KICAgICB2aXJ0dWFsIGJvb2wgcmVxdWVzdFNjcm9sbFBv
c2l0aW9uVXBkYXRlKGNvbnN0IEludFBvaW50JikgeyByZXR1cm4gZmFsc2U7IH0KIAotICAgIGJv
b2wgaGFuZGxlV2hlZWxFdmVudChjb25zdCBQbGF0Zm9ybVdoZWVsRXZlbnQmKTsKKyAgICBXRUJD
T1JFX0VYUE9SVCBib29sIGhhbmRsZVdoZWVsRXZlbnQoY29uc3QgUGxhdGZvcm1XaGVlbEV2ZW50
Jik7CiAKICNpZiBFTkFCTEUoQ1NTX1NDUk9MTF9TTkFQKQogICAgIGNvbnN0IFZlY3RvcjxMYXlv
dXRVbml0PiogaG9yaXpvbnRhbFNuYXBPZmZzZXRzKCkgY29uc3QgeyByZXR1cm4gbV9ob3Jpem9u
dGFsU25hcE9mZnNldHMuZ2V0KCk7IH07CkBAIC05MiwzMiArOTIsMzIgQEAgcHVibGljOgogICAg
IFNjcm9sbEVsYXN0aWNpdHkgaG9yaXpvbnRhbFNjcm9sbEVsYXN0aWNpdHkoKSBjb25zdCB7IHJl
dHVybiBzdGF0aWNfY2FzdDxTY3JvbGxFbGFzdGljaXR5PihtX2hvcml6b250YWxTY3JvbGxFbGFz
dGljaXR5KTsgfQogCiAgICAgYm9vbCBpbkxpdmVSZXNpemUoKSBjb25zdCB7IHJldHVybiBtX2lu
TGl2ZVJlc2l6ZTsgfQotICAgIHZpcnR1YWwgdm9pZCB3aWxsU3RhcnRMaXZlUmVzaXplKCk7Ci0g
ICAgdmlydHVhbCB2b2lkIHdpbGxFbmRMaXZlUmVzaXplKCk7CisgICAgV0VCQ09SRV9FWFBPUlQg
dmlydHVhbCB2b2lkIHdpbGxTdGFydExpdmVSZXNpemUoKTsKKyAgICBXRUJDT1JFX0VYUE9SVCB2
aXJ0dWFsIHZvaWQgd2lsbEVuZExpdmVSZXNpemUoKTsKIAotICAgIHZvaWQgY29udGVudEFyZWFX
aWxsUGFpbnQoKSBjb25zdDsKLSAgICB2b2lkIG1vdXNlRW50ZXJlZENvbnRlbnRBcmVhKCkgY29u
c3Q7Ci0gICAgdm9pZCBtb3VzZUV4aXRlZENvbnRlbnRBcmVhKCkgY29uc3Q7Ci0gICAgdm9pZCBt
b3VzZU1vdmVkSW5Db250ZW50QXJlYSgpIGNvbnN0OwotICAgIHZvaWQgbW91c2VFbnRlcmVkU2Ny
b2xsYmFyKFNjcm9sbGJhciopIGNvbnN0OworICAgIFdFQkNPUkVfRVhQT1JUIHZvaWQgY29udGVu
dEFyZWFXaWxsUGFpbnQoKSBjb25zdDsKKyAgICBXRUJDT1JFX0VYUE9SVCB2b2lkIG1vdXNlRW50
ZXJlZENvbnRlbnRBcmVhKCkgY29uc3Q7CisgICAgV0VCQ09SRV9FWFBPUlQgdm9pZCBtb3VzZUV4
aXRlZENvbnRlbnRBcmVhKCkgY29uc3Q7CisgICAgV0VCQ09SRV9FWFBPUlQgdm9pZCBtb3VzZU1v
dmVkSW5Db250ZW50QXJlYSgpIGNvbnN0OworICAgIFdFQkNPUkVfRVhQT1JUIHZvaWQgbW91c2VF
bnRlcmVkU2Nyb2xsYmFyKFNjcm9sbGJhciopIGNvbnN0OwogICAgIHZvaWQgbW91c2VFeGl0ZWRT
Y3JvbGxiYXIoU2Nyb2xsYmFyKikgY29uc3Q7CiAgICAgdm9pZCBjb250ZW50QXJlYURpZFNob3co
KSBjb25zdDsKICAgICB2b2lkIGNvbnRlbnRBcmVhRGlkSGlkZSgpIGNvbnN0OwogCiAgICAgdm9p
ZCBsb2NrT3ZlcmxheVNjcm9sbGJhclN0YXRlVG9IaWRkZW4oYm9vbCBzaG91bGRMb2NrU3RhdGUp
IGNvbnN0OwotICAgIGJvb2wgc2Nyb2xsYmFyc0NhbkJlQWN0aXZlKCkgY29uc3Q7CisgICAgV0VC
Q09SRV9FWFBPUlQgYm9vbCBzY3JvbGxiYXJzQ2FuQmVBY3RpdmUoKSBjb25zdDsKIAotICAgIHZp
cnR1YWwgdm9pZCBkaWRBZGRTY3JvbGxiYXIoU2Nyb2xsYmFyKiwgU2Nyb2xsYmFyT3JpZW50YXRp
b24pOwotICAgIHZpcnR1YWwgdm9pZCB3aWxsUmVtb3ZlU2Nyb2xsYmFyKFNjcm9sbGJhciosIFNj
cm9sbGJhck9yaWVudGF0aW9uKTsKKyAgICBXRUJDT1JFX0VYUE9SVCB2aXJ0dWFsIHZvaWQgZGlk
QWRkU2Nyb2xsYmFyKFNjcm9sbGJhciosIFNjcm9sbGJhck9yaWVudGF0aW9uKTsKKyAgICBXRUJD
T1JFX0VYUE9SVCB2aXJ0dWFsIHZvaWQgd2lsbFJlbW92ZVNjcm9sbGJhcihTY3JvbGxiYXIqLCBT
Y3JvbGxiYXJPcmllbnRhdGlvbik7CiAKLSAgICB2aXJ0dWFsIHZvaWQgY29udGVudHNSZXNpemVk
KCk7CisgICAgV0VCQ09SRV9FWFBPUlQgdmlydHVhbCB2b2lkIGNvbnRlbnRzUmVzaXplZCgpOwog
CiAgICAgYm9vbCBoYXNPdmVybGF5U2Nyb2xsYmFycygpIGNvbnN0OwotICAgIHZpcnR1YWwgdm9p
ZCBzZXRTY3JvbGxiYXJPdmVybGF5U3R5bGUoU2Nyb2xsYmFyT3ZlcmxheVN0eWxlKTsKKyAgICBX
RUJDT1JFX0VYUE9SVCB2aXJ0dWFsIHZvaWQgc2V0U2Nyb2xsYmFyT3ZlcmxheVN0eWxlKFNjcm9s
bGJhck92ZXJsYXlTdHlsZSk7CiAgICAgU2Nyb2xsYmFyT3ZlcmxheVN0eWxlIHNjcm9sbGJhck92
ZXJsYXlTdHlsZSgpIGNvbnN0IHsgcmV0dXJuIHN0YXRpY19jYXN0PFNjcm9sbGJhck92ZXJsYXlT
dHlsZT4obV9zY3JvbGxiYXJPdmVybGF5U3R5bGUpOyB9CiAKICAgICAvLyBUaGlzIGdldHRlciB3
aWxsIGNyZWF0ZSBhIFNjcm9sbEFuaW1hdG9yIGlmIGl0IGRvZXNuJ3QgYWxyZWFkeSBleGlzdC4K
LSAgICBTY3JvbGxBbmltYXRvciogc2Nyb2xsQW5pbWF0b3IoKSBjb25zdDsKKyAgICBXRUJDT1JF
X0VYUE9SVCBTY3JvbGxBbmltYXRvciogc2Nyb2xsQW5pbWF0b3IoKSBjb25zdDsKIAogICAgIC8v
IFRoaXMgZ2V0dGVyIHdpbGwgcmV0dXJuIG51bGwgaWYgdGhlIFNjcm9sbEFuaW1hdG9yIGhhc24n
dCBiZWVuIGNyZWF0ZWQgeWV0LgogICAgIFNjcm9sbEFuaW1hdG9yKiBleGlzdGluZ1Njcm9sbEFu
aW1hdG9yKCkgY29uc3QgeyByZXR1cm4gbV9zY3JvbGxBbmltYXRvci5nZXQoKTsgfQpAQCAtMTI4
LDEwICsxMjgsMTAgQEAgcHVibGljOgogICAgIHZpcnR1YWwgYm9vbCBpc0FjdGl2ZSgpIGNvbnN0
ID0gMDsKICAgICB2aXJ0dWFsIGludCBzY3JvbGxTaXplKFNjcm9sbGJhck9yaWVudGF0aW9uKSBj
b25zdCA9IDA7CiAgICAgdmlydHVhbCBpbnQgc2Nyb2xsUG9zaXRpb24oU2Nyb2xsYmFyKikgY29u
c3QgPSAwOwotICAgIHZpcnR1YWwgdm9pZCBpbnZhbGlkYXRlU2Nyb2xsYmFyKFNjcm9sbGJhcios
IGNvbnN0IEludFJlY3QmKTsKKyAgICBXRUJDT1JFX0VYUE9SVCB2aXJ0dWFsIHZvaWQgaW52YWxp
ZGF0ZVNjcm9sbGJhcihTY3JvbGxiYXIqLCBjb25zdCBJbnRSZWN0Jik7CiAgICAgdmlydHVhbCBi
b29sIGlzU2Nyb2xsQ29ybmVyVmlzaWJsZSgpIGNvbnN0ID0gMDsKICAgICB2aXJ0dWFsIEludFJl
Y3Qgc2Nyb2xsQ29ybmVyUmVjdCgpIGNvbnN0ID0gMDsKLSAgICB2aXJ0dWFsIHZvaWQgaW52YWxp
ZGF0ZVNjcm9sbENvcm5lcihjb25zdCBJbnRSZWN0Jik7CisgICAgV0VCQ09SRV9FWFBPUlQgdmly
dHVhbCB2b2lkIGludmFsaWRhdGVTY3JvbGxDb3JuZXIoY29uc3QgSW50UmVjdCYpOwogCiAgICAg
dmlydHVhbCBib29sIHVwZGF0ZXNTY3JvbGxMYXllclBvc2l0aW9uT25NYWluVGhyZWFkKCkgY29u
c3QgPSAwOwogCkBAIC0xNjMsMTAgKzE2MywxMCBAQCBwdWJsaWM6CiAgICAgdmlydHVhbCBJbnRQ
b2ludCBzY3JvbGxQb3NpdGlvbigpIGNvbnN0OwogICAgIHZpcnR1YWwgSW50UG9pbnQgbWluaW11
bVNjcm9sbFBvc2l0aW9uKCkgY29uc3Q7CiAgICAgdmlydHVhbCBJbnRQb2ludCBtYXhpbXVtU2Ny
b2xsUG9zaXRpb24oKSBjb25zdDsKLSAgICB2aXJ0dWFsIGJvb2wgc2Nyb2xsZWRUb1RvcCgpIGNv
bnN0OwotICAgIHZpcnR1YWwgYm9vbCBzY3JvbGxlZFRvQm90dG9tKCkgY29uc3Q7Ci0gICAgdmly
dHVhbCBib29sIHNjcm9sbGVkVG9MZWZ0KCkgY29uc3Q7Ci0gICAgdmlydHVhbCBib29sIHNjcm9s
bGVkVG9SaWdodCgpIGNvbnN0OworICAgIFdFQkNPUkVfRVhQT1JUIHZpcnR1YWwgYm9vbCBzY3Jv
bGxlZFRvVG9wKCkgY29uc3Q7CisgICAgV0VCQ09SRV9FWFBPUlQgdmlydHVhbCBib29sIHNjcm9s
bGVkVG9Cb3R0b20oKSBjb25zdDsKKyAgICBXRUJDT1JFX0VYUE9SVCB2aXJ0dWFsIGJvb2wgc2Ny
b2xsZWRUb0xlZnQoKSBjb25zdDsKKyAgICBXRUJDT1JFX0VYUE9SVCB2aXJ0dWFsIGJvb2wgc2Ny
b2xsZWRUb1JpZ2h0KCkgY29uc3Q7CiAKICAgICBib29sIGlzU2Nyb2xsZWRQcm9ncmFtbWF0aWNh
bGx5KCkgY29uc3QgeyByZXR1cm4gbV9zY3JvbGxlZFByb2dyYW1tYXRpY2FsbHk7IH0KICAgICB2
b2lkIHNldFNjcm9sbGVkUHJvZ3JhbW1hdGljYWxseShib29sIHN0YXRlKSB7IG1fc2Nyb2xsZWRQ
cm9ncmFtbWF0aWNhbGx5ID0gc3RhdGU7IH0KQEAgLTE4Miw4ICsxODIsOCBAQCBwdWJsaWM6CiAj
ZW5kaWYKICAgICB9OwogCi0gICAgSW50UmVjdCB2aXNpYmxlQ29udGVudFJlY3QoVmlzaWJsZUNv
bnRlbnRSZWN0QmVoYXZpb3IgPSBDb250ZW50c1Zpc2libGVSZWN0KSBjb25zdDsKLSAgICBJbnRS
ZWN0IHZpc2libGVDb250ZW50UmVjdEluY2x1ZGluZ1Njcm9sbGJhcnMoVmlzaWJsZUNvbnRlbnRS
ZWN0QmVoYXZpb3IgPSBDb250ZW50c1Zpc2libGVSZWN0KSBjb25zdDsKKyAgICBXRUJDT1JFX0VY
UE9SVCBJbnRSZWN0IHZpc2libGVDb250ZW50UmVjdChWaXNpYmxlQ29udGVudFJlY3RCZWhhdmlv
ciA9IENvbnRlbnRzVmlzaWJsZVJlY3QpIGNvbnN0OworICAgIFdFQkNPUkVfRVhQT1JUIEludFJl
Y3QgdmlzaWJsZUNvbnRlbnRSZWN0SW5jbHVkaW5nU2Nyb2xsYmFycyhWaXNpYmxlQ29udGVudFJl
Y3RCZWhhdmlvciA9IENvbnRlbnRzVmlzaWJsZVJlY3QpIGNvbnN0OwogCiAgICAgaW50IHZpc2li
bGVXaWR0aCgpIGNvbnN0IHsgcmV0dXJuIHZpc2libGVTaXplKCkud2lkdGgoKTsgfQogICAgIGlu
dCB2aXNpYmxlSGVpZ2h0KCkgY29uc3QgeyByZXR1cm4gdmlzaWJsZVNpemUoKS5oZWlnaHQoKTsg
fQpAQCAtMTk4LDcgKzE5OCw3IEBAIHB1YmxpYzoKICAgICB2aXJ0dWFsIGludCBmb290ZXJIZWln
aHQoKSBjb25zdCB7IHJldHVybiAwOyB9CiAKICAgICAvLyBUaGUgdG90YWxDb250ZW50c1NpemUo
KSBpcyBlcXVpdmFsZW50IHRvIHRoZSBjb250ZW50c1NpemUoKSBwbHVzIHRoZSBoZWFkZXIgYW5k
IGZvb3RlciBoZWlnaHRzLgotICAgIEludFNpemUgdG90YWxDb250ZW50c1NpemUoKSBjb25zdDsK
KyAgICBXRUJDT1JFX0VYUE9SVCBJbnRTaXplIHRvdGFsQ29udGVudHNTaXplKCkgY29uc3Q7CiAK
ICAgICB2aXJ0dWFsIGJvb2wgc2hvdWxkU3VzcGVuZFNjcm9sbEFuaW1hdGlvbnMoKSBjb25zdCB7
IHJldHVybiB0cnVlOyB9CiAgICAgdmlydHVhbCB2b2lkIHNjcm9sbGJhclN0eWxlQ2hhbmdlZChp
bnQgLypuZXdTdHlsZSovLCBib29sIC8qZm9yY2VVcGRhdGUqLykgeyB9CkBAIC0yMTUsOSArMjE1
LDkgQEAgcHVibGljOgogICAgIHZpcnR1YWwgYm9vbCBzY3JvbGxBbmltYXRvckVuYWJsZWQoKSBj
b25zdCB7IHJldHVybiBmYWxzZTsgfQogCiAgICAgLy8gTk9URTogT25seSBjYWxsZWQgZnJvbSBJ
bnRlcm5hbHMgZm9yIHRlc3RpbmcuCi0gICAgdm9pZCBzZXRTY3JvbGxPZmZzZXRGcm9tSW50ZXJu
YWxzKGNvbnN0IEludFBvaW50Jik7CisgICAgV0VCQ09SRV9FWFBPUlQgdm9pZCBzZXRTY3JvbGxP
ZmZzZXRGcm9tSW50ZXJuYWxzKGNvbnN0IEludFBvaW50Jik7CiAKLSAgICBzdGF0aWMgTGF5b3V0
UG9pbnQgY29uc3RyYWluU2Nyb2xsUG9zaXRpb25Gb3JPdmVyaGFuZyhjb25zdCBMYXlvdXRSZWN0
JiB2aXNpYmxlQ29udGVudFJlY3QsIGNvbnN0IExheW91dFNpemUmIHRvdGFsQ29udGVudHNTaXpl
LCBjb25zdCBMYXlvdXRQb2ludCYgc2Nyb2xsUG9zaXRpb24sIGNvbnN0IExheW91dFBvaW50JiBz
Y3JvbGxPcmlnaW4sIGludCBoZWFkZXJIZWlnaHQsIGludCBmb290ZXRIZWlnaHQpOworICAgIFdF
QkNPUkVfRVhQT1JUIHN0YXRpYyBMYXlvdXRQb2ludCBjb25zdHJhaW5TY3JvbGxQb3NpdGlvbkZv
ck92ZXJoYW5nKGNvbnN0IExheW91dFJlY3QmIHZpc2libGVDb250ZW50UmVjdCwgY29uc3QgTGF5
b3V0U2l6ZSYgdG90YWxDb250ZW50c1NpemUsIGNvbnN0IExheW91dFBvaW50JiBzY3JvbGxQb3Np
dGlvbiwgY29uc3QgTGF5b3V0UG9pbnQmIHNjcm9sbE9yaWdpbiwgaW50IGhlYWRlckhlaWdodCwg
aW50IGZvb3RldEhlaWdodCk7CiAgICAgTGF5b3V0UG9pbnQgY29uc3RyYWluU2Nyb2xsUG9zaXRp
b25Gb3JPdmVyaGFuZyhjb25zdCBMYXlvdXRQb2ludCYgc2Nyb2xsUG9zaXRpb24pOwogCiAgICAg
Ly8gQ29tcHV0ZXMgdGhlIGRvdWJsZSB2YWx1ZSBmb3IgdGhlIHNjcm9sbGJhcidzIGN1cnJlbnQg
cG9zaXRpb24gYW5kIHRoZSBjdXJyZW50IG92ZXJoYW5nIGFtb3VudC4KQEAgLTI1Myw4ICsyNTMs
OCBAQCBwdWJsaWM6CiAgICAgdm9pZCBob3Jpem9udGFsU2Nyb2xsYmFyTGF5ZXJEaWRDaGFuZ2Uo
KTsKIAogcHJvdGVjdGVkOgotICAgIFNjcm9sbGFibGVBcmVhKCk7Ci0gICAgdmlydHVhbCB+U2Ny
b2xsYWJsZUFyZWEoKTsKKyAgICBXRUJDT1JFX0VYUE9SVCBTY3JvbGxhYmxlQXJlYSgpOworICAg
IFdFQkNPUkVfRVhQT1JUIHZpcnR1YWwgflNjcm9sbGFibGVBcmVhKCk7CiAKICAgICB2b2lkIHNl
dFNjcm9sbE9yaWdpbihjb25zdCBJbnRQb2ludCYpOwogICAgIHZvaWQgcmVzZXRTY3JvbGxPcmln
aW5DaGFuZ2VkKCkgeyBtX3Njcm9sbE9yaWdpbkNoYW5nZWQgPSBmYWxzZTsgfQpAQCAtMjcyLDcg
KzI3Miw3IEBAIHByb3RlY3RlZDoKICAgICBib29sIGhhc0xheWVyRm9yU2Nyb2xsQ29ybmVyKCkg
Y29uc3Q7CiAKIHByaXZhdGU6Ci0gICAgdmlydHVhbCBJbnRSZWN0IHZpc2libGVDb250ZW50UmVj
dEludGVybmFsKFZpc2libGVDb250ZW50UmVjdEluY2x1ZGVzU2Nyb2xsYmFycywgVmlzaWJsZUNv
bnRlbnRSZWN0QmVoYXZpb3IpIGNvbnN0OworICAgIFdFQkNPUkVfRVhQT1JUIHZpcnR1YWwgSW50
UmVjdCB2aXNpYmxlQ29udGVudFJlY3RJbnRlcm5hbChWaXNpYmxlQ29udGVudFJlY3RJbmNsdWRl
c1Njcm9sbGJhcnMsIFZpc2libGVDb250ZW50UmVjdEJlaGF2aW9yKSBjb25zdDsKICAgICB2b2lk
IHNjcm9sbFBvc2l0aW9uQ2hhbmdlZChjb25zdCBJbnRQb2ludCYpOwogICAgIAogICAgIC8vIE5P
VEU6IE9ubHkgY2FsbGVkIGZyb20gdGhlIFNjcm9sbEFuaW1hdG9yLgpJbmRleDogU291cmNlL1dl
YkNvcmUvcGxhdGZvcm0vU2Nyb2xsYmFyLmgKPT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PQotLS0gU291cmNlL1dlYkNvcmUv
cGxhdGZvcm0vU2Nyb2xsYmFyLmgJKHJldmlzaW9uIDE3Mjg0NykKKysrIFNvdXJjZS9XZWJDb3Jl
L3BsYXRmb3JtL1Njcm9sbGJhci5oCSh3b3JraW5nIGNvcHkpCkBAIC00NSw3ICs0NSw3IEBAIGNs
YXNzIFNjcm9sbGJhciA6IHB1YmxpYyBXaWRnZXQsCiAKIHB1YmxpYzoKICAgICAvLyBNdXN0IGJl
IGltcGxlbWVudGVkIGJ5IHBsYXRmb3JtcyB0aGF0IGNhbid0IHNpbXBseSB1c2UgdGhlIFNjcm9s
bGJhciBiYXNlIGNsYXNzLiAgUmlnaHQgbm93IHRoZSBvbmx5IHBsYXRmb3JtIHRoYXQgaXMgbm90
IHVzaW5nIHRoZSBiYXNlIGNsYXNzIGlzIEdUSy4KLSAgICBzdGF0aWMgUGFzc1JlZlB0cjxTY3Jv
bGxiYXI+IGNyZWF0ZU5hdGl2ZVNjcm9sbGJhcihTY3JvbGxhYmxlQXJlYSosIFNjcm9sbGJhck9y
aWVudGF0aW9uIG9yaWVudGF0aW9uLCBTY3JvbGxiYXJDb250cm9sU2l6ZSBzaXplKTsKKyAgICBX
RUJDT1JFX0VYUE9SVCBzdGF0aWMgUGFzc1JlZlB0cjxTY3JvbGxiYXI+IGNyZWF0ZU5hdGl2ZVNj
cm9sbGJhcihTY3JvbGxhYmxlQXJlYSosIFNjcm9sbGJhck9yaWVudGF0aW9uIG9yaWVudGF0aW9u
LCBTY3JvbGxiYXJDb250cm9sU2l6ZSBzaXplKTsKIAogICAgIHZpcnR1YWwgflNjcm9sbGJhcigp
OwogCkBAIC05OCw3ICs5OCw3IEBAIHB1YmxpYzoKIAogICAgIHN0YXRpYyBpbnQgcGl4ZWxzUGVy
TGluZVN0ZXAoKSB7IHJldHVybiA0MDsgfQogICAgIHN0YXRpYyBmbG9hdCBtaW5GcmFjdGlvblRv
U3RlcFdoZW5QYWdpbmcoKSB7IHJldHVybiAwLjg3NWY7IH0KLSAgICBzdGF0aWMgaW50IG1heE92
ZXJsYXBCZXR3ZWVuUGFnZXMoKTsKKyAgICBXRUJDT1JFX0VYUE9SVCBzdGF0aWMgaW50IG1heE92
ZXJsYXBCZXR3ZWVuUGFnZXMoKTsKICAgICBzdGF0aWMgaW50IHBhZ2VTdGVwKGludCB3aWR0aE9y
SGVpZ2h0KSB7IHJldHVybiBzdGQ6Om1heChzdGQ6Om1heDxpbnQ+KGxyb3VuZGYod2lkdGhPckhl
aWdodCAqIFNjcm9sbGJhcjo6bWluRnJhY3Rpb25Ub1N0ZXBXaGVuUGFnaW5nKCkpLCBscm91bmRm
KHdpZHRoT3JIZWlnaHQgLSBTY3JvbGxiYXI6Om1heE92ZXJsYXBCZXR3ZWVuUGFnZXMoKSkpLCAx
KTsgfQogICAgIHN0YXRpYyBmbG9hdCBwYWdlU3RlcERlbHRhKGludCB3aWR0aE9ySGVpZ2h0KSB7
IHJldHVybiBzdGQ6Om1heChzdGQ6Om1heChzdGF0aWNfY2FzdDxmbG9hdD4od2lkdGhPckhlaWdo
dCkgKiBTY3JvbGxiYXI6Om1pbkZyYWN0aW9uVG9TdGVwV2hlblBhZ2luZygpLCBzdGF0aWNfY2Fz
dDxmbG9hdD4od2lkdGhPckhlaWdodCkgLSBTY3JvbGxiYXI6Om1heE92ZXJsYXBCZXR3ZWVuUGFn
ZXMoKSksIDEuMGYpOyB9CiAKQEAgLTExMiw4ICsxMTIsOCBAQCBwdWJsaWM6CiAgICAgdmlydHVh
bCB2b2lkIHNldEhvdmVyZWRQYXJ0KFNjcm9sbGJhclBhcnQpOwogICAgIHZpcnR1YWwgdm9pZCBz
ZXRQcmVzc2VkUGFydChTY3JvbGxiYXJQYXJ0KTsKIAotICAgIHZvaWQgc2V0U3RlcHMoaW50IGxp
bmVTdGVwLCBpbnQgcGFnZVN0ZXAsIGludCBwaXhlbHNQZXJTdGVwID0gMSk7Ci0gICAgdm9pZCBz
ZXRQcm9wb3J0aW9uKGludCB2aXNpYmxlU2l6ZSwgaW50IHRvdGFsU2l6ZSk7CisgICAgV0VCQ09S
RV9FWFBPUlQgdm9pZCBzZXRTdGVwcyhpbnQgbGluZVN0ZXAsIGludCBwYWdlU3RlcCwgaW50IHBp
eGVsc1BlclN0ZXAgPSAxKTsKKyAgICBXRUJDT1JFX0VYUE9SVCB2b2lkIHNldFByb3BvcnRpb24o
aW50IHZpc2libGVTaXplLCBpbnQgdG90YWxTaXplKTsKICAgICB2b2lkIHNldFByZXNzZWRQb3Mo
aW50IHApIHsgbV9wcmVzc2VkUG9zID0gcDsgfQogCiAgICAgdmlydHVhbCB2b2lkIHBhaW50KEdy
YXBoaWNzQ29udGV4dCosIGNvbnN0IEludFJlY3QmIGRhbWFnZVJlY3QpIG92ZXJyaWRlOwpAQCAt
MTI3LDE1ICsxMjcsMTUgQEAgcHVibGljOgogICAgIC8vIHdoZW4gdGhlIG1vdXNlIHdlbnQgZG93
biBpbiBhIHNjcm9sbGJhciwgc2luY2UgaXQgaXMgYXNzdW1lZCB0aGUgc2Nyb2xsYmFyIHdpbGwg
c3RhcnQKICAgICAvLyBncmFiYmluZyBhbGwgZXZlbnRzIGluIHRoYXQgY2FzZSBhbnl3YXkuCiAj
aWYgIVBMQVRGT1JNKElPUykKLSAgICBib29sIG1vdXNlTW92ZWQoY29uc3QgUGxhdGZvcm1Nb3Vz
ZUV2ZW50Jik7CisgICAgV0VCQ09SRV9FWFBPUlQgYm9vbCBtb3VzZU1vdmVkKGNvbnN0IFBsYXRm
b3JtTW91c2VFdmVudCYpOwogI2VuZGlmCi0gICAgdm9pZCBtb3VzZUVudGVyZWQoKTsKLSAgICBi
b29sIG1vdXNlRXhpdGVkKCk7CisgICAgV0VCQ09SRV9FWFBPUlQgdm9pZCBtb3VzZUVudGVyZWQo
KTsKKyAgICBXRUJDT1JFX0VYUE9SVCBib29sIG1vdXNlRXhpdGVkKCk7CiAKICAgICAvLyBVc2Vk
IGJ5IHNvbWUgcGxhdGZvcm0gc2Nyb2xsYmFycyB0byBrbm93IHdoZW4gdGhleSd2ZSBiZWVuIHJl
bGVhc2VkIGZyb20gY2FwdHVyZS4KLSAgICBib29sIG1vdXNlVXAoY29uc3QgUGxhdGZvcm1Nb3Vz
ZUV2ZW50Jik7CisgICAgV0VCQ09SRV9FWFBPUlQgYm9vbCBtb3VzZVVwKGNvbnN0IFBsYXRmb3Jt
TW91c2VFdmVudCYpOwogCi0gICAgYm9vbCBtb3VzZURvd24oY29uc3QgUGxhdGZvcm1Nb3VzZUV2
ZW50Jik7CisgICAgV0VCQ09SRV9FWFBPUlQgYm9vbCBtb3VzZURvd24oY29uc3QgUGxhdGZvcm1N
b3VzZUV2ZW50Jik7CiAKICAgICBTY3JvbGxiYXJUaGVtZSogdGhlbWUoKSBjb25zdCB7IHJldHVy
biBtX3RoZW1lOyB9CiAKSW5kZXg6IFNvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL1Njcm9sbGJhclRo
ZW1lLmgKPT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PQotLS0gU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vU2Nyb2xsYmFyVGhl
bWUuaAkocmV2aXNpb24gMTcyODQ3KQorKysgU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vU2Nyb2xs
YmFyVGhlbWUuaAkod29ya2luZyBjb3B5KQpAQCAtMTEzLDcgKzExMyw3IEBAIHB1YmxpYzoKIAog
ICAgIHZpcnR1YWwgYm9vbCBpc01vY2tUaGVtZSgpIGNvbnN0IHsgcmV0dXJuIGZhbHNlOyB9CiAK
LSAgICBzdGF0aWMgU2Nyb2xsYmFyVGhlbWUqIHRoZW1lKCk7CisgICAgV0VCQ09SRV9FWFBPUlQg
c3RhdGljIFNjcm9sbGJhclRoZW1lKiB0aGVtZSgpOwogCiBwcml2YXRlOgogICAgIHN0YXRpYyBT
Y3JvbGxiYXJUaGVtZSogbmF0aXZlVGhlbWUoKTsgLy8gTXVzdCBiZSBpbXBsZW1lbnRlZCB0byBy
ZXR1cm4gdGhlIGNvcnJlY3QgdGhlbWUgc3ViY2xhc3MuCkluZGV4OiBTb3VyY2UvV2ViQ29yZS9w
bGF0Zm9ybS9TaGFyZWRCdWZmZXIuaAo9PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09Ci0tLSBTb3VyY2UvV2ViQ29yZS9wbGF0
Zm9ybS9TaGFyZWRCdWZmZXIuaAkocmV2aXNpb24gMTcyODQ3KQorKysgU291cmNlL1dlYkNvcmUv
cGxhdGZvcm0vU2hhcmVkQnVmZmVyLmgJKHdvcmtpbmcgY29weSkKQEAgLTU2LDIwICs1NiwyMCBA
QCBwdWJsaWM6CiAgICAgc3RhdGljIFBhc3NSZWZQdHI8U2hhcmVkQnVmZmVyPiBjcmVhdGUoY29u
c3QgY2hhciogYywgdW5zaWduZWQgaSkgeyByZXR1cm4gYWRvcHRSZWYobmV3IFNoYXJlZEJ1ZmZl
cihjLCBpKSk7IH0KICAgICBzdGF0aWMgUGFzc1JlZlB0cjxTaGFyZWRCdWZmZXI+IGNyZWF0ZShj
b25zdCB1bnNpZ25lZCBjaGFyKiBjLCB1bnNpZ25lZCBpKSB7IHJldHVybiBhZG9wdFJlZihuZXcg
U2hhcmVkQnVmZmVyKGMsIGkpKTsgfQogCi0gICAgc3RhdGljIFBhc3NSZWZQdHI8U2hhcmVkQnVm
ZmVyPiBjcmVhdGVXaXRoQ29udGVudHNPZkZpbGUoY29uc3QgU3RyaW5nJiBmaWxlUGF0aCk7Cisg
ICAgV0VCQ09SRV9FWFBPUlQgc3RhdGljIFBhc3NSZWZQdHI8U2hhcmVkQnVmZmVyPiBjcmVhdGVX
aXRoQ29udGVudHNPZkZpbGUoY29uc3QgU3RyaW5nJiBmaWxlUGF0aCk7CiAKLSAgICBzdGF0aWMg
UGFzc1JlZlB0cjxTaGFyZWRCdWZmZXI+IGFkb3B0VmVjdG9yKFZlY3RvcjxjaGFyPiYgdmVjdG9y
KTsKKyAgICBXRUJDT1JFX0VYUE9SVCBzdGF0aWMgUGFzc1JlZlB0cjxTaGFyZWRCdWZmZXI+IGFk
b3B0VmVjdG9yKFZlY3RvcjxjaGFyPiYgdmVjdG9yKTsKICAgICAKLSAgICB+U2hhcmVkQnVmZmVy
KCk7CisgICAgV0VCQ09SRV9FWFBPUlQgflNoYXJlZEJ1ZmZlcigpOwogICAgIAogI2lmIFVTRShG
T1VOREFUSU9OKQotICAgIFJldGFpblB0cjxOU0RhdGE+IGNyZWF0ZU5TRGF0YSgpOwotICAgIHN0
YXRpYyBQYXNzUmVmUHRyPFNoYXJlZEJ1ZmZlcj4gd3JhcE5TRGF0YShOU0RhdGEgKmRhdGEpOwor
ICAgIFdFQkNPUkVfRVhQT1JUIFJldGFpblB0cjxOU0RhdGE+IGNyZWF0ZU5TRGF0YSgpOworICAg
IFdFQkNPUkVfRVhQT1JUIHN0YXRpYyBQYXNzUmVmUHRyPFNoYXJlZEJ1ZmZlcj4gd3JhcE5TRGF0
YShOU0RhdGEgKmRhdGEpOwogI2VuZGlmCiAjaWYgVVNFKENGKQotICAgIFJldGFpblB0cjxDRkRh
dGFSZWY+IGNyZWF0ZUNGRGF0YSgpOwotICAgIENGRGF0YVJlZiBleGlzdGluZ0NGRGF0YSgpOwot
ICAgIHN0YXRpYyBQYXNzUmVmUHRyPFNoYXJlZEJ1ZmZlcj4gd3JhcENGRGF0YShDRkRhdGFSZWYp
OworICAgIFdFQkNPUkVfRVhQT1JUIFJldGFpblB0cjxDRkRhdGFSZWY+IGNyZWF0ZUNGRGF0YSgp
OworICAgIFdFQkNPUkVfRVhQT1JUIENGRGF0YVJlZiBleGlzdGluZ0NGRGF0YSgpOworICAgIFdF
QkNPUkVfRVhQT1JUIHN0YXRpYyBQYXNzUmVmUHRyPFNoYXJlZEJ1ZmZlcj4gd3JhcENGRGF0YShD
RkRhdGFSZWYpOwogI2VuZGlmCiAKICNpZiBVU0UoU09VUCkKQEAgLTc5LDE4ICs3OSwxOCBAQCBw
dWJsaWM6CiAgICAgLy8gQ2FsbGluZyB0aGlzIGZ1bmN0aW9uIHdpbGwgZm9yY2UgaW50ZXJuYWwg
c2VnbWVudGVkIGJ1ZmZlcnMKICAgICAvLyB0byBiZSBtZXJnZWQgaW50byBhIGZsYXQgYnVmZmVy
LiBVc2UgZ2V0U29tZURhdGEoKSB3aGVuZXZlciBwb3NzaWJsZQogICAgIC8vIGZvciBiZXR0ZXIg
cGVyZm9ybWFuY2UuCi0gICAgY29uc3QgY2hhciogZGF0YSgpIGNvbnN0OworICAgIFdFQkNPUkVf
RVhQT1JUIGNvbnN0IGNoYXIqIGRhdGEoKSBjb25zdDsKICAgICAvLyBDcmVhdGVzIGFuIEFycmF5
QnVmZmVyIGFuZCBjb3BpZXMgdGhpcyBTaGFyZWRCdWZmZXIncyBjb250ZW50cyB0byB0aGF0CiAg
ICAgLy8gQXJyYXlCdWZmZXIgd2l0aG91dCBtZXJnaW5nIHNlZ21lbnRlZCBidWZmZXJzIGludG8g
YSBmbGF0IGJ1ZmZlci4KICAgICBQYXNzUmVmUHRyPEFycmF5QnVmZmVyPiBjcmVhdGVBcnJheUJ1
ZmZlcigpIGNvbnN0OwogCi0gICAgdW5zaWduZWQgc2l6ZSgpIGNvbnN0OworICAgIFdFQkNPUkVf
RVhQT1JUIHVuc2lnbmVkIHNpemUoKSBjb25zdDsKIAogCiAgICAgYm9vbCBpc0VtcHR5KCkgY29u
c3QgeyByZXR1cm4gIXNpemUoKTsgfQogCi0gICAgdm9pZCBhcHBlbmQoU2hhcmVkQnVmZmVyKik7
Ci0gICAgdm9pZCBhcHBlbmQoY29uc3QgY2hhciosIHVuc2lnbmVkKTsKKyAgICBXRUJDT1JFX0VY
UE9SVCB2b2lkIGFwcGVuZChTaGFyZWRCdWZmZXIqKTsKKyAgICBXRUJDT1JFX0VYUE9SVCB2b2lk
IGFwcGVuZChjb25zdCBjaGFyKiwgdW5zaWduZWQpOwogICAgIHZvaWQgYXBwZW5kKGNvbnN0IFZl
Y3RvcjxjaGFyPiYpOwogCiAgICAgdm9pZCBjbGVhcigpOwpAQCAtMTE2LDE0ICsxMTYsMTQgQEAg
cHVibGljOgogICAgIC8vICAgICAgICAgIC8vIFVzZSB0aGUgZGF0YS4gZm9yIGV4YW1wbGU6IGRl
Y29kZXItPmRlY29kZShzZWdtZW50LCBsZW5ndGgpOwogICAgIC8vICAgICAgICAgIHBvcyArPSBs
ZW5ndGg7CiAgICAgLy8gICAgICB9Ci0gICAgdW5zaWduZWQgZ2V0U29tZURhdGEoY29uc3QgY2hh
ciomIGRhdGEsIHVuc2lnbmVkIHBvc2l0aW9uID0gMCkgY29uc3Q7CisgICAgV0VCQ09SRV9FWFBP
UlQgdW5zaWduZWQgZ2V0U29tZURhdGEoY29uc3QgY2hhciomIGRhdGEsIHVuc2lnbmVkIHBvc2l0
aW9uID0gMCkgY29uc3Q7CiAKICNpZiBFTkFCTEUoRElTS19JTUFHRV9DQUNIRSkKICAgICBlbnVt
IE1lbW9yeU1hcHBpbmdTdGF0ZSB7IFF1ZXVlZEZvck1hcHBpbmcsIFByZXZpb3VzbHlRdWV1ZWRG
b3JNYXBwaW5nLCBTdWNjZXNzQWxyZWFkeU1hcHBlZCwgRmFpbHVyZUNhY2hlRnVsbCB9OwogCiAg
ICAgLy8gQ2FsbGluZyB0aGlzIHdpbGwgY2F1c2UgdGhpcyBidWZmZXIgdG8gYmUgbWVtb3J5IG1h
cHBlZC4KLSAgICBNZW1vcnlNYXBwaW5nU3RhdGUgYWxsb3dUb0JlTWVtb3J5TWFwcGVkKCk7Ci0g
ICAgYm9vbCBpc0FsbG93ZWRUb0JlTWVtb3J5TWFwcGVkKCkgY29uc3Q7CisgICAgV0VCQ09SRV9F
WFBPUlQgTWVtb3J5TWFwcGluZ1N0YXRlIGFsbG93VG9CZU1lbW9yeU1hcHBlZCgpOworICAgIFdF
QkNPUkVfRVhQT1JUIGJvb2wgaXNBbGxvd2VkVG9CZU1lbW9yeU1hcHBlZCgpIGNvbnN0OwogCiAg
ICAgLy8gVGhpcyBpcyBjYWxsZWQgdG8gaW5kaWNhdGUgdGhhdCB0aGUgbWVtb3J5IG1hcHBpbmcg
ZmFpbGVkLgogICAgIHZvaWQgZmFpbGVkTWVtb3J5TWFwKCk7CkBAIC0xMzcsMjMgKzEzNywyMyBA
QCBwdWJsaWM6CiAgICAgdHlwZWRlZiB2b2lkKiBNZW1vcnlNYXBwZWROb3RpZnlDYWxsYmFja0Rh
dGE7CiAgICAgdHlwZWRlZiB2b2lkICgqTWVtb3J5TWFwcGVkTm90aWZ5Q2FsbGJhY2spKFBhc3NS
ZWZQdHI8U2hhcmVkQnVmZmVyPiwgQ29tcGxldGlvblN0YXR1cywgTWVtb3J5TWFwcGVkTm90aWZ5
Q2FsbGJhY2tEYXRhKTsKIAotICAgIE1lbW9yeU1hcHBlZE5vdGlmeUNhbGxiYWNrRGF0YSBtZW1v
cnlNYXBwZWROb3RpZmljYXRpb25DYWxsYmFja0RhdGEoKSBjb25zdDsKLSAgICBNZW1vcnlNYXBw
ZWROb3RpZnlDYWxsYmFjayBtZW1vcnlNYXBwZWROb3RpZmljYXRpb25DYWxsYmFjaygpIGNvbnN0
OwotICAgIHZvaWQgc2V0TWVtb3J5TWFwcGVkTm90aWZpY2F0aW9uQ2FsbGJhY2soTWVtb3J5TWFw
cGVkTm90aWZ5Q2FsbGJhY2ssIE1lbW9yeU1hcHBlZE5vdGlmeUNhbGxiYWNrRGF0YSk7CisgICAg
V0VCQ09SRV9FWFBPUlQgTWVtb3J5TWFwcGVkTm90aWZ5Q2FsbGJhY2tEYXRhIG1lbW9yeU1hcHBl
ZE5vdGlmaWNhdGlvbkNhbGxiYWNrRGF0YSgpIGNvbnN0OworICAgIFdFQkNPUkVfRVhQT1JUIE1l
bW9yeU1hcHBlZE5vdGlmeUNhbGxiYWNrIG1lbW9yeU1hcHBlZE5vdGlmaWNhdGlvbkNhbGxiYWNr
KCkgY29uc3Q7CisgICAgV0VCQ09SRV9FWFBPUlQgdm9pZCBzZXRNZW1vcnlNYXBwZWROb3RpZmlj
YXRpb25DYWxsYmFjayhNZW1vcnlNYXBwZWROb3RpZnlDYWxsYmFjaywgTWVtb3J5TWFwcGVkTm90
aWZ5Q2FsbGJhY2tEYXRhKTsKICNlbmRpZgogCiAgICAgdm9pZCB0cnlSZXBsYWNlQ29udGVudHNX
aXRoUGxhdGZvcm1CdWZmZXIoU2hhcmVkQnVmZmVyKik7Ci0gICAgYm9vbCBoYXNQbGF0Zm9ybURh
dGEoKSBjb25zdDsKKyAgICBXRUJDT1JFX0VYUE9SVCBib29sIGhhc1BsYXRmb3JtRGF0YSgpIGNv
bnN0OwogCiAgICAgc3RydWN0IERhdGFCdWZmZXIgOiBwdWJsaWMgVGhyZWFkU2FmZVJlZkNvdW50
ZWQ8RGF0YUJ1ZmZlcj4gewogICAgICAgICBWZWN0b3I8Y2hhcj4gZGF0YTsKICAgICB9OwogCiBw
cml2YXRlOgotICAgIFNoYXJlZEJ1ZmZlcigpOworICAgIFdFQkNPUkVfRVhQT1JUIFNoYXJlZEJ1
ZmZlcigpOwogICAgIGV4cGxpY2l0IFNoYXJlZEJ1ZmZlcih1bnNpZ25lZCk7Ci0gICAgU2hhcmVk
QnVmZmVyKGNvbnN0IGNoYXIqLCB1bnNpZ25lZCk7Ci0gICAgU2hhcmVkQnVmZmVyKGNvbnN0IHVu
c2lnbmVkIGNoYXIqLCB1bnNpZ25lZCk7CisgICAgV0VCQ09SRV9FWFBPUlQgU2hhcmVkQnVmZmVy
KGNvbnN0IGNoYXIqLCB1bnNpZ25lZCk7CisgICAgV0VCQ09SRV9FWFBPUlQgU2hhcmVkQnVmZmVy
KGNvbnN0IHVuc2lnbmVkIGNoYXIqLCB1bnNpZ25lZCk7CiAgICAgCiAgICAgLy8gQ2FsbGluZyB0
aGlzIGZ1bmN0aW9uIHdpbGwgZm9yY2UgaW50ZXJuYWwgc2VnbWVudGVkIGJ1ZmZlcnMKICAgICAv
LyB0byBiZSBtZXJnZWQgaW50byBhIGZsYXQgYnVmZmVyLiBVc2UgZ2V0U29tZURhdGEoKSB3aGVu
ZXZlciBwb3NzaWJsZQpJbmRleDogU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vVGhyZWFkQ2hlY2su
aAo9PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09Ci0tLSBTb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9UaHJlYWRDaGVjay5oCShy
ZXZpc2lvbiAxNzI4NDcpCisrKyBTb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9UaHJlYWRDaGVjay5o
CSh3b3JraW5nIGNvcHkpCkBAIC0zOSw4ICszOSw4IEBAIG5hbWVzcGFjZSBXZWJDb3JlIHsKICAg
ICAgICAgVGhyZWFkVmlvbGF0aW9uUm91bmRUd28sCiAgICAgICAgIE1heGltdW1UaHJlYWRWaW9s
YXRpb25Sb3VuZAogICAgIH07Ci0gICAgdm9pZCBzZXREZWZhdWx0VGhyZWFkVmlvbGF0aW9uQmVo
YXZpb3IoVGhyZWFkVmlvbGF0aW9uQmVoYXZpb3IsIFRocmVhZFZpb2xhdGlvblJvdW5kKTsKLSAg
ICB2b2lkIHJlcG9ydFRocmVhZFZpb2xhdGlvbihjb25zdCBjaGFyKiBmdW5jdGlvbiwgVGhyZWFk
VmlvbGF0aW9uUm91bmQpOworICAgIFdFQkNPUkVfRVhQT1JUIHZvaWQgc2V0RGVmYXVsdFRocmVh
ZFZpb2xhdGlvbkJlaGF2aW9yKFRocmVhZFZpb2xhdGlvbkJlaGF2aW9yLCBUaHJlYWRWaW9sYXRp
b25Sb3VuZCk7CisgICAgV0VCQ09SRV9FWFBPUlQgdm9pZCByZXBvcnRUaHJlYWRWaW9sYXRpb24o
Y29uc3QgY2hhciogZnVuY3Rpb24sIFRocmVhZFZpb2xhdGlvblJvdW5kKTsKIH0KIAogZXh0ZXJu
ICJDIiB2b2lkIFdlYkNvcmVSZXBvcnRUaHJlYWRWaW9sYXRpb24oY29uc3QgY2hhciogZnVuY3Rp
b24sIFdlYkNvcmU6OlRocmVhZFZpb2xhdGlvblJvdW5kKTsKSW5kZXg6IFNvdXJjZS9XZWJDb3Jl
L3BsYXRmb3JtL1RocmVhZEdsb2JhbERhdGEuaAo9PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09Ci0tLSBTb3VyY2UvV2ViQ29y
ZS9wbGF0Zm9ybS9UaHJlYWRHbG9iYWxEYXRhLmgJKHJldmlzaW9uIDE3Mjg0NykKKysrIFNvdXJj
ZS9XZWJDb3JlL3BsYXRmb3JtL1RocmVhZEdsb2JhbERhdGEuaAkod29ya2luZyBjb3B5KQpAQCAt
NTAsOCArNTAsOCBAQCBuYW1lc3BhY2UgV2ViQ29yZSB7CiAgICAgY2xhc3MgVGhyZWFkR2xvYmFs
RGF0YSB7CiAgICAgICAgIFdURl9NQUtFX05PTkNPUFlBQkxFKFRocmVhZEdsb2JhbERhdGEpOwog
ICAgIHB1YmxpYzoKLSAgICAgICAgVGhyZWFkR2xvYmFsRGF0YSgpOwotICAgICAgICB+VGhyZWFk
R2xvYmFsRGF0YSgpOworICAgICAgICBXRUJDT1JFX0VYUE9SVCBUaHJlYWRHbG9iYWxEYXRhKCk7
CisgICAgICAgIFdFQkNPUkVfRVhQT1JUIH5UaHJlYWRHbG9iYWxEYXRhKCk7CiAgICAgICAgIHZv
aWQgZGVzdHJveSgpOyAvLyBjYWxsZWQgb24gd29ya2VycyB0byBjbGVhbiB1cCB0aGUgVGhyZWFk
R2xvYmFsRGF0YSBiZWZvcmUgdGhlIHRocmVhZCBleGl0cy4KIAogICAgICAgICBjb25zdCBDYWNo
ZWRSZXNvdXJjZVJlcXVlc3RJbml0aWF0b3JzJiBjYWNoZWRSZXNvdXJjZVJlcXVlc3RJbml0aWF0
b3JzKCkgeyByZXR1cm4gKm1fY2FjaGVkUmVzb3VyY2VSZXF1ZXN0SW5pdGlhdG9yczsgfQpAQCAt
OTAsMTcgKzkwLDE3IEBAIG5hbWVzcGFjZSBXZWJDb3JlIHsKICAgICAgICAgT3duUHRyPFRFQ0Nv
bnZlcnRlcldyYXBwZXI+IG1fY2FjaGVkQ29udmVydGVyVEVDOwogI2VuZGlmCiAKLSAgICAgICAg
c3RhdGljIFRocmVhZFNwZWNpZmljPFRocmVhZEdsb2JhbERhdGE+KiBzdGF0aWNEYXRhOworICAg
ICAgICBXRUJDT1JFX0VYUE9SVCBzdGF0aWMgVGhyZWFkU3BlY2lmaWM8VGhyZWFkR2xvYmFsRGF0
YT4qIHN0YXRpY0RhdGE7CiAjaWYgVVNFKFdFQl9USFJFQUQpCi0gICAgICAgIHN0YXRpYyBUaHJl
YWRHbG9iYWxEYXRhKiBzaGFyZWRNYWluVGhyZWFkU3RhdGljRGF0YTsKKyAgICAgICAgV0VCQ09S
RV9FWFBPUlQgc3RhdGljIFRocmVhZEdsb2JhbERhdGEqIHNoYXJlZE1haW5UaHJlYWRTdGF0aWNE
YXRhOwogI2VuZGlmCiAgICAgICAgIGZyaWVuZCBUaHJlYWRHbG9iYWxEYXRhJiB0aHJlYWRHbG9i
YWxEYXRhKCk7CiAgICAgfTsKIAogI2lmIFVTRShXRUJfVEhSRUFEKQotVGhyZWFkR2xvYmFsRGF0
YSYgdGhyZWFkR2xvYmFsRGF0YSgpOworV0VCQ09SRV9FWFBPUlQgVGhyZWFkR2xvYmFsRGF0YSYg
dGhyZWFkR2xvYmFsRGF0YSgpOwogI2Vsc2UKLVRocmVhZEdsb2JhbERhdGEmIHRocmVhZEdsb2Jh
bERhdGEoKSBQVVJFX0ZVTkNUSU9OOworV0VCQ09SRV9FWFBPUlQgVGhyZWFkR2xvYmFsRGF0YSYg
dGhyZWFkR2xvYmFsRGF0YSgpIFBVUkVfRlVOQ1RJT047CiAjZW5kaWYKICAgICAKIH0gLy8gbmFt
ZXNwYWNlIFdlYkNvcmUKSW5kZXg6IFNvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL1RpbWVyLmgKPT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PQotLS0gU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vVGltZXIuaAkocmV2aXNpb24gMTcy
ODQ3KQorKysgU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vVGltZXIuaAkod29ya2luZyBjb3B5KQpA
QCAtNDYsMTcgKzQ2LDE3IEBAIGNsYXNzIFRpbWVyQmFzZSB7CiAgICAgV1RGX01BS0VfTk9OQ09Q
WUFCTEUoVGltZXJCYXNlKTsKICAgICBXVEZfTUFLRV9GQVNUX0FMTE9DQVRFRDsKIHB1YmxpYzoK
LSAgICBUaW1lckJhc2UoKTsKLSAgICB2aXJ0dWFsIH5UaW1lckJhc2UoKTsKKyAgICBXRUJDT1JF
X0VYUE9SVCBUaW1lckJhc2UoKTsKKyAgICBXRUJDT1JFX0VYUE9SVCB2aXJ0dWFsIH5UaW1lckJh
c2UoKTsKIAotICAgIHZvaWQgc3RhcnQoZG91YmxlIG5leHRGaXJlSW50ZXJ2YWwsIGRvdWJsZSBy
ZXBlYXRJbnRlcnZhbCk7CisgICAgV0VCQ09SRV9FWFBPUlQgdm9pZCBzdGFydChkb3VibGUgbmV4
dEZpcmVJbnRlcnZhbCwgZG91YmxlIHJlcGVhdEludGVydmFsKTsKIAogICAgIHZvaWQgc3RhcnRS
ZXBlYXRpbmcoZG91YmxlIHJlcGVhdEludGVydmFsKSB7IHN0YXJ0KHJlcGVhdEludGVydmFsLCBy
ZXBlYXRJbnRlcnZhbCk7IH0KICAgICB2b2lkIHN0YXJ0UmVwZWF0aW5nKHN0ZDo6Y2hyb25vOjpt
aWxsaXNlY29uZHMgcmVwZWF0SW50ZXJ2YWwpIHsgc3RhcnRSZXBlYXRpbmcocmVwZWF0SW50ZXJ2
YWwuY291bnQoKSAqIDAuMDAxKTsgfQogICAgIHZvaWQgc3RhcnRPbmVTaG90KGRvdWJsZSBpbnRl
cnZhbCkgeyBzdGFydChpbnRlcnZhbCwgMCk7IH0KICAgICB2b2lkIHN0YXJ0T25lU2hvdChzdGQ6
OmNocm9ubzo6bWlsbGlzZWNvbmRzIGludGVydmFsKSB7IHN0YXJ0T25lU2hvdChpbnRlcnZhbC5j
b3VudCgpICogMC4wMDEpOyB9CiAKLSAgICB2b2lkIHN0b3AoKTsKKyAgICBXRUJDT1JFX0VYUE9S
VCB2b2lkIHN0b3AoKTsKICAgICBib29sIGlzQWN0aXZlKCkgY29uc3Q7CiAKICAgICBkb3VibGUg
bmV4dEZpcmVJbnRlcnZhbCgpIGNvbnN0OwpJbmRleDogU291cmNlL1dlYkNvcmUvcGxhdGZvcm0v
VVJMLmgKPT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PQotLS0gU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vVVJMLmgJKHJldmlz
aW9uIDE3Mjg0NykKKysrIFNvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL1VSTC5oCSh3b3JraW5nIGNv
cHkpCkBAIC01OCw3ICs1OCw3IEBAIHB1YmxpYzoKICAgICAvLyBUaGUgYXJndW1lbnQgaXMgYW4g
YWJzb2x1dGUgVVJMIHN0cmluZy4gVGhlIHN0cmluZyBpcyBhc3N1bWVkIHRvIGJlIG91dHB1dCBv
ZiBVUkw6OnN0cmluZygpIGNhbGxlZCBvbiBhIHZhbGlkCiAgICAgLy8gVVJMIG9iamVjdCwgb3Ig
aW5kaXNjZXJuaWJsZSBmcm9tIHN1Y2guCiAgICAgLy8gSXQgaXMgdXN1YWxseSBiZXN0IHRvIGF2
b2lkIHJlcGVhdGVkbHkgcGFyc2luZyBhIHN0cmluZywgdW5sZXNzIG1lbW9yeSBzYXZpbmcgb3V0
d2VpZ2ggdGhlIHBvc3NpYmxlIHNsb3ctZG93bnMuCi0gICAgVVJMKFBhcnNlZFVSTFN0cmluZ1Rh
ZywgY29uc3QgU3RyaW5nJik7CisgICAgV0VCQ09SRV9FWFBPUlQgVVJMKFBhcnNlZFVSTFN0cmlu
Z1RhZywgY29uc3QgU3RyaW5nJik7CiAgICAgZXhwbGljaXQgVVJMKFdURjo6SGFzaFRhYmxlRGVs
ZXRlZFZhbHVlVHlwZSkgOiBtX3N0cmluZyhXVEY6Okhhc2hUYWJsZURlbGV0ZWRWYWx1ZSkgeyB9
CiAgICAgYm9vbCBpc0hhc2hUYWJsZURlbGV0ZWRWYWx1ZSgpIGNvbnN0IHsgcmV0dXJuIHN0cmlu
ZygpLmlzSGFzaFRhYmxlRGVsZXRlZFZhbHVlKCk7IH0KIApAQCAtNjksNyArNjksNyBAQCBwdWJs
aWM6CiAgICAgLy8gRklYTUU6IElmIHRoZSBiYXNlIFVSTCBpcyBpbnZhbGlkLCB0aGlzIGFsd2F5
cyBjcmVhdGVzIGFuIGludmFsaWQKICAgICAvLyBVUkwuIEluc3RlYWQgSSB0aGluayBpdCB3b3Vs
ZCBiZSBiZXR0ZXIgdG8gdHJlYXQgYWxsIGludmFsaWQgYmFzZSBVUkxzCiAgICAgLy8gdGhlIHNh
bWUgd2F5IHdlIHRyZWF0ZSBudWxsIGFuZCBlbXB0eSBiYXNlIFVSTHMuCi0gICAgVVJMKGNvbnN0
IFVSTCYgYmFzZSwgY29uc3QgU3RyaW5nJiByZWxhdGl2ZSk7CisgICAgV0VCQ09SRV9FWFBPUlQg
VVJMKGNvbnN0IFVSTCYgYmFzZSwgY29uc3QgU3RyaW5nJiByZWxhdGl2ZSk7CiAgICAgVVJMKGNv
bnN0IFVSTCYgYmFzZSwgY29uc3QgU3RyaW5nJiByZWxhdGl2ZSwgY29uc3QgVGV4dEVuY29kaW5n
Jik7CiAKICAgICBzdGF0aWMgVVJMIGZha2VVUkxXaXRoUmVsYXRpdmVQYXJ0KGNvbnN0IFN0cmlu
ZyYpOwpAQCAtMTAwLDMxICsxMDAsMzEgQEAgcHVibGljOgogCiAgICAgU3RyaW5nIHN0cmluZ0Nl
bnRlckVsbGlwc2l6ZWRUb0xlbmd0aCh1bnNpZ25lZCBsZW5ndGggPSAxMDI0KSBjb25zdDsKIAot
ICAgIFN0cmluZyBwcm90b2NvbCgpIGNvbnN0OwotICAgIFN0cmluZyBob3N0KCkgY29uc3Q7Ci0g
ICAgdW5zaWduZWQgc2hvcnQgcG9ydCgpIGNvbnN0OworICAgIFdFQkNPUkVfRVhQT1JUIFN0cmlu
ZyBwcm90b2NvbCgpIGNvbnN0OworICAgIFdFQkNPUkVfRVhQT1JUIFN0cmluZyBob3N0KCkgY29u
c3Q7CisgICAgV0VCQ09SRV9FWFBPUlQgdW5zaWduZWQgc2hvcnQgcG9ydCgpIGNvbnN0OwogICAg
IGJvb2wgaGFzUG9ydCgpIGNvbnN0OwotICAgIFN0cmluZyB1c2VyKCkgY29uc3Q7Ci0gICAgU3Ry
aW5nIHBhc3MoKSBjb25zdDsKLSAgICBTdHJpbmcgcGF0aCgpIGNvbnN0OwotICAgIFN0cmluZyBs
YXN0UGF0aENvbXBvbmVudCgpIGNvbnN0OwotICAgIFN0cmluZyBxdWVyeSgpIGNvbnN0OwotICAg
IFN0cmluZyBmcmFnbWVudElkZW50aWZpZXIoKSBjb25zdDsKLSAgICBib29sIGhhc0ZyYWdtZW50
SWRlbnRpZmllcigpIGNvbnN0OworICAgIFdFQkNPUkVfRVhQT1JUIFN0cmluZyB1c2VyKCkgY29u
c3Q7CisgICAgV0VCQ09SRV9FWFBPUlQgU3RyaW5nIHBhc3MoKSBjb25zdDsKKyAgICBXRUJDT1JF
X0VYUE9SVCBTdHJpbmcgcGF0aCgpIGNvbnN0OworICAgIFdFQkNPUkVfRVhQT1JUIFN0cmluZyBs
YXN0UGF0aENvbXBvbmVudCgpIGNvbnN0OworICAgIFdFQkNPUkVfRVhQT1JUIFN0cmluZyBxdWVy
eSgpIGNvbnN0OworICAgIFdFQkNPUkVfRVhQT1JUIFN0cmluZyBmcmFnbWVudElkZW50aWZpZXIo
KSBjb25zdDsKKyAgICBXRUJDT1JFX0VYUE9SVCBib29sIGhhc0ZyYWdtZW50SWRlbnRpZmllcigp
IGNvbnN0OwogCi0gICAgU3RyaW5nIGJhc2VBc1N0cmluZygpIGNvbnN0OworICAgIFdFQkNPUkVf
RVhQT1JUIFN0cmluZyBiYXNlQXNTdHJpbmcoKSBjb25zdDsKIAotICAgIFN0cmluZyBmaWxlU3lz
dGVtUGF0aCgpIGNvbnN0OworICAgIFdFQkNPUkVfRVhQT1JUIFN0cmluZyBmaWxlU3lzdGVtUGF0
aCgpIGNvbnN0OwogCiAgICAgLy8gUmV0dXJucyB0cnVlIGlmIHRoZSBjdXJyZW50IFVSTCdzIHBy
b3RvY29sIGlzIHRoZSBzYW1lIGFzIHRoZSBudWxsLQogICAgIC8vIHRlcm1pbmF0ZWQgQVNDSUkg
YXJndW1lbnQuIFRoZSBhcmd1bWVudCBtdXN0IGJlIGxvd2VyLWNhc2UuCi0gICAgYm9vbCBwcm90
b2NvbElzKGNvbnN0IGNoYXIqKSBjb25zdDsKKyAgICBXRUJDT1JFX0VYUE9SVCBib29sIHByb3Rv
Y29sSXMoY29uc3QgY2hhciopIGNvbnN0OwogICAgIGJvb2wgcHJvdG9jb2xJc0RhdGEoKSBjb25z
dCB7IHJldHVybiBwcm90b2NvbElzKCJkYXRhIik7IH0KICAgICBib29sIHByb3RvY29sSXNJbkhU
VFBGYW1pbHkoKSBjb25zdDsKLSAgICBib29sIGlzTG9jYWxGaWxlKCkgY29uc3Q7CisgICAgV0VC
Q09SRV9FWFBPUlQgYm9vbCBpc0xvY2FsRmlsZSgpIGNvbnN0OwogICAgIGJvb2wgaXNCbGFua1VS
TCgpIGNvbnN0OwogCi0gICAgYm9vbCBzZXRQcm90b2NvbChjb25zdCBTdHJpbmcmKTsKKyAgICBX
RUJDT1JFX0VYUE9SVCBib29sIHNldFByb3RvY29sKGNvbnN0IFN0cmluZyYpOwogICAgIHZvaWQg
c2V0SG9zdChjb25zdCBTdHJpbmcmKTsKIAogICAgIHZvaWQgcmVtb3ZlUG9ydCgpOwpAQCAtMTM4
LDcgKzEzOCw3IEBAIHB1YmxpYzoKIAogICAgIC8vIElmIHlvdSBwYXNzIGFuIGVtcHR5IHBhdGgg
Zm9yIEhUVFAgb3IgSFRUUFMgVVJMcywgdGhlIHJlc3VsdGluZyBwYXRoCiAgICAgLy8gd2lsbCBi
ZSAiLyIuCi0gICAgdm9pZCBzZXRQYXRoKGNvbnN0IFN0cmluZyYpOworICAgIFdFQkNPUkVfRVhQ
T1JUIHZvaWQgc2V0UGF0aChjb25zdCBTdHJpbmcmKTsKIAogICAgIC8vIFRoZSBxdWVyeSBtYXkg
YmVnaW4gd2l0aCBhIHF1ZXN0aW9uIG1hcmssIG9yLCBpZiBub3QsIG9uZSB3aWxsIGJlIGFkZGVk
CiAgICAgLy8gZm9yIHlvdS4gU2V0dGluZyB0aGUgcXVlcnkgdG8gdGhlIGVtcHR5IHN0cmluZyB3
aWxsIGxlYXZlIGEgIj8iIGluIHRoZQpAQCAtMTYyLDggKzE2Miw4IEBAIHB1YmxpYzoKICAgICBv
cGVyYXRvciBjb25zdCBTdHJpbmcmKCkgY29uc3QgeyByZXR1cm4gc3RyaW5nKCk7IH0KIAogI2lm
IFVTRShDRikKLSAgICBVUkwoQ0ZVUkxSZWYpOwotICAgIFJldGFpblB0cjxDRlVSTFJlZj4gY3Jl
YXRlQ0ZVUkwoKSBjb25zdDsKKyAgICBXRUJDT1JFX0VYUE9SVCBVUkwoQ0ZVUkxSZWYpOworICAg
IFdFQkNPUkVfRVhQT1JUIFJldGFpblB0cjxDRlVSTFJlZj4gY3JlYXRlQ0ZVUkwoKSBjb25zdDsK
ICNlbmRpZgogCiAjaWYgVVNFKFNPVVApCkBAIC0xNzIsOCArMTcyLDggQEAgcHVibGljOgogI2Vu
ZGlmCiAKICNpZiBVU0UoRk9VTkRBVElPTikKLSAgICBVUkwoTlNVUkwqKTsKLSAgICBvcGVyYXRv
ciBOU1VSTCooKSBjb25zdDsKKyAgICBXRUJDT1JFX0VYUE9SVCBVUkwoTlNVUkwqKTsKKyAgICBX
RUJDT1JFX0VYUE9SVCBvcGVyYXRvciBOU1VSTCooKSBjb25zdDsKICNlbmRpZgogI2lmZGVmIF9f
T0JKQ19fCiAgICAgb3BlcmF0b3IgTlNTdHJpbmcqKCkgY29uc3QgeyByZXR1cm4gc3RyaW5nKCk7
IH0KQEAgLTE4OCw3ICsxODgsNyBAQCBwdWJsaWM6CiAgICAgYm9vbCBpc1NhZmVUb1NlbmRUb0Fu
b3RoZXJUaHJlYWQoKSBjb25zdDsKIAogcHJpdmF0ZToKLSAgICB2b2lkIGludmFsaWRhdGUoKTsK
KyAgICBXRUJDT1JFX0VYUE9SVCB2b2lkIGludmFsaWRhdGUoKTsKICAgICBzdGF0aWMgYm9vbCBw
cm90b2NvbElzKGNvbnN0IFN0cmluZyYsIGNvbnN0IGNoYXIqKTsKICAgICB2b2lkIGluaXQoY29u
c3QgVVJMJiwgY29uc3QgU3RyaW5nJiwgY29uc3QgVGV4dEVuY29kaW5nJik7CiAgICAgdm9pZCBj
b3B5VG9CdWZmZXIoVmVjdG9yPGNoYXIsIDUxMj4mIGJ1ZmZlcikgY29uc3Q7CkBAIC0yMjQsMTAg
KzIyNCwxMCBAQCBib29sIG9wZXJhdG9yIT0oY29uc3QgVVJMJiwgY29uc3QgVVJMJik7CiBib29s
IG9wZXJhdG9yIT0oY29uc3QgVVJMJiwgY29uc3QgU3RyaW5nJik7CiBib29sIG9wZXJhdG9yIT0o
Y29uc3QgU3RyaW5nJiwgY29uc3QgVVJMJik7CiAKLWJvb2wgZXF1YWxJZ25vcmluZ0ZyYWdtZW50
SWRlbnRpZmllcihjb25zdCBVUkwmLCBjb25zdCBVUkwmKTsKLWJvb2wgcHJvdG9jb2xIb3N0QW5k
UG9ydEFyZUVxdWFsKGNvbnN0IFVSTCYsIGNvbnN0IFVSTCYpOworV0VCQ09SRV9FWFBPUlQgYm9v
bCBlcXVhbElnbm9yaW5nRnJhZ21lbnRJZGVudGlmaWVyKGNvbnN0IFVSTCYsIGNvbnN0IFVSTCYp
OworV0VCQ09SRV9FWFBPUlQgYm9vbCBwcm90b2NvbEhvc3RBbmRQb3J0QXJlRXF1YWwoY29uc3Qg
VVJMJiwgY29uc3QgVVJMJik7CiAKLWNvbnN0IFVSTCYgYmxhbmtVUkwoKTsKK1dFQkNPUkVfRVhQ
T1JUIGNvbnN0IFVSTCYgYmxhbmtVUkwoKTsKIAogLy8gRnVuY3Rpb25zIHRvIGRvIFVSTCBvcGVy
YXRpb25zIG9uIHN0cmluZ3MuCiAvLyBUaGVzZSBhcmUgb3BlcmF0aW9ucyB0aGF0IGFyZW4ndCBm
YXN0ZXIgb24gYSBwYXJzZWQgVVJMLgpAQCAtMjM1LDcgKzIzNSw3IEBAIGNvbnN0IFVSTCYgYmxh
bmtVUkwoKTsKIC8vIFRoaXMgaXMgZXNwZWNpYWxseSBpbXBvcnRhbnQgYmVjYXVzZSB2YWxpZCBq
YXZhc2NyaXB0IFVSTHMgYXJlIG5vdCBuZWNlc3NhcmlseSBjb25zaWRlcmVkIHZhbGlkIGJ5IFVS
TC4KIAogYm9vbCBwcm90b2NvbElzKGNvbnN0IFN0cmluZyYgdXJsLCBjb25zdCBjaGFyKiBwcm90
b2NvbCk7Ci1ib29sIHByb3RvY29sSXNKYXZhU2NyaXB0KGNvbnN0IFN0cmluZyYgdXJsKTsKK1dF
QkNPUkVfRVhQT1JUIGJvb2wgcHJvdG9jb2xJc0phdmFTY3JpcHQoY29uc3QgU3RyaW5nJiB1cmwp
OwogYm9vbCBwcm90b2NvbElzSW5IVFRQRmFtaWx5KGNvbnN0IFN0cmluZyYgdXJsKTsKIAogYm9v
bCBpc0RlZmF1bHRQb3J0Rm9yUHJvdG9jb2wodW5zaWduZWQgc2hvcnQgcG9ydCwgY29uc3QgU3Ry
aW5nJiBwcm90b2NvbCk7CkBAIC0yNDQsMTUgKzI0NCwxNSBAQCBib29sIHBvcnRBbGxvd2VkKGNv
bnN0IFVSTCYpOyAvLyBCbGFja2xpCiBib29sIGlzVmFsaWRQcm90b2NvbChjb25zdCBTdHJpbmcm
KTsKIAogU3RyaW5nIG1pbWVUeXBlRnJvbURhdGFVUkwoY29uc3QgU3RyaW5nJiB1cmwpOwotU3Ry
aW5nIG1pbWVUeXBlRnJvbVVSTChjb25zdCBVUkwmKTsKK1dFQkNPUkVfRVhQT1JUIFN0cmluZyBt
aW1lVHlwZUZyb21VUkwoY29uc3QgVVJMJik7CiAKIC8vIFVuZXNjYXBlcyB0aGUgZ2l2ZW4gc3Ry
aW5nIHVzaW5nIFVSTCBlc2NhcGluZyBydWxlcywgZ2l2ZW4gYW4gb3B0aW9uYWwKIC8vIGVuY29k
aW5nIChkZWZhdWx0aW5nIHRvIFVURi04IG90aGVyd2lzZSkuIERBTkdFUjogSWYgdGhlIFVSTCBo
YXMgIiUwMCIKIC8vIGluIGl0LCB0aGUgcmVzdWx0aW5nIHN0cmluZyB3aWxsIGhhdmUgZW1iZWRk
ZWQgbnVsbCBjaGFyYWN0ZXJzIQotU3RyaW5nIGRlY29kZVVSTEVzY2FwZVNlcXVlbmNlcyhjb25z
dCBTdHJpbmcmKTsKK1dFQkNPUkVfRVhQT1JUIFN0cmluZyBkZWNvZGVVUkxFc2NhcGVTZXF1ZW5j
ZXMoY29uc3QgU3RyaW5nJik7CiBTdHJpbmcgZGVjb2RlVVJMRXNjYXBlU2VxdWVuY2VzKGNvbnN0
IFN0cmluZyYsIGNvbnN0IFRleHRFbmNvZGluZyYpOwogCi1TdHJpbmcgZW5jb2RlV2l0aFVSTEVz
Y2FwZVNlcXVlbmNlcyhjb25zdCBTdHJpbmcmKTsKK1dFQkNPUkVfRVhQT1JUIFN0cmluZyBlbmNv
ZGVXaXRoVVJMRXNjYXBlU2VxdWVuY2VzKGNvbnN0IFN0cmluZyYpOwogCiAvLyBJbmxpbmVzLgog
CkBAIC0zNDUsNyArMzQ1LDcgQEAgaW5saW5lIHVuc2lnbmVkIFVSTDo6cGF0aEFmdGVyTGFzdFNs
YXNoKAogfQogCiAjaWYgUExBVEZPUk0oSU9TKQotdm9pZCBlbmFibGVVUkxTY2hlbWVDYW5vbmlj
YWxpemF0aW9uKGJvb2wpOworV0VCQ09SRV9FWFBPUlQgdm9pZCBlbmFibGVVUkxTY2hlbWVDYW5v
bmljYWxpemF0aW9uKGJvb2wpOwogI2VuZGlmCiAKIH0gLy8gbmFtZXNwYWNlIFdlYkNvcmUKSW5k
ZXg6IFNvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL1VVSUQuaAo9PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09Ci0tLSBTb3VyY2Uv
V2ViQ29yZS9wbGF0Zm9ybS9VVUlELmgJKHJldmlzaW9uIDE3Mjg0NykKKysrIFNvdXJjZS9XZWJD
b3JlL3BsYXRmb3JtL1VVSUQuaAkod29ya2luZyBjb3B5KQpAQCAtNDcsNyArNDcsNyBAQCBuYW1l
c3BhY2UgV2ViQ29yZSB7CiAvLyBPbiBXaW5kb3dzLCB2ZXJzaW9uIDQgVVVJRHMgYXJlIHVzZWQg
c2luY2UgV2luZG93cyAyMDAwIChodHRwOi8vbXNkbi5taWNyb3NvZnQuY29tL2VuLXVzL2xpYnJh
cnkvYWE0NDY1NTcuYXNweCkuCiAvLyBPbiBNYWNPU1gsIHZlcnNpb24gNCBVVUlEcyBhcmUgdXNl
ZCBzaW5jZSBUaWdlciAoaHR0cDovL2RldmVsb3Blci5hcHBsZS5jb20vbWFjL2xpYnJhcnkvdGVj
aG5vdGVzL3RuL3RuMTEwMy5odG1sI1ROVEFHOCkuCiAvLyBPbiBMaW51eCwgdGhlIGtlcm5lbCBv
ZmZlcnMgdGhlIHByb2NmcyBwc2V1ZG8tZmlsZSAvcHJvYy9zeXMva2VybmVsL3JhbmRvbS91dWlk
IHRoYXQgeWllbGRzIHZlcnNpb24gNCBVVUlEcyAoaHR0cDovL2hiZnMud29yZHByZXNzLmNvbS8y
MDA4LzA5LzMwL3VlaWQtdW5pcXVlLWVub3VnaC1pZHMvKS4KLVN0cmluZyBjcmVhdGVDYW5vbmlj
YWxVVUlEU3RyaW5nKCk7CitXRUJDT1JFX0VYUE9SVCBTdHJpbmcgY3JlYXRlQ2Fub25pY2FsVVVJ
RFN0cmluZygpOwogCiB9CiAKSW5kZXg6IFNvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL1VzZXJBY3Rp
dml0eS5oCj09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT0KLS0tIFNvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL1VzZXJBY3Rpdml0
eS5oCShyZXZpc2lvbiAxNzI4NDcpCisrKyBTb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9Vc2VyQWN0
aXZpdHkuaAkod29ya2luZyBjb3B5KQpAQCAtNTUsMTIgKzU1LDEyIEBAIHB1YmxpYzoKICNlbmRp
ZgogICAgIH07CiAKLSAgICBleHBsaWNpdCBVc2VyQWN0aXZpdHkoY29uc3QgY2hhciogZGVzY3Jp
cHRpb24pOworICAgIFdFQkNPUkVfRVhQT1JUIGV4cGxpY2l0IFVzZXJBY3Rpdml0eShjb25zdCBj
aGFyKiBkZXNjcmlwdGlvbik7CiAKIHByaXZhdGU6CiAgICAgZnJpZW5kIGNsYXNzIEh5c3RlcmVz
aXNBY3Rpdml0eTxVc2VyQWN0aXZpdHk+OwogCi0gICAgdm9pZCBzdGFydGVkKCk7CisgICAgV0VC
Q09SRV9FWFBPUlQgdm9pZCBzdGFydGVkKCk7CiAgICAgdm9pZCBzdG9wcGVkKCk7CiAKICAgICBJ
bXBsIG1faW1wbDsKSW5kZXg6IFNvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL1dpZGdldC5oCj09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT0KLS0tIFNvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL1dpZGdldC5oCShyZXZpc2lvbiAxNzI4
NDcpCisrKyBTb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9XaWRnZXQuaAkod29ya2luZyBjb3B5KQpA
QCAtOTMsMTEgKzkzLDExIEBAIGVudW0gV2lkZ2V0Tm90aWZpY2F0aW9uIHsgV2lsbFBhaW50Rmxh
dHQKIC8vCiBjbGFzcyBXaWRnZXQgOiBwdWJsaWMgUmVmQ291bnRlZDxXaWRnZXQ+IHsKIHB1Ymxp
YzoKLSAgICBleHBsaWNpdCBXaWRnZXQoUGxhdGZvcm1XaWRnZXQgPSAwKTsKLSAgICB2aXJ0dWFs
IH5XaWRnZXQoKTsKKyAgICBXRUJDT1JFX0VYUE9SVCBleHBsaWNpdCBXaWRnZXQoUGxhdGZvcm1X
aWRnZXQgPSBudWxscHRyKTsKKyAgICBXRUJDT1JFX0VYUE9SVCB2aXJ0dWFsIH5XaWRnZXQoKTsK
IAotICAgIFBsYXRmb3JtV2lkZ2V0IHBsYXRmb3JtV2lkZ2V0KCkgY29uc3Q7Ci0gICAgdm9pZCBz
ZXRQbGF0Zm9ybVdpZGdldChQbGF0Zm9ybVdpZGdldCk7CisgICAgV0VCQ09SRV9FWFBPUlQgUGxh
dGZvcm1XaWRnZXQgcGxhdGZvcm1XaWRnZXQoKSBjb25zdDsKKyAgICBXRUJDT1JFX0VYUE9SVCB2
b2lkIHNldFBsYXRmb3JtV2lkZ2V0KFBsYXRmb3JtV2lkZ2V0KTsKIAogICAgIGludCB4KCkgY29u
c3QgeyByZXR1cm4gZnJhbWVSZWN0KCkueCgpOyB9CiAgICAgaW50IHkoKSBjb25zdCB7IHJldHVy
biBmcmFtZVJlY3QoKS55KCk7IH0KQEAgLTEwNiw4ICsxMDYsOCBAQCBwdWJsaWM6CiAgICAgSW50
U2l6ZSBzaXplKCkgY29uc3QgeyByZXR1cm4gZnJhbWVSZWN0KCkuc2l6ZSgpOyB9CiAgICAgSW50
UG9pbnQgbG9jYXRpb24oKSBjb25zdCB7IHJldHVybiBmcmFtZVJlY3QoKS5sb2NhdGlvbigpOyB9
CiAKLSAgICB2aXJ0dWFsIHZvaWQgc2V0RnJhbWVSZWN0KGNvbnN0IEludFJlY3QmKTsKLSAgICBJ
bnRSZWN0IGZyYW1lUmVjdCgpIGNvbnN0OworICAgIFdFQkNPUkVfRVhQT1JUIHZpcnR1YWwgdm9p
ZCBzZXRGcmFtZVJlY3QoY29uc3QgSW50UmVjdCYpOworICAgIFdFQkNPUkVfRVhQT1JUIEludFJl
Y3QgZnJhbWVSZWN0KCkgY29uc3Q7CiAgICAgSW50UmVjdCBib3VuZHNSZWN0KCkgY29uc3QgeyBy
ZXR1cm4gSW50UmVjdCgwLCAwLCB3aWR0aCgpLCAgaGVpZ2h0KCkpOyB9CiAKICAgICB2b2lkIHJl
c2l6ZShpbnQgdywgaW50IGgpIHsgc2V0RnJhbWVSZWN0KEludFJlY3QoeCgpLCB5KCksIHcsIGgp
KTsgfQpAQCAtMTE1LDE2ICsxMTUsMTYgQEAgcHVibGljOgogICAgIHZvaWQgbW92ZShpbnQgeCwg
aW50IHkpIHsgc2V0RnJhbWVSZWN0KEludFJlY3QoeCwgeSwgd2lkdGgoKSwgaGVpZ2h0KCkpKTsg
fQogICAgIHZvaWQgbW92ZShjb25zdCBJbnRQb2ludCYgcCkgeyBzZXRGcmFtZVJlY3QoSW50UmVj
dChwLCBzaXplKCkpKTsgfQogCi0gICAgdmlydHVhbCB2b2lkIHBhaW50KEdyYXBoaWNzQ29udGV4
dCosIGNvbnN0IEludFJlY3QmKTsKKyAgICBXRUJDT1JFX0VYUE9SVCB2aXJ0dWFsIHZvaWQgcGFp
bnQoR3JhcGhpY3NDb250ZXh0KiwgY29uc3QgSW50UmVjdCYpOwogICAgIHZvaWQgaW52YWxpZGF0
ZSgpIHsgaW52YWxpZGF0ZVJlY3QoYm91bmRzUmVjdCgpKTsgfQogICAgIHZpcnR1YWwgdm9pZCBp
bnZhbGlkYXRlUmVjdChjb25zdCBJbnRSZWN0JikgPSAwOwogCi0gICAgdmlydHVhbCB2b2lkIHNl
dEZvY3VzKGJvb2wpOworICAgIFdFQkNPUkVfRVhQT1JUIHZpcnR1YWwgdm9pZCBzZXRGb2N1cyhi
b29sKTsKIAogICAgIHZvaWQgc2V0Q3Vyc29yKGNvbnN0IEN1cnNvciYpOwogCi0gICAgdmlydHVh
bCB2b2lkIHNob3coKTsKLSAgICB2aXJ0dWFsIHZvaWQgaGlkZSgpOworICAgIFdFQkNPUkVfRVhQ
T1JUIHZpcnR1YWwgdm9pZCBzaG93KCk7CisgICAgV0VCQ09SRV9FWFBPUlQgdmlydHVhbCB2b2lk
IGhpZGUoKTsKICAgICBib29sIGlzU2VsZlZpc2libGUoKSBjb25zdCB7IHJldHVybiBtX3NlbGZW
aXNpYmxlOyB9IC8vIFdoZXRoZXIgb3Igbm90IHdlIGhhdmUgYmVlbiBleHBsaWNpdGx5IG1hcmtl
ZCBhcyB2aXNpYmxlIG9yIG5vdC4KICAgICBib29sIGlzUGFyZW50VmlzaWJsZSgpIGNvbnN0IHsg
cmV0dXJuIG1fcGFyZW50VmlzaWJsZTsgfSAvLyBXaGV0aGVyIG9yIG5vdCBvdXIgcGFyZW50IGlz
IHZpc2libGUuCiAgICAgYm9vbCBpc1Zpc2libGUoKSBjb25zdCB7IHJldHVybiBtX3NlbGZWaXNp
YmxlICYmIG1fcGFyZW50VmlzaWJsZTsgfSAvLyBXaGV0aGVyIG9yIG5vdCB3ZSBhcmUgYWN0dWFs
bHkgdmlzaWJsZS4KQEAgLTE0MCw4ICsxNDAsOCBAQCBwdWJsaWM6CiAgICAgdmlydHVhbCBib29s
IGlzU2Nyb2xsYmFyKCkgY29uc3QgeyByZXR1cm4gZmFsc2U7IH0KICAgICB2aXJ0dWFsIGJvb2wg
aXNTY3JvbGxWaWV3KCkgY29uc3QgeyByZXR1cm4gZmFsc2U7IH0KIAotICAgIHZvaWQgcmVtb3Zl
RnJvbVBhcmVudCgpOwotICAgIHZpcnR1YWwgdm9pZCBzZXRQYXJlbnQoU2Nyb2xsVmlldyogdmll
dyk7CisgICAgV0VCQ09SRV9FWFBPUlQgdm9pZCByZW1vdmVGcm9tUGFyZW50KCk7CisgICAgV0VC
Q09SRV9FWFBPUlQgdmlydHVhbCB2b2lkIHNldFBhcmVudChTY3JvbGxWaWV3KiB2aWV3KTsKICAg
ICBTY3JvbGxWaWV3KiBwYXJlbnQoKSBjb25zdCB7IHJldHVybiBtX3BhcmVudDsgfQogICAgIFNj
cm9sbFZpZXcqIHJvb3QoKSBjb25zdDsKIApAQCAtMTU5LDEwICsxNTksMTAgQEAgcHVibGljOgog
ICAgIC8vIHRoYXQgdHJpZXMgdG8gY29udmVydCB0aGUgbG9jYXRpb24gb2YgYSByZWN0IHVzaW5n
IHRoZSBwb2ludC1iYXNlZCBjb252ZXJ0RnJvbUNvbnRhaW5pbmdXaW5kb3cgd2lsbCBlbmQKICAg
ICAvLyB1cCB3aXRoIGFuIGluYWNjdXJhdGUgcmVjdC4gIEFsd2F5cyBtYWtlIHN1cmUgdG8gdXNl
IHRoZSByZWN0LWJhc2VkIGNvbnZlcnRGcm9tQ29udGFpbmluZ1dpbmRvdyBtZXRob2QKICAgICAv
LyB3aGVuIGNvbnZlcnRpbmcgd2luZG93IHJlY3RzLgotICAgIEludFJlY3QgY29udmVydFRvQ29u
dGFpbmluZ1dpbmRvdyhjb25zdCBJbnRSZWN0JikgY29uc3Q7CisgICAgV0VCQ09SRV9FWFBPUlQg
SW50UmVjdCBjb252ZXJ0VG9Db250YWluaW5nV2luZG93KGNvbnN0IEludFJlY3QmKSBjb25zdDsK
ICAgICBJbnRSZWN0IGNvbnZlcnRGcm9tQ29udGFpbmluZ1dpbmRvdyhjb25zdCBJbnRSZWN0Jikg
Y29uc3Q7CiAKLSAgICBJbnRQb2ludCBjb252ZXJ0VG9Db250YWluaW5nV2luZG93KGNvbnN0IElu
dFBvaW50JikgY29uc3Q7CisgICAgV0VCQ09SRV9FWFBPUlQgSW50UG9pbnQgY29udmVydFRvQ29u
dGFpbmluZ1dpbmRvdyhjb25zdCBJbnRQb2ludCYpIGNvbnN0OwogICAgIEludFBvaW50IGNvbnZl
cnRGcm9tQ29udGFpbmluZ1dpbmRvdyhjb25zdCBJbnRQb2ludCYpIGNvbnN0OwogCiAgICAgdmly
dHVhbCB2b2lkIGZyYW1lUmVjdHNDaGFuZ2VkKCkgeyB9CkBAIC0xODQsMTAgKzE4NCwxMCBAQCBw
dWJsaWM6CiAjZW5kaWYKIAogICAgIC8vIFZpcnR1YWwgbWV0aG9kcyB0byBjb252ZXJ0IHBvaW50
cyB0by9mcm9tIHRoZSBjb250YWluaW5nIFNjcm9sbFZpZXcKLSAgICB2aXJ0dWFsIEludFJlY3Qg
Y29udmVydFRvQ29udGFpbmluZ1ZpZXcoY29uc3QgSW50UmVjdCYpIGNvbnN0OwotICAgIHZpcnR1
YWwgSW50UmVjdCBjb252ZXJ0RnJvbUNvbnRhaW5pbmdWaWV3KGNvbnN0IEludFJlY3QmKSBjb25z
dDsKLSAgICB2aXJ0dWFsIEludFBvaW50IGNvbnZlcnRUb0NvbnRhaW5pbmdWaWV3KGNvbnN0IElu
dFBvaW50JikgY29uc3Q7Ci0gICAgdmlydHVhbCBJbnRQb2ludCBjb252ZXJ0RnJvbUNvbnRhaW5p
bmdWaWV3KGNvbnN0IEludFBvaW50JikgY29uc3Q7CisgICAgV0VCQ09SRV9FWFBPUlQgdmlydHVh
bCBJbnRSZWN0IGNvbnZlcnRUb0NvbnRhaW5pbmdWaWV3KGNvbnN0IEludFJlY3QmKSBjb25zdDsK
KyAgICBXRUJDT1JFX0VYUE9SVCB2aXJ0dWFsIEludFJlY3QgY29udmVydEZyb21Db250YWluaW5n
Vmlldyhjb25zdCBJbnRSZWN0JikgY29uc3Q7CisgICAgV0VCQ09SRV9FWFBPUlQgdmlydHVhbCBJ
bnRQb2ludCBjb252ZXJ0VG9Db250YWluaW5nVmlldyhjb25zdCBJbnRQb2ludCYpIGNvbnN0Owor
ICAgIFdFQkNPUkVfRVhQT1JUIHZpcnR1YWwgSW50UG9pbnQgY29udmVydEZyb21Db250YWluaW5n
Vmlldyhjb25zdCBJbnRQb2ludCYpIGNvbnN0OwogCiBwcml2YXRlOgogICAgIHZvaWQgaW5pdChQ
bGF0Zm9ybVdpZGdldCk7IC8vIE11c3QgYmUgY2FsbGVkIGJ5IGFsbCBXaWRnZXQgY29uc3RydWN0
b3JzIHRvIGluaXRpYWxpemUgY3Jvc3MtcGxhdGZvcm0gZGF0YS4KSW5kZXg6IFNvdXJjZS9XZWJD
b3JlL3BsYXRmb3JtL2NmL0NGVVJMRXh0cmFzLmgKPT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PQotLS0gU291cmNlL1dlYkNv
cmUvcGxhdGZvcm0vY2YvQ0ZVUkxFeHRyYXMuaAkocmV2aXNpb24gMTcyODQ3KQorKysgU291cmNl
L1dlYkNvcmUvcGxhdGZvcm0vY2YvQ0ZVUkxFeHRyYXMuaAkod29ya2luZyBjb3B5KQpAQCAtMzQs
OSArMzQsOSBAQCBuYW1lc3BhY2UgV2ViQ29yZSB7CiAKIHR5cGVkZWYgVmVjdG9yPGNoYXIsIDUx
Mj4gVVJMQ2hhckJ1ZmZlcjsKIAotUmV0YWluUHRyPENGVVJMUmVmPiBjcmVhdGVDRlVSTEZyb21C
dWZmZXIoY29uc3QgY2hhciosIHNpemVfdCwgQ0ZVUkxSZWYgYmFzZVVSTCA9IDApOwotdm9pZCBn
ZXRVUkxCeXRlcyhDRlVSTFJlZiwgVVJMQ2hhckJ1ZmZlciYpOwotdm9pZCBnZXRVUkxCeXRlcyhD
RlVSTFJlZiwgQ1N0cmluZyYpOworV0VCQ09SRV9FWFBPUlQgUmV0YWluUHRyPENGVVJMUmVmPiBj
cmVhdGVDRlVSTEZyb21CdWZmZXIoY29uc3QgY2hhciosIHNpemVfdCwgQ0ZVUkxSZWYgYmFzZVVS
TCA9IDApOworV0VCQ09SRV9FWFBPUlQgdm9pZCBnZXRVUkxCeXRlcyhDRlVSTFJlZiwgVVJMQ2hh
ckJ1ZmZlciYpOworV0VCQ09SRV9FWFBPUlQgdm9pZCBnZXRVUkxCeXRlcyhDRlVSTFJlZiwgQ1N0
cmluZyYpOwogCiB9CiAKSW5kZXg6IFNvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL2NmL1J1bkxvb3BP
YnNlcnZlci5oCj09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT0KLS0tIFNvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL2NmL1J1bkxv
b3BPYnNlcnZlci5oCShyZXZpc2lvbiAxNzI4NDcpCisrKyBTb3VyY2UvV2ViQ29yZS9wbGF0Zm9y
bS9jZi9SdW5Mb29wT2JzZXJ2ZXIuaAkod29ya2luZyBjb3B5KQpAQCAtMzgsMTIgKzM4LDEyIEBA
IGNsYXNzIFJ1bkxvb3BPYnNlcnZlciB7CiBwdWJsaWM6CiAgICAgdHlwZWRlZiBzdGQ6OmZ1bmN0
aW9uPHZvaWQgKCk+IFJ1bkxvb3BPYnNlcnZlckNhbGxiYWNrOwogCi0gICAgc3RhdGljIHN0ZDo6
dW5pcXVlX3B0cjxSdW5Mb29wT2JzZXJ2ZXI+IGNyZWF0ZShDRkluZGV4IG9yZGVyLCBSdW5Mb29w
T2JzZXJ2ZXJDYWxsYmFjayBjYWxsYmFjayk7CisgICAgV0VCQ09SRV9FWFBPUlQgc3RhdGljIHN0
ZDo6dW5pcXVlX3B0cjxSdW5Mb29wT2JzZXJ2ZXI+IGNyZWF0ZShDRkluZGV4IG9yZGVyLCBSdW5M
b29wT2JzZXJ2ZXJDYWxsYmFjayBjYWxsYmFjayk7CiAKLSAgICB+UnVuTG9vcE9ic2VydmVyKCk7
CisgICAgV0VCQ09SRV9FWFBPUlQgflJ1bkxvb3BPYnNlcnZlcigpOwogCi0gICAgdm9pZCBzY2hl
ZHVsZShDRlJ1bkxvb3BSZWYgPSBudWxscHRyKTsKLSAgICB2b2lkIGludmFsaWRhdGUoKTsKKyAg
ICBXRUJDT1JFX0VYUE9SVCB2b2lkIHNjaGVkdWxlKENGUnVuTG9vcFJlZiA9IG51bGxwdHIpOwor
ICAgIFdFQkNPUkVfRVhQT1JUIHZvaWQgaW52YWxpZGF0ZSgpOwogCiAgICAgYm9vbCBpc1NjaGVk
dWxlZCgpIGNvbnN0IHsgcmV0dXJuIG1fcnVuTG9vcE9ic2VydmVyOyB9CiAKSW5kZXg6IFNvdXJj
ZS9XZWJDb3JlL3BsYXRmb3JtL2NvY29hL1N5c3RlbVZlcnNpb24uaAo9PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09Ci0tLSBT
b3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9jb2NvYS9TeXN0ZW1WZXJzaW9uLmgJKHJldmlzaW9uIDE3
Mjg0NykKKysrIFNvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL2NvY29hL1N5c3RlbVZlcnNpb24uaAko
d29ya2luZyBjb3B5KQpAQCAtMjQsNiArMjQsNiBAQAogCiBuYW1lc3BhY2UgV2ViQ29yZSB7CiAK
LU5TU3RyaW5nICpzeXN0ZW1NYXJrZXRpbmdWZXJzaW9uKCk7CitXRUJDT1JFX0VYUE9SVCBOU1N0
cmluZyAqc3lzdGVtTWFya2V0aW5nVmVyc2lvbigpOwogCiB9CkluZGV4OiBTb3VyY2UvV2ViQ29y
ZS9wbGF0Zm9ybS9ncmFwaGljcy9Db2xvci5oCj09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT0KLS0tIFNvdXJjZS9XZWJDb3Jl
L3BsYXRmb3JtL2dyYXBoaWNzL0NvbG9yLmgJKHJldmlzaW9uIDE3Mjg0NykKKysrIFNvdXJjZS9X
ZWJDb3JlL3BsYXRmb3JtL2dyYXBoaWNzL0NvbG9yLmgJKHdvcmtpbmcgY29weSkKQEAgLTUyLDEx
ICs1MiwxMSBAQCBjbGFzcyBDb2xvcjsKIAogdHlwZWRlZiB1bnNpZ25lZCBSR0JBMzI7ICAgICAg
ICAvLyBSR0JBIHF1YWRydXBsZXQKIAotUkdCQTMyIG1ha2VSR0IoaW50IHIsIGludCBnLCBpbnQg
Yik7Ci1SR0JBMzIgbWFrZVJHQkEoaW50IHIsIGludCBnLCBpbnQgYiwgaW50IGEpOworV0VCQ09S
RV9FWFBPUlQgUkdCQTMyIG1ha2VSR0IoaW50IHIsIGludCBnLCBpbnQgYik7CitXRUJDT1JFX0VY
UE9SVCBSR0JBMzIgbWFrZVJHQkEoaW50IHIsIGludCBnLCBpbnQgYiwgaW50IGEpOwogCi1SR0JB
MzIgY29sb3JXaXRoT3ZlcnJpZGVBbHBoYShSR0JBMzIgY29sb3IsIGZsb2F0IG92ZXJyaWRlQWxw
aGEpOwotUkdCQTMyIG1ha2VSR0JBMzJGcm9tRmxvYXRzKGZsb2F0IHIsIGZsb2F0IGcsIGZsb2F0
IGIsIGZsb2F0IGEpOworV0VCQ09SRV9FWFBPUlQgUkdCQTMyIGNvbG9yV2l0aE92ZXJyaWRlQWxw
aGEoUkdCQTMyIGNvbG9yLCBmbG9hdCBvdmVycmlkZUFscGhhKTsKK1dFQkNPUkVfRVhQT1JUIFJH
QkEzMiBtYWtlUkdCQTMyRnJvbUZsb2F0cyhmbG9hdCByLCBmbG9hdCBnLCBmbG9hdCBiLCBmbG9h
dCBhKTsKIFJHQkEzMiBtYWtlUkdCQUZyb21IU0xBKGRvdWJsZSBoLCBkb3VibGUgcywgZG91Ymxl
IGwsIGRvdWJsZSBhKTsKIFJHQkEzMiBtYWtlUkdCQUZyb21DTVlLQShmbG9hdCBjLCBmbG9hdCBt
LCBmbG9hdCB5LCBmbG9hdCBrLCBmbG9hdCBhKTsKIApAQCAtMTg4LDkgKzE4OCw5IEBAIGlubGlu
ZSB1aW50MTZfdCBmYXN0RGl2aWRlQnkyNTUodWludDE2X3QKIH0KIAogI2lmIFVTRShDRykKLUNH
Q29sb3JSZWYgY2FjaGVkQ0dDb2xvcihjb25zdCBDb2xvciYsIENvbG9yU3BhY2UpOworV0VCQ09S
RV9FWFBPUlQgQ0dDb2xvclJlZiBjYWNoZWRDR0NvbG9yKGNvbnN0IENvbG9yJiwgQ29sb3JTcGFj
ZSk7CiAjaWYgUExBVEZPUk0oSU9TKQotQ0dDb2xvclJlZiBjcmVhdGVDR0NvbG9yV2l0aERldmlj
ZVdoaXRlKENHRmxvYXQgd2hpdGUsIENHRmxvYXQgYWxwaGEpOworV0VCQ09SRV9FWFBPUlQgQ0dD
b2xvclJlZiBjcmVhdGVDR0NvbG9yV2l0aERldmljZVdoaXRlKENHRmxvYXQgd2hpdGUsIENHRmxv
YXQgYWxwaGEpOwogI2VuZGlmIC8vIFBMQVRGT1JNKElPUykKICNlbmRpZgogCkluZGV4OiBTb3Vy
Y2UvV2ViQ29yZS9wbGF0Zm9ybS9ncmFwaGljcy9GbG9hdFJlY3QuaAo9PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09Ci0tLSBT
b3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9ncmFwaGljcy9GbG9hdFJlY3QuaAkocmV2aXNpb24gMTcy
ODQ3KQorKysgU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vZ3JhcGhpY3MvRmxvYXRSZWN0LmgJKHdv
cmtpbmcgY29weSkKQEAgLTI0NiwxMyArMjQ2LDEzIEBAIGlubGluZSBib29sIEZsb2F0UmVjdDo6
aXNJbmZpbml0ZSgpIGNvbnMKICAgICByZXR1cm4gKnRoaXMgPT0gaW5maW5pdGVSZWN0KCk7CiB9
CiAKLUZsb2F0UmVjdCBlbmNsb3NpbmdSZWN0RXh0ZW5kZWRUb0RldmljZVBpeGVscyhjb25zdCBG
bG9hdFJlY3QmLCBmbG9hdCBkZXZpY2VTY2FsZUZhY3Rvcik7Ci1JbnRSZWN0IGVuY2xvc2luZ0lu
dFJlY3QoY29uc3QgRmxvYXRSZWN0Jik7CitXRUJDT1JFX0VYUE9SVCBGbG9hdFJlY3QgZW5jbG9z
aW5nUmVjdEV4dGVuZGVkVG9EZXZpY2VQaXhlbHMoY29uc3QgRmxvYXRSZWN0JiwgZmxvYXQgZGV2
aWNlU2NhbGVGYWN0b3IpOworV0VCQ09SRV9FWFBPUlQgSW50UmVjdCBlbmNsb3NpbmdJbnRSZWN0
KGNvbnN0IEZsb2F0UmVjdCYpOwogCiAvLyBSZXR1cm5zIGEgdmFsaWQgSW50UmVjdCBjb250YWlu
ZWQgd2l0aGluIHRoZSBnaXZlbiBGbG9hdFJlY3QuCiBJbnRSZWN0IGVuY2xvc2VkSW50UmVjdChj
b25zdCBGbG9hdFJlY3QmKTsKIAotSW50UmVjdCByb3VuZGVkSW50UmVjdChjb25zdCBGbG9hdFJl
Y3QmKTsKK1dFQkNPUkVfRVhQT1JUIEludFJlY3Qgcm91bmRlZEludFJlY3QoY29uc3QgRmxvYXRS
ZWN0Jik7CiAKIH0KIApJbmRleDogU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vZ3JhcGhpY3MvRm9u
dENhY2hlLmgKPT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PQotLS0gU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vZ3JhcGhpY3Mv
Rm9udENhY2hlLmgJKHJldmlzaW9uIDE3Mjg0NykKKysrIFNvdXJjZS9XZWJDb3JlL3BsYXRmb3Jt
L2dyYXBoaWNzL0ZvbnRDYWNoZS5oCSh3b3JraW5nIGNvcHkpCkBAIC0yMDMsNyArMjAzLDcgQEAg
cHJpdmF0ZToKIH07CiAKIC8vIEdldCB0aGUgZ2xvYmFsIGZvbnRDYWNoZS4KLUZvbnRDYWNoZSYg
Zm9udENhY2hlKCk7CitXRUJDT1JFX0VYUE9SVCBGb250Q2FjaGUmIGZvbnRDYWNoZSgpOwogCiBj
bGFzcyBGb250Q2FjaGVQdXJnZVByZXZlbnRlciB7CiBwdWJsaWM6CkluZGV4OiBTb3VyY2UvV2Vi
Q29yZS9wbGF0Zm9ybS9ncmFwaGljcy9HZW9tZXRyeVV0aWxpdGllcy5oCj09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT0KLS0t
IFNvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL2dyYXBoaWNzL0dlb21ldHJ5VXRpbGl0aWVzLmgJKHJl
dmlzaW9uIDE3Mjg0NykKKysrIFNvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL2dyYXBoaWNzL0dlb21l
dHJ5VXRpbGl0aWVzLmgJKHdvcmtpbmcgY29weSkKQEAgLTM1LDEwICszNSwxMCBAQCBuYW1lc3Bh
Y2UgV2ViQ29yZSB7CiBmbG9hdCBmaW5kU2xvcGUoY29uc3QgRmxvYXRQb2ludCYgcDEsIGNvbnN0
IEZsb2F0UG9pbnQmIHAyLCBmbG9hdCYgYyk7CiAKIC8vIEZpbmQgcG9pbnQgd2hlcmUgbGluZXMg
dGhyb3VnaCB0aGUgdHdvIHBhaXJzIG9mIHBvaW50cyBpbnRlcnNlY3QuIFJldHVybnMgZmFsc2Ug
aWYgdGhlIGxpbmVzIGRvbid0IGludGVyc2VjdC4KLWJvb2wgZmluZEludGVyc2VjdGlvbihjb25z
dCBGbG9hdFBvaW50JiBwMSwgY29uc3QgRmxvYXRQb2ludCYgcDIsIGNvbnN0IEZsb2F0UG9pbnQm
IGQxLCBjb25zdCBGbG9hdFBvaW50JiBkMiwgRmxvYXRQb2ludCYgaW50ZXJzZWN0aW9uKTsKK1dF
QkNPUkVfRVhQT1JUIGJvb2wgZmluZEludGVyc2VjdGlvbihjb25zdCBGbG9hdFBvaW50JiBwMSwg
Y29uc3QgRmxvYXRQb2ludCYgcDIsIGNvbnN0IEZsb2F0UG9pbnQmIGQxLCBjb25zdCBGbG9hdFBv
aW50JiBkMiwgRmxvYXRQb2ludCYgaW50ZXJzZWN0aW9uKTsKIAogSW50UmVjdCB1bmlvblJlY3Qo
Y29uc3QgVmVjdG9yPEludFJlY3Q+Jik7Ci1GbG9hdFJlY3QgdW5pb25SZWN0KGNvbnN0IFZlY3Rv
cjxGbG9hdFJlY3Q+Jik7CitXRUJDT1JFX0VYUE9SVCBGbG9hdFJlY3QgdW5pb25SZWN0KGNvbnN0
IFZlY3RvcjxGbG9hdFJlY3Q+Jik7CiAKIC8vIE1hcCByZWN0IHIgZnJvbSBzcmNSZWN0IHRvIGFu
IGVxdWl2YWxlbnQgcmVjdCBpbiBkZXN0UmVjdC4KIEZsb2F0UmVjdCBtYXBSZWN0KGNvbnN0IEZs
b2F0UmVjdCYsIGNvbnN0IEZsb2F0UmVjdCYgc3JjUmVjdCwgY29uc3QgRmxvYXRSZWN0JiBkZXN0
UmVjdCk7CkluZGV4OiBTb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9ncmFwaGljcy9HcmFwaGljc0Nv
bnRleHQuaAo9PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09Ci0tLSBTb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9ncmFwaGljcy9H
cmFwaGljc0NvbnRleHQuaAkocmV2aXNpb24gMTcyODQ3KQorKysgU291cmNlL1dlYkNvcmUvcGxh
dGZvcm0vZ3JhcGhpY3MvR3JhcGhpY3NDb250ZXh0LmgJKHdvcmtpbmcgY29weSkKQEAgLTE5MCw3
ICsxOTAsNyBAQCBuYW1lc3BhY2UgV2ViQ29yZSB7CiAgICAgfTsKIAogI2lmIFBMQVRGT1JNKElP
UykKLSAgICB2b2lkIHNldFN0cm9rZUFuZEZpbGxDb2xvcihQbGF0Zm9ybUdyYXBoaWNzQ29udGV4
dCosIENHQ29sb3JSZWYpOworICAgIFdFQkNPUkVfRVhQT1JUIHZvaWQgc2V0U3Ryb2tlQW5kRmls
bENvbG9yKFBsYXRmb3JtR3JhcGhpY3NDb250ZXh0KiwgQ0dDb2xvclJlZik7CiAjZW5kaWYKIAog
ICAgIHN0cnVjdCBJbWFnZVBhaW50aW5nT3B0aW9ucyB7CkluZGV4OiBTb3VyY2UvV2ViQ29yZS9w
bGF0Zm9ybS9ncmFwaGljcy9JbnRSZWN0LmgKPT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PQotLS0gU291cmNlL1dlYkNvcmUv
cGxhdGZvcm0vZ3JhcGhpY3MvSW50UmVjdC5oCShyZXZpc2lvbiAxNzI4NDcpCisrKyBTb3VyY2Uv
V2ViQ29yZS9wbGF0Zm9ybS9ncmFwaGljcy9JbnRSZWN0LmgJKHdvcmtpbmcgY29weSkKQEAgLTIy
NiwxMSArMjI2LDExIEBAIGlubGluZSBib29sIG9wZXJhdG9yIT0oY29uc3QgSW50UmVjdCYgYSwK
IH0KIAogI2lmIFVTRShDRykKLUludFJlY3QgZW5jbG9zaW5nSW50UmVjdChjb25zdCBDR1JlY3Qm
KTsKK1dFQkNPUkVfRVhQT1JUIEludFJlY3QgZW5jbG9zaW5nSW50UmVjdChjb25zdCBDR1JlY3Qm
KTsKICNlbmRpZgogCiAjaWYgUExBVEZPUk0oTUFDKSAmJiAhZGVmaW5lZChOU0dFT01FVFJZX1RZ
UEVTX1NBTUVfQVNfQ0dHRU9NRVRSWV9UWVBFUykKLUludFJlY3QgZW5jbG9zaW5nSW50UmVjdChj
b25zdCBOU1JlY3QmKTsKK1dFQkNPUkVfRVhQT1JUIEludFJlY3QgZW5jbG9zaW5nSW50UmVjdChj
b25zdCBOU1JlY3QmKTsKICNlbmRpZgogCiB9IC8vIG5hbWVzcGFjZSBXZWJDb3JlCkluZGV4OiBT
b3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9ncmFwaGljcy9MYXlvdXRSZWN0LmgKPT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PQot
LS0gU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vZ3JhcGhpY3MvTGF5b3V0UmVjdC5oCShyZXZpc2lv
biAxNzI4NDcpCisrKyBTb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9ncmFwaGljcy9MYXlvdXRSZWN0
LmgJKHdvcmtpbmcgY29weSkKQEAgLTIwNyw4ICsyMDcsOCBAQCBpbmxpbmUgSW50UmVjdCBwaXhl
bFNuYXBwZWRJbnRSZWN0KGNvbnN0CiAKIH0KIAotSW50UmVjdCBlbmNsb3NpbmdJbnRSZWN0KGNv
bnN0IExheW91dFJlY3QmKTsKLUxheW91dFJlY3QgZW5jbG9zaW5nTGF5b3V0UmVjdChjb25zdCBG
bG9hdFJlY3QmKTsKK1dFQkNPUkVfRVhQT1JUIEludFJlY3QgZW5jbG9zaW5nSW50UmVjdChjb25z
dCBMYXlvdXRSZWN0Jik7CitXRUJDT1JFX0VYUE9SVCBMYXlvdXRSZWN0IGVuY2xvc2luZ0xheW91
dFJlY3QoY29uc3QgRmxvYXRSZWN0Jik7CiBGbG9hdFJlY3QgZW5jbG9zaW5nUmVjdEZvclBhaW50
aW5nKGNvbnN0IExheW91dFJlY3QmLCBmbG9hdCBwaXhlbFNuYXBwaW5nRmFjdG9yKTsKIAogaW5s
aW5lIEludFJlY3QgcGl4ZWxTbmFwcGVkSW50UmVjdChMYXlvdXRVbml0IGxlZnQsIExheW91dFVu
aXQgdG9wLCBMYXlvdXRVbml0IHdpZHRoLCBMYXlvdXRVbml0IGhlaWdodCkKSW5kZXg6IFNvdXJj
ZS9XZWJDb3JlL3BsYXRmb3JtL2dyYXBoaWNzL1N0cmluZ1RydW5jYXRvci5oCj09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT0K
LS0tIFNvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL2dyYXBoaWNzL1N0cmluZ1RydW5jYXRvci5oCShy
ZXZpc2lvbiAxNzI4NDcpCisrKyBTb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9ncmFwaGljcy9TdHJp
bmdUcnVuY2F0b3IuaAkod29ya2luZyBjb3B5KQpAQCAtMzksMTYgKzM5LDE2IEBAIG5hbWVzcGFj
ZSBXZWJDb3JlIHsKICAgICBwdWJsaWM6CiAgICAgICAgIGVudW0gRW5hYmxlUm91bmRpbmdIYWNr
c09yTm90IHsgRGlzYWJsZVJvdW5kaW5nSGFja3MsIEVuYWJsZVJvdW5kaW5nSGFja3MgfTsKIAot
ICAgICAgICBzdGF0aWMgU3RyaW5nIGNlbnRlclRydW5jYXRlKGNvbnN0IFN0cmluZyYsIGZsb2F0
IG1heFdpZHRoLCBjb25zdCBGb250JiwgRW5hYmxlUm91bmRpbmdIYWNrc09yTm90ID0gRGlzYWJs
ZVJvdW5kaW5nSGFja3MpOwotICAgICAgICBzdGF0aWMgU3RyaW5nIHJpZ2h0VHJ1bmNhdGUoY29u
c3QgU3RyaW5nJiwgZmxvYXQgbWF4V2lkdGgsIGNvbnN0IEZvbnQmLCBFbmFibGVSb3VuZGluZ0hh
Y2tzT3JOb3QgPSBEaXNhYmxlUm91bmRpbmdIYWNrcyk7CisgICAgICAgIFdFQkNPUkVfRVhQT1JU
IHN0YXRpYyBTdHJpbmcgY2VudGVyVHJ1bmNhdGUoY29uc3QgU3RyaW5nJiwgZmxvYXQgbWF4V2lk
dGgsIGNvbnN0IEZvbnQmLCBFbmFibGVSb3VuZGluZ0hhY2tzT3JOb3QgPSBEaXNhYmxlUm91bmRp
bmdIYWNrcyk7CisgICAgICAgIFdFQkNPUkVfRVhQT1JUIHN0YXRpYyBTdHJpbmcgcmlnaHRUcnVu
Y2F0ZShjb25zdCBTdHJpbmcmLCBmbG9hdCBtYXhXaWR0aCwgY29uc3QgRm9udCYsIEVuYWJsZVJv
dW5kaW5nSGFja3NPck5vdCA9IERpc2FibGVSb3VuZGluZ0hhY2tzKTsKIAotICAgICAgICBzdGF0
aWMgU3RyaW5nIGNlbnRlclRydW5jYXRlKGNvbnN0IFN0cmluZyYsIGZsb2F0IG1heFdpZHRoLCBj
b25zdCBGb250JiwgRW5hYmxlUm91bmRpbmdIYWNrc09yTm90LCBmbG9hdCYgcmVzdWx0V2lkdGgs
IGJvb2wgc2hvdWxkSW5zZXJ0RWxsaXBzaXMgPSB0cnVlLCBmbG9hdCBjdXN0b21UcnVuY2F0aW9u
RWxlbWVudFdpZHRoID0gMCk7Ci0gICAgICAgIHN0YXRpYyBTdHJpbmcgcmlnaHRUcnVuY2F0ZShj
b25zdCBTdHJpbmcmLCBmbG9hdCBtYXhXaWR0aCwgY29uc3QgRm9udCYsIEVuYWJsZVJvdW5kaW5n
SGFja3NPck5vdCwgZmxvYXQmIHJlc3VsdFdpZHRoLCBib29sIHNob3VsZEluc2VydEVsbGlwc2lz
ID0gdHJ1ZSwgZmxvYXQgY3VzdG9tVHJ1bmNhdGlvbkVsZW1lbnRXaWR0aCA9IDApOwotICAgICAg
ICBzdGF0aWMgU3RyaW5nIGxlZnRUcnVuY2F0ZShjb25zdCBTdHJpbmcmLCBmbG9hdCBtYXhXaWR0
aCwgY29uc3QgRm9udCYsIEVuYWJsZVJvdW5kaW5nSGFja3NPck5vdCwgZmxvYXQmIHJlc3VsdFdp
ZHRoLCBib29sIHNob3VsZEluc2VydEVsbGlwc2lzID0gdHJ1ZSwgZmxvYXQgY3VzdG9tVHJ1bmNh
dGlvbkVsZW1lbnRXaWR0aCA9IDApOwotICAgICAgICBzdGF0aWMgU3RyaW5nIHJpZ2h0Q2xpcFRv
Q2hhcmFjdGVyKGNvbnN0IFN0cmluZyYsIGZsb2F0IG1heFdpZHRoLCBjb25zdCBGb250JiwgRW5h
YmxlUm91bmRpbmdIYWNrc09yTm90LCBmbG9hdCYgcmVzdWx0V2lkdGgsIGJvb2wgc2hvdWxkSW5z
ZXJ0RWxsaXBzaXMgPSB0cnVlLCBmbG9hdCBjdXN0b21UcnVuY2F0aW9uRWxlbWVudFdpZHRoID0g
MCk7Ci0gICAgICAgIHN0YXRpYyBTdHJpbmcgcmlnaHRDbGlwVG9Xb3JkKGNvbnN0IFN0cmluZyYs
IGZsb2F0IG1heFdpZHRoLCBjb25zdCBGb250JiwgRW5hYmxlUm91bmRpbmdIYWNrc09yTm90LCBm
bG9hdCYgcmVzdWx0V2lkdGgsIGJvb2wgc2hvdWxkSW5zZXJ0RWxsaXBzaXMgPSB0cnVlLCBmbG9h
dCBjdXN0b21UcnVuY2F0aW9uRWxlbWVudFdpZHRoID0gMCwgYm9vbCBhbHdheXNUcnVuY2F0ZSA9
IGZhbHNlKTsKKyAgICAgICAgV0VCQ09SRV9FWFBPUlQgc3RhdGljIFN0cmluZyBjZW50ZXJUcnVu
Y2F0ZShjb25zdCBTdHJpbmcmLCBmbG9hdCBtYXhXaWR0aCwgY29uc3QgRm9udCYsIEVuYWJsZVJv
dW5kaW5nSGFja3NPck5vdCwgZmxvYXQmIHJlc3VsdFdpZHRoLCBib29sIHNob3VsZEluc2VydEVs
bGlwc2lzID0gdHJ1ZSwgZmxvYXQgY3VzdG9tVHJ1bmNhdGlvbkVsZW1lbnRXaWR0aCA9IDApOwor
ICAgICAgICBXRUJDT1JFX0VYUE9SVCBzdGF0aWMgU3RyaW5nIHJpZ2h0VHJ1bmNhdGUoY29uc3Qg
U3RyaW5nJiwgZmxvYXQgbWF4V2lkdGgsIGNvbnN0IEZvbnQmLCBFbmFibGVSb3VuZGluZ0hhY2tz
T3JOb3QsIGZsb2F0JiByZXN1bHRXaWR0aCwgYm9vbCBzaG91bGRJbnNlcnRFbGxpcHNpcyA9IHRy
dWUsIGZsb2F0IGN1c3RvbVRydW5jYXRpb25FbGVtZW50V2lkdGggPSAwKTsKKyAgICAgICAgV0VC
Q09SRV9FWFBPUlQgc3RhdGljIFN0cmluZyBsZWZ0VHJ1bmNhdGUoY29uc3QgU3RyaW5nJiwgZmxv
YXQgbWF4V2lkdGgsIGNvbnN0IEZvbnQmLCBFbmFibGVSb3VuZGluZ0hhY2tzT3JOb3QsIGZsb2F0
JiByZXN1bHRXaWR0aCwgYm9vbCBzaG91bGRJbnNlcnRFbGxpcHNpcyA9IHRydWUsIGZsb2F0IGN1
c3RvbVRydW5jYXRpb25FbGVtZW50V2lkdGggPSAwKTsKKyAgICAgICAgV0VCQ09SRV9FWFBPUlQg
c3RhdGljIFN0cmluZyByaWdodENsaXBUb0NoYXJhY3Rlcihjb25zdCBTdHJpbmcmLCBmbG9hdCBt
YXhXaWR0aCwgY29uc3QgRm9udCYsIEVuYWJsZVJvdW5kaW5nSGFja3NPck5vdCwgZmxvYXQmIHJl
c3VsdFdpZHRoLCBib29sIHNob3VsZEluc2VydEVsbGlwc2lzID0gdHJ1ZSwgZmxvYXQgY3VzdG9t
VHJ1bmNhdGlvbkVsZW1lbnRXaWR0aCA9IDApOworICAgICAgICBXRUJDT1JFX0VYUE9SVCBzdGF0
aWMgU3RyaW5nIHJpZ2h0Q2xpcFRvV29yZChjb25zdCBTdHJpbmcmLCBmbG9hdCBtYXhXaWR0aCwg
Y29uc3QgRm9udCYsIEVuYWJsZVJvdW5kaW5nSGFja3NPck5vdCwgZmxvYXQmIHJlc3VsdFdpZHRo
LCBib29sIHNob3VsZEluc2VydEVsbGlwc2lzID0gdHJ1ZSwgZmxvYXQgY3VzdG9tVHJ1bmNhdGlv
bkVsZW1lbnRXaWR0aCA9IDAsIGJvb2wgYWx3YXlzVHJ1bmNhdGUgPSBmYWxzZSk7CiAKLSAgICAg
ICAgc3RhdGljIGZsb2F0IHdpZHRoKGNvbnN0IFN0cmluZyYsIGNvbnN0IEZvbnQmLCBFbmFibGVS
b3VuZGluZ0hhY2tzT3JOb3QgPSBEaXNhYmxlUm91bmRpbmdIYWNrcyk7CisgICAgICAgIFdFQkNP
UkVfRVhQT1JUIHN0YXRpYyBmbG9hdCB3aWR0aChjb25zdCBTdHJpbmcmLCBjb25zdCBGb250Jiwg
RW5hYmxlUm91bmRpbmdIYWNrc09yTm90ID0gRGlzYWJsZVJvdW5kaW5nSGFja3MpOwogICAgIH07
CiAgICAgCiB9IC8vIG5hbWVzcGFjZSBXZWJDb3JlCkluZGV4OiBTb3VyY2UvV2ViQ29yZS9wbGF0
Zm9ybS9ncmFwaGljcy9UZXh0UnVuLmgKPT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PQotLS0gU291cmNlL1dlYkNvcmUvcGxh
dGZvcm0vZ3JhcGhpY3MvVGV4dFJ1bi5oCShyZXZpc2lvbiAxNzI4NDcpCisrKyBTb3VyY2UvV2Vi
Q29yZS9wbGF0Zm9ybS9ncmFwaGljcy9UZXh0UnVuLmgJKHdvcmtpbmcgY29weSkKQEAgLTIyOCw4
ICsyMjgsOCBAQCBwdWJsaWM6CiAgICAgUmVuZGVyaW5nQ29udGV4dCogcmVuZGVyaW5nQ29udGV4
dCgpIGNvbnN0IHsgcmV0dXJuIG1fcmVuZGVyaW5nQ29udGV4dC5nZXQoKTsgfQogICAgIHZvaWQg
c2V0UmVuZGVyaW5nQ29udGV4dChQYXNzUmVmUHRyPFJlbmRlcmluZ0NvbnRleHQ+IGNvbnRleHQp
IHsgbV9yZW5kZXJpbmdDb250ZXh0ID0gY29udGV4dDsgfQogCi0gICAgc3RhdGljIHZvaWQgc2V0
QWxsb3dzUm91bmRpbmdIYWNrcyhib29sKTsKLSAgICBzdGF0aWMgYm9vbCBhbGxvd3NSb3VuZGlu
Z0hhY2tzKCk7CisgICAgV0VCQ09SRV9FWFBPUlQgc3RhdGljIHZvaWQgc2V0QWxsb3dzUm91bmRp
bmdIYWNrcyhib29sKTsKKyAgICBXRUJDT1JFX0VYUE9SVCBzdGF0aWMgYm9vbCBhbGxvd3NSb3Vu
ZGluZ0hhY2tzKCk7CiAKIHByaXZhdGU6CiAgICAgc3RhdGljIGJvb2wgc19hbGxvd3NSb3VuZGlu
Z0hhY2tzOwpJbmRleDogU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vZ3JhcGhpY3MvY2EvVGlsZUNv
bnRyb2xsZXIuaAo9PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09Ci0tLSBTb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9ncmFwaGlj
cy9jYS9UaWxlQ29udHJvbGxlci5oCShyZXZpc2lvbiAxNzI4NDcpCisrKyBTb3VyY2UvV2ViQ29y
ZS9wbGF0Zm9ybS9ncmFwaGljcy9jYS9UaWxlQ29udHJvbGxlci5oCSh3b3JraW5nIGNvcHkpCkBA
IC01MywyOCArNTMsMjggQEAgY2xhc3MgVGlsZUNvbnRyb2xsZXIgZmluYWwgOiBwdWJsaWMgVGls
ZQogICAgIGZyaWVuZCBjbGFzcyBUaWxlQ292ZXJhZ2VNYXA7CiAgICAgZnJpZW5kIGNsYXNzIFRp
bGVHcmlkOwogcHVibGljOgotICAgIHN0YXRpYyBQYXNzT3duUHRyPFRpbGVDb250cm9sbGVyPiBj
cmVhdGUoUGxhdGZvcm1DQUxheWVyKik7CisgICAgV0VCQ09SRV9FWFBPUlQgc3RhdGljIFBhc3NP
d25QdHI8VGlsZUNvbnRyb2xsZXI+IGNyZWF0ZShQbGF0Zm9ybUNBTGF5ZXIqKTsKICAgICB+VGls
ZUNvbnRyb2xsZXIoKTsKIAotICAgIHZvaWQgdGlsZUNhY2hlTGF5ZXJCb3VuZHNDaGFuZ2VkKCk7
CisgICAgV0VCQ09SRV9FWFBPUlQgdm9pZCB0aWxlQ2FjaGVMYXllckJvdW5kc0NoYW5nZWQoKTsK
IAotICAgIHZvaWQgc2V0TmVlZHNEaXNwbGF5KCk7Ci0gICAgdm9pZCBzZXROZWVkc0Rpc3BsYXlJ
blJlY3QoY29uc3QgSW50UmVjdCYpOworICAgIFdFQkNPUkVfRVhQT1JUIHZvaWQgc2V0TmVlZHNE
aXNwbGF5KCk7CisgICAgV0VCQ09SRV9FWFBPUlQgdm9pZCBzZXROZWVkc0Rpc3BsYXlJblJlY3Qo
Y29uc3QgSW50UmVjdCYpOwogCi0gICAgdm9pZCBzZXRDb250ZW50c1NjYWxlKGZsb2F0KTsKLSAg
ICBmbG9hdCBjb250ZW50c1NjYWxlKCkgY29uc3Q7CisgICAgV0VCQ09SRV9FWFBPUlQgdm9pZCBz
ZXRDb250ZW50c1NjYWxlKGZsb2F0KTsKKyAgICBXRUJDT1JFX0VYUE9SVCBmbG9hdCBjb250ZW50
c1NjYWxlKCkgY29uc3Q7CiAKICAgICBib29sIGFjY2VsZXJhdGVzRHJhd2luZygpIGNvbnN0IHsg
cmV0dXJuIG1fYWNjZWxlcmF0ZXNEcmF3aW5nOyB9Ci0gICAgdm9pZCBzZXRBY2NlbGVyYXRlc0Ry
YXdpbmcoYm9vbCk7CisgICAgV0VCQ09SRV9FWFBPUlQgdm9pZCBzZXRBY2NlbGVyYXRlc0RyYXdp
bmcoYm9vbCk7CiAKLSAgICB2b2lkIHNldFRpbGVzT3BhcXVlKGJvb2wpOworICAgIFdFQkNPUkVf
RVhQT1JUIHZvaWQgc2V0VGlsZXNPcGFxdWUoYm9vbCk7CiAgICAgYm9vbCB0aWxlc0FyZU9wYXF1
ZSgpIGNvbnN0IHsgcmV0dXJuIG1fdGlsZXNBcmVPcGFxdWU7IH0KIAogICAgIFBsYXRmb3JtQ0FM
YXllciYgcm9vdExheWVyKCkgeyByZXR1cm4gKm1fdGlsZUNhY2hlTGF5ZXI7IH0KICAgICBjb25z
dCBQbGF0Zm9ybUNBTGF5ZXImIHJvb3RMYXllcigpIGNvbnN0IHsgcmV0dXJuICptX3RpbGVDYWNo
ZUxheWVyOyB9CiAKLSAgICB2b2lkIHNldFRpbGVEZWJ1Z0JvcmRlcldpZHRoKGZsb2F0KTsKLSAg
ICB2b2lkIHNldFRpbGVEZWJ1Z0JvcmRlckNvbG9yKENvbG9yKTsKKyAgICBXRUJDT1JFX0VYUE9S
VCB2b2lkIHNldFRpbGVEZWJ1Z0JvcmRlcldpZHRoKGZsb2F0KTsKKyAgICBXRUJDT1JFX0VYUE9S
VCB2b2lkIHNldFRpbGVEZWJ1Z0JvcmRlckNvbG9yKENvbG9yKTsKIAogICAgIHZpcnR1YWwgRmxv
YXRSZWN0IHZpc2libGVSZWN0KCkgY29uc3Qgb3ZlcnJpZGUgeyByZXR1cm4gbV92aXNpYmxlUmVj
dDsgfQogCkBAIC0xMjIsNyArMTIyLDcgQEAgcHVibGljOgogCiAgICAgY29uc3QgVGlsZUdyaWQm
IHRpbGVHcmlkKCkgY29uc3QgeyByZXR1cm4gKm1fdGlsZUdyaWQ7IH0KIAotICAgIFZlY3RvcjxS
ZWZQdHI8UGxhdGZvcm1DQUxheWVyPj4gY29udGFpbmVyTGF5ZXJzKCk7CisgICAgV0VCQ09SRV9F
WFBPUlQgVmVjdG9yPFJlZlB0cjxQbGF0Zm9ybUNBTGF5ZXI+PiBjb250YWluZXJMYXllcnMoKTsK
IAogcHJvdGVjdGVkOgogICAgIHZvaWQgc2NoZWR1bGVUaWxlUmV2YWxpZGF0aW9uKGRvdWJsZSBp
bnRlcnZhbCk7CkluZGV4OiBTb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9ncmFwaGljcy9jYS9tYWMv
UGxhdGZvcm1DQUFuaW1hdGlvbk1hYy5oCj09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT0KLS0tIFNvdXJjZS9XZWJDb3JlL3Bs
YXRmb3JtL2dyYXBoaWNzL2NhL21hYy9QbGF0Zm9ybUNBQW5pbWF0aW9uTWFjLmgJKHJldmlzaW9u
IDE3Mjg0NykKKysrIFNvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL2dyYXBoaWNzL2NhL21hYy9QbGF0
Zm9ybUNBQW5pbWF0aW9uTWFjLmgJKHdvcmtpbmcgY29weSkKQEAgLTM5LDkgKzM5LDkgQEAgdHlw
ZWRlZiBDQVByb3BlcnR5QW5pbWF0aW9uKiBQbGF0Zm9ybUFuaQogCiBuYW1lc3BhY2UgV2ViQ29y
ZSB7CiAKLU5TU3RyaW5nKiB0b0NBRmlsbE1vZGVUeXBlKFBsYXRmb3JtQ0FBbmltYXRpb246OkZp
bGxNb2RlVHlwZSk7Ci1OU1N0cmluZyogdG9DQVZhbHVlRnVuY3Rpb25UeXBlKFBsYXRmb3JtQ0FB
bmltYXRpb246OlZhbHVlRnVuY3Rpb25UeXBlKTsKLUNBTWVkaWFUaW1pbmdGdW5jdGlvbiogdG9D
QU1lZGlhVGltaW5nRnVuY3Rpb24oY29uc3QgVGltaW5nRnVuY3Rpb24qLCBib29sIHJldmVyc2Up
OworV0VCQ09SRV9FWFBPUlQgTlNTdHJpbmcqIHRvQ0FGaWxsTW9kZVR5cGUoUGxhdGZvcm1DQUFu
aW1hdGlvbjo6RmlsbE1vZGVUeXBlKTsKK1dFQkNPUkVfRVhQT1JUIE5TU3RyaW5nKiB0b0NBVmFs
dWVGdW5jdGlvblR5cGUoUGxhdGZvcm1DQUFuaW1hdGlvbjo6VmFsdWVGdW5jdGlvblR5cGUpOwor
V0VCQ09SRV9FWFBPUlQgQ0FNZWRpYVRpbWluZ0Z1bmN0aW9uKiB0b0NBTWVkaWFUaW1pbmdGdW5j
dGlvbihjb25zdCBUaW1pbmdGdW5jdGlvbiosIGJvb2wgcmV2ZXJzZSk7CiAKIGJvb2wgaGFzRXhw
bGljaXRCZWdpblRpbWUoQ0FBbmltYXRpb24gKik7CiB2b2lkIHNldEhhc0V4cGxpY2l0QmVnaW5U
aW1lKENBQW5pbWF0aW9uICosIGJvb2wpOwpJbmRleDogU291cmNlL1dlYkNvcmUvcGxhdGZvcm0v
Z3JhcGhpY3MvY2cvR3JhcGhpY3NDb250ZXh0Q0cuaAo9PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09Ci0tLSBTb3VyY2UvV2Vi
Q29yZS9wbGF0Zm9ybS9ncmFwaGljcy9jZy9HcmFwaGljc0NvbnRleHRDRy5oCShyZXZpc2lvbiAx
NzI4NDcpCisrKyBTb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9ncmFwaGljcy9jZy9HcmFwaGljc0Nv
bnRleHRDRy5oCSh3b3JraW5nIGNvcHkpCkBAIC0zMyw3ICszMyw3IEBAIHR5cGVkZWYgc3RydWN0
IENHQ29sb3JTcGFjZSAqQ0dDb2xvclNwYWMKIG5hbWVzcGFjZSBXZWJDb3JlIHsKIAogQ0dDb2xv
clNwYWNlUmVmIGRldmljZVJHQkNvbG9yU3BhY2VSZWYoKTsKLUNHQ29sb3JTcGFjZVJlZiBzUkdC
Q29sb3JTcGFjZVJlZigpOworV0VCQ09SRV9FWFBPUlQgQ0dDb2xvclNwYWNlUmVmIHNSR0JDb2xv
clNwYWNlUmVmKCk7CiBDR0NvbG9yU3BhY2VSZWYgbGluZWFyUkdCQ29sb3JTcGFjZVJlZigpOwog
CiBzdGF0aWMgaW5saW5lIENHQ29sb3JTcGFjZVJlZiBjYWNoZWRDR0NvbG9yU3BhY2UoQ29sb3JT
cGFjZSBjb2xvclNwYWNlKQpJbmRleDogU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vZ3JhcGhpY3Mv
bWFjL0NvbG9yTWFjLmgKPT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PQotLS0gU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vZ3Jh
cGhpY3MvbWFjL0NvbG9yTWFjLmgJKHJldmlzaW9uIDE3Mjg0NykKKysrIFNvdXJjZS9XZWJDb3Jl
L3BsYXRmb3JtL2dyYXBoaWNzL21hYy9Db2xvck1hYy5oCSh3b3JraW5nIGNvcHkpCkBAIC00MCwx
MSArNDAsMTEgQEAgbmFtZXNwYWNlIFdlYkNvcmUgewogI2lmIFVTRShBUFBLSVQpCiAgICAgLy8g
VGhlc2UgZnVuY3Rpb25zIGFzc3VtZSBOU0NvbG9ycyBhcmUgaW4gRGV2aWNlUkdCIGNvbG9yc3Bh
Y2UKICAgICBDb2xvciBjb2xvckZyb21OU0NvbG9yKE5TQ29sb3IgKik7Ci0gICAgTlNDb2xvciAq
bnNDb2xvcihjb25zdCBDb2xvciYpOworICAgIFdFQkNPUkVfRVhQT1JUIE5TQ29sb3IgKm5zQ29s
b3IoY29uc3QgQ29sb3ImKTsKICNlbmRpZgogCi0gICAgYm9vbCB1c2VzVGVzdE1vZGVGb2N1c1Jp
bmdDb2xvcigpOwotICAgIHZvaWQgc2V0VXNlc1Rlc3RNb2RlRm9jdXNSaW5nQ29sb3IoYm9vbCk7
CisgICAgV0VCQ09SRV9FWFBPUlQgYm9vbCB1c2VzVGVzdE1vZGVGb2N1c1JpbmdDb2xvcigpOwor
ICAgIFdFQkNPUkVfRVhQT1JUIHZvaWQgc2V0VXNlc1Rlc3RNb2RlRm9jdXNSaW5nQ29sb3IoYm9v
bCk7CiAgICAgCiAgICAgLy8gRm9jdXMgcmluZyBjb2xvciB1c2VkIGZvciB0ZXN0aW5nIHB1cnBv
c2VzLgogICAgIFJHQkEzMiBvbGRBcXVhRm9jdXNSaW5nQ29sb3IoKTsKSW5kZXg6IFNvdXJjZS9X
ZWJDb3JlL3BsYXRmb3JtL2dyYXBoaWNzL3RyYW5zZm9ybXMvVHJhbnNmb3JtYXRpb25NYXRyaXgu
aAo9PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09Ci0tLSBTb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9ncmFwaGljcy90cmFuc2Zv
cm1zL1RyYW5zZm9ybWF0aW9uTWF0cml4LmgJKHJldmlzaW9uIDE3Mjg0NykKKysrIFNvdXJjZS9X
ZWJDb3JlL3BsYXRmb3JtL2dyYXBoaWNzL3RyYW5zZm9ybXMvVHJhbnNmb3JtYXRpb25NYXRyaXgu
aAkod29ya2luZyBjb3B5KQpAQCAtMTQ0LDcgKzE0NCw3IEBAIHB1YmxpYzoKIAogICAgIC8vIElm
IHRoZSBtYXRyaXggaGFzIDNEIGNvbXBvbmVudHMsIHRoZSB6IGNvbXBvbmVudCBvZiB0aGUgcmVz
dWx0IGlzCiAgICAgLy8gZHJvcHBlZCwgZWZmZWN0aXZlbHkgcHJvamVjdGluZyB0aGUgcmVjdCBp
bnRvIHRoZSB6PTAgcGxhbmUuCi0gICAgRmxvYXRSZWN0IG1hcFJlY3QoY29uc3QgRmxvYXRSZWN0
JikgY29uc3Q7CisgICAgV0VCQ09SRV9FWFBPUlQgRmxvYXRSZWN0IG1hcFJlY3QoY29uc3QgRmxv
YXRSZWN0JikgY29uc3Q7CiAKICAgICAvLyBSb3VuZHMgdGhlIHJlc3VsdGluZyBtYXBwZWQgcmVj
dGFuZ2xlIG91dC4gVGhpcyBpcyBoZWxwZnVsIGZvciBib3VuZGluZwogICAgIC8vIGJveCBjb21w
dXRhdGlvbnMgYnV0IG1heSBub3QgYmUgd2hhdCBpcyB3YW50ZWQgaW4gb3RoZXIgY29udGV4dHMu
CkBAIC0yMTksNyArMjE5LDcgQEAgcHVibGljOgogICAgIC8vIHRoaXMgPSBtYXQgKiB0aGlzLgog
ICAgIFRyYW5zZm9ybWF0aW9uTWF0cml4JiBtdWx0aXBseShjb25zdCBUcmFuc2Zvcm1hdGlvbk1h
dHJpeCYpOwogCi0gICAgVHJhbnNmb3JtYXRpb25NYXRyaXgmIHNjYWxlKGRvdWJsZSk7CisgICAg
V0VCQ09SRV9FWFBPUlQgVHJhbnNmb3JtYXRpb25NYXRyaXgmIHNjYWxlKGRvdWJsZSk7CiAgICAg
VHJhbnNmb3JtYXRpb25NYXRyaXgmIHNjYWxlTm9uVW5pZm9ybShkb3VibGUgc3gsIGRvdWJsZSBz
eSk7CiAgICAgVHJhbnNmb3JtYXRpb25NYXRyaXgmIHNjYWxlM2QoZG91YmxlIHN4LCBkb3VibGUg
c3ksIGRvdWJsZSBzeik7CiAKQEAgLTIzMSw3ICsyMzEsNyBAQCBwdWJsaWM6CiAgICAgLy8gVGhl
IHZlY3RvciAoeCx5LHopIGlzIG5vcm1hbGl6ZWQgaWYgaXQncyBub3QgYWxyZWFkeS4gQSB2ZWN0
b3Igb2YgKDAsMCwwKSB1c2VzIGEgdmVjdG9yIG9mICgwLDAsMSkuCiAgICAgVHJhbnNmb3JtYXRp
b25NYXRyaXgmIHJvdGF0ZTNkKGRvdWJsZSB4LCBkb3VibGUgeSwgZG91YmxlIHosIGRvdWJsZSBh
bmdsZSk7CiAgICAgCi0gICAgVHJhbnNmb3JtYXRpb25NYXRyaXgmIHRyYW5zbGF0ZShkb3VibGUg
dHgsIGRvdWJsZSB0eSk7CisgICAgV0VCQ09SRV9FWFBPUlQgVHJhbnNmb3JtYXRpb25NYXRyaXgm
IHRyYW5zbGF0ZShkb3VibGUgdHgsIGRvdWJsZSB0eSk7CiAgICAgVHJhbnNmb3JtYXRpb25NYXRy
aXgmIHRyYW5zbGF0ZTNkKGRvdWJsZSB0eCwgZG91YmxlIHR5LCBkb3VibGUgdHopOwogCiAgICAg
Ly8gdHJhbnNsYXRpb24gYWRkZWQgd2l0aCBhIHBvc3QtbXVsdGlwbHkKQEAgLTI1NCw3ICsyNTQs
NyBAQCBwdWJsaWM6CiAKICAgICAvLyBSZXR1cm5zIHRoZSBpZGVudGl0eSBtYXRyaXggaWYgaXQg
aXMgbm90IGludmVydGlibGUuCiAgICAgLy8gVXNlIGlzSW52ZXJ0aWJsZSgpIGJlZm9yZSBjYWxs
aW5nIHRoaXMgaWYgeW91IG5lZWQgdG8ga25vdy4KLSAgICBUcmFuc2Zvcm1hdGlvbk1hdHJpeCBp
bnZlcnNlKCkgY29uc3Q7CisgICAgV0VCQ09SRV9FWFBPUlQgVHJhbnNmb3JtYXRpb25NYXRyaXgg
aW52ZXJzZSgpIGNvbnN0OwogCiAgICAgLy8gRGVjb21wb3NlIHRoZSBtYXRyaXggaW50byBpdHMg
Y29tcG9uZW50IHBhcnRzLgogICAgIHN0cnVjdCBEZWNvbXBvc2VkMlR5cGUgewpAQCAtMzQ4LDcg
KzM0OCw3IEBAIHB1YmxpYzoKIAogI2lmIFVTRShDQSkKICAgICBUcmFuc2Zvcm1hdGlvbk1hdHJp
eChjb25zdCBDQVRyYW5zZm9ybTNEJik7Ci0gICAgb3BlcmF0b3IgQ0FUcmFuc2Zvcm0zRCgpIGNv
bnN0OworICAgIFdFQkNPUkVfRVhQT1JUIG9wZXJhdG9yIENBVHJhbnNmb3JtM0QoKSBjb25zdDsK
ICNlbmRpZgogI2lmIFVTRShDRykKICAgICBUcmFuc2Zvcm1hdGlvbk1hdHJpeChjb25zdCBDR0Fm
ZmluZVRyYW5zZm9ybSYpOwpJbmRleDogU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vaW9zL0ZpbGVT
eXN0ZW1JT1MuaAo9PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09Ci0tLSBTb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9pb3MvRmls
ZVN5c3RlbUlPUy5oCShyZXZpc2lvbiAxNzI4NDcpCisrKyBTb3VyY2UvV2ViQ29yZS9wbGF0Zm9y
bS9pb3MvRmlsZVN5c3RlbUlPUy5oCSh3b3JraW5nIGNvcHkpCkBAIC0zMCw3ICszMCw3IEBACiAK
IG5hbWVzcGFjZSBXZWJDb3JlIHsKIAotTlNTdHJpbmcgKmNyZWF0ZVRlbXBvcmFyeURpcmVjdG9y
eShOU1N0cmluZyAqZGlyZWN0b3J5UHJlZml4KTsKK1dFQkNPUkVfRVhQT1JUIE5TU3RyaW5nICpj
cmVhdGVUZW1wb3JhcnlEaXJlY3RvcnkoTlNTdHJpbmcgKmRpcmVjdG9yeVByZWZpeCk7CiBOU1N0
cmluZyAqY3JlYXRlVGVtcG9yYXJ5RmlsZShOU1N0cmluZyAqZGlyZWN0b3J5UGF0aCwgTlNTdHJp
bmcgKmZpbGVQcmVmaXgpOwogCiB9IC8vIG5hbWVzcGFjZSBXZWJDb3JlCkluZGV4OiBTb3VyY2Uv
V2ViQ29yZS9wbGF0Zm9ybS9pb3MvUGxhdGZvcm1FdmVudEZhY3RvcnlJT1MuaAo9PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
Ci0tLSBTb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9pb3MvUGxhdGZvcm1FdmVudEZhY3RvcnlJT1Mu
aAkocmV2aXNpb24gMTcyODQ3KQorKysgU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vaW9zL1BsYXRm
b3JtRXZlbnRGYWN0b3J5SU9TLmgJKHdvcmtpbmcgY29weSkKQEAgLTQ1LDcgKzQ1LDcgQEAgcHVi
bGljOgogI2VuZGlmCiB9OwogCi1TdHJpbmcga2V5SWRlbnRpZmllckZvcktleUV2ZW50KFdlYkV2
ZW50ICopOworV0VCQ09SRV9FWFBPUlQgU3RyaW5nIGtleUlkZW50aWZpZXJGb3JLZXlFdmVudChX
ZWJFdmVudCAqKTsKIAogfSAvLyBuYW1lc3BhY2UgV2ViQ29yZQogCkluZGV4OiBTb3VyY2UvV2Vi
Q29yZS9wbGF0Zm9ybS9pb3MvU2VsZWN0aW9uUmVjdC5oCj09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT0KLS0tIFNvdXJjZS9X
ZWJDb3JlL3BsYXRmb3JtL2lvcy9TZWxlY3Rpb25SZWN0LmgJKHJldmlzaW9uIDE3Mjg0NykKKysr
IFNvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL2lvcy9TZWxlY3Rpb25SZWN0LmgJKHdvcmtpbmcgY29w
eSkKQEAgLTM1LDExICszNSwxMSBAQCBuYW1lc3BhY2UgV2ViQ29yZSB7CiBjbGFzcyBTZWxlY3Rp
b25SZWN0IHsKICAgICBXVEZfTUFLRV9GQVNUX0FMTE9DQVRFRDsKIHB1YmxpYzoKLSAgICBleHBs
aWNpdCBTZWxlY3Rpb25SZWN0KGNvbnN0IEludFJlY3QmLCBib29sIGlzSG9yaXpvbnRhbCwgaW50
IGNvbHVtbk51bWJlcik7CisgICAgV0VCQ09SRV9FWFBPUlQgZXhwbGljaXQgU2VsZWN0aW9uUmVj
dChjb25zdCBJbnRSZWN0JiwgYm9vbCBpc0hvcml6b250YWwsIGludCBjb2x1bW5OdW1iZXIpOwog
CiAgICAgLy8gRklYTUU6IFdlIHNob3VsZCBtb3ZlIHNvbWUgb2YgdGhlc2UgYXJndW1lbnRzIHRv
IGFuIGF1eGlsbGFyeSBzdHJ1Y3QuCiAgICAgU2VsZWN0aW9uUmVjdChjb25zdCBJbnRSZWN0Jiwg
VGV4dERpcmVjdGlvbiwgaW50LCBpbnQsIGludCwgaW50LCBib29sLCBib29sLCBib29sLCBib29s
LCBib29sLCBib29sLCBib29sLCBib29sLCBpbnQpOwotICAgIFNlbGVjdGlvblJlY3QoKTsKKyAg
ICBXRUJDT1JFX0VYUE9SVCBTZWxlY3Rpb25SZWN0KCk7CiAgICAgflNlbGVjdGlvblJlY3QoKSB7
IH0KIAogICAgIEludFJlY3QgcmVjdCgpIGNvbnN0IHsgcmV0dXJuIG1fcmVjdDsgfQpJbmRleDog
U291cmNlL1dlYkNvcmUvcGxhdGZvcm0vaW9zL1N5c3RlbU1lbW9yeS5oCj09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT0KLS0t
IFNvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL2lvcy9TeXN0ZW1NZW1vcnkuaAkocmV2aXNpb24gMTcy
ODQ3KQorKysgU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vaW9zL1N5c3RlbU1lbW9yeS5oCSh3b3Jr
aW5nIGNvcHkpCkBAIC0zMiw4ICszMiw4IEBACiAjaWYgVEFSR0VUX09TX0lQSE9ORQogCiBuYW1l
c3BhY2UgV2ViQ29yZSB7Ci1pbnQgc3lzdGVtTWVtb3J5TGV2ZWwoKTsgLy8gSW4gWzAsIDEwMF0K
LXNpemVfdCBzeXN0ZW1Ub3RhbE1lbW9yeSgpOworV0VCQ09SRV9FWFBPUlQgaW50IHN5c3RlbU1l
bW9yeUxldmVsKCk7IC8vIEluIFswLCAxMDBdCitXRUJDT1JFX0VYUE9SVCBzaXplX3Qgc3lzdGVt
VG90YWxNZW1vcnkoKTsKIH0KIAogI2VuZGlmCkluZGV4OiBTb3VyY2UvV2ViQ29yZS9wbGF0Zm9y
bS9pb3MvVGlsZUNvbnRyb2xsZXJNZW1vcnlIYW5kbGVySU9TLmgKPT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PQotLS0gU291
cmNlL1dlYkNvcmUvcGxhdGZvcm0vaW9zL1RpbGVDb250cm9sbGVyTWVtb3J5SGFuZGxlcklPUy5o
CShyZXZpc2lvbiAxNzI4NDcpCisrKyBTb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9pb3MvVGlsZUNv
bnRyb2xsZXJNZW1vcnlIYW5kbGVySU9TLmgJKHdvcmtpbmcgY29weSkKQEAgLTM4LDcgKzM4LDcg
QEAgcHVibGljOgogCiAgICAgdm9pZCByZW1vdmVUaWxlQ29udHJvbGxlcihUaWxlQ29udHJvbGxl
ciopOwogICAgIHZvaWQgdGlsZUNvbnRyb2xsZXJHYWluZWRVbnBhcmVudGVkVGlsZXMoVGlsZUNv
bnRyb2xsZXIqKTsKLSAgICB2b2lkIHRyaW1VbnBhcmVudGVkVGlsZXNUb1RhcmdldChpbnQgdGFy
Z2V0KTsKKyAgICBXRUJDT1JFX0VYUE9SVCB2b2lkIHRyaW1VbnBhcmVudGVkVGlsZXNUb1Rhcmdl
dChpbnQgdGFyZ2V0KTsKIAogcHJpdmF0ZToKICAgICBUaWxlQ29udHJvbGxlck1lbW9yeUhhbmRs
ZXIoKSB7IH0KQEAgLTQ4LDcgKzQ4LDcgQEAgcHJpdmF0ZToKICAgICBUaWxlQ29udHJvbGxlckxp
c3QgbV90aWxlQ29udHJvbGxlcnM7CiB9OwogCi1UaWxlQ29udHJvbGxlck1lbW9yeUhhbmRsZXIm
IHRpbGVDb250cm9sbGVyTWVtb3J5SGFuZGxlcigpOworV0VCQ09SRV9FWFBPUlQgVGlsZUNvbnRy
b2xsZXJNZW1vcnlIYW5kbGVyJiB0aWxlQ29udHJvbGxlck1lbW9yeUhhbmRsZXIoKTsKIH0KIAog
I2VuZGlmIC8vIFRpbGVDb250cm9sbGVyTWVtb3J5SGFuZGxlcklPU19oCkluZGV4OiBTb3VyY2Uv
V2ViQ29yZS9wbGF0Zm9ybS9pb3MvV2ViVmlkZW9GdWxsc2NyZWVuSW50ZXJmYWNlQVZLaXQuaAo9
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09Ci0tLSBTb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9pb3MvV2ViVmlkZW9GdWxsc2Ny
ZWVuSW50ZXJmYWNlQVZLaXQuaAkocmV2aXNpb24gMTcyODQ3KQorKysgU291cmNlL1dlYkNvcmUv
cGxhdGZvcm0vaW9zL1dlYlZpZGVvRnVsbHNjcmVlbkludGVyZmFjZUFWS2l0LmgJKHdvcmtpbmcg
Y29weSkKQEAgLTc3LDI3ICs3NywyNyBAQCBjbGFzcyBXZWJWaWRlb0Z1bGxzY3JlZW5JbnRlcmZh
Y2VBVktpdAogICAgIHZvaWQgZG9FbnRlckZ1bGxzY3JlZW4oKTsKICAgICAgICAgCiBwdWJsaWM6
Ci0gICAgV2ViVmlkZW9GdWxsc2NyZWVuSW50ZXJmYWNlQVZLaXQoKTsKKyAgICBXRUJDT1JFX0VY
UE9SVCBXZWJWaWRlb0Z1bGxzY3JlZW5JbnRlcmZhY2VBVktpdCgpOwogICAgIHZpcnR1YWwgfldl
YlZpZGVvRnVsbHNjcmVlbkludGVyZmFjZUFWS2l0KCkgeyB9Ci0gICAgdm9pZCBzZXRXZWJWaWRl
b0Z1bGxzY3JlZW5Nb2RlbChXZWJWaWRlb0Z1bGxzY3JlZW5Nb2RlbCopOwotICAgIHZvaWQgc2V0
V2ViVmlkZW9GdWxsc2NyZWVuQ2hhbmdlT2JzZXJ2ZXIoV2ViVmlkZW9GdWxsc2NyZWVuQ2hhbmdl
T2JzZXJ2ZXIqKTsKKyAgICBXRUJDT1JFX0VYUE9SVCB2b2lkIHNldFdlYlZpZGVvRnVsbHNjcmVl
bk1vZGVsKFdlYlZpZGVvRnVsbHNjcmVlbk1vZGVsKik7CisgICAgV0VCQ09SRV9FWFBPUlQgdm9p
ZCBzZXRXZWJWaWRlb0Z1bGxzY3JlZW5DaGFuZ2VPYnNlcnZlcihXZWJWaWRlb0Z1bGxzY3JlZW5D
aGFuZ2VPYnNlcnZlciopOwogICAgIAotICAgIHZpcnR1YWwgdm9pZCBzZXREdXJhdGlvbihkb3Vi
bGUpIG92ZXJyaWRlOwotICAgIHZpcnR1YWwgdm9pZCBzZXRDdXJyZW50VGltZShkb3VibGUgY3Vy
cmVudFRpbWUsIGRvdWJsZSBhbmNob3JUaW1lKSBvdmVycmlkZTsKLSAgICB2aXJ0dWFsIHZvaWQg
c2V0UmF0ZShib29sIGlzUGxheWluZywgZmxvYXQgcGxheWJhY2tSYXRlKSBvdmVycmlkZTsKLSAg
ICB2aXJ0dWFsIHZvaWQgc2V0VmlkZW9EaW1lbnNpb25zKGJvb2wgaGFzVmlkZW8sIGZsb2F0IHdp
ZHRoLCBmbG9hdCBoZWlnaHQpIG92ZXJyaWRlOwotICAgIHZpcnR1YWwgdm9pZCBzZXRTZWVrYWJs
ZVJhbmdlcyhjb25zdCBUaW1lUmFuZ2VzJikgb3ZlcnJpZGU7Ci0gICAgdmlydHVhbCB2b2lkIHNl
dENhblBsYXlGYXN0UmV2ZXJzZShib29sKSBvdmVycmlkZTsKLSAgICB2aXJ0dWFsIHZvaWQgc2V0
QXVkaW9NZWRpYVNlbGVjdGlvbk9wdGlvbnMoY29uc3QgVmVjdG9yPFN0cmluZz4mIG9wdGlvbnMs
IHVpbnQ2NF90IHNlbGVjdGVkSW5kZXgpIG92ZXJyaWRlOwotICAgIHZpcnR1YWwgdm9pZCBzZXRM
ZWdpYmxlTWVkaWFTZWxlY3Rpb25PcHRpb25zKGNvbnN0IFZlY3RvcjxTdHJpbmc+JiBvcHRpb25z
LCB1aW50NjRfdCBzZWxlY3RlZEluZGV4KSBvdmVycmlkZTsKLSAgICB2aXJ0dWFsIHZvaWQgc2V0
RXh0ZXJuYWxQbGF5YmFjayhib29sIGVuYWJsZWQsIEV4dGVybmFsUGxheWJhY2tUYXJnZXRUeXBl
LCBTdHJpbmcgbG9jYWxpemVkRGV2aWNlTmFtZSkgb3ZlcnJpZGU7CisgICAgV0VCQ09SRV9FWFBP
UlQgdmlydHVhbCB2b2lkIHNldER1cmF0aW9uKGRvdWJsZSkgb3ZlcnJpZGU7CisgICAgV0VCQ09S
RV9FWFBPUlQgdmlydHVhbCB2b2lkIHNldEN1cnJlbnRUaW1lKGRvdWJsZSBjdXJyZW50VGltZSwg
ZG91YmxlIGFuY2hvclRpbWUpIG92ZXJyaWRlOworICAgIFdFQkNPUkVfRVhQT1JUIHZpcnR1YWwg
dm9pZCBzZXRSYXRlKGJvb2wgaXNQbGF5aW5nLCBmbG9hdCBwbGF5YmFja1JhdGUpIG92ZXJyaWRl
OworICAgIFdFQkNPUkVfRVhQT1JUIHZpcnR1YWwgdm9pZCBzZXRWaWRlb0RpbWVuc2lvbnMoYm9v
bCBoYXNWaWRlbywgZmxvYXQgd2lkdGgsIGZsb2F0IGhlaWdodCkgb3ZlcnJpZGU7CisgICAgV0VC
Q09SRV9FWFBPUlQgdmlydHVhbCB2b2lkIHNldFNlZWthYmxlUmFuZ2VzKGNvbnN0IFRpbWVSYW5n
ZXMmKSBvdmVycmlkZTsKKyAgICBXRUJDT1JFX0VYUE9SVCB2aXJ0dWFsIHZvaWQgc2V0Q2FuUGxh
eUZhc3RSZXZlcnNlKGJvb2wpIG92ZXJyaWRlOworICAgIFdFQkNPUkVfRVhQT1JUIHZpcnR1YWwg
dm9pZCBzZXRBdWRpb01lZGlhU2VsZWN0aW9uT3B0aW9ucyhjb25zdCBWZWN0b3I8U3RyaW5nPiYg
b3B0aW9ucywgdWludDY0X3Qgc2VsZWN0ZWRJbmRleCkgb3ZlcnJpZGU7CisgICAgV0VCQ09SRV9F
WFBPUlQgdmlydHVhbCB2b2lkIHNldExlZ2libGVNZWRpYVNlbGVjdGlvbk9wdGlvbnMoY29uc3Qg
VmVjdG9yPFN0cmluZz4mIG9wdGlvbnMsIHVpbnQ2NF90IHNlbGVjdGVkSW5kZXgpIG92ZXJyaWRl
OworICAgIFdFQkNPUkVfRVhQT1JUIHZpcnR1YWwgdm9pZCBzZXRFeHRlcm5hbFBsYXliYWNrKGJv
b2wgZW5hYmxlZCwgRXh0ZXJuYWxQbGF5YmFja1RhcmdldFR5cGUsIFN0cmluZyBsb2NhbGl6ZWRE
ZXZpY2VOYW1lKSBvdmVycmlkZTsKIAotICAgIHZpcnR1YWwgdm9pZCBzZXR1cEZ1bGxzY3JlZW4o
UGxhdGZvcm1MYXllciYsIFdlYkNvcmU6OkludFJlY3QgaW5pdGlhbFJlY3QsIFVJVmlldyAqKTsK
LSAgICB2aXJ0dWFsIHZvaWQgZW50ZXJGdWxsc2NyZWVuKCk7Ci0gICAgdmlydHVhbCB2b2lkIGV4
aXRGdWxsc2NyZWVuKFdlYkNvcmU6OkludFJlY3QgZmluYWxSZWN0KTsKLSAgICB2aXJ0dWFsIHZv
aWQgY2xlYW51cEZ1bGxzY3JlZW4oKTsKLSAgICB2aXJ0dWFsIHZvaWQgaW52YWxpZGF0ZSgpOwot
ICAgIHZpcnR1YWwgdm9pZCByZXF1ZXN0SGlkZUFuZEV4aXRGdWxsc2NyZWVuKCk7CisgICAgV0VC
Q09SRV9FWFBPUlQgdmlydHVhbCB2b2lkIHNldHVwRnVsbHNjcmVlbihQbGF0Zm9ybUxheWVyJiwg
V2ViQ29yZTo6SW50UmVjdCBpbml0aWFsUmVjdCwgVUlWaWV3ICopOworICAgIFdFQkNPUkVfRVhQ
T1JUIHZpcnR1YWwgdm9pZCBlbnRlckZ1bGxzY3JlZW4oKTsKKyAgICBXRUJDT1JFX0VYUE9SVCB2
aXJ0dWFsIHZvaWQgZXhpdEZ1bGxzY3JlZW4oV2ViQ29yZTo6SW50UmVjdCBmaW5hbFJlY3QpOwor
ICAgIFdFQkNPUkVfRVhQT1JUIHZpcnR1YWwgdm9pZCBjbGVhbnVwRnVsbHNjcmVlbigpOworICAg
IFdFQkNPUkVfRVhQT1JUIHZpcnR1YWwgdm9pZCBpbnZhbGlkYXRlKCk7CisgICAgV0VCQ09SRV9F
WFBPUlQgdmlydHVhbCB2b2lkIHJlcXVlc3RIaWRlQW5kRXhpdEZ1bGxzY3JlZW4oKTsKIH07CiAK
IH0KSW5kZXg6IFNvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL21hYy9QbGF0Zm9ybUV2ZW50RmFjdG9y
eU1hYy5oCj09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT0KLS0tIFNvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL21hYy9QbGF0Zm9y
bUV2ZW50RmFjdG9yeU1hYy5oCShyZXZpc2lvbiAxNzI4NDcpCisrKyBTb3VyY2UvV2ViQ29yZS9w
bGF0Zm9ybS9tYWMvUGxhdGZvcm1FdmVudEZhY3RvcnlNYWMuaAkod29ya2luZyBjb3B5KQpAQCAt
NDEsMTIgKzQxLDEyIEBAIHB1YmxpYzoKIAogI2lmIFBMQVRGT1JNKENPQ09BKSAmJiBkZWZpbmVk
KF9fT0JKQ19fKQogLy8gRklYTUU6IFRoaXMgZG9lc24ndCByZWFsbHkgYmVsb25nIGhlcmUuCi1J
bnRQb2ludCBnbG9iYWxQb2ludChjb25zdCBOU1BvaW50JiB3aW5kb3dQb2ludCwgTlNXaW5kb3cg
Kik7CitXRUJDT1JFX0VYUE9SVCBJbnRQb2ludCBnbG9iYWxQb2ludChjb25zdCBOU1BvaW50JiB3
aW5kb3dQb2ludCwgTlNXaW5kb3cgKik7CiAKIC8vIEZJWE1FOiBXZWJLaXQyIGhhcyBhIGxvdCBv
ZiBjb2RlIGNvcHkvcGFzdGVkIGZyb20gUGxhdGZvcm1FdmVudEZhY3RvcnlNYWMgaW4gV2ViRXZl
bnRGYWN0b3J5LiBJdCBzaG91bGQgYmUgY2FyZWZ1bGx5IHNoYXJlZCB3aXRoIFdlYkNvcmUuCi1p
bnQgd2luZG93c0tleUNvZGVGb3JLZXlFdmVudChOU0V2ZW50Kik7Ci1TdHJpbmcga2V5SWRlbnRp
ZmllckZvcktleUV2ZW50KE5TRXZlbnQqKTsKLWRvdWJsZSBldmVudFRpbWVTdGFtcFNpbmNlMTk3
MChOU0V2ZW50Kik7CitXRUJDT1JFX0VYUE9SVCBpbnQgd2luZG93c0tleUNvZGVGb3JLZXlFdmVu
dChOU0V2ZW50Kik7CitXRUJDT1JFX0VYUE9SVCBTdHJpbmcga2V5SWRlbnRpZmllckZvcktleUV2
ZW50KE5TRXZlbnQqKTsKK1dFQkNPUkVfRVhQT1JUIGRvdWJsZSBldmVudFRpbWVTdGFtcFNpbmNl
MTk3MChOU0V2ZW50Kik7CiAKICNlbmRpZgogCkluZGV4OiBTb3VyY2UvV2ViQ29yZS9wbGF0Zm9y
bS9tYWMvU2Nyb2xsYmFyVGhlbWVNYWMuaAo9PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09Ci0tLSBTb3VyY2UvV2ViQ29yZS9w
bGF0Zm9ybS9tYWMvU2Nyb2xsYmFyVGhlbWVNYWMuaAkocmV2aXNpb24gMTcyODQ3KQorKysgU291
cmNlL1dlYkNvcmUvcGxhdGZvcm0vbWFjL1Njcm9sbGJhclRoZW1lTWFjLmgJKHdvcmtpbmcgY29w
eSkKQEAgLTY1LDExICs2NSwxMSBAQCBwdWJsaWM6CiAgICAgc3RhdGljIHZvaWQgc2V0SXNDdXJy
ZW50bHlEcmF3aW5nSW50b0xheWVyKGJvb2wpOwogCiAjaWYgRU5BQkxFKFJVQkJFUl9CQU5ESU5H
KQotICAgIHN0YXRpYyB2b2lkIHNldFVwT3ZlcmhhbmdBcmVhQmFja2dyb3VuZChDQUxheWVyICos
IGNvbnN0IENvbG9yJiBjdXN0b21CYWNrZ3JvdW5kQ29sb3IgPSBDb2xvcigpKTsKLSAgICBzdGF0
aWMgdm9pZCByZW1vdmVPdmVyaGFuZ0FyZWFCYWNrZ3JvdW5kKENBTGF5ZXIgKik7CisgICAgV0VC
Q09SRV9FWFBPUlQgc3RhdGljIHZvaWQgc2V0VXBPdmVyaGFuZ0FyZWFCYWNrZ3JvdW5kKENBTGF5
ZXIgKiwgY29uc3QgQ29sb3ImIGN1c3RvbUJhY2tncm91bmRDb2xvciA9IENvbG9yKCkpOworICAg
IFdFQkNPUkVfRVhQT1JUIHN0YXRpYyB2b2lkIHJlbW92ZU92ZXJoYW5nQXJlYUJhY2tncm91bmQo
Q0FMYXllciAqKTsKIAotICAgIHN0YXRpYyB2b2lkIHNldFVwT3ZlcmhhbmdBcmVhU2hhZG93KENB
TGF5ZXIgKik7Ci0gICAgc3RhdGljIHZvaWQgcmVtb3ZlT3ZlcmhhbmdBcmVhU2hhZG93KENBTGF5
ZXIgKik7CisgICAgV0VCQ09SRV9FWFBPUlQgc3RhdGljIHZvaWQgc2V0VXBPdmVyaGFuZ0FyZWFT
aGFkb3coQ0FMYXllciAqKTsKKyAgICBXRUJDT1JFX0VYUE9SVCBzdGF0aWMgdm9pZCByZW1vdmVP
dmVyaGFuZ0FyZWFTaGFkb3coQ0FMYXllciAqKTsKICNlbmRpZgogCiBwcm90ZWN0ZWQ6CkluZGV4
OiBTb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9tYWMvV2ViQ29yZU5TVVJMRXh0cmFzLmgKPT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PQotLS0gU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vbWFjL1dlYkNvcmVOU1VSTEV4dHJhcy5o
CShyZXZpc2lvbiAxNzI4NDcpCisrKyBTb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9tYWMvV2ViQ29y
ZU5TVVJMRXh0cmFzLmgJKHdvcmtpbmcgY29weSkKQEAgLTMxLDIzICszMSwyMyBAQAogCiBuYW1l
c3BhY2UgV2ViQ29yZSB7CiAKLU5TU3RyaW5nICp1c2VyVmlzaWJsZVN0cmluZyhOU1VSTCAqKTsK
LU5TVVJMICpVUkxCeUNhbm9uaWNhbGl6aW5nVVJMKE5TVVJMICopOwotTlNVUkwgKlVSTFdpdGhV
c2VyVHlwZWRTdHJpbmcoTlNTdHJpbmcgKiwgTlNVUkwgKmJhc2VVUkwpOwotTlNVUkwgKlVSTEJ5
UmVtb3ZpbmdVc2VySW5mbyhOU1VSTCAqKTsKLUJPT0wgaG9zdE5hbWVOZWVkc0RlY29kaW5nV2l0
aFJhbmdlKE5TU3RyaW5nICosIE5TUmFuZ2UpOwotQk9PTCBob3N0TmFtZU5lZWRzRW5jb2RpbmdX
aXRoUmFuZ2UoTlNTdHJpbmcgKiwgTlNSYW5nZSk7Ci1OU1N0cmluZyAqZGVjb2RlSG9zdE5hbWVX
aXRoUmFuZ2UoTlNTdHJpbmcgKiwgTlNSYW5nZSk7Ci1OU1N0cmluZyAqZW5jb2RlSG9zdE5hbWVX
aXRoUmFuZ2UoTlNTdHJpbmcgKiwgTlNSYW5nZSk7Ci1OU1N0cmluZyAqZGVjb2RlSG9zdE5hbWUo
TlNTdHJpbmcgKik7Ci1OU1N0cmluZyAqZW5jb2RlSG9zdE5hbWUoTlNTdHJpbmcgKik7Ci1OU1VS
TCAqVVJMQnlUcnVuY2F0aW5nT25lQ2hhcmFjdGVyQmVmb3JlQ29tcG9uZW50KE5TVVJMICosIENG
VVJMQ29tcG9uZW50VHlwZSk7Ci1OU1VSTCAqVVJMV2l0aERhdGEoTlNEYXRhICosIE5TVVJMICpi
YXNlVVJMKTsKLU5TRGF0YSAqb3JpZ2luYWxVUkxEYXRhKE5TVVJMICopOwotTlNEYXRhICpkYXRh
Rm9yVVJMQ29tcG9uZW50VHlwZShOU1VSTCAqLCBDRlVSTENvbXBvbmVudFR5cGUpOworV0VCQ09S
RV9FWFBPUlQgTlNTdHJpbmcgKnVzZXJWaXNpYmxlU3RyaW5nKE5TVVJMICopOworV0VCQ09SRV9F
WFBPUlQgTlNVUkwgKlVSTEJ5Q2Fub25pY2FsaXppbmdVUkwoTlNVUkwgKik7CitXRUJDT1JFX0VY
UE9SVCBOU1VSTCAqVVJMV2l0aFVzZXJUeXBlZFN0cmluZyhOU1N0cmluZyAqLCBOU1VSTCAqYmFz
ZVVSTCk7CitXRUJDT1JFX0VYUE9SVCBOU1VSTCAqVVJMQnlSZW1vdmluZ1VzZXJJbmZvKE5TVVJM
ICopOworV0VCQ09SRV9FWFBPUlQgQk9PTCBob3N0TmFtZU5lZWRzRGVjb2RpbmdXaXRoUmFuZ2Uo
TlNTdHJpbmcgKiwgTlNSYW5nZSk7CitXRUJDT1JFX0VYUE9SVCBCT09MIGhvc3ROYW1lTmVlZHNF
bmNvZGluZ1dpdGhSYW5nZShOU1N0cmluZyAqLCBOU1JhbmdlKTsKK1dFQkNPUkVfRVhQT1JUIE5T
U3RyaW5nICpkZWNvZGVIb3N0TmFtZVdpdGhSYW5nZShOU1N0cmluZyAqLCBOU1JhbmdlKTsKK1dF
QkNPUkVfRVhQT1JUIE5TU3RyaW5nICplbmNvZGVIb3N0TmFtZVdpdGhSYW5nZShOU1N0cmluZyAq
LCBOU1JhbmdlKTsKK1dFQkNPUkVfRVhQT1JUIE5TU3RyaW5nICpkZWNvZGVIb3N0TmFtZShOU1N0
cmluZyAqKTsKK1dFQkNPUkVfRVhQT1JUIE5TU3RyaW5nICplbmNvZGVIb3N0TmFtZShOU1N0cmlu
ZyAqKTsKK1dFQkNPUkVfRVhQT1JUIE5TVVJMICpVUkxCeVRydW5jYXRpbmdPbmVDaGFyYWN0ZXJC
ZWZvcmVDb21wb25lbnQoTlNVUkwgKiwgQ0ZVUkxDb21wb25lbnRUeXBlKTsKK1dFQkNPUkVfRVhQ
T1JUIE5TVVJMICpVUkxXaXRoRGF0YShOU0RhdGEgKiwgTlNVUkwgKmJhc2VVUkwpOworV0VCQ09S
RV9FWFBPUlQgTlNEYXRhICpvcmlnaW5hbFVSTERhdGEoTlNVUkwgKik7CitXRUJDT1JFX0VYUE9S
VCBOU0RhdGEgKmRhdGFGb3JVUkxDb21wb25lbnRUeXBlKE5TVVJMICosIENGVVJMQ29tcG9uZW50
VHlwZSk7CiAKIE5TUmFuZ2UgcmFuZ2VPZlVSTFNjaGVtZShOU1N0cmluZyAqKTsKLUJPT0wgaXNV
c2VyVmlzaWJsZVVSTChOU1N0cmluZyAqKTsKLUJPT0wgbG9va3NMaWtlQWJzb2x1dGVVUkwoTlNT
dHJpbmcgKik7CitXRUJDT1JFX0VYUE9SVCBCT09MIGlzVXNlclZpc2libGVVUkwoTlNTdHJpbmcg
Kik7CitXRUJDT1JFX0VYUE9SVCBCT09MIGxvb2tzTGlrZUFic29sdXRlVVJMKE5TU3RyaW5nICop
OwogCiB9IC8vIG5hbWVzcGFjZSBXZWJDb3JlCkluZGV4OiBTb3VyY2UvV2ViQ29yZS9wbGF0Zm9y
bS9tYWMvV2ViTlNBdHRyaWJ1dGVkU3RyaW5nRXh0cmFzLmgKPT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PQotLS0gU291cmNl
L1dlYkNvcmUvcGxhdGZvcm0vbWFjL1dlYk5TQXR0cmlidXRlZFN0cmluZ0V4dHJhcy5oCShyZXZp
c2lvbiAxNzI4NDcpCisrKyBTb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9tYWMvV2ViTlNBdHRyaWJ1
dGVkU3RyaW5nRXh0cmFzLmgJKHdvcmtpbmcgY29weSkKQEAgLTI1LDYgKzI1LDYgQEAKIAogbmFt
ZXNwYWNlIFdlYkNvcmUgewogCi1OU0F0dHJpYnV0ZWRTdHJpbmcgKmF0dHJpYnV0ZWRTdHJpbmdC
eVN0cmlwcGluZ0F0dGFjaG1lbnRDaGFyYWN0ZXJzKE5TQXR0cmlidXRlZFN0cmluZyAqKTsKK1dF
QkNPUkVfRVhQT1JUIE5TQXR0cmlidXRlZFN0cmluZyAqYXR0cmlidXRlZFN0cmluZ0J5U3RyaXBw
aW5nQXR0YWNobWVudENoYXJhY3RlcnMoTlNBdHRyaWJ1dGVkU3RyaW5nICopOwogCiB9CkluZGV4
OiBTb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9uZXR3b3JrL0Jsb2JSZWdpc3RyeS5oCj09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT0KLS0tIFNvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL25ldHdvcmsvQmxvYlJlZ2lzdHJ5LmgJKHJl
dmlzaW9uIDE3Mjg0NykKKysrIFNvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL25ldHdvcmsvQmxvYlJl
Z2lzdHJ5LmgJKHdvcmtpbmcgY29weSkKQEAgLTQxLDcgKzQxLDcgQEAgY2xhc3MgQmxvYlBhcnQ7
CiBjbGFzcyBCbG9iUmVnaXN0cnk7CiBjbGFzcyBVUkw7CiAKLUJsb2JSZWdpc3RyeSYgYmxvYlJl
Z2lzdHJ5KCk7CitXRUJDT1JFX0VYUE9SVCBCbG9iUmVnaXN0cnkmIGJsb2JSZWdpc3RyeSgpOwog
CiAvLyBCbG9iUmVnaXN0cnkgaXMgbm90IHRocmVhZC1zYWZlLiBJdCBzaG91bGQgb25seSBiZSBj
YWxsZWQgZnJvbSBtYWluIHRocmVhZC4KIGNsYXNzIEJsb2JSZWdpc3RyeSB7CkluZGV4OiBTb3Vy
Y2UvV2ViQ29yZS9wbGF0Zm9ybS9uZXR3b3JrL0Nvb2tpZVN0b3JhZ2UuaAo9PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09Ci0t
LSBTb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9uZXR3b3JrL0Nvb2tpZVN0b3JhZ2UuaAkocmV2aXNp
b24gMTcyODQ3KQorKysgU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vbmV0d29yay9Db29raWVTdG9y
YWdlLmgJKHdvcmtpbmcgY29weSkKQEAgLTMxLDggKzMxLDggQEAgbmFtZXNwYWNlIFdlYkNvcmUg
ewogLy8gVGhlc2UgYXJlIGFsd2F5cyBvYnNlcnZpbmcgdGhlIHNoYXJlZCBjb29raWUgc3RvcmFn
ZSwgZXZlbiB3aGVuIGluIHByaXZhdGUgYnJvd3NpbmcgbW9kZS4KIAogdHlwZWRlZiB2b2lkKCpD
b29raWVDaGFuZ2VDYWxsYmFja1B0cikoKTsKLXZvaWQgc3RhcnRPYnNlcnZpbmdDb29raWVDaGFu
Z2VzKENvb2tpZUNoYW5nZUNhbGxiYWNrUHRyKTsKLXZvaWQgc3RvcE9ic2VydmluZ0Nvb2tpZUNo
YW5nZXMoKTsKK1dFQkNPUkVfRVhQT1JUIHZvaWQgc3RhcnRPYnNlcnZpbmdDb29raWVDaGFuZ2Vz
KENvb2tpZUNoYW5nZUNhbGxiYWNrUHRyKTsKK1dFQkNPUkVfRVhQT1JUIHZvaWQgc3RvcE9ic2Vy
dmluZ0Nvb2tpZUNoYW5nZXMoKTsKIAogfQogCkluZGV4OiBTb3VyY2UvV2ViQ29yZS9wbGF0Zm9y
bS9uZXR3b3JrL0ROUy5oCj09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT0KLS0tIFNvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL25l
dHdvcmsvRE5TLmgJKHJldmlzaW9uIDE3Mjg0NykKKysrIFNvdXJjZS9XZWJDb3JlL3BsYXRmb3Jt
L25ldHdvcmsvRE5TLmgJKHdvcmtpbmcgY29weSkKQEAgLTMwLDcgKzMwLDcgQEAKIAogbmFtZXNw
YWNlIFdlYkNvcmUgewogCi12b2lkIHByZWZldGNoRE5TKGNvbnN0IFN0cmluZyYgaG9zdG5hbWUp
OworV0VCQ09SRV9FWFBPUlQgdm9pZCBwcmVmZXRjaEROUyhjb25zdCBTdHJpbmcmIGhvc3RuYW1l
KTsKIH0KIAogI2VuZGlmCkluZGV4OiBTb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9uZXR3b3JrL05l
dHdvcmtTdGF0ZU5vdGlmaWVyLmgKPT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PQotLS0gU291cmNlL1dlYkNvcmUvcGxhdGZv
cm0vbmV0d29yay9OZXR3b3JrU3RhdGVOb3RpZmllci5oCShyZXZpc2lvbiAxNzI4NDcpCisrKyBT
b3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9uZXR3b3JrL05ldHdvcmtTdGF0ZU5vdGlmaWVyLmgJKHdv
cmtpbmcgY29weSkKQEAgLTEyNCw3ICsxMjQsNyBAQCBpbmxpbmUgYm9vbCBOZXR3b3JrU3RhdGVO
b3RpZmllcjo6b25MaW5lCiB9CiAjZW5kaWYKIAotTmV0d29ya1N0YXRlTm90aWZpZXImIG5ldHdv
cmtTdGF0ZU5vdGlmaWVyKCk7CitXRUJDT1JFX0VYUE9SVCBOZXR3b3JrU3RhdGVOb3RpZmllciYg
bmV0d29ya1N0YXRlTm90aWZpZXIoKTsKIAogfSAvLyBuYW1lc3BhY2UgV2ViQ29yZQogCkluZGV4
OiBTb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9uZXR3b3JrL1BsYXRmb3JtQ29va2llSmFyLmgKPT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PQotLS0gU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vbmV0d29yay9QbGF0Zm9ybUNvb2tp
ZUphci5oCShyZXZpc2lvbiAxNzI4NDcpCisrKyBTb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9uZXR3
b3JrL1BsYXRmb3JtQ29va2llSmFyLmgJKHdvcmtpbmcgY29weSkKQEAgLTQwLDE1ICs0MCwxNSBA
QCBzdHJ1Y3QgQ29va2llOwogLy8gRklYTUU6IFRoZXNlIHNob3VsZCBwcm9iYWJseSBiZSBOZXR3
b3JrU3RvcmFnZVNlc3Npb24gbWVtYmVyIGZ1bmN0aW9ucy4KIAogV0VCQ09SRV9FWFBPUlQgU3Ry
aW5nIGNvb2tpZXNGb3JET00oY29uc3QgTmV0d29ya1N0b3JhZ2VTZXNzaW9uJiwgY29uc3QgVVJM
JiBmaXJzdFBhcnR5LCBjb25zdCBVUkwmKTsKLXZvaWQgc2V0Q29va2llc0Zyb21ET00oY29uc3Qg
TmV0d29ya1N0b3JhZ2VTZXNzaW9uJiwgY29uc3QgVVJMJiBmaXJzdFBhcnR5LCBjb25zdCBVUkwm
LCBjb25zdCBTdHJpbmcmKTsKK1dFQkNPUkVfRVhQT1JUIHZvaWQgc2V0Q29va2llc0Zyb21ET00o
Y29uc3QgTmV0d29ya1N0b3JhZ2VTZXNzaW9uJiwgY29uc3QgVVJMJiBmaXJzdFBhcnR5LCBjb25z
dCBVUkwmLCBjb25zdCBTdHJpbmcmKTsKIGJvb2wgY29va2llc0VuYWJsZWQoY29uc3QgTmV0d29y
a1N0b3JhZ2VTZXNzaW9uJiwgY29uc3QgVVJMJiBmaXJzdFBhcnR5LCBjb25zdCBVUkwmKTsKIFN0
cmluZyBjb29raWVSZXF1ZXN0SGVhZGVyRmllbGRWYWx1ZShjb25zdCBOZXR3b3JrU3RvcmFnZVNl
c3Npb24mLCBjb25zdCBVUkwmIGZpcnN0UGFydHksIGNvbnN0IFVSTCYpOwogYm9vbCBnZXRSYXdD
b29raWVzKGNvbnN0IE5ldHdvcmtTdG9yYWdlU2Vzc2lvbiYsIGNvbnN0IFVSTCYgZmlyc3RQYXJ0
eSwgY29uc3QgVVJMJiwgVmVjdG9yPENvb2tpZT4mKTsKIHZvaWQgZGVsZXRlQ29va2llKGNvbnN0
IE5ldHdvcmtTdG9yYWdlU2Vzc2lvbiYsIGNvbnN0IFVSTCYsIGNvbnN0IFN0cmluZyYpOwotdm9p
ZCBnZXRIb3N0bmFtZXNXaXRoQ29va2llcyhjb25zdCBOZXR3b3JrU3RvcmFnZVNlc3Npb24mLCBI
YXNoU2V0PFN0cmluZz4mIGhvc3RuYW1lcyk7Ci12b2lkIGRlbGV0ZUNvb2tpZXNGb3JIb3N0bmFt
ZShjb25zdCBOZXR3b3JrU3RvcmFnZVNlc3Npb24mLCBjb25zdCBTdHJpbmcmIGhvc3RuYW1lKTsK
LXZvaWQgZGVsZXRlQWxsQ29va2llcyhjb25zdCBOZXR3b3JrU3RvcmFnZVNlc3Npb24mKTsKLXZv
aWQgZGVsZXRlQWxsQ29va2llc01vZGlmaWVkQWZ0ZXJEYXRlKGNvbnN0IE5ldHdvcmtTdG9yYWdl
U2Vzc2lvbiYsIGRvdWJsZSBkYXRlKTsKK1dFQkNPUkVfRVhQT1JUIHZvaWQgZ2V0SG9zdG5hbWVz
V2l0aENvb2tpZXMoY29uc3QgTmV0d29ya1N0b3JhZ2VTZXNzaW9uJiwgSGFzaFNldDxTdHJpbmc+
JiBob3N0bmFtZXMpOworV0VCQ09SRV9FWFBPUlQgdm9pZCBkZWxldGVDb29raWVzRm9ySG9zdG5h
bWUoY29uc3QgTmV0d29ya1N0b3JhZ2VTZXNzaW9uJiwgY29uc3QgU3RyaW5nJiBob3N0bmFtZSk7
CitXRUJDT1JFX0VYUE9SVCB2b2lkIGRlbGV0ZUFsbENvb2tpZXMoY29uc3QgTmV0d29ya1N0b3Jh
Z2VTZXNzaW9uJik7CitXRUJDT1JFX0VYUE9SVCB2b2lkIGRlbGV0ZUFsbENvb2tpZXNNb2RpZmll
ZEFmdGVyRGF0ZShjb25zdCBOZXR3b3JrU3RvcmFnZVNlc3Npb24mLCBkb3VibGUgZGF0ZSk7CiAK
IH0KIApJbmRleDogU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vbmV0d29yay9Qcm94eVNlcnZlci5o
Cj09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT0KLS0tIFNvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL25ldHdvcmsvUHJveHlTZXJ2
ZXIuaAkocmV2aXNpb24gMTcyODQ3KQorKysgU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vbmV0d29y
ay9Qcm94eVNlcnZlci5oCSh3b3JraW5nIGNvcHkpCkBAIC02OCw3ICs2OCw3IEBAIHByaXZhdGU6
CiB9OwogCiAvLyBSZXR1cm4gYSB2ZWN0b3Igb2YgcHJveHkgc2VydmVycyBmb3IgdGhlIGdpdmVu
IFVSTC4KLVZlY3RvcjxQcm94eVNlcnZlcj4gcHJveHlTZXJ2ZXJzRm9yVVJMKGNvbnN0IFVSTCYs
IGNvbnN0IE5ldHdvcmtpbmdDb250ZXh0Kik7CitXRUJDT1JFX0VYUE9SVCBWZWN0b3I8UHJveHlT
ZXJ2ZXI+IHByb3h5U2VydmVyc0ZvclVSTChjb25zdCBVUkwmLCBjb25zdCBOZXR3b3JraW5nQ29u
dGV4dCopOwogCiAvLyBDb252ZXJ0cyB0aGUgZ2l2ZW4gdmVjdG9yIG9mIHByb3h5IHNlcnZlcnMg
dG8gYSBQQUMgc3RyaW5nLCBhcyBkZXNjcmliZWQgaW4KIC8vIGh0dHA6Ly93ZWIuYXJjaGl2ZS5v
cmcvd2ViLzIwMDYwNDI0MDA1MDM3L3dwLm5ldHNjYXBlLmNvbS9lbmcvbW96aWxsYS8yLjAvcmVs
bm90ZXMvZGVtby9wcm94eS1saXZlLmh0bWwKSW5kZXg6IFNvdXJjZS9XZWJDb3JlL3BsYXRmb3Jt
L25ldHdvcmsvUmVzb3VyY2VFcnJvckJhc2UuaAo9PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09Ci0tLSBTb3VyY2UvV2ViQ29y
ZS9wbGF0Zm9ybS9uZXR3b3JrL1Jlc291cmNlRXJyb3JCYXNlLmgJKHJldmlzaW9uIDE3Mjg0NykK
KysrIFNvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL25ldHdvcmsvUmVzb3VyY2VFcnJvckJhc2UuaAko
d29ya2luZyBjb3B5KQpAQCAtNzQsNyArNzQsNyBAQCBwcm90ZWN0ZWQ6CiAgICAgewogICAgIH0K
IAotICAgIHZvaWQgbGF6eUluaXQoKSBjb25zdDsKKyAgICBXRUJDT1JFX0VYUE9SVCB2b2lkIGxh
enlJbml0KCkgY29uc3Q7CiAKICAgICAvLyBUaGUgUmVzb3VyY2VFcnJvciBzdWJjbGFzcyBtYXkg
InNoYWRvdyIgdGhpcyBtZXRob2QgdG8gbGF6aWx5IGluaXRpYWxpemUgcGxhdGZvcm0gc3BlY2lm
aWMgZmllbGRzCiAgICAgdm9pZCBwbGF0Zm9ybUxhenlJbml0KCkge30KSW5kZXg6IFNvdXJjZS9X
ZWJDb3JlL3BsYXRmb3JtL25ldHdvcmsvUmVzb3VyY2VIYW5kbGUuaAo9PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09Ci0tLSBT
b3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9uZXR3b3JrL1Jlc291cmNlSGFuZGxlLmgJKHJldmlzaW9u
IDE3Mjg0NykKKysrIFNvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL25ldHdvcmsvUmVzb3VyY2VIYW5k
bGUuaAkod29ya2luZyBjb3B5KQpAQCAtMTA4LDEwICsxMDgsMTAgQEAgY2xhc3MgUmVzb3VyY2VI
YW5kbGUgOiBwdWJsaWMgUmVmQ291bnRlZAogI2VuZGlmCiAgICAgewogcHVibGljOgotICAgIHN0
YXRpYyBQYXNzUmVmUHRyPFJlc291cmNlSGFuZGxlPiBjcmVhdGUoTmV0d29ya2luZ0NvbnRleHQq
LCBjb25zdCBSZXNvdXJjZVJlcXVlc3QmLCBSZXNvdXJjZUhhbmRsZUNsaWVudCosIGJvb2wgZGVm
ZXJzTG9hZGluZywgYm9vbCBzaG91bGRDb250ZW50U25pZmYpOwotICAgIHN0YXRpYyB2b2lkIGxv
YWRSZXNvdXJjZVN5bmNocm9ub3VzbHkoTmV0d29ya2luZ0NvbnRleHQqLCBjb25zdCBSZXNvdXJj
ZVJlcXVlc3QmLCBTdG9yZWRDcmVkZW50aWFscywgUmVzb3VyY2VFcnJvciYsIFJlc291cmNlUmVz
cG9uc2UmLCBWZWN0b3I8Y2hhcj4mIGRhdGEpOworICAgIFdFQkNPUkVfRVhQT1JUIHN0YXRpYyBQ
YXNzUmVmUHRyPFJlc291cmNlSGFuZGxlPiBjcmVhdGUoTmV0d29ya2luZ0NvbnRleHQqLCBjb25z
dCBSZXNvdXJjZVJlcXVlc3QmLCBSZXNvdXJjZUhhbmRsZUNsaWVudCosIGJvb2wgZGVmZXJzTG9h
ZGluZywgYm9vbCBzaG91bGRDb250ZW50U25pZmYpOworICAgIFdFQkNPUkVfRVhQT1JUIHN0YXRp
YyB2b2lkIGxvYWRSZXNvdXJjZVN5bmNocm9ub3VzbHkoTmV0d29ya2luZ0NvbnRleHQqLCBjb25z
dCBSZXNvdXJjZVJlcXVlc3QmLCBTdG9yZWRDcmVkZW50aWFscywgUmVzb3VyY2VFcnJvciYsIFJl
c291cmNlUmVzcG9uc2UmLCBWZWN0b3I8Y2hhcj4mIGRhdGEpOwogCi0gICAgdmlydHVhbCB+UmVz
b3VyY2VIYW5kbGUoKTsKKyAgICBXRUJDT1JFX0VYUE9SVCB2aXJ0dWFsIH5SZXNvdXJjZUhhbmRs
ZSgpOwogCiAjaWYgUExBVEZPUk0oQ09DT0EpIHx8IFVTRShDRk5FVFdPUkspCiAgICAgdm9pZCB3
aWxsU2VuZFJlcXVlc3QoUmVzb3VyY2VSZXF1ZXN0JiwgY29uc3QgUmVzb3VyY2VSZXNwb25zZSYg
cmVkaXJlY3RSZXNwb25zZSk7CkBAIC0xMzMsNyArMTMzLDcgQEAgcHVibGljOgogCiAjaWYgUExB
VEZPUk0oQ09DT0EpICYmICFVU0UoQ0ZORVRXT1JLKQogICAgIHZvaWQgZGlkQ2FuY2VsQXV0aGVu
dGljYXRpb25DaGFsbGVuZ2UoY29uc3QgQXV0aGVudGljYXRpb25DaGFsbGVuZ2UmKTsKLSAgICBO
U1VSTENvbm5lY3Rpb24gKmNvbm5lY3Rpb24oKSBjb25zdDsKKyAgICBXRUJDT1JFX0VYUE9SVCBO
U1VSTENvbm5lY3Rpb24gKmNvbm5lY3Rpb24oKSBjb25zdDsKICAgICBpZCBtYWtlRGVsZWdhdGUo
Ym9vbCk7CiAgICAgaWQgZGVsZWdhdGUoKTsKICAgICB2b2lkIHJlbGVhc2VEZWxlZ2F0ZSgpOwpA
QCAtMTU2LDcgKzE1Niw3IEBAIHB1YmxpYzoKICNpZiBVU0UoQ0ZORVRXT1JLKQogICAgIENGVVJM
U3RvcmFnZVNlc3Npb25SZWYgc3RvcmFnZVNlc3Npb24oKSBjb25zdDsKICAgICBDRlVSTENvbm5l
Y3Rpb25SZWYgY29ubmVjdGlvbigpIGNvbnN0OwotICAgIFJldGFpblB0cjxDRlVSTENvbm5lY3Rp
b25SZWY+IHJlbGVhc2VDb25uZWN0aW9uRm9yRG93bmxvYWQoKTsKKyAgICBXRUJDT1JFX0VYUE9S
VCBSZXRhaW5QdHI8Q0ZVUkxDb25uZWN0aW9uUmVmPiByZWxlYXNlQ29ubmVjdGlvbkZvckRvd25s
b2FkKCk7CiAgICAgY29uc3QgUmVzb3VyY2VSZXF1ZXN0JiBjdXJyZW50UmVxdWVzdCgpIGNvbnN0
OwogICAgIHN0YXRpYyB2b2lkIHNldEhvc3RBbGxvd3NBbnlIVFRQU0NlcnRpZmljYXRlKGNvbnN0
IFN0cmluZyYpOwogICAgIHN0YXRpYyB2b2lkIHNldENsaWVudENlcnRpZmljYXRlKGNvbnN0IFN0
cmluZyYgaG9zdCwgQ0ZEYXRhUmVmKTsKQEAgLTE3OSw3ICsxNzksNyBAQCBwdWJsaWM6CiAgICAg
Ym9vbCBzaG91bGRDb250ZW50U25pZmYoKSBjb25zdDsKICAgICBzdGF0aWMgYm9vbCBzaG91bGRD
b250ZW50U25pZmZVUkwoY29uc3QgVVJMJik7CiAKLSAgICBzdGF0aWMgdm9pZCBmb3JjZUNvbnRl
bnRTbmlmZmluZygpOworICAgIFdFQkNPUkVfRVhQT1JUIHN0YXRpYyB2b2lkIGZvcmNlQ29udGVu
dFNuaWZmaW5nKCk7CiAKICNpZiBVU0UoV0lOSU5FVCkKICAgICB2b2lkIHNldFN5bmNocm9ub3Vz
SW50ZXJuZXRIYW5kbGUoSElOVEVSTkVUKTsKQEAgLTIxMSwzNiArMjExLDM2IEBAIHB1YmxpYzoK
IAogICAgIGJvb2wgaGFzQXV0aGVudGljYXRpb25DaGFsbGVuZ2UoKSBjb25zdDsKICAgICB2b2lk
IGNsZWFyQXV0aGVudGljYXRpb24oKTsKLSAgICB2aXJ0dWFsIHZvaWQgY2FuY2VsKCk7CisgICAg
V0VCQ09SRV9FWFBPUlQgdmlydHVhbCB2b2lkIGNhbmNlbCgpOwogCiAgICAgLy8gVGhlIGNsaWVu
dCBtYXkgYmUgMCwgaW4gd2hpY2ggY2FzZSBubyBjYWxsYmFja3Mgd2lsbCBiZSBtYWRlLgogICAg
IFJlc291cmNlSGFuZGxlQ2xpZW50KiBjbGllbnQoKSBjb25zdDsKLSAgICB2b2lkIHNldENsaWVu
dChSZXNvdXJjZUhhbmRsZUNsaWVudCopOworICAgIFdFQkNPUkVfRVhQT1JUIHZvaWQgc2V0Q2xp
ZW50KFJlc291cmNlSGFuZGxlQ2xpZW50Kik7CiAKICAgICAvLyBDYWxsZWQgaW4gcmVzcG9uc2Ug
dG8gUmVzb3VyY2VIYW5kbGVDbGllbnQ6OndpbGxTZW5kUmVxdWVzdEFzeW5jKCkuCi0gICAgdm9p
ZCBjb250aW51ZVdpbGxTZW5kUmVxdWVzdChjb25zdCBSZXNvdXJjZVJlcXVlc3QmKTsKKyAgICBX
RUJDT1JFX0VYUE9SVCB2b2lkIGNvbnRpbnVlV2lsbFNlbmRSZXF1ZXN0KGNvbnN0IFJlc291cmNl
UmVxdWVzdCYpOwogCiAgICAgLy8gQ2FsbGVkIGluIHJlc3BvbnNlIHRvIFJlc291cmNlSGFuZGxl
Q2xpZW50OjpkaWRSZWNlaXZlUmVzcG9uc2VBc3luYygpLgotICAgIHZpcnR1YWwgdm9pZCBjb250
aW51ZURpZFJlY2VpdmVSZXNwb25zZSgpOworICAgIFdFQkNPUkVfRVhQT1JUIHZpcnR1YWwgdm9p
ZCBjb250aW51ZURpZFJlY2VpdmVSZXNwb25zZSgpOwogCiAjaWYgVVNFKFBST1RFQ1RJT05fU1BB
Q0VfQVVUSF9DQUxMQkFDSykKICAgICAvLyBDYWxsZWQgaW4gcmVzcG9uc2UgdG8gUmVzb3VyY2VI
YW5kbGVDbGllbnQ6OmNhbkF1dGhlbnRpY2F0ZUFnYWluc3RQcm90ZWN0aW9uU3BhY2VBc3luYygp
LgotICAgIHZvaWQgY29udGludWVDYW5BdXRoZW50aWNhdGVBZ2FpbnN0UHJvdGVjdGlvblNwYWNl
KGJvb2wpOworICAgIFdFQkNPUkVfRVhQT1JUIHZvaWQgY29udGludWVDYW5BdXRoZW50aWNhdGVB
Z2FpbnN0UHJvdGVjdGlvblNwYWNlKGJvb2wpOwogI2VuZGlmCiAKICAgICAvLyBDYWxsZWQgaW4g
cmVzcG9uc2UgdG8gUmVzb3VyY2VIYW5kbGVDbGllbnQ6OndpbGxDYWNoZVJlc3BvbnNlQXN5bmMo
KS4KICNpZiBVU0UoQ0ZORVRXT1JLKQotICAgIHZvaWQgY29udGludWVXaWxsQ2FjaGVSZXNwb25z
ZShDRkNhY2hlZFVSTFJlc3BvbnNlUmVmKTsKKyAgICBXRUJDT1JFX0VYUE9SVCB2b2lkIGNvbnRp
bnVlV2lsbENhY2hlUmVzcG9uc2UoQ0ZDYWNoZWRVUkxSZXNwb25zZVJlZik7CiAjZW5kaWYKICNp
ZiBQTEFURk9STShDT0NPQSkgJiYgIVVTRShDRk5FVFdPUkspCi0gICAgdm9pZCBjb250aW51ZVdp
bGxDYWNoZVJlc3BvbnNlKE5TQ2FjaGVkVVJMUmVzcG9uc2UgKik7CisgICAgV0VCQ09SRV9FWFBP
UlQgdm9pZCBjb250aW51ZVdpbGxDYWNoZVJlc3BvbnNlKE5TQ2FjaGVkVVJMUmVzcG9uc2UgKik7
CiAjZW5kaWYKIAotICAgIHZvaWQgc2V0RGVmZXJzTG9hZGluZyhib29sKTsKKyAgICBXRUJDT1JF
X0VYUE9SVCB2b2lkIHNldERlZmVyc0xvYWRpbmcoYm9vbCk7CiAKICAgICB2b2lkIGRpZENoYW5n
ZVByaW9yaXR5KFJlc291cmNlTG9hZFByaW9yaXR5KTsKIAotICAgIFJlc291cmNlUmVxdWVzdCYg
Zmlyc3RSZXF1ZXN0KCk7CisgICAgV0VCQ09SRV9FWFBPUlQgUmVzb3VyY2VSZXF1ZXN0JiBmaXJz
dFJlcXVlc3QoKTsKICAgICBjb25zdCBTdHJpbmcmIGxhc3RIVFRQTWV0aG9kKCkgY29uc3Q7CiAK
ICAgICB2b2lkIGZhaWx1cmVUaW1lckZpcmVkKFRpbWVyPFJlc291cmNlSGFuZGxlPiYpOwpAQCAt
MjUxLDcgKzI1MSw3IEBAIHB1YmxpYzoKICAgICB1c2luZyBSZWZDb3VudGVkPFJlc291cmNlSGFu
ZGxlPjo6ZGVyZWY7CiAKICNpZiBQTEFURk9STShDT0NPQSkgfHwgVVNFKENGTkVUV09SSykKLSAg
ICBzdGF0aWMgQ0ZTdHJpbmdSZWYgc3luY2hyb25vdXNMb2FkUnVuTG9vcE1vZGUoKTsKKyAgICBX
RUJDT1JFX0VYUE9SVCBzdGF0aWMgQ0ZTdHJpbmdSZWYgc3luY2hyb25vdXNMb2FkUnVuTG9vcE1v
ZGUoKTsKICNlbmRpZgogCiAjaWYgUExBVEZPUk0oSU9TKSAmJiBVU0UoQ0ZORVRXT1JLKQpJbmRl
eDogU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vbmV0d29yay9SZXNvdXJjZUhhbmRsZUNsaWVudC5o
Cj09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT0KLS0tIFNvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL25ldHdvcmsvUmVzb3VyY2VI
YW5kbGVDbGllbnQuaAkocmV2aXNpb24gMTcyODQ3KQorKysgU291cmNlL1dlYkNvcmUvcGxhdGZv
cm0vbmV0d29yay9SZXNvdXJjZUhhbmRsZUNsaWVudC5oCSh3b3JraW5nIGNvcHkpCkBAIC02Miw4
ICs2Miw4IEBAIG5hbWVzcGFjZSBXZWJDb3JlIHsKICAgICAKICAgICBjbGFzcyBSZXNvdXJjZUhh
bmRsZUNsaWVudCB7CiAgICAgcHVibGljOgotICAgICAgICBSZXNvdXJjZUhhbmRsZUNsaWVudCgp
OwotICAgICAgICB2aXJ0dWFsIH5SZXNvdXJjZUhhbmRsZUNsaWVudCgpOworICAgICAgICBXRUJD
T1JFX0VYUE9SVCBSZXNvdXJjZUhhbmRsZUNsaWVudCgpOworICAgICAgICBXRUJDT1JFX0VYUE9S
VCB2aXJ0dWFsIH5SZXNvdXJjZUhhbmRsZUNsaWVudCgpOwogCiAgICAgICAgIC8vIFJlcXVlc3Qg
bWF5IGJlIG1vZGlmaWVkLgogICAgICAgICB2aXJ0dWFsIHZvaWQgd2lsbFNlbmRSZXF1ZXN0KFJl
c291cmNlSGFuZGxlKiwgUmVzb3VyY2VSZXF1ZXN0JiwgY29uc3QgUmVzb3VyY2VSZXNwb25zZSYg
LypyZWRpcmVjdFJlc3BvbnNlKi8pIHsgfQpAQCAtNzIsNyArNzIsNyBAQCBuYW1lc3BhY2UgV2Vi
Q29yZSB7CiAgICAgICAgIHZpcnR1YWwgdm9pZCBkaWRSZWNlaXZlUmVzcG9uc2UoUmVzb3VyY2VI
YW5kbGUqLCBjb25zdCBSZXNvdXJjZVJlc3BvbnNlJikgeyB9CiAgICAgICAgIAogICAgICAgICB2
aXJ0dWFsIHZvaWQgZGlkUmVjZWl2ZURhdGEoUmVzb3VyY2VIYW5kbGUqLCBjb25zdCBjaGFyKiwg
dW5zaWduZWQsIGludCAvKmVuY29kZWREYXRhTGVuZ3RoKi8pIHsgfQotICAgICAgICB2aXJ0dWFs
IHZvaWQgZGlkUmVjZWl2ZUJ1ZmZlcihSZXNvdXJjZUhhbmRsZSosIFBhc3NSZWZQdHI8U2hhcmVk
QnVmZmVyPiwgaW50IGVuY29kZWREYXRhTGVuZ3RoKTsKKyAgICAgICAgV0VCQ09SRV9FWFBPUlQg
dmlydHVhbCB2b2lkIGRpZFJlY2VpdmVCdWZmZXIoUmVzb3VyY2VIYW5kbGUqLCBQYXNzUmVmUHRy
PFNoYXJlZEJ1ZmZlcj4sIGludCBlbmNvZGVkRGF0YUxlbmd0aCk7CiAgICAgICAgIAogICAgICAg
ICB2aXJ0dWFsIHZvaWQgZGlkRmluaXNoTG9hZGluZyhSZXNvdXJjZUhhbmRsZSosIGRvdWJsZSAv
KmZpbmlzaFRpbWUqLykgeyB9CiAgICAgICAgIHZpcnR1YWwgdm9pZCBkaWRGYWlsKFJlc291cmNl
SGFuZGxlKiwgY29uc3QgUmVzb3VyY2VFcnJvciYpIHsgfQpAQCAtODIsMjAgKzgyLDIwIEBAIG5h
bWVzcGFjZSBXZWJDb3JlIHsKICAgICAgICAgdmlydHVhbCBib29sIHVzZXNBc3luY0NhbGxiYWNr
cygpIHsgcmV0dXJuIGZhbHNlOyB9CiAKICAgICAgICAgLy8gQ2xpZW50IHdpbGwgcGFzcyBhbiB1
cGRhdGVkIHJlcXVlc3QgdXNpbmcgUmVzb3VyY2VIYW5kbGU6OmNvbnRpbnVlV2lsbFNlbmRSZXF1
ZXN0KCkgd2hlbiByZWFkeS4KLSAgICAgICAgdmlydHVhbCB2b2lkIHdpbGxTZW5kUmVxdWVzdEFz
eW5jKFJlc291cmNlSGFuZGxlKiwgY29uc3QgUmVzb3VyY2VSZXF1ZXN0JiwgY29uc3QgUmVzb3Vy
Y2VSZXNwb25zZSYgcmVkaXJlY3RSZXNwb25zZSk7CisgICAgICAgIFdFQkNPUkVfRVhQT1JUIHZp
cnR1YWwgdm9pZCB3aWxsU2VuZFJlcXVlc3RBc3luYyhSZXNvdXJjZUhhbmRsZSosIGNvbnN0IFJl
c291cmNlUmVxdWVzdCYsIGNvbnN0IFJlc291cmNlUmVzcG9uc2UmIHJlZGlyZWN0UmVzcG9uc2Up
OwogCiAgICAgICAgIC8vIENsaWVudCB3aWxsIGNhbGwgUmVzb3VyY2VIYW5kbGU6OmNvbnRpbnVl
RGlkUmVjZWl2ZVJlc3BvbnNlKCkgd2hlbiByZWFkeS4KLSAgICAgICAgdmlydHVhbCB2b2lkIGRp
ZFJlY2VpdmVSZXNwb25zZUFzeW5jKFJlc291cmNlSGFuZGxlKiwgY29uc3QgUmVzb3VyY2VSZXNw
b25zZSYpOworICAgICAgICBXRUJDT1JFX0VYUE9SVCB2aXJ0dWFsIHZvaWQgZGlkUmVjZWl2ZVJl
c3BvbnNlQXN5bmMoUmVzb3VyY2VIYW5kbGUqLCBjb25zdCBSZXNvdXJjZVJlc3BvbnNlJik7CiAK
ICNpZiBVU0UoUFJPVEVDVElPTl9TUEFDRV9BVVRIX0NBTExCQUNLKQogICAgICAgICAvLyBDbGll
bnQgd2lsbCBwYXNzIGFuIHVwZGF0ZWQgcmVxdWVzdCB1c2luZyBSZXNvdXJjZUhhbmRsZTo6Y29u
dGludWVDYW5BdXRoZW50aWNhdGVBZ2FpbnN0UHJvdGVjdGlvblNwYWNlKCkgd2hlbiByZWFkeS4K
LSAgICAgICAgdmlydHVhbCB2b2lkIGNhbkF1dGhlbnRpY2F0ZUFnYWluc3RQcm90ZWN0aW9uU3Bh
Y2VBc3luYyhSZXNvdXJjZUhhbmRsZSosIGNvbnN0IFByb3RlY3Rpb25TcGFjZSYpOworICAgICAg
ICBXRUJDT1JFX0VYUE9SVCB2aXJ0dWFsIHZvaWQgY2FuQXV0aGVudGljYXRlQWdhaW5zdFByb3Rl
Y3Rpb25TcGFjZUFzeW5jKFJlc291cmNlSGFuZGxlKiwgY29uc3QgUHJvdGVjdGlvblNwYWNlJik7
CiAjZW5kaWYKICAgICAgICAgLy8gQ2xpZW50IHdpbGwgcGFzcyBhbiB1cGRhdGVkIHJlcXVlc3Qg
dXNpbmcgUmVzb3VyY2VIYW5kbGU6OmNvbnRpbnVlV2lsbENhY2hlUmVzcG9uc2UoKSB3aGVuIHJl
YWR5LgogI2lmIFVTRShDRk5FVFdPUkspCi0gICAgICAgIHZpcnR1YWwgdm9pZCB3aWxsQ2FjaGVS
ZXNwb25zZUFzeW5jKFJlc291cmNlSGFuZGxlKiwgQ0ZDYWNoZWRVUkxSZXNwb25zZVJlZik7Cisg
ICAgICAgIFdFQkNPUkVfRVhQT1JUIHZpcnR1YWwgdm9pZCB3aWxsQ2FjaGVSZXNwb25zZUFzeW5j
KFJlc291cmNlSGFuZGxlKiwgQ0ZDYWNoZWRVUkxSZXNwb25zZVJlZik7CiAjZWxpZiBQTEFURk9S
TShDT0NPQSkKLSAgICAgICAgdmlydHVhbCB2b2lkIHdpbGxDYWNoZVJlc3BvbnNlQXN5bmMoUmVz
b3VyY2VIYW5kbGUqLCBOU0NhY2hlZFVSTFJlc3BvbnNlICopOworICAgICAgICBXRUJDT1JFX0VY
UE9SVCB2aXJ0dWFsIHZvaWQgd2lsbENhY2hlUmVzcG9uc2VBc3luYyhSZXNvdXJjZUhhbmRsZSos
IE5TQ2FjaGVkVVJMUmVzcG9uc2UgKik7CiAjZW5kaWYKIAogI2lmIFVTRShORVRXT1JLX0NGREFU
QV9BUlJBWV9DQUxMQkFDSykKSW5kZXg6IFNvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL25ldHdvcmsv
UmVzb3VyY2VSZXF1ZXN0QmFzZS5oCj09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT0KLS0tIFNvdXJjZS9XZWJDb3JlL3BsYXRm
b3JtL25ldHdvcmsvUmVzb3VyY2VSZXF1ZXN0QmFzZS5oCShyZXZpc2lvbiAxNzI4NDcpCisrKyBT
b3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9uZXR3b3JrL1Jlc291cmNlUmVxdWVzdEJhc2UuaAkod29y
a2luZyBjb3B5KQpAQCAtNTksMjggKzU5LDI4IEBAIG5hbWVzcGFjZSBXZWJDb3JlIHsKICAgICAg
ICAgLy8gR2V0cyBhIGNvcHkgb2YgdGhlIGRhdGEgc3VpdGFibGUgZm9yIHBhc3NpbmcgdG8gYW5v
dGhlciB0aHJlYWQuCiAgICAgICAgIFBhc3NPd25QdHI8Q3Jvc3NUaHJlYWRSZXNvdXJjZVJlcXVl
c3REYXRhPiBjb3B5RGF0YSgpIGNvbnN0OwogCi0gICAgICAgIGJvb2wgaXNOdWxsKCkgY29uc3Q7
Ci0gICAgICAgIGJvb2wgaXNFbXB0eSgpIGNvbnN0OworICAgICAgICBXRUJDT1JFX0VYUE9SVCBi
b29sIGlzTnVsbCgpIGNvbnN0OworICAgICAgICBXRUJDT1JFX0VYUE9SVCBib29sIGlzRW1wdHko
KSBjb25zdDsKIAotICAgICAgICBjb25zdCBVUkwmIHVybCgpIGNvbnN0OwotICAgICAgICB2b2lk
IHNldFVSTChjb25zdCBVUkwmIHVybCk7CisgICAgICAgIFdFQkNPUkVfRVhQT1JUIGNvbnN0IFVS
TCYgdXJsKCkgY29uc3Q7CisgICAgICAgIFdFQkNPUkVfRVhQT1JUIHZvaWQgc2V0VVJMKGNvbnN0
IFVSTCYgdXJsKTsKIAogICAgICAgICB2b2lkIHJlbW92ZUNyZWRlbnRpYWxzKCk7CiAKICAgICAg
ICAgUmVzb3VyY2VSZXF1ZXN0Q2FjaGVQb2xpY3kgY2FjaGVQb2xpY3koKSBjb25zdDsKLSAgICAg
ICAgdm9pZCBzZXRDYWNoZVBvbGljeShSZXNvdXJjZVJlcXVlc3RDYWNoZVBvbGljeSBjYWNoZVBv
bGljeSk7CisgICAgICAgIFdFQkNPUkVfRVhQT1JUIHZvaWQgc2V0Q2FjaGVQb2xpY3koUmVzb3Vy
Y2VSZXF1ZXN0Q2FjaGVQb2xpY3kgY2FjaGVQb2xpY3kpOwogICAgICAgICAKICAgICAgICAgZG91
YmxlIHRpbWVvdXRJbnRlcnZhbCgpIGNvbnN0OyAvLyBNYXkgcmV0dXJuIDAgd2hlbiB1c2luZyBw
bGF0Zm9ybSBkZWZhdWx0LgogICAgICAgICB2b2lkIHNldFRpbWVvdXRJbnRlcnZhbChkb3VibGUg
dGltZW91dEludGVydmFsKTsKICAgICAgICAgCi0gICAgICAgIGNvbnN0IFVSTCYgZmlyc3RQYXJ0
eUZvckNvb2tpZXMoKSBjb25zdDsKKyAgICAgICAgV0VCQ09SRV9FWFBPUlQgY29uc3QgVVJMJiBm
aXJzdFBhcnR5Rm9yQ29va2llcygpIGNvbnN0OwogICAgICAgICB2b2lkIHNldEZpcnN0UGFydHlG
b3JDb29raWVzKGNvbnN0IFVSTCYgZmlyc3RQYXJ0eUZvckNvb2tpZXMpOwogICAgICAgICAKLSAg
ICAgICAgY29uc3QgU3RyaW5nJiBodHRwTWV0aG9kKCkgY29uc3Q7Ci0gICAgICAgIHZvaWQgc2V0
SFRUUE1ldGhvZChjb25zdCBTdHJpbmcmIGh0dHBNZXRob2QpOworICAgICAgICBXRUJDT1JFX0VY
UE9SVCBjb25zdCBTdHJpbmcmIGh0dHBNZXRob2QoKSBjb25zdDsKKyAgICAgICAgV0VCQ09SRV9F
WFBPUlQgdm9pZCBzZXRIVFRQTWV0aG9kKGNvbnN0IFN0cmluZyYgaHR0cE1ldGhvZCk7CiAgICAg
ICAgIAogICAgICAgICBjb25zdCBIVFRQSGVhZGVyTWFwJiBodHRwSGVhZGVyRmllbGRzKCkgY29u
c3Q7Ci0gICAgICAgIHZvaWQgc2V0SFRUUEhlYWRlckZpZWxkcyhIVFRQSGVhZGVyTWFwKTsKKyAg
ICAgICAgV0VCQ09SRV9FWFBPUlQgdm9pZCBzZXRIVFRQSGVhZGVyRmllbGRzKEhUVFBIZWFkZXJN
YXApOwogCiAgICAgICAgIFN0cmluZyBodHRwSGVhZGVyRmllbGQoY29uc3QgU3RyaW5nJiBuYW1l
KSBjb25zdDsKICAgICAgICAgU3RyaW5nIGh0dHBIZWFkZXJGaWVsZChIVFRQSGVhZGVyTmFtZSkg
Y29uc3Q7CkBAIC05NSwxMiArOTUsMTIgQEAgbmFtZXNwYWNlIFdlYkNvcmUgewogCiAgICAgICAg
IHZvaWQgY2xlYXJIVFRQQXV0aG9yaXphdGlvbigpOwogCi0gICAgICAgIFN0cmluZyBodHRwQ29u
dGVudFR5cGUoKSBjb25zdDsKLSAgICAgICAgdm9pZCBzZXRIVFRQQ29udGVudFR5cGUoY29uc3Qg
U3RyaW5nJik7CisgICAgICAgIFdFQkNPUkVfRVhQT1JUIFN0cmluZyBodHRwQ29udGVudFR5cGUo
KSBjb25zdDsKKyAgICAgICAgV0VCQ09SRV9FWFBPUlQgdm9pZCBzZXRIVFRQQ29udGVudFR5cGUo
Y29uc3QgU3RyaW5nJik7CiAgICAgICAgIHZvaWQgY2xlYXJIVFRQQ29udGVudFR5cGUoKTsKIAog
ICAgICAgICBTdHJpbmcgaHR0cFJlZmVycmVyKCkgY29uc3Q7Ci0gICAgICAgIHZvaWQgc2V0SFRU
UFJlZmVycmVyKGNvbnN0IFN0cmluZyYpOworICAgICAgICBXRUJDT1JFX0VYUE9SVCB2b2lkIHNl
dEhUVFBSZWZlcnJlcihjb25zdCBTdHJpbmcmKTsKICAgICAgICAgdm9pZCBjbGVhckhUVFBSZWZl
cnJlcigpOwogICAgICAgICAKICAgICAgICAgU3RyaW5nIGh0dHBPcmlnaW4oKSBjb25zdDsKQEAg
LTExNiwxMCArMTE2LDEwIEBAIG5hbWVzcGFjZSBXZWJDb3JlIHsKICAgICAgICAgdm9pZCBjbGVh
ckhUVFBBY2NlcHQoKTsKIAogICAgICAgICBjb25zdCBWZWN0b3I8U3RyaW5nPiYgcmVzcG9uc2VD
b250ZW50RGlzcG9zaXRpb25FbmNvZGluZ0ZhbGxiYWNrQXJyYXkoKSBjb25zdCB7IHJldHVybiBt
X3Jlc3BvbnNlQ29udGVudERpc3Bvc2l0aW9uRW5jb2RpbmdGYWxsYmFja0FycmF5OyB9Ci0gICAg
ICAgIHZvaWQgc2V0UmVzcG9uc2VDb250ZW50RGlzcG9zaXRpb25FbmNvZGluZ0ZhbGxiYWNrQXJy
YXkoY29uc3QgU3RyaW5nJiBlbmNvZGluZzEsIGNvbnN0IFN0cmluZyYgZW5jb2RpbmcyID0gU3Ry
aW5nKCksIGNvbnN0IFN0cmluZyYgZW5jb2RpbmczID0gU3RyaW5nKCkpOworICAgICAgICBXRUJD
T1JFX0VYUE9SVCB2b2lkIHNldFJlc3BvbnNlQ29udGVudERpc3Bvc2l0aW9uRW5jb2RpbmdGYWxs
YmFja0FycmF5KGNvbnN0IFN0cmluZyYgZW5jb2RpbmcxLCBjb25zdCBTdHJpbmcmIGVuY29kaW5n
MiA9IFN0cmluZygpLCBjb25zdCBTdHJpbmcmIGVuY29kaW5nMyA9IFN0cmluZygpKTsKIAotICAg
ICAgICBGb3JtRGF0YSogaHR0cEJvZHkoKSBjb25zdDsKLSAgICAgICAgdm9pZCBzZXRIVFRQQm9k
eShQYXNzUmVmUHRyPEZvcm1EYXRhPiBodHRwQm9keSk7CisgICAgICAgIFdFQkNPUkVfRVhQT1JU
IEZvcm1EYXRhKiBodHRwQm9keSgpIGNvbnN0OworICAgICAgICBXRUJDT1JFX0VYUE9SVCB2b2lk
IHNldEhUVFBCb2R5KFBhc3NSZWZQdHI8Rm9ybURhdGE+IGh0dHBCb2R5KTsKICAgICAgICAgCiAg
ICAgICAgIGJvb2wgYWxsb3dDb29raWVzKCkgY29uc3Q7CiAgICAgICAgIHZvaWQgc2V0QWxsb3dD
b29raWVzKGJvb2wgYWxsb3dDb29raWVzKTsKQEAgLTE1NSwxMiArMTU1LDEyIEBAIG5hbWVzcGFj
ZSBXZWJDb3JlIHsKICAgICAgICAgdGVtcGxhdGU8Y2xhc3MgRW5jb2Rlcj4gdm9pZCBlbmNvZGVX
aXRob3V0UGxhdGZvcm1EYXRhKEVuY29kZXImKSBjb25zdDsKICAgICAgICAgdGVtcGxhdGU8Y2xh
c3MgRGVjb2Rlcj4gYm9vbCBkZWNvZGVXaXRob3V0UGxhdGZvcm1EYXRhKERlY29kZXImKTsKIAot
ICAgICAgICBzdGF0aWMgZG91YmxlIGRlZmF1bHRUaW1lb3V0SW50ZXJ2YWwoKTsgLy8gTWF5IHJl
dHVybiAwIHdoZW4gdXNpbmcgcGxhdGZvcm0gZGVmYXVsdC4KLSAgICAgICAgc3RhdGljIHZvaWQg
c2V0RGVmYXVsdFRpbWVvdXRJbnRlcnZhbChkb3VibGUpOworICAgICAgICBXRUJDT1JFX0VYUE9S
VCBzdGF0aWMgZG91YmxlIGRlZmF1bHRUaW1lb3V0SW50ZXJ2YWwoKTsgLy8gTWF5IHJldHVybiAw
IHdoZW4gdXNpbmcgcGxhdGZvcm0gZGVmYXVsdC4KKyAgICAgICAgV0VCQ09SRV9FWFBPUlQgc3Rh
dGljIHZvaWQgc2V0RGVmYXVsdFRpbWVvdXRJbnRlcnZhbChkb3VibGUpOwogCiAjaWYgUExBVEZP
Uk0oSU9TKQotICAgICAgICBzdGF0aWMgYm9vbCBkZWZhdWx0QWxsb3dDb29raWVzKCk7Ci0gICAg
ICAgIHN0YXRpYyB2b2lkIHNldERlZmF1bHRBbGxvd0Nvb2tpZXMoYm9vbCk7CisgICAgICAgIFdF
QkNPUkVfRVhQT1JUIHN0YXRpYyBib29sIGRlZmF1bHRBbGxvd0Nvb2tpZXMoKTsKKyAgICAgICAg
V0VCQ09SRV9FWFBPUlQgc3RhdGljIHZvaWQgc2V0RGVmYXVsdEFsbG93Q29va2llcyhib29sKTsK
ICNlbmRpZgogCiAgICAgICAgIHN0YXRpYyBib29sIGNvbXBhcmUoY29uc3QgUmVzb3VyY2VSZXF1
ZXN0JiwgY29uc3QgUmVzb3VyY2VSZXF1ZXN0Jik7CkBAIC0yMzYsNyArMjM2LDcgQEAgbmFtZXNw
YWNlIFdlYkNvcmUgewogICAgIHByaXZhdGU6CiAgICAgICAgIGNvbnN0IFJlc291cmNlUmVxdWVz
dCYgYXNSZXNvdXJjZVJlcXVlc3QoKSBjb25zdDsKIAotICAgICAgICBzdGF0aWMgZG91YmxlIHNf
ZGVmYXVsdFRpbWVvdXRJbnRlcnZhbDsKKyAgICAgICAgV0VCQ09SRV9FWFBPUlQgc3RhdGljIGRv
dWJsZSBzX2RlZmF1bHRUaW1lb3V0SW50ZXJ2YWw7CiAjaWYgUExBVEZPUk0oSU9TKQogICAgICAg
ICBzdGF0aWMgYm9vbCBzX2RlZmF1bHRBbGxvd0Nvb2tpZXM7CiAjZW5kaWYKQEAgLTI2Nyw3ICsy
NjcsNyBAQCBuYW1lc3BhY2UgV2ViQ29yZSB7CiAgICAgCiAgICAgdW5zaWduZWQgaW5pdGlhbGl6
ZU1heGltdW1IVFRQQ29ubmVjdGlvbkNvdW50UGVySG9zdCgpOwogI2lmIFBMQVRGT1JNKElPUykK
LSAgICB2b2lkIGluaXRpYWxpemVIVFRQQ29ubmVjdGlvblNldHRpbmdzT25TdGFydHVwKCk7Cisg
ICAgV0VCQ09SRV9FWFBPUlQgdm9pZCBpbml0aWFsaXplSFRUUENvbm5lY3Rpb25TZXR0aW5nc09u
U3RhcnR1cCgpOwogI2VuZGlmCiAKIHRlbXBsYXRlPGNsYXNzIEVuY29kZXI+CkluZGV4OiBTb3Vy
Y2UvV2ViQ29yZS9wbGF0Zm9ybS9uZXR3b3JrL1Jlc291cmNlUmVzcG9uc2VCYXNlLmgKPT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PQotLS0gU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vbmV0d29yay9SZXNvdXJjZVJlc3BvbnNl
QmFzZS5oCShyZXZpc2lvbiAxNzI4NDcpCisrKyBTb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9uZXR3
b3JrL1Jlc291cmNlUmVzcG9uc2VCYXNlLmgJKHdvcmtpbmcgY29weSkKQEAgLTUzLDM2ICs1Mywz
NiBAQCBwdWJsaWM6CiAgICAgUGFzc093blB0cjxDcm9zc1RocmVhZFJlc291cmNlUmVzcG9uc2VE
YXRhPiBjb3B5RGF0YSgpIGNvbnN0OwogCiAgICAgYm9vbCBpc051bGwoKSBjb25zdCB7IHJldHVy
biBtX2lzTnVsbDsgfQotICAgIGJvb2wgaXNIVFRQKCkgY29uc3Q7CisgICAgV0VCQ09SRV9FWFBP
UlQgYm9vbCBpc0hUVFAoKSBjb25zdDsKIAotICAgIGNvbnN0IFVSTCYgdXJsKCkgY29uc3Q7Ci0g
ICAgdm9pZCBzZXRVUkwoY29uc3QgVVJMJiB1cmwpOworICAgIFdFQkNPUkVfRVhQT1JUIGNvbnN0
IFVSTCYgdXJsKCkgY29uc3Q7CisgICAgV0VCQ09SRV9FWFBPUlQgdm9pZCBzZXRVUkwoY29uc3Qg
VVJMJiB1cmwpOwogCi0gICAgY29uc3QgU3RyaW5nJiBtaW1lVHlwZSgpIGNvbnN0OwotICAgIHZv
aWQgc2V0TWltZVR5cGUoY29uc3QgU3RyaW5nJiBtaW1lVHlwZSk7CisgICAgV0VCQ09SRV9FWFBP
UlQgY29uc3QgU3RyaW5nJiBtaW1lVHlwZSgpIGNvbnN0OworICAgIFdFQkNPUkVfRVhQT1JUIHZv
aWQgc2V0TWltZVR5cGUoY29uc3QgU3RyaW5nJiBtaW1lVHlwZSk7CiAKLSAgICBsb25nIGxvbmcg
ZXhwZWN0ZWRDb250ZW50TGVuZ3RoKCkgY29uc3Q7Ci0gICAgdm9pZCBzZXRFeHBlY3RlZENvbnRl
bnRMZW5ndGgobG9uZyBsb25nIGV4cGVjdGVkQ29udGVudExlbmd0aCk7CisgICAgV0VCQ09SRV9F
WFBPUlQgbG9uZyBsb25nIGV4cGVjdGVkQ29udGVudExlbmd0aCgpIGNvbnN0OworICAgIFdFQkNP
UkVfRVhQT1JUIHZvaWQgc2V0RXhwZWN0ZWRDb250ZW50TGVuZ3RoKGxvbmcgbG9uZyBleHBlY3Rl
ZENvbnRlbnRMZW5ndGgpOwogCi0gICAgY29uc3QgU3RyaW5nJiB0ZXh0RW5jb2RpbmdOYW1lKCkg
Y29uc3Q7Ci0gICAgdm9pZCBzZXRUZXh0RW5jb2RpbmdOYW1lKGNvbnN0IFN0cmluZyYgbmFtZSk7
CisgICAgV0VCQ09SRV9FWFBPUlQgY29uc3QgU3RyaW5nJiB0ZXh0RW5jb2RpbmdOYW1lKCkgY29u
c3Q7CisgICAgV0VCQ09SRV9FWFBPUlQgdm9pZCBzZXRUZXh0RW5jb2RpbmdOYW1lKGNvbnN0IFN0
cmluZyYgbmFtZSk7CiAKICAgICAvLyBGSVhNRTogU2hvdWxkIGNvbXB1dGUgdGhpcyBvbiB0aGUg
Zmx5LgogICAgIC8vIFRoZXJlIHNob3VsZCBub3QgYmUgYSBzZXR0ZXIgZXhwb3NlZCwgYXMgc3Vn
Z2VzdGVkIGZpbGUgbmFtZSBpcyBkZXRlcm1pbmVkIGJhc2VkIG9uIG90aGVyIGhlYWRlcnMgaW4g
YSBtYW5uZXIgdGhhdCBXZWJDb3JlIGRvZXMgbm90IG5lY2Vzc2FyaWx5IGtub3cgYWJvdXQuCi0g
ICAgY29uc3QgU3RyaW5nJiBzdWdnZXN0ZWRGaWxlbmFtZSgpIGNvbnN0OwotICAgIHZvaWQgc2V0
U3VnZ2VzdGVkRmlsZW5hbWUoY29uc3QgU3RyaW5nJik7CisgICAgV0VCQ09SRV9FWFBPUlQgY29u
c3QgU3RyaW5nJiBzdWdnZXN0ZWRGaWxlbmFtZSgpIGNvbnN0OworICAgIFdFQkNPUkVfRVhQT1JU
IHZvaWQgc2V0U3VnZ2VzdGVkRmlsZW5hbWUoY29uc3QgU3RyaW5nJik7CiAKLSAgICBpbnQgaHR0
cFN0YXR1c0NvZGUoKSBjb25zdDsKLSAgICB2b2lkIHNldEhUVFBTdGF0dXNDb2RlKGludCk7Cisg
ICAgV0VCQ09SRV9FWFBPUlQgaW50IGh0dHBTdGF0dXNDb2RlKCkgY29uc3Q7CisgICAgV0VCQ09S
RV9FWFBPUlQgdm9pZCBzZXRIVFRQU3RhdHVzQ29kZShpbnQpOwogICAgIAotICAgIGNvbnN0IFN0
cmluZyYgaHR0cFN0YXR1c1RleHQoKSBjb25zdDsKLSAgICB2b2lkIHNldEhUVFBTdGF0dXNUZXh0
KGNvbnN0IFN0cmluZyYpOworICAgIFdFQkNPUkVfRVhQT1JUIGNvbnN0IFN0cmluZyYgaHR0cFN0
YXR1c1RleHQoKSBjb25zdDsKKyAgICBXRUJDT1JFX0VYUE9SVCB2b2lkIHNldEhUVFBTdGF0dXNU
ZXh0KGNvbnN0IFN0cmluZyYpOwogCi0gICAgY29uc3QgSFRUUEhlYWRlck1hcCYgaHR0cEhlYWRl
ckZpZWxkcygpIGNvbnN0OworICAgIFdFQkNPUkVfRVhQT1JUIGNvbnN0IEhUVFBIZWFkZXJNYXAm
IGh0dHBIZWFkZXJGaWVsZHMoKSBjb25zdDsKIAogICAgIFN0cmluZyBodHRwSGVhZGVyRmllbGQo
Y29uc3QgU3RyaW5nJiBuYW1lKSBjb25zdDsKLSAgICBTdHJpbmcgaHR0cEhlYWRlckZpZWxkKEhU
VFBIZWFkZXJOYW1lKSBjb25zdDsKLSAgICB2b2lkIHNldEhUVFBIZWFkZXJGaWVsZChjb25zdCBT
dHJpbmcmIG5hbWUsIGNvbnN0IFN0cmluZyYgdmFsdWUpOworICAgIFdFQkNPUkVfRVhQT1JUIFN0
cmluZyBodHRwSGVhZGVyRmllbGQoSFRUUEhlYWRlck5hbWUpIGNvbnN0OworICAgIFdFQkNPUkVf
RVhQT1JUIHZvaWQgc2V0SFRUUEhlYWRlckZpZWxkKGNvbnN0IFN0cmluZyYgbmFtZSwgY29uc3Qg
U3RyaW5nJiB2YWx1ZSk7CiAgICAgdm9pZCBzZXRIVFRQSGVhZGVyRmllbGQoSFRUUEhlYWRlck5h
bWUsIGNvbnN0IFN0cmluZyYgdmFsdWUpOwogCiAgICAgdm9pZCBhZGRIVFRQSGVhZGVyRmllbGQo
Y29uc3QgU3RyaW5nJiBuYW1lLCBjb25zdCBTdHJpbmcmIHZhbHVlKTsKQEAgLTk0LDcgKzk0LDcg
QEAgcHVibGljOgogCiAgICAgYm9vbCBpc011bHRpcGFydCgpIGNvbnN0IHsgcmV0dXJuIG1pbWVU
eXBlKCkgPT0gIm11bHRpcGFydC94LW1peGVkLXJlcGxhY2UiOyB9CiAKLSAgICBib29sIGlzQXR0
YWNobWVudCgpIGNvbnN0OworICAgIFdFQkNPUkVfRVhQT1JUIGJvb2wgaXNBdHRhY2htZW50KCkg
Y29uc3Q7CiAgICAgCiAgICAgLy8gVGhlc2UgZnVuY3Rpb25zIHJldHVybiBwYXJzZWQgdmFsdWVz
IG9mIHRoZSBjb3JyZXNwb25kaW5nIHJlc3BvbnNlIGhlYWRlcnMuCiAgICAgLy8gTmFOIG1lYW5z
IHRoYXQgdGhlIGhlYWRlciB3YXMgbm90IHByZXNlbnQgb3IgaGFkIGludmFsaWQgdmFsdWUuCkBA
IC0xMDYsNyArMTA2LDcgQEAgcHVibGljOgogICAgIGRvdWJsZSBkYXRlKCkgY29uc3Q7CiAgICAg
ZG91YmxlIGFnZSgpIGNvbnN0OwogICAgIGRvdWJsZSBleHBpcmVzKCkgY29uc3Q7Ci0gICAgZG91
YmxlIGxhc3RNb2RpZmllZCgpIGNvbnN0OworICAgIFdFQkNPUkVfRVhQT1JUIGRvdWJsZSBsYXN0
TW9kaWZpZWQoKSBjb25zdDsKIAogICAgIHVuc2lnbmVkIGNvbm5lY3Rpb25JRCgpIGNvbnN0Owog
ICAgIHZvaWQgc2V0Q29ubmVjdGlvbklEKHVuc2lnbmVkKTsKQEAgLTEzNiw3ICsxMzYsNyBAQCBw
cm90ZWN0ZWQ6CiAgICAgICAgIEFsbEZpZWxkcwogICAgIH07CiAKLSAgICBSZXNvdXJjZVJlc3Bv
bnNlQmFzZSgpOworICAgIFdFQkNPUkVfRVhQT1JUIFJlc291cmNlUmVzcG9uc2VCYXNlKCk7CiAg
ICAgUmVzb3VyY2VSZXNwb25zZUJhc2UoY29uc3QgVVJMJiB1cmwsIGNvbnN0IFN0cmluZyYgbWlt
ZVR5cGUsIGxvbmcgbG9uZyBleHBlY3RlZExlbmd0aCwgY29uc3QgU3RyaW5nJiB0ZXh0RW5jb2Rp
bmdOYW1lLCBjb25zdCBTdHJpbmcmIGZpbGVuYW1lKTsKIAogICAgIHZvaWQgbGF6eUluaXQoSW5p
dExldmVsKSBjb25zdDsKSW5kZXg6IFNvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL25ldHdvcmsvU3lu
Y2hyb25vdXNMb2FkZXJDbGllbnQuaAo9PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09Ci0tLSBTb3VyY2UvV2ViQ29yZS9wbGF0
Zm9ybS9uZXR3b3JrL1N5bmNocm9ub3VzTG9hZGVyQ2xpZW50LmgJKHJldmlzaW9uIDE3Mjg0NykK
KysrIFNvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL25ldHdvcmsvU3luY2hyb25vdXNMb2FkZXJDbGll
bnQuaAkod29ya2luZyBjb3B5KQpAQCAtNDcsNyArNDcsNyBAQCBwdWJsaWM6CiAgICAgY29uc3Qg
UmVzb3VyY2VFcnJvciYgZXJyb3IoKSBjb25zdCB7IHJldHVybiBtX2Vycm9yOyB9CiAgICAgYm9v
bCBpc0RvbmUoKSB7IHJldHVybiBtX2lzRG9uZTsgfQogCi0gICAgc3RhdGljIFJlc291cmNlRXJy
b3IgcGxhdGZvcm1CYWRSZXNwb25zZUVycm9yKCk7CisgICAgV0VCQ09SRV9FWFBPUlQgc3RhdGlj
IFJlc291cmNlRXJyb3IgcGxhdGZvcm1CYWRSZXNwb25zZUVycm9yKCk7CiAKIHByaXZhdGU6CiAg
ICAgU3luY2hyb25vdXNMb2FkZXJDbGllbnQoKQpJbmRleDogU291cmNlL1dlYkNvcmUvcGxhdGZv
cm0vbmV0d29yay9jZi9SZXNvdXJjZUVycm9yLmgKPT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PQotLS0gU291cmNlL1dlYkNv
cmUvcGxhdGZvcm0vbmV0d29yay9jZi9SZXNvdXJjZUVycm9yLmgJKHJldmlzaW9uIDE3Mjg0NykK
KysrIFNvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL25ldHdvcmsvY2YvUmVzb3VyY2VFcnJvci5oCSh3
b3JraW5nIGNvcHkpCkBAIC01NiwxMCArNTYsMTAgQEAgcHVibGljOgogICAgIHsKICAgICB9CiAK
LSAgICBSZXNvdXJjZUVycm9yKENGRXJyb3JSZWYgZXJyb3IpOworICAgIFdFQkNPUkVfRVhQT1JU
IFJlc291cmNlRXJyb3IoQ0ZFcnJvclJlZiBlcnJvcik7CiAKLSAgICBDRkVycm9yUmVmIGNmRXJy
b3IoKSBjb25zdDsKLSAgICBvcGVyYXRvciBDRkVycm9yUmVmKCkgY29uc3Q7CisgICAgV0VCQ09S
RV9FWFBPUlQgQ0ZFcnJvclJlZiBjZkVycm9yKCkgY29uc3Q7CisgICAgV0VCQ09SRV9FWFBPUlQg
b3BlcmF0b3IgQ0ZFcnJvclJlZigpIGNvbnN0OwogCiAjaWYgVVNFKENGTkVUV09SSykKICNpZiBQ
TEFURk9STShXSU4pCkBAIC03Myw5ICs3Myw5IEBAIHB1YmxpYzoKICNlbmRpZgogCiAjaWYgUExB
VEZPUk0oQ09DT0EpCi0gICAgUmVzb3VyY2VFcnJvcihOU0Vycm9yICopOwotICAgIE5TRXJyb3Ig
Km5zRXJyb3IoKSBjb25zdDsKLSAgICBvcGVyYXRvciBOU0Vycm9yICooKSBjb25zdDsKKyAgICBX
RUJDT1JFX0VYUE9SVCBSZXNvdXJjZUVycm9yKE5TRXJyb3IgKik7CisgICAgV0VCQ09SRV9FWFBP
UlQgTlNFcnJvciAqbnNFcnJvcigpIGNvbnN0OworICAgIFdFQkNPUkVfRVhQT1JUIG9wZXJhdG9y
IE5TRXJyb3IgKigpIGNvbnN0OwogI2VuZGlmCiAKICAgICBzdGF0aWMgYm9vbCBwbGF0Zm9ybUNv
bXBhcmUoY29uc3QgUmVzb3VyY2VFcnJvciYgYSwgY29uc3QgUmVzb3VyY2VFcnJvciYgYik7Cklu
ZGV4OiBTb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9uZXR3b3JrL2NmL1Jlc291cmNlUmVxdWVzdC5o
Cj09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT0KLS0tIFNvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL25ldHdvcmsvY2YvUmVzb3Vy
Y2VSZXF1ZXN0LmgJKHJldmlzaW9uIDE3Mjg0NykKKysrIFNvdXJjZS9XZWJDb3JlL3BsYXRmb3Jt
L25ldHdvcmsvY2YvUmVzb3VyY2VSZXF1ZXN0LmgJKHdvcmtpbmcgY29weSkKQEAgLTY0LDcgKzY0
LDcgQEAgbmFtZXNwYWNlIFdlYkNvcmUgewogICAgICAgICAKICNpZiBVU0UoQ0ZORVRXT1JLKQog
I2lmIFBMQVRGT1JNKENPQ09BKQotICAgICAgICBSZXNvdXJjZVJlcXVlc3QoTlNVUkxSZXF1ZXN0
ICopOworICAgICAgICBXRUJDT1JFX0VYUE9SVCBSZXNvdXJjZVJlcXVlc3QoTlNVUkxSZXF1ZXN0
ICopOwogICAgICAgICB2b2lkIHVwZGF0ZU5TVVJMUmVxdWVzdCgpOwogICAgICAgICB2b2lkIGNs
ZWFyT3JVcGRhdGVOU1VSTFJlcXVlc3QoKTsKICNlbmRpZgpAQCAtODIsNyArODIsNyBAQCBuYW1l
c3BhY2UgV2ViQ29yZSB7CiAgICAgICAgIH0KICNlbmRpZgogCi0gICAgICAgIHZvaWQgdXBkYXRl
RnJvbURlbGVnYXRlUHJlc2VydmluZ09sZFByb3BlcnRpZXMoY29uc3QgUmVzb3VyY2VSZXF1ZXN0
Jik7CisgICAgICAgIFdFQkNPUkVfRVhQT1JUIHZvaWQgdXBkYXRlRnJvbURlbGVnYXRlUHJlc2Vy
dmluZ09sZFByb3BlcnRpZXMoY29uc3QgUmVzb3VyY2VSZXF1ZXN0Jik7CiAKICNpZiBQTEFURk9S
TShNQUMpCiAgICAgICAgIHZvaWQgYXBwbHlXZWJBcmNoaXZlSGFja0Zvck1haWwoKTsKQEAgLTkz
LDIyICs5MywyMiBAQCBuYW1lc3BhY2UgV2ViQ29yZSB7CiAjZWxzZQogICAgICAgICBib29sIGVu
Y29kaW5nUmVxdWlyZXNQbGF0Zm9ybURhdGEoKSBjb25zdCB7IHJldHVybiBtX2h0dHBCb2R5IHx8
IG1fbnNSZXF1ZXN0OyB9CiAjZW5kaWYKLSAgICAgICAgTlNVUkxSZXF1ZXN0ICpuc1VSTFJlcXVl
c3QoSFRUUEJvZHlVcGRhdGVQb2xpY3kpIGNvbnN0OworICAgICAgICBXRUJDT1JFX0VYUE9SVCBO
U1VSTFJlcXVlc3QgKm5zVVJMUmVxdWVzdChIVFRQQm9keVVwZGF0ZVBvbGljeSkgY29uc3Q7CiAj
ZW5kaWYKIAogI2lmIEVOQUJMRShDQUNIRV9QQVJUSVRJT05JTkcpCi0gICAgICAgIHN0YXRpYyBT
dHJpbmcgcGFydGl0aW9uTmFtZShjb25zdCBTdHJpbmcmIGRvbWFpbik7CisgICAgICAgIFdFQkNP
UkVfRVhQT1JUIHN0YXRpYyBTdHJpbmcgcGFydGl0aW9uTmFtZShjb25zdCBTdHJpbmcmIGRvbWFp
bik7CiAgICAgICAgIGNvbnN0IFN0cmluZyYgY2FjaGVQYXJ0aXRpb24oKSBjb25zdCB7IHJldHVy
biBtX2NhY2hlUGFydGl0aW9uLmlzTnVsbCgpID8gZW1wdHlTdHJpbmcoKSA6IG1fY2FjaGVQYXJ0
aXRpb247IH0KICAgICAgICAgdm9pZCBzZXRDYWNoZVBhcnRpdGlvbihjb25zdCBTdHJpbmcmIGNh
Y2hlUGFydGl0aW9uKSB7IG1fY2FjaGVQYXJ0aXRpb24gPSBwYXJ0aXRpb25OYW1lKGNhY2hlUGFy
dGl0aW9uKTsgfQogI2VuZGlmCiAKICNpZiBQTEFURk9STShDT0NPQSkgfHwgVVNFKENGTkVUV09S
SykKLSAgICAgICAgQ0ZVUkxSZXF1ZXN0UmVmIGNmVVJMUmVxdWVzdChIVFRQQm9keVVwZGF0ZVBv
bGljeSkgY29uc3Q7CisgICAgICAgIFdFQkNPUkVfRVhQT1JUIENGVVJMUmVxdWVzdFJlZiBjZlVS
TFJlcXVlc3QoSFRUUEJvZHlVcGRhdGVQb2xpY3kpIGNvbnN0OwogICAgICAgICB2b2lkIHNldFN0
b3JhZ2VTZXNzaW9uKENGVVJMU3RvcmFnZVNlc3Npb25SZWYpOwogI2VuZGlmCiAKLSAgICAgICAg
c3RhdGljIGJvb2wgaHR0cFBpcGVsaW5pbmdFbmFibGVkKCk7Ci0gICAgICAgIHN0YXRpYyB2b2lk
IHNldEhUVFBQaXBlbGluaW5nRW5hYmxlZChib29sKTsKKyAgICAgICAgV0VCQ09SRV9FWFBPUlQg
c3RhdGljIGJvb2wgaHR0cFBpcGVsaW5pbmdFbmFibGVkKCk7CisgICAgICAgIFdFQkNPUkVfRVhQ
T1JUIHN0YXRpYyB2b2lkIHNldEhUVFBQaXBlbGluaW5nRW5hYmxlZChib29sKTsKIAogICAgICAg
ICBzdGF0aWMgYm9vbCByZXNvdXJjZVByaW9yaXRpZXNFbmFibGVkKCk7CiAKSW5kZXg6IFNvdXJj
ZS9XZWJDb3JlL3BsYXRmb3JtL25ldHdvcmsvY2YvUmVzb3VyY2VSZXNwb25zZS5oCj09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT0KLS0tIFNvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL25ldHdvcmsvY2YvUmVzb3VyY2VSZXNwb25z
ZS5oCShyZXZpc2lvbiAxNzI4NDcpCisrKyBTb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9uZXR3b3Jr
L2NmL1Jlc291cmNlUmVzcG9uc2UuaAkod29ya2luZyBjb3B5KQpAQCAtNTQsNyArNTQsNyBAQCBw
dWJsaWM6CiAgICAgICAgIG1faXNOdWxsID0gIWNmUmVzcG9uc2U7CiAgICAgfQogI2lmIFBMQVRG
T1JNKENPQ09BKQotICAgIFJlc291cmNlUmVzcG9uc2UoTlNVUkxSZXNwb25zZSAqKTsKKyAgICBX
RUJDT1JFX0VYUE9SVCBSZXNvdXJjZVJlc3BvbnNlKE5TVVJMUmVzcG9uc2UgKik7CiAjZW5kaWYK
ICNlbHNlCiAgICAgUmVzb3VyY2VSZXNwb25zZShOU1VSTFJlc3BvbnNlICpuc1Jlc3BvbnNlKQpA
QCAtODYsMTUgKzg2LDE1IEBAIHB1YmxpYzoKICAgICB9CiAKICNpZiBVU0UoQ0ZORVRXT1JLKQot
ICAgIENGVVJMUmVzcG9uc2VSZWYgY2ZVUkxSZXNwb25zZSgpIGNvbnN0OworICAgIFdFQkNPUkVf
RVhQT1JUIENGVVJMUmVzcG9uc2VSZWYgY2ZVUkxSZXNwb25zZSgpIGNvbnN0OwogI2VuZGlmCiAj
aWYgUExBVEZPUk0oQ09DT0EpCi0gICAgTlNVUkxSZXNwb25zZSAqbnNVUkxSZXNwb25zZSgpIGNv
bnN0OworICAgIFdFQkNPUkVfRVhQT1JUIE5TVVJMUmVzcG9uc2UgKm5zVVJMUmVzcG9uc2UoKSBj
b25zdDsKICNlbmRpZgogCiAjaWYgUExBVEZPUk0oQ09DT0EpIHx8IFVTRShDRk5FVFdPUkspCi0g
ICAgdm9pZCBzZXRDZXJ0aWZpY2F0ZUNoYWluKENGQXJyYXlSZWYpOwotICAgIFJldGFpblB0cjxD
RkFycmF5UmVmPiBjZXJ0aWZpY2F0ZUNoYWluKCkgY29uc3Q7CisgICAgV0VCQ09SRV9FWFBPUlQg
dm9pZCBzZXRDZXJ0aWZpY2F0ZUNoYWluKENGQXJyYXlSZWYpOworICAgIFdFQkNPUkVfRVhQT1JU
IFJldGFpblB0cjxDRkFycmF5UmVmPiBjZXJ0aWZpY2F0ZUNoYWluKCkgY29uc3Q7CiAjZW5kaWYK
IAogICAgIGJvb2wgcGxhdGZvcm1SZXNwb25zZUlzVXBUb0RhdGUoKSBjb25zdCB7IHJldHVybiBt
X3BsYXRmb3JtUmVzcG9uc2VJc1VwVG9EYXRlOyB9CkluZGV4OiBTb3VyY2UvV2ViQ29yZS9wbGF0
Zm9ybS9uZXR3b3JrL2lvcy9RdWlja0xvb2suaAo9PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09Ci0tLSBTb3VyY2UvV2ViQ29y
ZS9wbGF0Zm9ybS9uZXR3b3JrL2lvcy9RdWlja0xvb2suaAkocmV2aXNpb24gMTcyODQ3KQorKysg
U291cmNlL1dlYkNvcmUvcGxhdGZvcm0vbmV0d29yay9pb3MvUXVpY2tMb29rLmgJKHdvcmtpbmcg
Y29weSkKQEAgLTY2LDE4ICs2NiwxOCBAQCBOU1NldCAqUUxQcmV2aWV3R2V0U3VwcG9ydGVkTUlN
RVR5cGVzU2V0CiBOU0RpY3Rpb25hcnkgKlFMRmlsZUF0dHJpYnV0ZXMoKTsKIE5TRGljdGlvbmFy
eSAqUUxEaXJlY3RvcnlBdHRyaWJ1dGVzKCk7CiAKLXZvaWQgYWRkUUxQcmV2aWV3Q29udmVydGVy
V2l0aEZpbGVGb3JVUkwoTlNVUkwgKiwgaWQgY29udmVydGVyLCBOU1N0cmluZyAqZmlsZU5hbWUp
OwotTlNTdHJpbmcgKnFsUHJldmlld0NvbnZlcnRlckZpbGVOYW1lRm9yVVJMKE5TVVJMICopOwot
TlNTdHJpbmcgKnFsUHJldmlld0NvbnZlcnRlclVUSUZvclVSTChOU1VSTCAqKTsKLXZvaWQgcmVt
b3ZlUUxQcmV2aWV3Q29udmVydGVyRm9yVVJMKE5TVVJMICopOworV0VCQ09SRV9FWFBPUlQgdm9p
ZCBhZGRRTFByZXZpZXdDb252ZXJ0ZXJXaXRoRmlsZUZvclVSTChOU1VSTCAqLCBpZCBjb252ZXJ0
ZXIsIE5TU3RyaW5nICpmaWxlTmFtZSk7CitXRUJDT1JFX0VYUE9SVCBOU1N0cmluZyAqcWxQcmV2
aWV3Q29udmVydGVyRmlsZU5hbWVGb3JVUkwoTlNVUkwgKik7CitXRUJDT1JFX0VYUE9SVCBOU1N0
cmluZyAqcWxQcmV2aWV3Q29udmVydGVyVVRJRm9yVVJMKE5TVVJMICopOworV0VCQ09SRV9FWFBP
UlQgdm9pZCByZW1vdmVRTFByZXZpZXdDb252ZXJ0ZXJGb3JVUkwoTlNVUkwgKik7CiAKLVBhc3NP
d25QdHI8UmVzb3VyY2VSZXF1ZXN0PiByZWdpc3RlclFMUHJldmlld0NvbnZlcnRlcklmTmVlZGVk
KE5TVVJMICosIE5TU3RyaW5nICptaW1lVHlwZSwgTlNEYXRhICopOworV0VCQ09SRV9FWFBPUlQg
UGFzc093blB0cjxSZXNvdXJjZVJlcXVlc3Q+IHJlZ2lzdGVyUUxQcmV2aWV3Q29udmVydGVySWZO
ZWVkZWQoTlNVUkwgKiwgTlNTdHJpbmcgKm1pbWVUeXBlLCBOU0RhdGEgKik7CiAKIGNvbnN0IFVS
TCBzYWZlUUxVUkxGb3JEb2N1bWVudFVSTEFuZFJlc291cmNlVVJMKGNvbnN0IFVSTCYgZG9jdW1l
bnRVUkwsIGNvbnN0IFN0cmluZyYgcmVzb3VyY2VVUkwpOwogCiBjb25zdCBjaGFyKiBRTFByZXZp
ZXdQcm90b2NvbCgpOwogCi1OU1N0cmluZyAqY3JlYXRlVGVtcG9yYXJ5RmlsZUZvclF1aWNrTG9v
ayhOU1N0cmluZyAqZmlsZU5hbWUpOworV0VCQ09SRV9FWFBPUlQgTlNTdHJpbmcgKmNyZWF0ZVRl
bXBvcmFyeUZpbGVGb3JRdWlja0xvb2soTlNTdHJpbmcgKmZpbGVOYW1lKTsKIAogY2xhc3MgUXVp
Y2tMb29rSGFuZGxlIHsKICAgICBXVEZfTUFLRV9OT05DT1BZQUJMRShRdWlja0xvb2tIYW5kbGUp
OwpJbmRleDogU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vbmV0d29yay9tYWMvQXV0aGVudGljYXRp
b25NYWMuaAo9PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09Ci0tLSBTb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9uZXR3b3JrL21h
Yy9BdXRoZW50aWNhdGlvbk1hYy5oCShyZXZpc2lvbiAxNzI4NDcpCisrKyBTb3VyY2UvV2ViQ29y
ZS9wbGF0Zm9ybS9uZXR3b3JrL21hYy9BdXRoZW50aWNhdGlvbk1hYy5oCSh3b3JraW5nIGNvcHkp
CkBAIC0zMyw5ICszMyw5IEBAIG5hbWVzcGFjZSBXZWJDb3JlIHsKIAogY2xhc3MgQXV0aGVudGlj
YXRpb25DaGFsbGVuZ2U7CiAKLU5TVVJMQXV0aGVudGljYXRpb25DaGFsbGVuZ2UgKm1hYyhjb25z
dCBBdXRoZW50aWNhdGlvbkNoYWxsZW5nZSYpOworV0VCQ09SRV9FWFBPUlQgTlNVUkxBdXRoZW50
aWNhdGlvbkNoYWxsZW5nZSAqbWFjKGNvbnN0IEF1dGhlbnRpY2F0aW9uQ2hhbGxlbmdlJik7CiAK
LUF1dGhlbnRpY2F0aW9uQ2hhbGxlbmdlIGNvcmUoTlNVUkxBdXRoZW50aWNhdGlvbkNoYWxsZW5n
ZSAqKTsKK1dFQkNPUkVfRVhQT1JUIEF1dGhlbnRpY2F0aW9uQ2hhbGxlbmdlIGNvcmUoTlNVUkxB
dXRoZW50aWNhdGlvbkNoYWxsZW5nZSAqKTsKIAogfQogI2VuZGlmIC8vIF9fT0JKQ19fCkluZGV4
OiBTb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9zcWwvU1FMaXRlRGF0YWJhc2UuY3BwCj09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT0KLS0tIFNvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL3NxbC9TUUxpdGVEYXRhYmFzZS5jcHAJKHJl
dmlzaW9uIDE3Mjg0NykKKysrIFNvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL3NxbC9TUUxpdGVEYXRh
YmFzZS5jcHAJKHdvcmtpbmcgY29weSkKQEAgLTM5LDE0ICszOSwxNCBAQAogCiBuYW1lc3BhY2Ug
V2ViQ29yZSB7CiAKLWNvbnN0IGludCBTUUxSZXN1bHREb25lID0gU1FMSVRFX0RPTkU7CitXRUJD
T1JFX0VYUE9SVCBjb25zdCBpbnQgU1FMUmVzdWx0RG9uZSA9IFNRTElURV9ET05FOwogY29uc3Qg
aW50IFNRTFJlc3VsdEVycm9yID0gU1FMSVRFX0VSUk9SOwotY29uc3QgaW50IFNRTFJlc3VsdE9r
ID0gU1FMSVRFX09LOwotY29uc3QgaW50IFNRTFJlc3VsdFJvdyA9IFNRTElURV9ST1c7CitXRUJD
T1JFX0VYUE9SVCBjb25zdCBpbnQgU1FMUmVzdWx0T2sgPSBTUUxJVEVfT0s7CitXRUJDT1JFX0VY
UE9SVCBjb25zdCBpbnQgU1FMUmVzdWx0Um93ID0gU1FMSVRFX1JPVzsKIGNvbnN0IGludCBTUUxS
ZXN1bHRTY2hlbWEgPSBTUUxJVEVfU0NIRU1BOwogY29uc3QgaW50IFNRTFJlc3VsdEZ1bGwgPSBT
UUxJVEVfRlVMTDsKIGNvbnN0IGludCBTUUxSZXN1bHRJbnRlcnJ1cHQgPSBTUUxJVEVfSU5URVJS
VVBUOwotY29uc3QgaW50IFNRTFJlc3VsdENvbnN0cmFpbnQgPSBTUUxJVEVfQ09OU1RSQUlOVDsK
K1dFQkNPUkVfRVhQT1JUIGNvbnN0IGludCBTUUxSZXN1bHRDb25zdHJhaW50ID0gU1FMSVRFX0NP
TlNUUkFJTlQ7CiAKIHN0YXRpYyBjb25zdCBjaGFyIG5vdE9wZW5FcnJvck1lc3NhZ2VbXSA9ICJk
YXRhYmFzZSBpcyBub3Qgb3BlbiI7CiAKSW5kZXg6IFNvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL3Rl
eHQvTG9jYWxlVG9TY3JpcHRNYXBwaW5nLmgKPT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PQotLS0gU291cmNlL1dlYkNvcmUv
cGxhdGZvcm0vdGV4dC9Mb2NhbGVUb1NjcmlwdE1hcHBpbmcuaAkocmV2aXNpb24gMTcyODQ3KQor
KysgU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vdGV4dC9Mb2NhbGVUb1NjcmlwdE1hcHBpbmcuaAko
d29ya2luZyBjb3B5KQpAQCAtMzcsNyArMzcsNyBAQAogbmFtZXNwYWNlIFdlYkNvcmUgewogCiBV
U2NyaXB0Q29kZSBsb2NhbGVUb1NjcmlwdENvZGVGb3JGb250U2VsZWN0aW9uKGNvbnN0IFN0cmlu
ZyYpOwotVVNjcmlwdENvZGUgc2NyaXB0TmFtZVRvQ29kZShjb25zdCBTdHJpbmcmKTsKK1dFQkNP
UkVfRVhQT1JUIFVTY3JpcHRDb2RlIHNjcmlwdE5hbWVUb0NvZGUoY29uc3QgU3RyaW5nJik7CiAK
IH0KIApJbmRleDogU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vdGV4dC9UZXh0QnJlYWtJdGVyYXRv
ci5oCj09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT0KLS0tIFNvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL3RleHQvVGV4dEJyZWFr
SXRlcmF0b3IuaAkocmV2aXNpb24gMTcyODQ3KQorKysgU291cmNlL1dlYkNvcmUvcGxhdGZvcm0v
dGV4dC9UZXh0QnJlYWtJdGVyYXRvci5oCSh3b3JraW5nIGNvcHkpCkBAIC00MCw4ICs0MCw4IEBA
IFRleHRCcmVha0l0ZXJhdG9yKiBjdXJzb3JNb3ZlbWVudEl0ZXJhdG8KIFRleHRCcmVha0l0ZXJh
dG9yKiB3b3JkQnJlYWtJdGVyYXRvcihTdHJpbmdWaWV3KTsKIFRleHRCcmVha0l0ZXJhdG9yKiBz
ZW50ZW5jZUJyZWFrSXRlcmF0b3IoU3RyaW5nVmlldyk7CiAKLVRleHRCcmVha0l0ZXJhdG9yKiBh
Y3F1aXJlTGluZUJyZWFrSXRlcmF0b3IoU3RyaW5nVmlldywgY29uc3QgQXRvbWljU3RyaW5nJiBs
b2NhbGUsIGNvbnN0IFVDaGFyKiBwcmlvckNvbnRleHQsIHVuc2lnbmVkIHByaW9yQ29udGV4dExl
bmd0aCk7Ci12b2lkIHJlbGVhc2VMaW5lQnJlYWtJdGVyYXRvcihUZXh0QnJlYWtJdGVyYXRvciop
OworV0VCQ09SRV9FWFBPUlQgVGV4dEJyZWFrSXRlcmF0b3IqIGFjcXVpcmVMaW5lQnJlYWtJdGVy
YXRvcihTdHJpbmdWaWV3LCBjb25zdCBBdG9taWNTdHJpbmcmIGxvY2FsZSwgY29uc3QgVUNoYXIq
IHByaW9yQ29udGV4dCwgdW5zaWduZWQgcHJpb3JDb250ZXh0TGVuZ3RoKTsKK1dFQkNPUkVfRVhQ
T1JUIHZvaWQgcmVsZWFzZUxpbmVCcmVha0l0ZXJhdG9yKFRleHRCcmVha0l0ZXJhdG9yKik7CiAK
IGludCB0ZXh0QnJlYWtGaXJzdChUZXh0QnJlYWtJdGVyYXRvciopOwogaW50IHRleHRCcmVha0xh
c3QoVGV4dEJyZWFrSXRlcmF0b3IqKTsKQEAgLTQ5LDcgKzQ5LDcgQEAgaW50IHRleHRCcmVha05l
eHQoVGV4dEJyZWFrSXRlcmF0b3IqKTsKIGludCB0ZXh0QnJlYWtQcmV2aW91cyhUZXh0QnJlYWtJ
dGVyYXRvciopOwogaW50IHRleHRCcmVha0N1cnJlbnQoVGV4dEJyZWFrSXRlcmF0b3IqKTsKIGlu
dCB0ZXh0QnJlYWtQcmVjZWRpbmcoVGV4dEJyZWFrSXRlcmF0b3IqLCBpbnQpOwotaW50IHRleHRC
cmVha0ZvbGxvd2luZyhUZXh0QnJlYWtJdGVyYXRvciosIGludCk7CitXRUJDT1JFX0VYUE9SVCBp
bnQgdGV4dEJyZWFrRm9sbG93aW5nKFRleHRCcmVha0l0ZXJhdG9yKiwgaW50KTsKIGJvb2wgaXNU
ZXh0QnJlYWsoVGV4dEJyZWFrSXRlcmF0b3IqLCBpbnQpOwogYm9vbCBpc1dvcmRUZXh0QnJlYWso
VGV4dEJyZWFrSXRlcmF0b3IqKTsKIApJbmRleDogU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vdGV4
dC9UZXh0RW5jb2RpbmcuaAo9PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09Ci0tLSBTb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS90
ZXh0L1RleHRFbmNvZGluZy5oCShyZXZpc2lvbiAxNzI4NDcpCisrKyBTb3VyY2UvV2ViQ29yZS9w
bGF0Zm9ybS90ZXh0L1RleHRFbmNvZGluZy5oCSh3b3JraW5nIGNvcHkpCkBAIC0zNSw3ICszNSw3
IEBAIG5hbWVzcGFjZSBXZWJDb3JlIHsKICAgICBwdWJsaWM6CiAgICAgICAgIFRleHRFbmNvZGlu
ZygpIDogbV9uYW1lKDApIHsgfQogICAgICAgICBUZXh0RW5jb2RpbmcoY29uc3QgY2hhciogbmFt
ZSk7Ci0gICAgICAgIFRleHRFbmNvZGluZyhjb25zdCBTdHJpbmcmIG5hbWUpOworICAgICAgICBX
RUJDT1JFX0VYUE9SVCBUZXh0RW5jb2RpbmcoY29uc3QgU3RyaW5nJiBuYW1lKTsKIAogICAgICAg
ICBib29sIGlzVmFsaWQoKSBjb25zdCB7IHJldHVybiBtX25hbWU7IH0KICAgICAgICAgY29uc3Qg
Y2hhciogbmFtZSgpIGNvbnN0IHsgcmV0dXJuIG1fbmFtZTsgfQpAQCAtNjMsNyArNjMsNyBAQCBu
YW1lc3BhY2UgV2ViQ29yZSB7CiAgICAgICAgIGNvbnN0IFRleHRFbmNvZGluZyYgY2xvc2VzdEJ5
dGVCYXNlZEVxdWl2YWxlbnQoKSBjb25zdDsKICAgICAgICAgY29uc3QgVGV4dEVuY29kaW5nJiBl
bmNvZGluZ0ZvckZvcm1TdWJtaXNzaW9uKCkgY29uc3Q7CiAKLSAgICAgICAgU3RyaW5nIGRlY29k
ZShjb25zdCBjaGFyKiBzdHIsIHNpemVfdCBsZW5ndGgpIGNvbnN0CisgICAgICAgIFdFQkNPUkVf
RVhQT1JUIFN0cmluZyBkZWNvZGUoY29uc3QgY2hhciogc3RyLCBzaXplX3QgbGVuZ3RoKSBjb25z
dAogICAgICAgICB7CiAgICAgICAgICAgICBib29sIGlnbm9yZWQ7CiAgICAgICAgICAgICByZXR1
cm4gZGVjb2RlKHN0ciwgbGVuZ3RoLCBmYWxzZSwgaWdub3JlZCk7CkBAIC05MCw4ICs5MCw4IEBA
IG5hbWVzcGFjZSBXZWJDb3JlIHsKICAgICBjb25zdCBUZXh0RW5jb2RpbmcmIFVURjE2TGl0dGxl
RW5kaWFuRW5jb2RpbmcoKTsKICAgICBjb25zdCBUZXh0RW5jb2RpbmcmIFVURjMyQmlnRW5kaWFu
RW5jb2RpbmcoKTsKICAgICBjb25zdCBUZXh0RW5jb2RpbmcmIFVURjMyTGl0dGxlRW5kaWFuRW5j
b2RpbmcoKTsKLSAgICBjb25zdCBUZXh0RW5jb2RpbmcmIFVURjhFbmNvZGluZygpOwotICAgIGNv
bnN0IFRleHRFbmNvZGluZyYgV2luZG93c0xhdGluMUVuY29kaW5nKCk7CisgICAgV0VCQ09SRV9F
WFBPUlQgY29uc3QgVGV4dEVuY29kaW5nJiBVVEY4RW5jb2RpbmcoKTsKKyAgICBXRUJDT1JFX0VY
UE9SVCBjb25zdCBUZXh0RW5jb2RpbmcmIFdpbmRvd3NMYXRpbjFFbmNvZGluZygpOwogCiB9IC8v
IG5hbWVzcGFjZSBXZWJDb3JlCiAKSW5kZXg6IFNvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL3RleHQv
VGV4dEVuY29kaW5nUmVnaXN0cnkuaAo9PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09Ci0tLSBTb3VyY2UvV2ViQ29yZS9wbGF0
Zm9ybS90ZXh0L1RleHRFbmNvZGluZ1JlZ2lzdHJ5LmgJKHJldmlzaW9uIDE3Mjg0NykKKysrIFNv
dXJjZS9XZWJDb3JlL3BsYXRmb3JtL3RleHQvVGV4dEVuY29kaW5nUmVnaXN0cnkuaAkod29ya2lu
ZyBjb3B5KQpAQCAtNDgsNyArNDgsNyBAQCBuYW1lc3BhY2UgV2ViQ29yZSB7CiAgICAgYm9vbCBp
c0phcGFuZXNlRW5jb2RpbmcoY29uc3QgY2hhciogY2Fub25pY2FsRW5jb2RpbmdOYW1lKTsKICAg
ICBib29sIHNob3VsZFNob3dCYWNrc2xhc2hBc0N1cnJlbmN5U3ltYm9sSW4oY29uc3QgY2hhciog
Y2Fub25pY2FsRW5jb2RpbmdOYW1lKTsKIAotICAgIFN0cmluZyBkZWZhdWx0VGV4dEVuY29kaW5n
TmFtZUZvclN5c3RlbUxhbmd1YWdlKCk7CisgICAgV0VCQ09SRV9FWFBPUlQgU3RyaW5nIGRlZmF1
bHRUZXh0RW5jb2RpbmdOYW1lRm9yU3lzdGVtTGFuZ3VhZ2UoKTsKIAogI2lmbmRlZiBOREVCVUcK
ICAgICB2b2lkIGR1bXBUZXh0RW5jb2RpbmdOYW1lTWFwKCk7CkluZGV4OiBTb3VyY2UvV2ViQ29y
ZS9wbGF0Zm9ybS90ZXh0L1RleHRTdHJlYW0uaAo9PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09Ci0tLSBTb3VyY2UvV2ViQ29y
ZS9wbGF0Zm9ybS90ZXh0L1RleHRTdHJlYW0uaAkocmV2aXNpb24gMTcyODQ3KQorKysgU291cmNl
L1dlYkNvcmUvcGxhdGZvcm0vdGV4dC9UZXh0U3RyZWFtLmgJKHdvcmtpbmcgY29weSkKQEAgLTQ2
LDI0ICs0NiwyNCBAQCBwdWJsaWM6CiAgICAgICAgIGRvdWJsZSB2YWx1ZTsKICAgICB9OwogCi0g
ICAgVGV4dFN0cmVhbSYgb3BlcmF0b3I8PChib29sKTsKLSAgICBUZXh0U3RyZWFtJiBvcGVyYXRv
cjw8KGludCk7Ci0gICAgVGV4dFN0cmVhbSYgb3BlcmF0b3I8PCh1bnNpZ25lZCk7CisgICAgV0VC
Q09SRV9FWFBPUlQgVGV4dFN0cmVhbSYgb3BlcmF0b3I8PChib29sKTsKKyAgICBXRUJDT1JFX0VY
UE9SVCBUZXh0U3RyZWFtJiBvcGVyYXRvcjw8KGludCk7CisgICAgV0VCQ09SRV9FWFBPUlQgVGV4
dFN0cmVhbSYgb3BlcmF0b3I8PCh1bnNpZ25lZCk7CiAgICAgVGV4dFN0cmVhbSYgb3BlcmF0b3I8
PChsb25nKTsKICAgICBUZXh0U3RyZWFtJiBvcGVyYXRvcjw8KHVuc2lnbmVkIGxvbmcpOwogICAg
IFRleHRTdHJlYW0mIG9wZXJhdG9yPDwobG9uZyBsb25nKTsKLSAgICBUZXh0U3RyZWFtJiBvcGVy
YXRvcjw8KHVuc2lnbmVkIGxvbmcgbG9uZyk7Ci0gICAgVGV4dFN0cmVhbSYgb3BlcmF0b3I8PChm
bG9hdCk7Ci0gICAgVGV4dFN0cmVhbSYgb3BlcmF0b3I8PChkb3VibGUpOwotICAgIFRleHRTdHJl
YW0mIG9wZXJhdG9yPDwoY29uc3QgY2hhciopOwotICAgIFRleHRTdHJlYW0mIG9wZXJhdG9yPDwo
Y29uc3Qgdm9pZCopOwotICAgIFRleHRTdHJlYW0mIG9wZXJhdG9yPDwoY29uc3QgU3RyaW5nJik7
CisgICAgV0VCQ09SRV9FWFBPUlQgVGV4dFN0cmVhbSYgb3BlcmF0b3I8PCh1bnNpZ25lZCBsb25n
IGxvbmcpOworICAgIFdFQkNPUkVfRVhQT1JUIFRleHRTdHJlYW0mIG9wZXJhdG9yPDwoZmxvYXQp
OworICAgIFdFQkNPUkVfRVhQT1JUIFRleHRTdHJlYW0mIG9wZXJhdG9yPDwoZG91YmxlKTsKKyAg
ICBXRUJDT1JFX0VYUE9SVCBUZXh0U3RyZWFtJiBvcGVyYXRvcjw8KGNvbnN0IGNoYXIqKTsKKyAg
ICBXRUJDT1JFX0VYUE9SVCBUZXh0U3RyZWFtJiBvcGVyYXRvcjw8KGNvbnN0IHZvaWQqKTsKKyAg
ICBXRUJDT1JFX0VYUE9SVCBUZXh0U3RyZWFtJiBvcGVyYXRvcjw8KGNvbnN0IFN0cmluZyYpOwog
ICAgIFRleHRTdHJlYW0mIG9wZXJhdG9yPDwoY29uc3QgRm9ybWF0TnVtYmVyUmVzcGVjdGluZ0lu
dGVnZXJzJik7CiAKLSAgICBUZXh0U3RyZWFtJiBvcGVyYXRvcjw8KGNvbnN0IEludFBvaW50Jik7
Ci0gICAgVGV4dFN0cmVhbSYgb3BlcmF0b3I8PChjb25zdCBJbnRSZWN0Jik7Ci0gICAgVGV4dFN0
cmVhbSYgb3BlcmF0b3I8PChjb25zdCBGbG9hdFBvaW50Jik7Ci0gICAgVGV4dFN0cmVhbSYgb3Bl
cmF0b3I8PChjb25zdCBGbG9hdFNpemUmKTsKKyAgICBXRUJDT1JFX0VYUE9SVCBUZXh0U3RyZWFt
JiBvcGVyYXRvcjw8KGNvbnN0IEludFBvaW50Jik7CisgICAgV0VCQ09SRV9FWFBPUlQgVGV4dFN0
cmVhbSYgb3BlcmF0b3I8PChjb25zdCBJbnRSZWN0Jik7CisgICAgV0VCQ09SRV9FWFBPUlQgVGV4
dFN0cmVhbSYgb3BlcmF0b3I8PChjb25zdCBGbG9hdFBvaW50Jik7CisgICAgV0VCQ09SRV9FWFBP
UlQgVGV4dFN0cmVhbSYgb3BlcmF0b3I8PChjb25zdCBGbG9hdFNpemUmKTsKICAgICBUZXh0U3Ry
ZWFtJiBvcGVyYXRvcjw8KGNvbnN0IExheW91dFVuaXQmKTsKICAgICBUZXh0U3RyZWFtJiBvcGVy
YXRvcjw8KGNvbnN0IExheW91dFBvaW50Jik7CiAgICAgVGV4dFN0cmVhbSYgb3BlcmF0b3I8PChj
b25zdCBMYXlvdXRSZWN0Jik7CkBAIC04Miw4ICs4Miw4IEBAIHB1YmxpYzoKIAogICAgICAgICBy
ZXR1cm4gKnRoaXMgPDwgIl0iOwogICAgIH0KLQotICAgIFN0cmluZyByZWxlYXNlKCk7CisgICAg
CisgICAgV0VCQ09SRV9FWFBPUlQgU3RyaW5nIHJlbGVhc2UoKTsKIAogcHJpdmF0ZToKICAgICBT
dHJpbmdCdWlsZGVyIG1fdGV4dDsKSW5kZXg6IFNvdXJjZS9XZWJDb3JlL3JlbmRlcmluZy9SZW5k
ZXJCbG9jay5oCj09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT0KLS0tIFNvdXJjZS9XZWJDb3JlL3JlbmRlcmluZy9SZW5kZXJC
bG9jay5oCShyZXZpc2lvbiAxNzI4NDcpCisrKyBTb3VyY2UvV2ViQ29yZS9yZW5kZXJpbmcvUmVu
ZGVyQmxvY2suaAkod29ya2luZyBjb3B5KQpAQCAtMTg3LDcgKzE4Nyw3IEBAIHB1YmxpYzoKIAog
ICAgIHZpcnR1YWwgUmVuZGVyQm94TW9kZWxPYmplY3QqIHZpcnR1YWxDb250aW51YXRpb24oKSBj
b25zdCBvdmVycmlkZSBmaW5hbCB7IHJldHVybiBjb250aW51YXRpb24oKTsgfQogICAgIGJvb2wg
aXNBbm9ueW1vdXNCbG9ja0NvbnRpbnVhdGlvbigpIGNvbnN0IHsgcmV0dXJuIGlzQW5vbnltb3Vz
QmxvY2soKSAmJiBjb250aW51YXRpb24oKTsgfQotICAgIFJlbmRlcklubGluZSogaW5saW5lRWxl
bWVudENvbnRpbnVhdGlvbigpIGNvbnN0OworICAgIFdFQkNPUkVfRVhQT1JUIFJlbmRlcklubGlu
ZSogaW5saW5lRWxlbWVudENvbnRpbnVhdGlvbigpIGNvbnN0OwogICAgIFJlbmRlckJsb2NrKiBi
bG9ja0VsZW1lbnRDb250aW51YXRpb24oKSBjb25zdDsKIAogICAgIHVzaW5nIFJlbmRlckJveE1v
ZGVsT2JqZWN0Ojpjb250aW51YXRpb247CkluZGV4OiBTb3VyY2UvV2ViQ29yZS9yZW5kZXJpbmcv
UmVuZGVyQm94LmgKPT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PQotLS0gU291cmNlL1dlYkNvcmUvcmVuZGVyaW5nL1JlbmRl
ckJveC5oCShyZXZpc2lvbiAxNzI4NDcpCisrKyBTb3VyY2UvV2ViQ29yZS9yZW5kZXJpbmcvUmVu
ZGVyQm94LmgJKHdvcmtpbmcgY29weSkKQEAgLTE2Myw3ICsxNjMsNyBAQCBwdWJsaWM6CiAgICAg
SW50UmVjdCBwaXhlbFNuYXBwZWRCb3JkZXJCb3hSZWN0KCkgY29uc3QgeyByZXR1cm4gSW50UmVj
dChJbnRQb2ludCgpLCBtX2ZyYW1lUmVjdC5waXhlbFNuYXBwZWRTaXplKCkpOyB9CiAgICAgdmly
dHVhbCBJbnRSZWN0IGJvcmRlckJvdW5kaW5nQm94KCkgY29uc3Qgb3ZlcnJpZGUgZmluYWwgeyBy
ZXR1cm4gcGl4ZWxTbmFwcGVkQm9yZGVyQm94UmVjdCgpOyB9CiAKLSAgICBSb3VuZGVkUmVjdDo6
UmFkaWkgYm9yZGVyUmFkaWkoKSBjb25zdDsKKyAgICBXRUJDT1JFX0VYUE9SVCBSb3VuZGVkUmVj
dDo6UmFkaWkgYm9yZGVyUmFkaWkoKSBjb25zdDsKIAogICAgIC8vIFRoZSBjb250ZW50IGFyZWEg
b2YgdGhlIGJveCAoZXhjbHVkZXMgcGFkZGluZyAtIGFuZCBpbnRyaW5zaWMgcGFkZGluZyBmb3Ig
dGFibGUgY2VsbHMsIGV0Yy4uLiAtIGFuZCBib3JkZXIpLgogICAgIExheW91dFJlY3QgY29udGVu
dEJveFJlY3QoKSBjb25zdCB7IHJldHVybiBMYXlvdXRSZWN0KGJvcmRlckxlZnQoKSArIHBhZGRp
bmdMZWZ0KCksIGJvcmRlclRvcCgpICsgcGFkZGluZ1RvcCgpLCBjb250ZW50V2lkdGgoKSwgY29u
dGVudEhlaWdodCgpKTsgfQpAQCAtMTg5LDcgKzE4OSw3IEBAIHB1YmxpYzoKICAgICAvLyBGb3Ig
aG9yaXpvbnRhbC10YiBhbmQgdmVydGljYWwtbHIgdGhleSB3aWxsIG1hdGNoIHBoeXNpY2FsIGRp
cmVjdGlvbnMsIGJ1dCBmb3IgaG9yaXpvbnRhbC1idCBhbmQgdmVydGljYWwtcmwsIHRoZSB0b3Av
Ym90dG9tIGFuZCBsZWZ0L3JpZ2h0CiAgICAgLy8gcmVzcGVjdGl2ZWx5IGFyZSBmbGlwcGVkIHdo
ZW4gY29tcGFyZWQgdG8gdGhlaXIgcGh5c2ljYWwgY291bnRlcnBhcnRzLiAgRm9yIGV4YW1wbGUg
bWluWCBpcyBvbiB0aGUgbGVmdCBpbiB2ZXJ0aWNhbC1sciwKICAgICAvLyBidXQgaXQgaXMgb24g
dGhlIHJpZ2h0IGluIHZlcnRpY2FsLXJsLgotICAgIExheW91dFJlY3QgZmxpcHBlZENsaWVudEJv
eFJlY3QoKSBjb25zdDsKKyAgICBXRUJDT1JFX0VYUE9SVCBMYXlvdXRSZWN0IGZsaXBwZWRDbGll
bnRCb3hSZWN0KCkgY29uc3Q7CiAgICAgTGF5b3V0UmVjdCBsYXlvdXRPdmVyZmxvd1JlY3QoKSBj
b25zdCB7IHJldHVybiBtX292ZXJmbG93ID8gbV9vdmVyZmxvdy0+bGF5b3V0T3ZlcmZsb3dSZWN0
KCkgOiBmbGlwcGVkQ2xpZW50Qm94UmVjdCgpOyB9CiAgICAgTGF5b3V0VW5pdCBsb2dpY2FsTGVm
dExheW91dE92ZXJmbG93KCkgY29uc3QgeyByZXR1cm4gc3R5bGUoKS5pc0hvcml6b250YWxXcml0
aW5nTW9kZSgpID8gbGF5b3V0T3ZlcmZsb3dSZWN0KCkueCgpIDogbGF5b3V0T3ZlcmZsb3dSZWN0
KCkueSgpOyB9CiAgICAgTGF5b3V0VW5pdCBsb2dpY2FsUmlnaHRMYXlvdXRPdmVyZmxvdygpIGNv
bnN0IHsgcmV0dXJuIHN0eWxlKCkuaXNIb3Jpem9udGFsV3JpdGluZ01vZGUoKSA/IGxheW91dE92
ZXJmbG93UmVjdCgpLm1heFgoKSA6IGxheW91dE92ZXJmbG93UmVjdCgpLm1heFkoKTsgfQpAQCAt
MjMxLDggKzIzMSw4IEBAIHB1YmxpYzoKICAgICAvLyBleGNsdWRpbmcgYm9yZGVyIGFuZCBzY3Jv
bGxiYXIuICBjbGllbnRMZWZ0L1RvcCBhcmUganVzdCB0aGUgYm9yZGVyTGVmdFdpZHRoIGFuZCBi
b3JkZXJUb3BXaWR0aC4KICAgICBMYXlvdXRVbml0IGNsaWVudExlZnQoKSBjb25zdCB7IHJldHVy
biBib3JkZXJMZWZ0KCk7IH0KICAgICBMYXlvdXRVbml0IGNsaWVudFRvcCgpIGNvbnN0IHsgcmV0
dXJuIGJvcmRlclRvcCgpOyB9Ci0gICAgTGF5b3V0VW5pdCBjbGllbnRXaWR0aCgpIGNvbnN0Owot
ICAgIExheW91dFVuaXQgY2xpZW50SGVpZ2h0KCkgY29uc3Q7CisgICAgV0VCQ09SRV9FWFBPUlQg
TGF5b3V0VW5pdCBjbGllbnRXaWR0aCgpIGNvbnN0OworICAgIFdFQkNPUkVfRVhQT1JUIExheW91
dFVuaXQgY2xpZW50SGVpZ2h0KCkgY29uc3Q7CiAgICAgTGF5b3V0VW5pdCBjbGllbnRMb2dpY2Fs
V2lkdGgoKSBjb25zdCB7IHJldHVybiBzdHlsZSgpLmlzSG9yaXpvbnRhbFdyaXRpbmdNb2RlKCkg
PyBjbGllbnRXaWR0aCgpIDogY2xpZW50SGVpZ2h0KCk7IH0KICAgICBMYXlvdXRVbml0IGNsaWVu
dExvZ2ljYWxIZWlnaHQoKSBjb25zdCB7IHJldHVybiBzdHlsZSgpLmlzSG9yaXpvbnRhbFdyaXRp
bmdNb2RlKCkgPyBjbGllbnRIZWlnaHQoKSA6IGNsaWVudFdpZHRoKCk7IH0KICAgICBMYXlvdXRV
bml0IGNsaWVudExvZ2ljYWxCb3R0b20oKSBjb25zdCB7IHJldHVybiBib3JkZXJCZWZvcmUoKSAr
IGNsaWVudExvZ2ljYWxIZWlnaHQoKTsgfQpJbmRleDogU291cmNlL1dlYkNvcmUvcmVuZGVyaW5n
L1JlbmRlckVtYmVkZGVkT2JqZWN0LmgKPT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PQotLS0gU291cmNlL1dlYkNvcmUvcmVu
ZGVyaW5nL1JlbmRlckVtYmVkZGVkT2JqZWN0LmgJKHJldmlzaW9uIDE3Mjg0NykKKysrIFNvdXJj
ZS9XZWJDb3JlL3JlbmRlcmluZy9SZW5kZXJFbWJlZGRlZE9iamVjdC5oCSh3b3JraW5nIGNvcHkp
CkBAIC00NiwxNyArNDYsMTcgQEAgcHVibGljOgogICAgICAgICBQbHVnaW5CbG9ja2VkQnlDb250
ZW50U2VjdXJpdHlQb2xpY3ksCiAgICAgICAgIEluc2VjdXJlUGx1Z2luVmVyc2lvbiwKICAgICB9
OwotICAgIHZvaWQgc2V0UGx1Z2luVW5hdmFpbGFiaWxpdHlSZWFzb24oUGx1Z2luVW5hdmFpbGFi
aWxpdHlSZWFzb24pOwotICAgIHZvaWQgc2V0UGx1Z2luVW5hdmFpbGFiaWxpdHlSZWFzb25XaXRo
RGVzY3JpcHRpb24oUGx1Z2luVW5hdmFpbGFiaWxpdHlSZWFzb24sIGNvbnN0IFN0cmluZyYgZGVz
Y3JpcHRpb24pOworICAgIFdFQkNPUkVfRVhQT1JUIHZvaWQgc2V0UGx1Z2luVW5hdmFpbGFiaWxp
dHlSZWFzb24oUGx1Z2luVW5hdmFpbGFiaWxpdHlSZWFzb24pOworICAgIFdFQkNPUkVfRVhQT1JU
IHZvaWQgc2V0UGx1Z2luVW5hdmFpbGFiaWxpdHlSZWFzb25XaXRoRGVzY3JpcHRpb24oUGx1Z2lu
VW5hdmFpbGFiaWxpdHlSZWFzb24sIGNvbnN0IFN0cmluZyYgZGVzY3JpcHRpb24pOwogCiAgICAg
Ym9vbCBpc1BsdWdpblVuYXZhaWxhYmxlKCkgY29uc3QgeyByZXR1cm4gbV9pc1BsdWdpblVuYXZh
aWxhYmxlOyB9CiAgICAgYm9vbCBzaG93c1VuYXZhaWxhYmxlUGx1Z2luSW5kaWNhdG9yKCkgY29u
c3QgeyByZXR1cm4gaXNQbHVnaW5VbmF2YWlsYWJsZSgpICYmICFtX2lzVW5hdmFpbGFibGVQbHVn
aW5JbmRpY2F0b3JIaWRkZW47IH0KIAotICAgIHZvaWQgc2V0VW5hdmFpbGFibGVQbHVnaW5JbmRp
Y2F0b3JJc0hpZGRlbihib29sKTsKKyAgICBXRUJDT1JFX0VYUE9SVCB2b2lkIHNldFVuYXZhaWxh
YmxlUGx1Z2luSW5kaWNhdG9ySXNIaWRkZW4oYm9vbCk7CiAKICAgICB2b2lkIGhhbmRsZVVuYXZh
aWxhYmxlUGx1Z2luSW5kaWNhdG9yRXZlbnQoRXZlbnQqKTsKIAotICAgIGJvb2wgaXNSZXBsYWNl
bWVudE9ic2N1cmVkKCkgY29uc3Q7CisgICAgV0VCQ09SRV9FWFBPUlQgYm9vbCBpc1JlcGxhY2Vt
ZW50T2JzY3VyZWQoKSBjb25zdDsKIAogICAgIGJvb2wgYWxsb3dzQWNjZWxlcmF0ZWRDb21wb3Np
dGluZygpIGNvbnN0OwogCkluZGV4OiBTb3VyY2UvV2ViQ29yZS9yZW5kZXJpbmcvUmVuZGVyTGF5
ZXIuaAo9PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09Ci0tLSBTb3VyY2UvV2ViQ29yZS9yZW5kZXJpbmcvUmVuZGVyTGF5ZXIu
aAkocmV2aXNpb24gMTcyODQ3KQorKysgU291cmNlL1dlYkNvcmUvcmVuZGVyaW5nL1JlbmRlckxh
eWVyLmgJKHdvcmtpbmcgY29weSkKQEAgLTczOSw3ICs3MzksNyBAQCBwdWJsaWM6CiAgICAgLy8g
Qm91bmRpbmcgYm94IGluIHRoZSBjb29yZGluYXRlcyBvZiB0aGlzIGxheWVyLgogICAgIExheW91
dFJlY3QgbG9jYWxCb3VuZGluZ0JveChDYWxjdWxhdGVMYXllckJvdW5kc0ZsYWdzID0gMCkgY29u
c3Q7CiAgICAgLy8gRGVwcmVjYXRlZDogUGl4ZWwgc25hcHBlZCBib3VuZGluZyBib3ggcmVsYXRp
dmUgdG8gdGhlIHJvb3QuCi0gICAgSW50UmVjdCBhYnNvbHV0ZUJvdW5kaW5nQm94KCkgY29uc3Q7
CisgICAgV0VCQ09SRV9FWFBPUlQgSW50UmVjdCBhYnNvbHV0ZUJvdW5kaW5nQm94KCkgY29uc3Q7
CiAgICAgLy8gRGV2aWNlIHBpeGVsIHNuYXBwZWQgYm91bmRpbmcgYm94IHJlbGF0aXZlIHRvIHRo
ZSByb290LiBhYnNvbHV0ZUJvdW5kaW5nQm94KCkgY2FsbGVycyB3aWxsIGJlIGRpcmVjdGVkIHRv
IHRoaXMuCiAgICAgRmxvYXRSZWN0IGFic29sdXRlQm91bmRpbmdCb3hGb3JQYWludGluZygpIGNv
bnN0OwogCkBAIC04MzIsNyArODMyLDcgQEAgcHVibGljOgogICAgIHZpcnR1YWwgR3JhcGhpY3NM
YXllciogbGF5ZXJGb3JWZXJ0aWNhbFNjcm9sbGJhcigpIGNvbnN0IG92ZXJyaWRlOwogICAgIHZp
cnR1YWwgR3JhcGhpY3NMYXllciogbGF5ZXJGb3JTY3JvbGxDb3JuZXIoKSBjb25zdCBvdmVycmlk
ZTsKICAgICB2aXJ0dWFsIGJvb2wgdXNlc0NvbXBvc2l0ZWRTY3JvbGxpbmcoKSBjb25zdCBvdmVy
cmlkZTsKLSAgICBib29sIG5lZWRzQ29tcG9zaXRlZFNjcm9sbGluZygpIGNvbnN0OworICAgIFdF
QkNPUkVfRVhQT1JUIGJvb2wgbmVlZHNDb21wb3NpdGVkU2Nyb2xsaW5nKCkgY29uc3Q7CiAgICAg
Ym9vbCBuZWVkc0NvbXBvc2l0aW5nTGF5ZXJzUmVidWlsdEZvckNsaXAoY29uc3QgUmVuZGVyU3R5
bGUqIG9sZFN0eWxlLCBjb25zdCBSZW5kZXJTdHlsZSogbmV3U3R5bGUpIGNvbnN0OwogICAgIGJv
b2wgbmVlZHNDb21wb3NpdGluZ0xheWVyc1JlYnVpbHRGb3JPdmVyZmxvdyhjb25zdCBSZW5kZXJT
dHlsZSogb2xkU3R5bGUsIGNvbnN0IFJlbmRlclN0eWxlKiBuZXdTdHlsZSkgY29uc3Q7CiAKSW5k
ZXg6IFNvdXJjZS9XZWJDb3JlL3JlbmRlcmluZy9SZW5kZXJMYXllckJhY2tpbmcuaAo9PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09Ci0tLSBTb3VyY2UvV2ViQ29yZS9yZW5kZXJpbmcvUmVuZGVyTGF5ZXJCYWNraW5nLmgJKHJl
dmlzaW9uIDE3Mjg0NykKKysrIFNvdXJjZS9XZWJDb3JlL3JlbmRlcmluZy9SZW5kZXJMYXllckJh
Y2tpbmcuaAkod29ya2luZyBjb3B5KQpAQCAtMTg1LDcgKzE4NSw3IEBAIHB1YmxpYzoKICAgICBi
b29sIGhhc1VucG9zaXRpb25lZE92ZXJmbG93Q29udHJvbHNMYXllcnMoKSBjb25zdDsKIAogICAg
IGJvb2wgdXNpbmdUaWxlZEJhY2tpbmcoKSBjb25zdCB7IHJldHVybiBtX3VzaW5nVGlsZWRDYWNo
ZUxheWVyOyB9Ci0gICAgVGlsZWRCYWNraW5nKiB0aWxlZEJhY2tpbmcoKSBjb25zdDsKKyAgICBX
RUJDT1JFX0VYUE9SVCBUaWxlZEJhY2tpbmcqIHRpbGVkQmFja2luZygpIGNvbnN0OwogICAgIHZv
aWQgYWRqdXN0VGlsZWRCYWNraW5nQ292ZXJhZ2UoKTsKICAgICB2b2lkIHNldFRpbGVkQmFja2lu
Z0hhc01hcmdpbnMoYm9vbCBoYXNFeHRlbmRlZEJhY2tncm91bmRPbkxlZnRBbmRSaWdodCwgYm9v
bCBoYXNFeHRlbmRlZEJhY2tncm91bmRPblRvcEFuZEJvdHRvbSk7CiAgICAgCkBAIC0yMjIsMTAg
KzIyMiwxMCBAQCBwdWJsaWM6CiAgICAgdmlydHVhbCB2b2lkIHZlcmlmeU5vdFBhaW50aW5nKCk7
CiAjZW5kaWYKIAotICAgIExheW91dFJlY3QgY29udGVudHNCb3goKSBjb25zdDsKKyAgICBXRUJD
T1JFX0VYUE9SVCBMYXlvdXRSZWN0IGNvbnRlbnRzQm94KCkgY29uc3Q7CiAgICAgCiAgICAgLy8g
Rm9yIGluZm9ybWF0aXZlIHB1cnBvc2VzIG9ubHkuCi0gICAgQ29tcG9zaXRpbmdMYXllclR5cGUg
Y29tcG9zaXRpbmdMYXllclR5cGUoKSBjb25zdDsKKyAgICBXRUJDT1JFX0VYUE9SVCBDb21wb3Np
dGluZ0xheWVyVHlwZSBjb21wb3NpdGluZ0xheWVyVHlwZSgpIGNvbnN0OwogICAgIAogICAgIEdy
YXBoaWNzTGF5ZXIqIGxheWVyRm9ySG9yaXpvbnRhbFNjcm9sbGJhcigpIGNvbnN0IHsgcmV0dXJu
IG1fbGF5ZXJGb3JIb3Jpem9udGFsU2Nyb2xsYmFyLmdldCgpOyB9CiAgICAgR3JhcGhpY3NMYXll
ciogbGF5ZXJGb3JWZXJ0aWNhbFNjcm9sbGJhcigpIGNvbnN0IHsgcmV0dXJuIG1fbGF5ZXJGb3JW
ZXJ0aWNhbFNjcm9sbGJhci5nZXQoKTsgfQpJbmRleDogU291cmNlL1dlYkNvcmUvcmVuZGVyaW5n
L1JlbmRlckxheWVyQ29tcG9zaXRvci5oCj09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT0KLS0tIFNvdXJjZS9XZWJDb3JlL3Jl
bmRlcmluZy9SZW5kZXJMYXllckNvbXBvc2l0b3IuaAkocmV2aXNpb24gMTcyODQ3KQorKysgU291
cmNlL1dlYkNvcmUvcmVuZGVyaW5nL1JlbmRlckxheWVyQ29tcG9zaXRvci5oCSh3b3JraW5nIGNv
cHkpCkBAIC0xNzgsOSArMTc4LDkgQEAgcHVibGljOgogICAgIC8vIFJldHVybnMgdHJ1ZSBpZiB0
aGUgZ2l2ZW4gbGF5ZXIgbmVlZHMgaXQgb3duIGJhY2tpbmcgc3RvcmUuCiAgICAgYm9vbCByZXF1
aXJlc093bkJhY2tpbmdTdG9yZShjb25zdCBSZW5kZXJMYXllciYsIGNvbnN0IFJlbmRlckxheWVy
KiBjb21wb3NpdGluZ0FuY2VzdG9yTGF5ZXIsIGNvbnN0IExheW91dFJlY3QmIGxheWVyQ29tcG9z
aXRlZEJvdW5kc0luQW5jZXN0b3IsIGNvbnN0IExheW91dFJlY3QmIGFuY2VzdG9yQ29tcG9zaXRl
ZEJvdW5kcykgY29uc3Q7CiAKLSAgICBSZW5kZXJMYXllciYgcm9vdFJlbmRlckxheWVyKCkgY29u
c3Q7CisgICAgV0VCQ09SRV9FWFBPUlQgUmVuZGVyTGF5ZXImIHJvb3RSZW5kZXJMYXllcigpIGNv
bnN0OwogICAgIEdyYXBoaWNzTGF5ZXIqIHJvb3RHcmFwaGljc0xheWVyKCkgY29uc3Q7Ci0gICAg
R3JhcGhpY3NMYXllciogc2Nyb2xsTGF5ZXIoKSBjb25zdDsKKyAgICBXRUJDT1JFX0VYUE9SVCBH
cmFwaGljc0xheWVyKiBzY3JvbGxMYXllcigpIGNvbnN0OwogICAgIEdyYXBoaWNzTGF5ZXIqIGNs
aXBMYXllcigpIGNvbnN0OwogICAgIEdyYXBoaWNzTGF5ZXIqIHJvb3RDb250ZW50TGF5ZXIoKSBj
b25zdDsKIApJbmRleDogU291cmNlL1dlYkNvcmUvcmVuZGVyaW5nL1JlbmRlckxpc3RJdGVtLmgK
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PQotLS0gU291cmNlL1dlYkNvcmUvcmVuZGVyaW5nL1JlbmRlckxpc3RJdGVtLmgJ
KHJldmlzaW9uIDE3Mjg0NykKKysrIFNvdXJjZS9XZWJDb3JlL3JlbmRlcmluZy9SZW5kZXJMaXN0
SXRlbS5oCSh3b3JraW5nIGNvcHkpCkBAIC00Nyw3ICs0Nyw3IEBAIHB1YmxpYzoKICAgICB2b2lk
IHNldE5vdEluTGlzdChib29sIG5vdEluTGlzdCkgeyBtX25vdEluTGlzdCA9IG5vdEluTGlzdDsg
fQogICAgIGJvb2wgbm90SW5MaXN0KCkgY29uc3QgeyByZXR1cm4gbV9ub3RJbkxpc3Q7IH0KIAot
ICAgIGNvbnN0IFN0cmluZyYgbWFya2VyVGV4dCgpIGNvbnN0OworICAgIFdFQkNPUkVfRVhQT1JU
IGNvbnN0IFN0cmluZyYgbWFya2VyVGV4dCgpIGNvbnN0OwogICAgIFN0cmluZyBtYXJrZXJUZXh0
V2l0aFN1ZmZpeCgpIGNvbnN0OwogCiAgICAgdm9pZCB1cGRhdGVMaXN0TWFya2VyTnVtYmVycygp
OwpJbmRleDogU291cmNlL1dlYkNvcmUvcmVuZGVyaW5nL1JlbmRlck9iamVjdC5oCj09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT0KLS0tIFNvdXJjZS9XZWJDb3JlL3JlbmRlcmluZy9SZW5kZXJPYmplY3QuaAkocmV2aXNpb24g
MTcyODQ3KQorKysgU291cmNlL1dlYkNvcmUvcmVuZGVyaW5nL1JlbmRlck9iamVjdC5oCSh3b3Jr
aW5nIGNvcHkpCkBAIC0xNzIsNyArMTcyLDcgQEAgcHVibGljOgogICAgIFJlbmRlck9iamVjdCog
bmV4dEluUHJlT3JkZXJBZnRlckNoaWxkcmVuKGNvbnN0IFJlbmRlck9iamVjdCogc3RheVdpdGhp
bikgY29uc3Q7CiAgICAgUmVuZGVyT2JqZWN0KiBwcmV2aW91c0luUHJlT3JkZXIoKSBjb25zdDsK
ICAgICBSZW5kZXJPYmplY3QqIHByZXZpb3VzSW5QcmVPcmRlcihjb25zdCBSZW5kZXJPYmplY3Qq
IHN0YXlXaXRoaW4pIGNvbnN0OwotICAgIFJlbmRlck9iamVjdCogY2hpbGRBdCh1bnNpZ25lZCkg
Y29uc3Q7CisgICAgV0VCQ09SRV9FWFBPUlQgUmVuZGVyT2JqZWN0KiBjaGlsZEF0KHVuc2lnbmVk
KSBjb25zdDsKIAogICAgIFJlbmRlck9iamVjdCogZmlyc3RMZWFmQ2hpbGQoKSBjb25zdDsKICAg
ICBSZW5kZXJPYmplY3QqIGxhc3RMZWFmQ2hpbGQoKSBjb25zdDsKQEAgLTE5NywxMyArMTk3LDEz
IEBAIHB1YmxpYzoKICAgICBSZW5kZXJPYmplY3QqIHRyYXZlcnNlTmV4dChjb25zdCBSZW5kZXJP
YmplY3QqIHN0YXlXaXRoaW4sIEhlaWdodFR5cGVUcmF2ZXJzZU5leHRJbmNsdXNpb25GdW5jdGlv
biwgaW50JiBjdXJyZW50RGVwdGgsICBpbnQmIG5ld0ZpeGVkRGVwdGgpIGNvbnN0OwogCiAgICAg
dm9pZCBhZGp1c3RDb21wdXRlZEZvbnRTaXplc09uQmxvY2tzKGZsb2F0IHNpemUsIGZsb2F0IHZp
c2libGVXaWR0aCk7Ci0gICAgdm9pZCByZXNldFRleHRBdXRvc2l6aW5nKCk7CisgICAgV0VCQ09S
RV9FWFBPUlQgdm9pZCByZXNldFRleHRBdXRvc2l6aW5nKCk7CiAjZW5kaWYKIAotICAgIFJlbmRl
ckxheWVyKiBlbmNsb3NpbmdMYXllcigpIGNvbnN0OworICAgIFdFQkNPUkVfRVhQT1JUIFJlbmRl
ckxheWVyKiBlbmNsb3NpbmdMYXllcigpIGNvbnN0OwogCiAgICAgLy8gU2Nyb2xsaW5nIGlzIGEg
UmVuZGVyQm94IGNvbmNlcHQsIGhvd2V2ZXIgc29tZSBjb2RlIGp1c3QgY2FyZXMgYWJvdXQgcmVj
dXJzaXZlbHkgc2Nyb2xsaW5nIG91ciBlbmNsb3NpbmcgU2Nyb2xsYWJsZUFyZWEocykuCi0gICAg
Ym9vbCBzY3JvbGxSZWN0VG9WaXNpYmxlKGNvbnN0IExheW91dFJlY3QmLCBjb25zdCBTY3JvbGxB
bGlnbm1lbnQmIGFsaWduWCA9IFNjcm9sbEFsaWdubWVudDo6YWxpZ25DZW50ZXJJZk5lZWRlZCwg
Y29uc3QgU2Nyb2xsQWxpZ25tZW50JiBhbGlnblkgPSBTY3JvbGxBbGlnbm1lbnQ6OmFsaWduQ2Vu
dGVySWZOZWVkZWQpOworICAgIFdFQkNPUkVfRVhQT1JUIGJvb2wgc2Nyb2xsUmVjdFRvVmlzaWJs
ZShjb25zdCBMYXlvdXRSZWN0JiwgY29uc3QgU2Nyb2xsQWxpZ25tZW50JiBhbGlnblggPSBTY3Jv
bGxBbGlnbm1lbnQ6OmFsaWduQ2VudGVySWZOZWVkZWQsIGNvbnN0IFNjcm9sbEFsaWdubWVudCYg
YWxpZ25ZID0gU2Nyb2xsQWxpZ25tZW50OjphbGlnbkNlbnRlcklmTmVlZGVkKTsKIAogICAgIC8v
IENvbnZlbmllbmNlIGZ1bmN0aW9uIGZvciBnZXR0aW5nIHRvIHRoZSBuZWFyZXN0IGVuY2xvc2lu
ZyBib3ggb2YgYSBSZW5kZXJPYmplY3QuCiAgICAgUmVuZGVyQm94JiBlbmNsb3NpbmdCb3goKSBj
b25zdDsKQEAgLTY2OSw3ICs2NjksNyBAQCBwdWJsaWM6CiAKICAgICAvLyBDb252ZXJ0IHRoZSBn
aXZlbiBsb2NhbCBwb2ludCB0byBhYnNvbHV0ZSBjb29yZGluYXRlcwogICAgIC8vIEZJWE1FOiBU
ZW1wb3JhcnkuIElmIFVzZVRyYW5zZm9ybXMgaXMgdHJ1ZSwgdGFrZSB0cmFuc2Zvcm1zIGludG8g
YWNjb3VudC4gRXZlbnR1YWxseSBsb2NhbFRvQWJzb2x1dGUoKSB3aWxsIGFsd2F5cyBiZSB0cmFu
c2Zvcm0tYXdhcmUuCi0gICAgRmxvYXRQb2ludCBsb2NhbFRvQWJzb2x1dGUoY29uc3QgRmxvYXRQ
b2ludCYgbG9jYWxQb2ludCA9IEZsb2F0UG9pbnQoKSwgTWFwQ29vcmRpbmF0ZXNGbGFncyA9IDAp
IGNvbnN0OworICAgIFdFQkNPUkVfRVhQT1JUIEZsb2F0UG9pbnQgbG9jYWxUb0Fic29sdXRlKGNv
bnN0IEZsb2F0UG9pbnQmIGxvY2FsUG9pbnQgPSBGbG9hdFBvaW50KCksIE1hcENvb3JkaW5hdGVz
RmxhZ3MgPSAwKSBjb25zdDsKICAgICBGbG9hdFBvaW50IGFic29sdXRlVG9Mb2NhbChjb25zdCBG
bG9hdFBvaW50JiwgTWFwQ29vcmRpbmF0ZXNGbGFncyA9IDApIGNvbnN0OwogCiAgICAgLy8gQ29u
dmVydCBhIGxvY2FsIHF1YWQgdG8gYWJzb2x1dGUgY29vcmRpbmF0ZXMsIHRha2luZyB0cmFuc2Zv
cm1zIGludG8gYWNjb3VudC4KQEAgLTY4MSw4ICs2ODEsOCBAQCBwdWJsaWM6CiAgICAgRmxvYXRR
dWFkIGFic29sdXRlVG9Mb2NhbFF1YWQoY29uc3QgRmxvYXRRdWFkJiwgTWFwQ29vcmRpbmF0ZXNG
bGFncyBtb2RlID0gMCkgY29uc3Q7CiAKICAgICAvLyBDb252ZXJ0IGEgbG9jYWwgcXVhZCBpbnRv
IHRoZSBjb29yZGluYXRlIHN5c3RlbSBvZiBjb250YWluZXIsIHRha2luZyB0cmFuc2Zvcm1zIGlu
dG8gYWNjb3VudC4KLSAgICBGbG9hdFF1YWQgbG9jYWxUb0NvbnRhaW5lclF1YWQoY29uc3QgRmxv
YXRRdWFkJiwgY29uc3QgUmVuZGVyTGF5ZXJNb2RlbE9iamVjdCogcmVwYWludENvbnRhaW5lciwg
TWFwQ29vcmRpbmF0ZXNGbGFncyA9IDAsIGJvb2wqIHdhc0ZpeGVkID0gMCkgY29uc3Q7Ci0gICAg
RmxvYXRQb2ludCBsb2NhbFRvQ29udGFpbmVyUG9pbnQoY29uc3QgRmxvYXRQb2ludCYsIGNvbnN0
IFJlbmRlckxheWVyTW9kZWxPYmplY3QqIHJlcGFpbnRDb250YWluZXIsIE1hcENvb3JkaW5hdGVz
RmxhZ3MgPSAwLCBib29sKiB3YXNGaXhlZCA9IDApIGNvbnN0OworICAgIFdFQkNPUkVfRVhQT1JU
IEZsb2F0UXVhZCBsb2NhbFRvQ29udGFpbmVyUXVhZChjb25zdCBGbG9hdFF1YWQmLCBjb25zdCBS
ZW5kZXJMYXllck1vZGVsT2JqZWN0KiByZXBhaW50Q29udGFpbmVyLCBNYXBDb29yZGluYXRlc0Zs
YWdzID0gMCwgYm9vbCogd2FzRml4ZWQgPSAwKSBjb25zdDsKKyAgICBXRUJDT1JFX0VYUE9SVCBG
bG9hdFBvaW50IGxvY2FsVG9Db250YWluZXJQb2ludChjb25zdCBGbG9hdFBvaW50JiwgY29uc3Qg
UmVuZGVyTGF5ZXJNb2RlbE9iamVjdCogcmVwYWludENvbnRhaW5lciwgTWFwQ29vcmRpbmF0ZXNG
bGFncyA9IDAsIGJvb2wqIHdhc0ZpeGVkID0gMCkgY29uc3Q7CiAKICAgICAvLyBSZXR1cm4gdGhl
IG9mZnNldCBmcm9tIHRoZSBjb250YWluZXIoKSByZW5kZXJlciAoZXhjbHVkaW5nIHRyYW5zZm9y
bXMpLiBJbiBtdWx0aS1jb2x1bW4gbGF5b3V0LAogICAgIC8vIGRpZmZlcmVudCBvZmZzZXRzIGFw
cGx5IGF0IGRpZmZlcmVudCBwb2ludHMsIHNvIHJldHVybiB0aGUgb2Zmc2V0IHRoYXQgYXBwbGll
cyB0byB0aGUgZ2l2ZW4gcG9pbnQuCkBAIC02OTgsNyArNjk4LDcgQEAgcHVibGljOgogICAgIHZp
cnR1YWwgdm9pZCBhYnNvbHV0ZVJlY3RzKFZlY3RvcjxJbnRSZWN0PiYsIGNvbnN0IExheW91dFBv
aW50JikgY29uc3QgeyB9CiAKICAgICAvLyBGSVhNRTogdXNlVHJhbnNmb3JtcyBzaG91bGQgZ28g
YXdheSBldmVudHVhbGx5Ci0gICAgSW50UmVjdCBhYnNvbHV0ZUJvdW5kaW5nQm94UmVjdChib29s
IHVzZVRyYW5zZm9ybSA9IHRydWUpIGNvbnN0OworICAgIFdFQkNPUkVfRVhQT1JUIEludFJlY3Qg
YWJzb2x1dGVCb3VuZGluZ0JveFJlY3QoYm9vbCB1c2VUcmFuc2Zvcm0gPSB0cnVlKSBjb25zdDsK
ICAgICBJbnRSZWN0IGFic29sdXRlQm91bmRpbmdCb3hSZWN0SWdub3JpbmdUcmFuc2Zvcm1zKCkg
Y29uc3QgeyByZXR1cm4gYWJzb2x1dGVCb3VuZGluZ0JveFJlY3QoZmFsc2UpOyB9CiAKICAgICAv
LyBCdWlsZCBhbiBhcnJheSBvZiBxdWFkcyBpbiBhYnNvbHV0ZSBjb29yZHMgZm9yIGxpbmUgYm94
ZXMKQEAgLTcwOSw3ICs3MDksNyBAQCBwdWJsaWM6CiAgICAgc3RhdGljIEZsb2F0UmVjdCBhYnNv
bHV0ZUJvdW5kaW5nQm94UmVjdEZvclJhbmdlKGNvbnN0IFJhbmdlKik7CiAKICAgICAvLyB0aGUg
cmVjdCB0aGF0IHdpbGwgYmUgcGFpbnRlZCBpZiB0aGlzIG9iamVjdCBpcyBwYXNzZWQgYXMgdGhl
IHBhaW50aW5nUm9vdAotICAgIExheW91dFJlY3QgcGFpbnRpbmdSb290UmVjdChMYXlvdXRSZWN0
JiB0b3BMZXZlbFJlY3QpOworICAgIFdFQkNPUkVfRVhQT1JUIExheW91dFJlY3QgcGFpbnRpbmdS
b290UmVjdChMYXlvdXRSZWN0JiB0b3BMZXZlbFJlY3QpOwogCiAgICAgdmlydHVhbCBMYXlvdXRV
bml0IG1pblByZWZlcnJlZExvZ2ljYWxXaWR0aCgpIGNvbnN0IHsgcmV0dXJuIDA7IH0KICAgICB2
aXJ0dWFsIExheW91dFVuaXQgbWF4UHJlZmVycmVkTG9naWNhbFdpZHRoKCkgY29uc3QgeyByZXR1
cm4gMDsgfQpAQCAtNzM4LDcgKzczOCw3IEBAIHB1YmxpYzoKICAgICB2b2lkIHJlcGFpbnQoKSBj
b25zdDsKIAogICAgIC8vIFJlcGFpbnQgYSBzcGVjaWZpYyBzdWJyZWN0YW5nbGUgd2l0aGluIGEg
Z2l2ZW4gb2JqZWN0LiAgVGhlIHJlY3QgfHJ8IGlzIGluIHRoZSBvYmplY3QncyBjb29yZGluYXRl
IHNwYWNlLgotICAgIHZvaWQgcmVwYWludFJlY3RhbmdsZShjb25zdCBMYXlvdXRSZWN0JiwgYm9v
bCBzaG91bGRDbGlwVG9MYXllciA9IHRydWUpIGNvbnN0OworICAgIFdFQkNPUkVfRVhQT1JUIHZv
aWQgcmVwYWludFJlY3RhbmdsZShjb25zdCBMYXlvdXRSZWN0JiwgYm9vbCBzaG91bGRDbGlwVG9M
YXllciA9IHRydWUpIGNvbnN0OwogCiAgICAgLy8gUmVwYWludCBhIHNsb3cgcmVwYWludCBvYmpl
Y3QsIHdoaWNoLCBhdCB0aGlzIHRpbWUsIG1lYW5zIHdlIGFyZSByZXBhaW50aW5nIGFuIG9iamVj
dCB3aXRoIGJhY2tncm91bmQtYXR0YWNobWVudDpmaXhlZC4KICAgICB2b2lkIHJlcGFpbnRTbG93
UmVwYWludE9iamVjdCgpIGNvbnN0OwpAQCAtNzUxLDcgKzc1MSw3IEBAIHB1YmxpYzoKICAgICB7
CiAgICAgICAgIHJldHVybiBjbGlwcGVkT3ZlcmZsb3dSZWN0Rm9yUmVwYWludCgwKTsKICAgICB9
Ci0gICAgSW50UmVjdCBwaXhlbFNuYXBwZWRBYnNvbHV0ZUNsaXBwZWRPdmVyZmxvd1JlY3QoKSBj
b25zdDsKKyAgICBXRUJDT1JFX0VYUE9SVCBJbnRSZWN0IHBpeGVsU25hcHBlZEFic29sdXRlQ2xp
cHBlZE92ZXJmbG93UmVjdCgpIGNvbnN0OwogICAgIHZpcnR1YWwgTGF5b3V0UmVjdCBjbGlwcGVk
T3ZlcmZsb3dSZWN0Rm9yUmVwYWludChjb25zdCBSZW5kZXJMYXllck1vZGVsT2JqZWN0KiByZXBh
aW50Q29udGFpbmVyKSBjb25zdDsKICAgICB2aXJ0dWFsIExheW91dFJlY3QgcmVjdFdpdGhPdXRs
aW5lRm9yUmVwYWludChjb25zdCBSZW5kZXJMYXllck1vZGVsT2JqZWN0KiByZXBhaW50Q29udGFp
bmVyLCBMYXlvdXRVbml0IG91dGxpbmVXaWR0aCkgY29uc3Q7CiAgICAgdmlydHVhbCBMYXlvdXRS
ZWN0IG91dGxpbmVCb3VuZHNGb3JSZXBhaW50KGNvbnN0IFJlbmRlckxheWVyTW9kZWxPYmplY3Qq
IC8qcmVwYWludENvbnRhaW5lciovLCBjb25zdCBSZW5kZXJHZW9tZXRyeU1hcCogPSAwKSBjb25z
dCB7IHJldHVybiBMYXlvdXRSZWN0KCk7IH0KSW5kZXg6IFNvdXJjZS9XZWJDb3JlL3JlbmRlcmlu
Zy9SZW5kZXJUZXh0LmgKPT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PQotLS0gU291cmNlL1dlYkNvcmUvcmVuZGVyaW5nL1Jl
bmRlclRleHQuaAkocmV2aXNpb24gMTcyODQ3KQorKysgU291cmNlL1dlYkNvcmUvcmVuZGVyaW5n
L1JlbmRlclRleHQuaAkod29ya2luZyBjb3B5KQpAQCAtOTYsMTAgKzk2LDEwIEBAIHB1YmxpYzoK
ICAgICAgICAgICAgICAgICAgICAgICAgICAgIGZsb2F0JiBiZWdpbk1heFcsIGZsb2F0JiBlbmRN
YXhXLAogICAgICAgICAgICAgICAgICAgICAgICAgICAgZmxvYXQmIG1pblcsIGZsb2F0JiBtYXhX
LCBib29sJiBzdHJpcEZyb250U3BhY2VzKTsKIAotICAgIHZpcnR1YWwgSW50UmVjdCBsaW5lc0Jv
dW5kaW5nQm94KCkgY29uc3Q7CisgICAgV0VCQ09SRV9FWFBPUlQgdmlydHVhbCBJbnRSZWN0IGxp
bmVzQm91bmRpbmdCb3goKSBjb25zdDsKICAgICBMYXlvdXRSZWN0IGxpbmVzVmlzdWFsT3ZlcmZs
b3dCb3VuZGluZ0JveCgpIGNvbnN0OwogCi0gICAgSW50UG9pbnQgZmlyc3RSdW5Mb2NhdGlvbigp
IGNvbnN0OworICAgIFdFQkNPUkVfRVhQT1JUIEludFBvaW50IGZpcnN0UnVuTG9jYXRpb24oKSBj
b25zdDsKIAogICAgIHZpcnR1YWwgdm9pZCBzZXRUZXh0KGNvbnN0IFN0cmluZyYsIGJvb2wgZm9y
Y2UgPSBmYWxzZSk7CiAgICAgdm9pZCBzZXRUZXh0V2l0aE9mZnNldChjb25zdCBTdHJpbmcmLCB1
bnNpZ25lZCBvZmZzZXQsIHVuc2lnbmVkIGxlbiwgYm9vbCBmb3JjZSA9IGZhbHNlKTsKSW5kZXg6
IFNvdXJjZS9XZWJDb3JlL3JlbmRlcmluZy9SZW5kZXJUZXh0Q29udHJvbC5oCj09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT0K
LS0tIFNvdXJjZS9XZWJDb3JlL3JlbmRlcmluZy9SZW5kZXJUZXh0Q29udHJvbC5oCShyZXZpc2lv
biAxNzI4NDcpCisrKyBTb3VyY2UvV2ViQ29yZS9yZW5kZXJpbmcvUmVuZGVyVGV4dENvbnRyb2wu
aAkod29ya2luZyBjb3B5KQpAQCAtMzQsNyArMzQsNyBAQCBjbGFzcyBSZW5kZXJUZXh0Q29udHJv
bCA6IHB1YmxpYyBSZW5kZXJCCiBwdWJsaWM6CiAgICAgdmlydHVhbCB+UmVuZGVyVGV4dENvbnRy
b2woKTsKIAotICAgIEhUTUxUZXh0Rm9ybUNvbnRyb2xFbGVtZW50JiB0ZXh0Rm9ybUNvbnRyb2xF
bGVtZW50KCkgY29uc3Q7CisgICAgV0VCQ09SRV9FWFBPUlQgSFRNTFRleHRGb3JtQ29udHJvbEVs
ZW1lbnQmIHRleHRGb3JtQ29udHJvbEVsZW1lbnQoKSBjb25zdDsKICAgICB2aXJ0dWFsIFBhc3NS
ZWY8UmVuZGVyU3R5bGU+IGNyZWF0ZUlubmVyVGV4dFN0eWxlKGNvbnN0IFJlbmRlclN0eWxlKiBz
dGFydFN0eWxlKSBjb25zdCA9IDA7CiAKICNpZiBQTEFURk9STShJT1MpCkluZGV4OiBTb3VyY2Uv
V2ViQ29yZS9yZW5kZXJpbmcvUmVuZGVyVGhlbWVJT1MuaAo9PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09Ci0tLSBTb3VyY2Uv
V2ViQ29yZS9yZW5kZXJpbmcvUmVuZGVyVGhlbWVJT1MuaAkocmV2aXNpb24gMTcyODQ3KQorKysg
U291cmNlL1dlYkNvcmUvcmVuZGVyaW5nL1JlbmRlclRoZW1lSU9TLmgJKHdvcmtpbmcgY29weSkK
QEAgLTQ3LDcgKzQ3LDcgQEAgcHVibGljOgogCiAgICAgc3RhdGljIENGU3RyaW5nUmVmIGNvbnRl
bnRTaXplQ2F0ZWdvcnkoKTsKIAotICAgIHN0YXRpYyB2b2lkIHNldENvbnRlbnRTaXplQ2F0ZWdv
cnkoY29uc3QgU3RyaW5nJik7CisgICAgV0VCQ09SRV9FWFBPUlQgc3RhdGljIHZvaWQgc2V0Q29u
dGVudFNpemVDYXRlZ29yeShjb25zdCBTdHJpbmcmKTsKIAogcHJvdGVjdGVkOgogICAgIHZpcnR1
YWwgaW50IGJhc2VsaW5lUG9zaXRpb24oY29uc3QgUmVuZGVyT2JqZWN0JikgY29uc3Qgb3ZlcnJp
ZGU7CkluZGV4OiBTb3VyY2UvV2ViQ29yZS9yZW5kZXJpbmcvUmVuZGVyVHJlZUFzVGV4dC5oCj09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT0KLS0tIFNvdXJjZS9XZWJDb3JlL3JlbmRlcmluZy9SZW5kZXJUcmVlQXNUZXh0LmgJ
KHJldmlzaW9uIDE3Mjg0NykKKysrIFNvdXJjZS9XZWJDb3JlL3JlbmRlcmluZy9SZW5kZXJUcmVl
QXNUZXh0LmgJKHdvcmtpbmcgY29weSkKQEAgLTUxLDggKzUxLDggQEAgZW51bSBSZW5kZXJBc1Rl
eHRCZWhhdmlvckZsYWdzIHsKIHR5cGVkZWYgdW5zaWduZWQgUmVuZGVyQXNUZXh0QmVoYXZpb3I7
CiAKIC8vIFlvdSBkb24ndCBuZWVkIHBhZ2VXaWR0aEluUGl4ZWxzIGlmIHlvdSBkb24ndCBzcGVj
aWZ5IFJlbmRlckFzVGV4dEluUHJpbnRpbmdNb2RlLgotU3RyaW5nIGV4dGVybmFsUmVwcmVzZW50
YXRpb24oRnJhbWUqLCBSZW5kZXJBc1RleHRCZWhhdmlvciA9IFJlbmRlckFzVGV4dEJlaGF2aW9y
Tm9ybWFsKTsKLVN0cmluZyBleHRlcm5hbFJlcHJlc2VudGF0aW9uKEVsZW1lbnQqLCBSZW5kZXJB
c1RleHRCZWhhdmlvciA9IFJlbmRlckFzVGV4dEJlaGF2aW9yTm9ybWFsKTsKK1dFQkNPUkVfRVhQ
T1JUIFN0cmluZyBleHRlcm5hbFJlcHJlc2VudGF0aW9uKEZyYW1lKiwgUmVuZGVyQXNUZXh0QmVo
YXZpb3IgPSBSZW5kZXJBc1RleHRCZWhhdmlvck5vcm1hbCk7CitXRUJDT1JFX0VYUE9SVCBTdHJp
bmcgZXh0ZXJuYWxSZXByZXNlbnRhdGlvbihFbGVtZW50KiwgUmVuZGVyQXNUZXh0QmVoYXZpb3Ig
PSBSZW5kZXJBc1RleHRCZWhhdmlvck5vcm1hbCk7CiB2b2lkIHdyaXRlKFRleHRTdHJlYW0mLCBj
b25zdCBSZW5kZXJPYmplY3QmLCBpbnQgaW5kZW50ID0gMCwgUmVuZGVyQXNUZXh0QmVoYXZpb3Ig
PSBSZW5kZXJBc1RleHRCZWhhdmlvck5vcm1hbCk7CiAKIGNsYXNzIFJlbmRlclRyZWVBc1RleHQg
ewpAQCAtNjYsNyArNjYsNyBAQCBzdGF0aWMgdm9pZCB3cml0ZVJlbmRlck9iamVjdChUZXh0U3Ry
ZWFtCiAvLyBIZWxwZXIgZnVuY3Rpb24gc2hhcmVkIHdpdGggU1ZHUmVuZGVyVHJlZUFzVGV4dAog
U3RyaW5nIHF1b3RlQW5kRXNjYXBlTm9uUHJpbnRhYmxlcyhjb25zdCBTdHJpbmcmKTsKIAotU3Ry
aW5nIGNvdW50ZXJWYWx1ZUZvckVsZW1lbnQoRWxlbWVudCopOworV0VCQ09SRV9FWFBPUlQgU3Ry
aW5nIGNvdW50ZXJWYWx1ZUZvckVsZW1lbnQoRWxlbWVudCopOwogCiBTdHJpbmcgbWFya2VyVGV4
dEZvckxpc3RJdGVtKEVsZW1lbnQqKTsKIApJbmRleDogU291cmNlL1dlYkNvcmUvcmVuZGVyaW5n
L1JlbmRlclZpZXcuaAo9PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09Ci0tLSBTb3VyY2UvV2ViQ29yZS9yZW5kZXJpbmcvUmVu
ZGVyVmlldy5oCShyZXZpc2lvbiAxNzI4NDcpCisrKyBTb3VyY2UvV2ViQ29yZS9yZW5kZXJpbmcv
UmVuZGVyVmlldy5oCSh3b3JraW5nIGNvcHkpCkBAIC00OCw3ICs0OCw3IEBAIHB1YmxpYzoKICAg
ICBSZW5kZXJWaWV3KERvY3VtZW50JiwgUGFzc1JlZjxSZW5kZXJTdHlsZT4pOwogICAgIHZpcnR1
YWwgflJlbmRlclZpZXcoKTsKIAotICAgIGJvb2wgaGl0VGVzdChjb25zdCBIaXRUZXN0UmVxdWVz
dCYsIEhpdFRlc3RSZXN1bHQmKTsKKyAgICBXRUJDT1JFX0VYUE9SVCBib29sIGhpdFRlc3QoY29u
c3QgSGl0VGVzdFJlcXVlc3QmLCBIaXRUZXN0UmVzdWx0Jik7CiAgICAgYm9vbCBoaXRUZXN0KGNv
bnN0IEhpdFRlc3RSZXF1ZXN0JiwgY29uc3QgSGl0VGVzdExvY2F0aW9uJiwgSGl0VGVzdFJlc3Vs
dCYpOwogCiAgICAgdmlydHVhbCBjb25zdCBjaGFyKiByZW5kZXJOYW1lKCkgY29uc3Qgb3ZlcnJp
ZGUgeyByZXR1cm4gIlJlbmRlclZpZXciOyB9CkBAIC0xODUsMTQgKzE4NSwxNCBAQCBwdWJsaWM6
CiAgICAgLy8gTm90aWZpY2F0aW9uIHRoYXQgdGhpcyB2aWV3IG1vdmVkIGludG8gb3Igb3V0IG9m
IGEgbmF0aXZlIHdpbmRvdy4KICAgICB2b2lkIHNldElzSW5XaW5kb3coYm9vbCk7CiAKLSAgICBS
ZW5kZXJMYXllckNvbXBvc2l0b3ImIGNvbXBvc2l0b3IoKTsKLSAgICBib29sIHVzZXNDb21wb3Np
dGluZygpIGNvbnN0OworICAgIFdFQkNPUkVfRVhQT1JUIFJlbmRlckxheWVyQ29tcG9zaXRvciYg
Y29tcG9zaXRvcigpOworICAgIFdFQkNPUkVfRVhQT1JUIGJvb2wgdXNlc0NvbXBvc2l0aW5nKCkg
Y29uc3Q7CiAKLSAgICBJbnRSZWN0IHVuc2NhbGVkRG9jdW1lbnRSZWN0KCkgY29uc3Q7CisgICAg
V0VCQ09SRV9FWFBPUlQgSW50UmVjdCB1bnNjYWxlZERvY3VtZW50UmVjdCgpIGNvbnN0OwogICAg
IExheW91dFJlY3QgdW5leHRlbmRlZEJhY2tncm91bmRSZWN0KFJlbmRlckJveCogYmFja2dyb3Vu
ZFJlbmRlcmVyKSBjb25zdDsKICAgICBMYXlvdXRSZWN0IGJhY2tncm91bmRSZWN0KFJlbmRlckJv
eCogYmFja2dyb3VuZFJlbmRlcmVyKSBjb25zdDsKIAotICAgIEludFJlY3QgZG9jdW1lbnRSZWN0
KCkgY29uc3Q7CisgICAgV0VCQ09SRV9FWFBPUlQgSW50UmVjdCBkb2N1bWVudFJlY3QoKSBjb25z
dDsKIAogICAgIC8vIFJlbmRlcmVyIHRoYXQgcGFpbnRzIHRoZSByb290IGJhY2tncm91bmQgaGFz
IGJhY2tncm91bmQtaW1hZ2VzIHdoaWNoIGFsbCBoYXZlIGJhY2tncm91bmQtYXR0YWNobWVudDog
Zml4ZWQuCiAgICAgYm9vbCByb290QmFja2dyb3VuZElzRW50aXJlbHlGaXhlZCgpIGNvbnN0OwpA
QCAtMjMxLDcgKzIzMSw3IEBAIHB1YmxpYzoKICAgICB2b2lkIGRpZENyZWF0ZVJlbmRlcmVyKCkg
eyArK21fcmVuZGVyZXJDb3VudDsgfQogICAgIHZvaWQgZGlkRGVzdHJveVJlbmRlcmVyKCkgeyAt
LW1fcmVuZGVyZXJDb3VudDsgfQogCi0gICAgdm9pZCByZXN1bWVQYXVzZWRJbWFnZUFuaW1hdGlv
bnNJZk5lZWRlZCgpOworICAgIFdFQkNPUkVfRVhQT1JUIHZvaWQgcmVzdW1lUGF1c2VkSW1hZ2VB
bmltYXRpb25zSWZOZWVkZWQoKTsKICAgICB2b2lkIGFkZFJlbmRlcmVyV2l0aFBhdXNlZEltYWdl
QW5pbWF0aW9ucyhSZW5kZXJFbGVtZW50Jik7CiAgICAgdm9pZCByZW1vdmVSZW5kZXJlcldpdGhQ
YXVzZWRJbWFnZUFuaW1hdGlvbnMoUmVuZGVyRWxlbWVudCYpOwogCkluZGV4OiBTb3VyY2UvV2Vi
Q29yZS9yZW5kZXJpbmcvUmVuZGVyV2lkZ2V0LmgKPT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PQotLS0gU291cmNlL1dlYkNv
cmUvcmVuZGVyaW5nL1JlbmRlcldpZGdldC5oCShyZXZpc2lvbiAxNzI4NDcpCisrKyBTb3VyY2Uv
V2ViQ29yZS9yZW5kZXJpbmcvUmVuZGVyV2lkZ2V0LmgJKHdvcmtpbmcgY29weSkKQEAgLTUxLDkg
KzUxLDkgQEAgcHJpdmF0ZToKICAgICB0eXBlZGVmIEhhc2hNYXA8UmVmUHRyPFdpZGdldD4sIEZy
YW1lVmlldyo+IFdpZGdldFRvUGFyZW50TWFwOwogICAgIHN0YXRpYyBXaWRnZXRUb1BhcmVudE1h
cCYgd2lkZ2V0TmV3UGFyZW50TWFwKCk7CiAKLSAgICB2b2lkIG1vdmVXaWRnZXRzKCk7CisgICAg
V0VCQ09SRV9FWFBPUlQgdm9pZCBtb3ZlV2lkZ2V0cygpOwogCi0gICAgc3RhdGljIHVuc2lnbmVk
IHNfd2lkZ2V0SGllcmFyY2h5VXBkYXRlU3VzcGVuZENvdW50OworICAgIFdFQkNPUkVfRVhQT1JU
IHN0YXRpYyB1bnNpZ25lZCBzX3dpZGdldEhpZXJhcmNoeVVwZGF0ZVN1c3BlbmRDb3VudDsKIH07
CiAgICAgCiBjbGFzcyBSZW5kZXJXaWRnZXQgOiBwdWJsaWMgUmVuZGVyUmVwbGFjZWQsIHByaXZh
dGUgT3ZlcmxhcFRlc3RSZXF1ZXN0Q2xpZW50IHsKQEAgLTYzLDEyICs2MywxMiBAQCBwdWJsaWM6
CiAgICAgSFRNTEZyYW1lT3duZXJFbGVtZW50JiBmcmFtZU93bmVyRWxlbWVudCgpIGNvbnN0IHsg
cmV0dXJuIHRvSFRNTEZyYW1lT3duZXJFbGVtZW50KG5vZGVGb3JOb25Bbm9ueW1vdXMoKSk7IH0K
IAogICAgIFdpZGdldCogd2lkZ2V0KCkgY29uc3QgeyByZXR1cm4gbV93aWRnZXQuZ2V0KCk7IH0K
LSAgICB2b2lkIHNldFdpZGdldChQYXNzUmVmUHRyPFdpZGdldD4pOworICAgIFdFQkNPUkVfRVhQ
T1JUIHZvaWQgc2V0V2lkZ2V0KFBhc3NSZWZQdHI8V2lkZ2V0Pik7CiAKICAgICBzdGF0aWMgUmVu
ZGVyV2lkZ2V0KiBmaW5kKGNvbnN0IFdpZGdldCopOwogCiAgICAgdm9pZCB1cGRhdGVXaWRnZXRQ
b3NpdGlvbigpOwotICAgIEludFJlY3Qgd2luZG93Q2xpcFJlY3QoKSBjb25zdDsKKyAgICBXRUJD
T1JFX0VYUE9SVCBJbnRSZWN0IHdpbmRvd0NsaXBSZWN0KCkgY29uc3Q7CiAKICAgICBib29sIHJl
cXVpcmVzQWNjZWxlcmF0ZWRDb21wb3NpdGluZygpIGNvbnN0OwogCkluZGV4OiBTb3VyY2UvV2Vi
Q29yZS9yZW5kZXJpbmcvU2Nyb2xsQmVoYXZpb3IuY3BwCj09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT0KLS0tIFNvdXJjZS9X
ZWJDb3JlL3JlbmRlcmluZy9TY3JvbGxCZWhhdmlvci5jcHAJKHJldmlzaW9uIDE3Mjg0NykKKysr
IFNvdXJjZS9XZWJDb3JlL3JlbmRlcmluZy9TY3JvbGxCZWhhdmlvci5jcHAJKHdvcmtpbmcgY29w
eSkKQEAgLTQ3LDggKzQ3LDggQEAKIG5hbWVzcGFjZSBXZWJDb3JlIHsKIAogY29uc3QgU2Nyb2xs
QWxpZ25tZW50IFNjcm9sbEFsaWdubWVudDo6YWxpZ25DZW50ZXJJZk5lZWRlZCA9IHsgbm9TY3Jv
bGwsIGFsaWduQ2VudGVyLCBhbGlnblRvQ2xvc2VzdEVkZ2UgfTsKLWNvbnN0IFNjcm9sbEFsaWdu
bWVudCBTY3JvbGxBbGlnbm1lbnQ6OmFsaWduVG9FZGdlSWZOZWVkZWQgPSB7IG5vU2Nyb2xsLCBh
bGlnblRvQ2xvc2VzdEVkZ2UsIGFsaWduVG9DbG9zZXN0RWRnZSB9OwotY29uc3QgU2Nyb2xsQWxp
Z25tZW50IFNjcm9sbEFsaWdubWVudDo6YWxpZ25DZW50ZXJBbHdheXMgPSB7IGFsaWduQ2VudGVy
LCBhbGlnbkNlbnRlciwgYWxpZ25DZW50ZXIgfTsKK1dFQkNPUkVfRVhQT1JUIGNvbnN0IFNjcm9s
bEFsaWdubWVudCBTY3JvbGxBbGlnbm1lbnQ6OmFsaWduVG9FZGdlSWZOZWVkZWQgPSB7IG5vU2Ny
b2xsLCBhbGlnblRvQ2xvc2VzdEVkZ2UsIGFsaWduVG9DbG9zZXN0RWRnZSB9OworV0VCQ09SRV9F
WFBPUlQgY29uc3QgU2Nyb2xsQWxpZ25tZW50IFNjcm9sbEFsaWdubWVudDo6YWxpZ25DZW50ZXJB
bHdheXMgPSB7IGFsaWduQ2VudGVyLCBhbGlnbkNlbnRlciwgYWxpZ25DZW50ZXIgfTsKIGNvbnN0
IFNjcm9sbEFsaWdubWVudCBTY3JvbGxBbGlnbm1lbnQ6OmFsaWduVG9wQWx3YXlzID0geyBhbGln
blRvcCwgYWxpZ25Ub3AsIGFsaWduVG9wIH07CiBjb25zdCBTY3JvbGxBbGlnbm1lbnQgU2Nyb2xs
QWxpZ25tZW50OjphbGlnbkJvdHRvbUFsd2F5cyA9IHsgYWxpZ25Cb3R0b20sIGFsaWduQm90dG9t
LCBhbGlnbkJvdHRvbSB9OwogCkluZGV4OiBTb3VyY2UvV2ViQ29yZS9yZW5kZXJpbmcvYnJlYWtf
bGluZXMuY3BwCj09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT0KLS0tIFNvdXJjZS9XZWJDb3JlL3JlbmRlcmluZy9icmVha19s
aW5lcy5jcHAJKHJldmlzaW9uIDE3Mjg0NykKKysrIFNvdXJjZS9XZWJDb3JlL3JlbmRlcmluZy9i
cmVha19saW5lcy5jcHAJKHdvcmtpbmcgY29weSkKQEAgLTUxLDcgKzUxLDcgQEAgbmFtZXNwYWNl
IFdlYkNvcmUgewogLy8gLSBhZnRlciAnLScgYW5kICc/JyAoYmFja3dhcmQtY29tcGF0aWJsZSwg
YW5kIGNvbXBhdGlibGUgd2l0aCBJbnRlcm5ldCBFeHBsb3JlcikuCiAvLyBQbGVhc2UgcmVmZXIg
dG8gPGh0dHBzOi8vYnVncy53ZWJraXQub3JnL3Nob3dfYnVnLmNnaT9pZD0zNzY5OD4gZm9yIGxp
bmUgYnJlYWtpbmcgbWF0cml4ZXMgb2YgZGlmZmVyZW50IGJyb3dzZXJzCiAvLyBhbmQgdGhlIElD
VSBzdGFuZGFyZC4KLWNvbnN0IHVuc2lnbmVkIGNoYXIgYXNjaWlMaW5lQnJlYWtUYWJsZVtdW2Fz
Y2lpTGluZUJyZWFrVGFibGVDb2x1bW5Db3VudF0gPSB7CitXRUJDT1JFX0VYUE9SVCBjb25zdCB1
bnNpZ25lZCBjaGFyIGFzY2lpTGluZUJyZWFrVGFibGVbXVthc2NpaUxpbmVCcmVha1RhYmxlQ29s
dW1uQ291bnRdID0gewogICAgIC8vICAhICAiICAjICAkICAlICAmICAnICAoICAgICApICAqICAr
ICAsICAtICAuICAvICAwICAxLTggICA5ICA6ICA7ICA8ICA9ICA+ICA/ICBAICAgICBBLVggICAg
ICBZICBaICBbICBcICBdICBeICBfICBgICAgICBhLXggICAgICB5ICB6ICB7ICB8ICB9ICB+ICBE
RUwKICAgICB7IEIoMCwgMCwgMCwgMCwgMCwgMCwgMCwgMSksIEIoMCwgMCwgMCwgMCwgMCwgMCwg
MCwgMCksIDAsIEIoMCwgMCwgMCwgMSwgMCwgMCwgMCwgMCksIDAsIDAsIDAsIEIoMCwgMCwgMSwg
MCwgMCwgMCwgMCwgMCksIDAsIDAsIDAsIEIoMCwgMCwgMSwgMCwgMCwgMCwgMCwgMCkgfSwgLy8g
IQogICAgIHsgQigwLCAwLCAwLCAwLCAwLCAwLCAwLCAxKSwgQigwLCAwLCAwLCAwLCAwLCAwLCAw
LCAwKSwgMCwgQigwLCAwLCAwLCAxLCAwLCAwLCAwLCAwKSwgMCwgMCwgMCwgQigwLCAwLCAxLCAw
LCAwLCAwLCAwLCAwKSwgMCwgMCwgMCwgQigwLCAwLCAxLCAwLCAwLCAwLCAwLCAwKSB9LCAvLyAi
CkluZGV4OiBTb3VyY2UvV2ViQ29yZS9yZW5kZXJpbmcvc3R5bGUvUmVuZGVyU3R5bGUuaAo9PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09Ci0tLSBTb3VyY2UvV2ViQ29yZS9yZW5kZXJpbmcvc3R5bGUvUmVuZGVyU3R5bGUuaAko
cmV2aXNpb24gMTcyODQ3KQorKysgU291cmNlL1dlYkNvcmUvcmVuZGVyaW5nL3N0eWxlL1JlbmRl
clN0eWxlLmgJKHdvcmtpbmcgY29weSkKQEAgLTY5Nyw5ICs2OTcsOSBAQCBwdWJsaWM6CiAgICAg
RUNsZWFyIGNsZWFyKCkgY29uc3QgeyByZXR1cm4gbm9uaW5oZXJpdGVkX2ZsYWdzLmNsZWFyKCk7
IH0KICAgICBFVGFibGVMYXlvdXQgdGFibGVMYXlvdXQoKSBjb25zdCB7IHJldHVybiBub25pbmhl
cml0ZWRfZmxhZ3MudGFibGVMYXlvdXQoKTsgfQogCi0gICAgY29uc3QgRm9udCYgZm9udCgpIGNv
bnN0OwotICAgIGNvbnN0IEZvbnRNZXRyaWNzJiBmb250TWV0cmljcygpIGNvbnN0OwotICAgIGNv
bnN0IEZvbnREZXNjcmlwdGlvbiYgZm9udERlc2NyaXB0aW9uKCkgY29uc3Q7CisgICAgV0VCQ09S
RV9FWFBPUlQgY29uc3QgRm9udCYgZm9udCgpIGNvbnN0OworICAgIFdFQkNPUkVfRVhQT1JUIGNv
bnN0IEZvbnRNZXRyaWNzJiBmb250TWV0cmljcygpIGNvbnN0OworICAgIFdFQkNPUkVfRVhQT1JU
IGNvbnN0IEZvbnREZXNjcmlwdGlvbiYgZm9udERlc2NyaXB0aW9uKCkgY29uc3Q7CiAgICAgZmxv
YXQgc3BlY2lmaWVkRm9udFNpemUoKSBjb25zdDsKICAgICBmbG9hdCBjb21wdXRlZEZvbnRTaXpl
KCkgY29uc3Q7CiAgICAgaW50IGZvbnRTaXplKCkgY29uc3Q7CkBAIC0xNzg5LDcgKzE3ODksNyBA
QCBwdWJsaWM6CiAgICAgYm9vbCBsYXN0Q2hpbGRTdGF0ZSgpIGNvbnN0IHsgcmV0dXJuIG5vbmlu
aGVyaXRlZF9mbGFncy5sYXN0Q2hpbGRTdGF0ZSgpOyB9CiAgICAgdm9pZCBzZXRMYXN0Q2hpbGRT
dGF0ZSgpIHsgc2V0VW5pcXVlKCk7IG5vbmluaGVyaXRlZF9mbGFncy5zZXRMYXN0Q2hpbGRTdGF0
ZSh0cnVlKTsgfQogCi0gICAgQ29sb3IgdmlzaXRlZERlcGVuZGVudENvbG9yKGludCBjb2xvclBy
b3BlcnR5KSBjb25zdDsKKyAgICBXRUJDT1JFX0VYUE9SVCBDb2xvciB2aXNpdGVkRGVwZW5kZW50
Q29sb3IoaW50IGNvbG9yUHJvcGVydHkpIGNvbnN0OwogCiAgICAgdm9pZCBzZXRIYXNFeHBsaWNp
dGx5SW5oZXJpdGVkUHJvcGVydGllcygpIHsgbm9uaW5oZXJpdGVkX2ZsYWdzLnNldEhhc0V4cGxp
Y2l0bHlJbmhlcml0ZWRQcm9wZXJ0aWVzKHRydWUpOyB9CiAgICAgYm9vbCBoYXNFeHBsaWNpdGx5
SW5oZXJpdGVkUHJvcGVydGllcygpIGNvbnN0IHsgcmV0dXJuIG5vbmluaGVyaXRlZF9mbGFncy5o
YXNFeHBsaWNpdGx5SW5oZXJpdGVkUHJvcGVydGllcygpOyB9CkluZGV4OiBTb3VyY2UvV2ViQ29y
ZS9yZXBsYXkvVXNlcklucHV0QnJpZGdlLmgKPT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PQotLS0gU291cmNlL1dlYkNvcmUv
cmVwbGF5L1VzZXJJbnB1dEJyaWRnZS5oCShyZXZpc2lvbiAxNzI4NDcpCisrKyBTb3VyY2UvV2Vi
Q29yZS9yZXBsYXkvVXNlcklucHV0QnJpZGdlLmgJKHdvcmtpbmcgY29weSkKQEAgLTcyLDI1ICs3
MiwyNSBAQCBwdWJsaWM6CiAKICAgICAvLyBVc2VyIGlucHV0IEFQSXMuCiAjaWYgRU5BQkxFKENP
TlRFWFRfTUVOVVMpCi0gICAgYm9vbCBoYW5kbGVDb250ZXh0TWVudUV2ZW50KGNvbnN0IFBsYXRm
b3JtTW91c2VFdmVudCYsIGNvbnN0IEZyYW1lKiwgSW5wdXRTb3VyY2Ugc291cmNlID0gSW5wdXRT
b3VyY2U6OlVzZXIpOworICAgIFdFQkNPUkVfRVhQT1JUIGJvb2wgaGFuZGxlQ29udGV4dE1lbnVF
dmVudChjb25zdCBQbGF0Zm9ybU1vdXNlRXZlbnQmLCBjb25zdCBGcmFtZSosIElucHV0U291cmNl
IHNvdXJjZSA9IElucHV0U291cmNlOjpVc2VyKTsKICNlbmRpZgotICAgIGJvb2wgaGFuZGxlTW91
c2VQcmVzc0V2ZW50KGNvbnN0IFBsYXRmb3JtTW91c2VFdmVudCYsIElucHV0U291cmNlIHNvdXJj
ZSA9IElucHV0U291cmNlOjpVc2VyKTsKLSAgICBib29sIGhhbmRsZU1vdXNlUmVsZWFzZUV2ZW50
KGNvbnN0IFBsYXRmb3JtTW91c2VFdmVudCYsIElucHV0U291cmNlIHNvdXJjZSA9IElucHV0U291
cmNlOjpVc2VyKTsKLSAgICBib29sIGhhbmRsZU1vdXNlTW92ZUV2ZW50KGNvbnN0IFBsYXRmb3Jt
TW91c2VFdmVudCYsIElucHV0U291cmNlIHNvdXJjZSA9IElucHV0U291cmNlOjpVc2VyKTsKLSAg
ICBib29sIGhhbmRsZU1vdXNlTW92ZU9uU2Nyb2xsYmFyRXZlbnQoY29uc3QgUGxhdGZvcm1Nb3Vz
ZUV2ZW50JiwgSW5wdXRTb3VyY2Ugc291cmNlID0gSW5wdXRTb3VyY2U6OlVzZXIpOwotICAgIGJv
b2wgaGFuZGxlV2hlZWxFdmVudChjb25zdCBQbGF0Zm9ybVdoZWVsRXZlbnQmLCBJbnB1dFNvdXJj
ZSBzb3VyY2UgPSBJbnB1dFNvdXJjZTo6VXNlcik7Ci0gICAgYm9vbCBoYW5kbGVLZXlFdmVudChj
b25zdCBQbGF0Zm9ybUtleWJvYXJkRXZlbnQmLCBJbnB1dFNvdXJjZSBzb3VyY2UgPSBJbnB1dFNv
dXJjZTo6VXNlcik7Ci0gICAgYm9vbCBoYW5kbGVBY2Nlc3NLZXlFdmVudChjb25zdCBQbGF0Zm9y
bUtleWJvYXJkRXZlbnQmLCBJbnB1dFNvdXJjZSBzb3VyY2UgPSBJbnB1dFNvdXJjZTo6VXNlcik7
CisgICAgV0VCQ09SRV9FWFBPUlQgYm9vbCBoYW5kbGVNb3VzZVByZXNzRXZlbnQoY29uc3QgUGxh
dGZvcm1Nb3VzZUV2ZW50JiwgSW5wdXRTb3VyY2Ugc291cmNlID0gSW5wdXRTb3VyY2U6OlVzZXIp
OworICAgIFdFQkNPUkVfRVhQT1JUIGJvb2wgaGFuZGxlTW91c2VSZWxlYXNlRXZlbnQoY29uc3Qg
UGxhdGZvcm1Nb3VzZUV2ZW50JiwgSW5wdXRTb3VyY2Ugc291cmNlID0gSW5wdXRTb3VyY2U6OlVz
ZXIpOworICAgIFdFQkNPUkVfRVhQT1JUIGJvb2wgaGFuZGxlTW91c2VNb3ZlRXZlbnQoY29uc3Qg
UGxhdGZvcm1Nb3VzZUV2ZW50JiwgSW5wdXRTb3VyY2Ugc291cmNlID0gSW5wdXRTb3VyY2U6OlVz
ZXIpOworICAgIFdFQkNPUkVfRVhQT1JUIGJvb2wgaGFuZGxlTW91c2VNb3ZlT25TY3JvbGxiYXJF
dmVudChjb25zdCBQbGF0Zm9ybU1vdXNlRXZlbnQmLCBJbnB1dFNvdXJjZSBzb3VyY2UgPSBJbnB1
dFNvdXJjZTo6VXNlcik7CisgICAgV0VCQ09SRV9FWFBPUlQgYm9vbCBoYW5kbGVXaGVlbEV2ZW50
KGNvbnN0IFBsYXRmb3JtV2hlZWxFdmVudCYsIElucHV0U291cmNlIHNvdXJjZSA9IElucHV0U291
cmNlOjpVc2VyKTsKKyAgICBXRUJDT1JFX0VYUE9SVCBib29sIGhhbmRsZUtleUV2ZW50KGNvbnN0
IFBsYXRmb3JtS2V5Ym9hcmRFdmVudCYsIElucHV0U291cmNlIHNvdXJjZSA9IElucHV0U291cmNl
OjpVc2VyKTsKKyAgICBXRUJDT1JFX0VYUE9SVCBib29sIGhhbmRsZUFjY2Vzc0tleUV2ZW50KGNv
bnN0IFBsYXRmb3JtS2V5Ym9hcmRFdmVudCYsIElucHV0U291cmNlIHNvdXJjZSA9IElucHV0U291
cmNlOjpVc2VyKTsKICAgICB2b2lkIGZvY3VzU2V0QWN0aXZlKGJvb2wgYWN0aXZlLCBJbnB1dFNv
dXJjZSBzb3VyY2UgPSBJbnB1dFNvdXJjZTo6VXNlcik7CiAgICAgdm9pZCBmb2N1c1NldEZvY3Vz
ZWQoYm9vbCBmb2N1c2VkLCBJbnB1dFNvdXJjZSBzb3VyY2UgPSBJbnB1dFNvdXJjZTo6VXNlcik7
Ci0gICAgYm9vbCBzY3JvbGxSZWN1cnNpdmVseShTY3JvbGxEaXJlY3Rpb24sIFNjcm9sbEdyYW51
bGFyaXR5LCBJbnB1dFNvdXJjZSBzb3VyY2UgPSBJbnB1dFNvdXJjZTo6VXNlcik7CisgICAgV0VC
Q09SRV9FWFBPUlQgYm9vbCBzY3JvbGxSZWN1cnNpdmVseShTY3JvbGxEaXJlY3Rpb24sIFNjcm9s
bEdyYW51bGFyaXR5LCBJbnB1dFNvdXJjZSBzb3VyY2UgPSBJbnB1dFNvdXJjZTo6VXNlcik7CiAg
ICAgYm9vbCBsb2dpY2FsU2Nyb2xsUmVjdXJzaXZlbHkoU2Nyb2xsTG9naWNhbERpcmVjdGlvbiwg
U2Nyb2xsR3JhbnVsYXJpdHksIElucHV0U291cmNlIHNvdXJjZSA9IElucHV0U291cmNlOjpVc2Vy
KTsKIAogICAgIC8vIE5hdmlnYXRpb24gQVBJcy4KLSAgICB2b2lkIGxvYWRSZXF1ZXN0KGNvbnN0
IEZyYW1lTG9hZFJlcXVlc3QmLCBJbnB1dFNvdXJjZSBzb3VyY2UgPSBJbnB1dFNvdXJjZTo6VXNl
cik7Ci0gICAgdm9pZCByZWxvYWRGcmFtZShGcmFtZSosIGJvb2wgZW5kVG9FbmRSZWxvYWQsIElu
cHV0U291cmNlIHNvdXJjZSA9IElucHV0U291cmNlOjpVc2VyKTsKLSAgICB2b2lkIHN0b3BMb2Fk
aW5nRnJhbWUoRnJhbWUqLCBJbnB1dFNvdXJjZSBzb3VyY2UgPSBJbnB1dFNvdXJjZTo6VXNlcik7
Ci0gICAgYm9vbCB0cnlDbG9zZVBhZ2UoSW5wdXRTb3VyY2Ugc291cmNlID0gSW5wdXRTb3VyY2U6
OlVzZXIpOworICAgIFdFQkNPUkVfRVhQT1JUIHZvaWQgbG9hZFJlcXVlc3QoY29uc3QgRnJhbWVM
b2FkUmVxdWVzdCYsIElucHV0U291cmNlIHNvdXJjZSA9IElucHV0U291cmNlOjpVc2VyKTsKKyAg
ICBXRUJDT1JFX0VYUE9SVCB2b2lkIHJlbG9hZEZyYW1lKEZyYW1lKiwgYm9vbCBlbmRUb0VuZFJl
bG9hZCwgSW5wdXRTb3VyY2Ugc291cmNlID0gSW5wdXRTb3VyY2U6OlVzZXIpOworICAgIFdFQkNP
UkVfRVhQT1JUIHZvaWQgc3RvcExvYWRpbmdGcmFtZShGcmFtZSosIElucHV0U291cmNlIHNvdXJj
ZSA9IElucHV0U291cmNlOjpVc2VyKTsKKyAgICBXRUJDT1JFX0VYUE9SVCBib29sIHRyeUNsb3Nl
UGFnZShJbnB1dFNvdXJjZSBzb3VyY2UgPSBJbnB1dFNvdXJjZTo6VXNlcik7CiAKIHByaXZhdGU6
CiAgICAgUGFnZSYgbV9wYWdlOwpJbmRleDogU291cmNlL1dlYkNvcmUvc3RvcmFnZS9TdG9yYWdl
RXZlbnREaXNwYXRjaGVyLmgKPT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PQotLS0gU291cmNlL1dlYkNvcmUvc3RvcmFnZS9T
dG9yYWdlRXZlbnREaXNwYXRjaGVyLmgJKHJldmlzaW9uIDE3Mjg0NykKKysrIFNvdXJjZS9XZWJD
b3JlL3N0b3JhZ2UvU3RvcmFnZUV2ZW50RGlzcGF0Y2hlci5oCSh3b3JraW5nIGNvcHkpCkBAIC00
Niw3ICs0Niw3IEBAIHB1YmxpYzoKICAgICBzdGF0aWMgdm9pZCBkaXNwYXRjaExvY2FsU3RvcmFn
ZUV2ZW50cyhjb25zdCBTdHJpbmcmIGtleSwgY29uc3QgU3RyaW5nJiBvbGRWYWx1ZSwgY29uc3Qg
U3RyaW5nJiBuZXdWYWx1ZSwgU2VjdXJpdHlPcmlnaW4qLCBGcmFtZSogc291cmNlRnJhbWUpOwog
CiAgICAgc3RhdGljIHZvaWQgZGlzcGF0Y2hTZXNzaW9uU3RvcmFnZUV2ZW50c1RvRnJhbWVzKFBh
Z2UmLCBjb25zdCBWZWN0b3I8UmVmUHRyPEZyYW1lPj4mIGZyYW1lcywgY29uc3QgU3RyaW5nJiBr
ZXksIGNvbnN0IFN0cmluZyYgb2xkVmFsdWUsIGNvbnN0IFN0cmluZyYgbmV3VmFsdWUsIGNvbnN0
IFN0cmluZyYgdXJsLCBTZWN1cml0eU9yaWdpbiopOwotICAgIHN0YXRpYyB2b2lkIGRpc3BhdGNo
TG9jYWxTdG9yYWdlRXZlbnRzVG9GcmFtZXMoUGFnZUdyb3VwJiwgY29uc3QgVmVjdG9yPFJlZlB0
cjxGcmFtZT4+JiBmcmFtZXMsIGNvbnN0IFN0cmluZyYga2V5LCBjb25zdCBTdHJpbmcmIG9sZFZh
bHVlLCBjb25zdCBTdHJpbmcmIG5ld1ZhbHVlLCBjb25zdCBTdHJpbmcmIHVybCwgU2VjdXJpdHlP
cmlnaW4qKTsKKyAgICBXRUJDT1JFX0VYUE9SVCBzdGF0aWMgdm9pZCBkaXNwYXRjaExvY2FsU3Rv
cmFnZUV2ZW50c1RvRnJhbWVzKFBhZ2VHcm91cCYsIGNvbnN0IFZlY3RvcjxSZWZQdHI8RnJhbWU+
PiYgZnJhbWVzLCBjb25zdCBTdHJpbmcmIGtleSwgY29uc3QgU3RyaW5nJiBvbGRWYWx1ZSwgY29u
c3QgU3RyaW5nJiBuZXdWYWx1ZSwgY29uc3QgU3RyaW5nJiB1cmwsIFNlY3VyaXR5T3JpZ2luKik7
CiBwcml2YXRlOgogICAgIC8vIERvIG5vdCBpbnN0YW50aWF0ZS4KICAgICBTdG9yYWdlRXZlbnRE
aXNwYXRjaGVyKCk7CkluZGV4OiBTb3VyY2UvV2ViQ29yZS9zdG9yYWdlL1N0b3JhZ2VNYXAuaAo9
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09Ci0tLSBTb3VyY2UvV2ViQ29yZS9zdG9yYWdlL1N0b3JhZ2VNYXAuaAkocmV2aXNp
b24gMTcyODQ3KQorKysgU291cmNlL1dlYkNvcmUvc3RvcmFnZS9TdG9yYWdlTWFwLmgJKHdvcmtp
bmcgY29weSkKQEAgLTM3LDE4ICszNywxOCBAQCBuYW1lc3BhY2UgV2ViQ29yZSB7CiBjbGFzcyBT
dG9yYWdlTWFwIDogcHVibGljIFJlZkNvdW50ZWQ8U3RvcmFnZU1hcD4gewogcHVibGljOgogICAg
IC8vIFF1b3RhIHNpemUgbWVhc3VyZWQgaW4gYnl0ZXMuCi0gICAgc3RhdGljIFBhc3NSZWZQdHI8
U3RvcmFnZU1hcD4gY3JlYXRlKHVuc2lnbmVkIHF1b3RhU2l6ZSk7CisgICAgV0VCQ09SRV9FWFBP
UlQgc3RhdGljIFBhc3NSZWZQdHI8U3RvcmFnZU1hcD4gY3JlYXRlKHVuc2lnbmVkIHF1b3RhU2l6
ZSk7CiAKLSAgICB1bnNpZ25lZCBsZW5ndGgoKSBjb25zdDsKLSAgICBTdHJpbmcga2V5KHVuc2ln
bmVkIGluZGV4KTsKLSAgICBTdHJpbmcgZ2V0SXRlbShjb25zdCBTdHJpbmcmKSBjb25zdDsKLSAg
ICBQYXNzUmVmUHRyPFN0b3JhZ2VNYXA+IHNldEl0ZW0oY29uc3QgU3RyaW5nJiBrZXksIGNvbnN0
IFN0cmluZyYgdmFsdWUsIFN0cmluZyYgb2xkVmFsdWUsIGJvb2wmIHF1b3RhRXhjZXB0aW9uKTsK
LSAgICBQYXNzUmVmUHRyPFN0b3JhZ2VNYXA+IHNldEl0ZW1JZ25vcmluZ1F1b3RhKGNvbnN0IFN0
cmluZyYga2V5LCBjb25zdCBTdHJpbmcmIHZhbHVlKTsKLSAgICBQYXNzUmVmUHRyPFN0b3JhZ2VN
YXA+IHJlbW92ZUl0ZW0oY29uc3QgU3RyaW5nJiwgU3RyaW5nJiBvbGRWYWx1ZSk7CisgICAgV0VC
Q09SRV9FWFBPUlQgdW5zaWduZWQgbGVuZ3RoKCkgY29uc3Q7CisgICAgV0VCQ09SRV9FWFBPUlQg
U3RyaW5nIGtleSh1bnNpZ25lZCBpbmRleCk7CisgICAgV0VCQ09SRV9FWFBPUlQgU3RyaW5nIGdl
dEl0ZW0oY29uc3QgU3RyaW5nJikgY29uc3Q7CisgICAgV0VCQ09SRV9FWFBPUlQgUGFzc1JlZlB0
cjxTdG9yYWdlTWFwPiBzZXRJdGVtKGNvbnN0IFN0cmluZyYga2V5LCBjb25zdCBTdHJpbmcmIHZh
bHVlLCBTdHJpbmcmIG9sZFZhbHVlLCBib29sJiBxdW90YUV4Y2VwdGlvbik7CisgICAgV0VCQ09S
RV9FWFBPUlQgUGFzc1JlZlB0cjxTdG9yYWdlTWFwPiBzZXRJdGVtSWdub3JpbmdRdW90YShjb25z
dCBTdHJpbmcmIGtleSwgY29uc3QgU3RyaW5nJiB2YWx1ZSk7CisgICAgV0VCQ09SRV9FWFBPUlQg
UGFzc1JlZlB0cjxTdG9yYWdlTWFwPiByZW1vdmVJdGVtKGNvbnN0IFN0cmluZyYsIFN0cmluZyYg
b2xkVmFsdWUpOwogCi0gICAgYm9vbCBjb250YWlucyhjb25zdCBTdHJpbmcmIGtleSkgY29uc3Q7
CisgICAgV0VCQ09SRV9FWFBPUlQgYm9vbCBjb250YWlucyhjb25zdCBTdHJpbmcmIGtleSkgY29u
c3Q7CiAKLSAgICB2b2lkIGltcG9ydEl0ZW1zKGNvbnN0IEhhc2hNYXA8U3RyaW5nLCBTdHJpbmc+
Jik7CisgICAgV0VCQ09SRV9FWFBPUlQgdm9pZCBpbXBvcnRJdGVtcyhjb25zdCBIYXNoTWFwPFN0
cmluZywgU3RyaW5nPiYpOwogICAgIGNvbnN0IEhhc2hNYXA8U3RyaW5nLCBTdHJpbmc+JiBpdGVt
cygpIGNvbnN0IHsgcmV0dXJuIG1fbWFwOyB9CiAKICAgICB1bnNpZ25lZCBxdW90YSgpIGNvbnN0
IHsgcmV0dXJuIG1fcXVvdGFTaXplOyB9CkluZGV4OiBTb3VyY2UvV2ViQ29yZS9zdG9yYWdlL1N0
b3JhZ2VTdHJhdGVneS5oCj09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT0KLS0tIFNvdXJjZS9XZWJDb3JlL3N0b3JhZ2UvU3Rv
cmFnZVN0cmF0ZWd5LmgJKHJldmlzaW9uIDE3Mjg0NykKKysrIFNvdXJjZS9XZWJDb3JlL3N0b3Jh
Z2UvU3RvcmFnZVN0cmF0ZWd5LmgJKHdvcmtpbmcgY29weSkKQEAgLTM3LDkgKzM3LDkgQEAgY2xh
c3MgU3RvcmFnZU5hbWVzcGFjZTsKIAogY2xhc3MgU3RvcmFnZVN0cmF0ZWd5IHsKIHB1YmxpYzoK
LSAgICB2aXJ0dWFsIFBhc3NSZWZQdHI8U3RvcmFnZU5hbWVzcGFjZT4gbG9jYWxTdG9yYWdlTmFt
ZXNwYWNlKFBhZ2VHcm91cCopOwotICAgIHZpcnR1YWwgUGFzc1JlZlB0cjxTdG9yYWdlTmFtZXNw
YWNlPiB0cmFuc2llbnRMb2NhbFN0b3JhZ2VOYW1lc3BhY2UoUGFnZUdyb3VwKiwgU2VjdXJpdHlP
cmlnaW4qKTsKLSAgICB2aXJ0dWFsIFBhc3NSZWZQdHI8U3RvcmFnZU5hbWVzcGFjZT4gc2Vzc2lv
blN0b3JhZ2VOYW1lc3BhY2UoUGFnZSopOworICAgIFdFQkNPUkVfRVhQT1JUIHZpcnR1YWwgUGFz
c1JlZlB0cjxTdG9yYWdlTmFtZXNwYWNlPiBsb2NhbFN0b3JhZ2VOYW1lc3BhY2UoUGFnZUdyb3Vw
Kik7CisgICAgV0VCQ09SRV9FWFBPUlQgdmlydHVhbCBQYXNzUmVmUHRyPFN0b3JhZ2VOYW1lc3Bh
Y2U+IHRyYW5zaWVudExvY2FsU3RvcmFnZU5hbWVzcGFjZShQYWdlR3JvdXAqLCBTZWN1cml0eU9y
aWdpbiopOworICAgIFdFQkNPUkVfRVhQT1JUIHZpcnR1YWwgUGFzc1JlZlB0cjxTdG9yYWdlTmFt
ZXNwYWNlPiBzZXNzaW9uU3RvcmFnZU5hbWVzcGFjZShQYWdlKik7CiAKIHByb3RlY3RlZDoKICAg
ICB2aXJ0dWFsIH5TdG9yYWdlU3RyYXRlZ3koKQpJbmRleDogU291cmNlL1dlYkNvcmUvc3RvcmFn
ZS9TdG9yYWdlVHJhY2tlci5oCj09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT0KLS0tIFNvdXJjZS9XZWJDb3JlL3N0b3JhZ2Uv
U3RvcmFnZVRyYWNrZXIuaAkocmV2aXNpb24gMTcyODQ3KQorKysgU291cmNlL1dlYkNvcmUvc3Rv
cmFnZS9TdG9yYWdlVHJhY2tlci5oCSh3b3JraW5nIGNvcHkpCkBAIC00MywxOSArNDMsMTkgQEAg
Y2xhc3MgU3RvcmFnZVRyYWNrZXIgewogICAgIFdURl9NQUtFX05PTkNPUFlBQkxFKFN0b3JhZ2VU
cmFja2VyKTsKICAgICBXVEZfTUFLRV9GQVNUX0FMTE9DQVRFRDsKIHB1YmxpYzoKLSAgICBzdGF0
aWMgdm9pZCBpbml0aWFsaXplVHJhY2tlcihjb25zdCBTdHJpbmcmIHN0b3JhZ2VQYXRoLCBTdG9y
YWdlVHJhY2tlckNsaWVudCopOwotICAgIHN0YXRpYyBTdG9yYWdlVHJhY2tlciYgdHJhY2tlcigp
OworICAgIFdFQkNPUkVfRVhQT1JUIHN0YXRpYyB2b2lkIGluaXRpYWxpemVUcmFja2VyKGNvbnN0
IFN0cmluZyYgc3RvcmFnZVBhdGgsIFN0b3JhZ2VUcmFja2VyQ2xpZW50Kik7CisgICAgV0VCQ09S
RV9FWFBPUlQgc3RhdGljIFN0b3JhZ2VUcmFja2VyJiB0cmFja2VyKCk7CiAKICAgICB2b2lkIHNl
dERhdGFiYXNlRGlyZWN0b3J5UGF0aChjb25zdCBTdHJpbmcmKTsKICAgICBTdHJpbmcgZGF0YWJh
c2VEaXJlY3RvcnlQYXRoKCkgY29uc3Q7CiAKICAgICB2b2lkIHNldE9yaWdpbkRldGFpbHMoY29u
c3QgU3RyaW5nJiBvcmlnaW5JZGVudGlmaWVyLCBjb25zdCBTdHJpbmcmIGRhdGFiYXNlRmlsZSk7
CiAgICAgCi0gICAgdm9pZCBkZWxldGVBbGxPcmlnaW5zKCk7Ci0gICAgdm9pZCBkZWxldGVPcmln
aW4oU2VjdXJpdHlPcmlnaW4qKTsKKyAgICBXRUJDT1JFX0VYUE9SVCB2b2lkIGRlbGV0ZUFsbE9y
aWdpbnMoKTsKKyAgICBXRUJDT1JFX0VYUE9SVCB2b2lkIGRlbGV0ZU9yaWdpbihTZWN1cml0eU9y
aWdpbiopOwogICAgIHZvaWQgZGVsZXRlT3JpZ2luV2l0aElkZW50aWZpZXIoY29uc3QgU3RyaW5n
JiBvcmlnaW5JZGVudGlmaWVyKTsKLSAgICB2b2lkIG9yaWdpbnMoVmVjdG9yPFJlZlB0cjxTZWN1
cml0eU9yaWdpbj4+JiByZXN1bHQpOwotICAgIGxvbmcgbG9uZyBkaXNrVXNhZ2VGb3JPcmlnaW4o
U2VjdXJpdHlPcmlnaW4qKTsKKyAgICBXRUJDT1JFX0VYUE9SVCB2b2lkIG9yaWdpbnMoVmVjdG9y
PFJlZlB0cjxTZWN1cml0eU9yaWdpbj4+JiByZXN1bHQpOworICAgIFdFQkNPUkVfRVhQT1JUIGxv
bmcgbG9uZyBkaXNrVXNhZ2VGb3JPcmlnaW4oU2VjdXJpdHlPcmlnaW4qKTsKICAgICAKICAgICB2
b2lkIGNhbmNlbERlbGV0aW5nT3JpZ2luKGNvbnN0IFN0cmluZyYgb3JpZ2luSWRlbnRpZmllcik7
CiAgICAgCkBAIC02NCw3ICs2NCw3IEBAIHB1YmxpYzoKICAgICBkb3VibGUgc3RvcmFnZURhdGFi
YXNlSWRsZUludGVydmFsKCkgeyByZXR1cm4gbV9TdG9yYWdlRGF0YWJhc2VJZGxlSW50ZXJ2YWw7
IH0KICAgICB2b2lkIHNldFN0b3JhZ2VEYXRhYmFzZUlkbGVJbnRlcnZhbChkb3VibGUgaW50ZXJ2
YWwpIHsgbV9TdG9yYWdlRGF0YWJhc2VJZGxlSW50ZXJ2YWwgPSBpbnRlcnZhbDsgfQogCi0gICAg
dm9pZCBzeW5jRmlsZVN5c3RlbUFuZFRyYWNrZXJEYXRhYmFzZSgpOworICAgIFdFQkNPUkVfRVhQ
T1JUIHZvaWQgc3luY0ZpbGVTeXN0ZW1BbmRUcmFja2VyRGF0YWJhc2UoKTsKIAogcHJpdmF0ZToK
ICAgICBleHBsaWNpdCBTdG9yYWdlVHJhY2tlcihjb25zdCBTdHJpbmcmIHN0b3JhZ2VQYXRoKTsK
SW5kZXg6IFNvdXJjZS9XZWJDb3JlL3Rlc3RpbmcvSW50ZXJuYWxzLmgKPT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PQotLS0g
U291cmNlL1dlYkNvcmUvdGVzdGluZy9JbnRlcm5hbHMuaAkocmV2aXNpb24gMTcyODQ3KQorKysg
U291cmNlL1dlYkNvcmUvdGVzdGluZy9JbnRlcm5hbHMuaAkod29ya2luZyBjb3B5KQpAQCAtMjg0
LDcgKzI4NCw3IEBAIHB1YmxpYzoKIAogICAgIFN0cmluZyBnZXRDdXJyZW50Q3Vyc29ySW5mbyhF
eGNlcHRpb25Db2RlJik7CiAKLSAgICBTdHJpbmcgbWFya2VyVGV4dEZvckxpc3RJdGVtKEVsZW1l
bnQqLCBFeGNlcHRpb25Db2RlJik7CisgICAgV0VCQ09SRV9FWFBPUlQgU3RyaW5nIG1hcmtlclRl
eHRGb3JMaXN0SXRlbShFbGVtZW50KiwgRXhjZXB0aW9uQ29kZSYpOwogCiAgICAgdm9pZCBmb3Jj
ZVJlbG9hZChib29sIGVuZFRvRW5kKTsKIApJbmRleDogU291cmNlL1dlYkNvcmUvd29ya2Vycy9X
b3JrZXJUaHJlYWQuaAo9PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09Ci0tLSBTb3VyY2UvV2ViQ29yZS93b3JrZXJzL1dvcmtl
clRocmVhZC5oCShyZXZpc2lvbiAxNzI4NDcpCisrKyBTb3VyY2UvV2ViQ29yZS93b3JrZXJzL1dv
cmtlclRocmVhZC5oCSh3b3JraW5nIGNvcHkpCkBAIC02MCw3ICs2MCw3IEBAIG5hbWVzcGFjZSBX
ZWJDb3JlIHsKICAgICAgICAgV29ya2VyUmVwb3J0aW5nUHJveHkmIHdvcmtlclJlcG9ydGluZ1By
b3h5KCkgY29uc3QgeyByZXR1cm4gbV93b3JrZXJSZXBvcnRpbmdQcm94eTsgfQogCiAgICAgICAg
IC8vIE51bWJlciBvZiBhY3RpdmUgd29ya2VyIHRocmVhZHMuCi0gICAgICAgIHN0YXRpYyB1bnNp
Z25lZCB3b3JrZXJUaHJlYWRDb3VudCgpOworICAgICAgICBXRUJDT1JFX0VYUE9SVCBzdGF0aWMg
dW5zaWduZWQgd29ya2VyVGhyZWFkQ291bnQoKTsKICAgICAgICAgc3RhdGljIHZvaWQgcmVsZWFz
ZUZhc3RNYWxsb2NGcmVlTWVtb3J5SW5BbGxUaHJlYWRzKCk7CiAKICNpZiBFTkFCTEUoTk9USUZJ
Q0FUSU9OUykgfHwgRU5BQkxFKExFR0FDWV9OT1RJRklDQVRJT05TKQo=
</data>
<flag name="review"
          id="261660"
          type_id="1"
          status="+"
          setter="benjamin"
    />
    <flag name="commit-queue"
          id="261662"
          type_id="3"
          status="-"
          setter="benjamin"
    />
          </attachment>
      

    </bug>

</bugzilla>