<?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>136108</bug_id>
          
          <creation_ts>2014-08-20 10:35:09 -0700</creation_ts>
          <short_desc>start adding WEBCORE_EXPORT macro</short_desc>
          <delta_ts>2019-12-11 15:37:53 -0800</delta_ts>
          <reporter_accessible>1</reporter_accessible>
          <cclist_accessible>1</cclist_accessible>
          <classification_id>1</classification_id>
          <classification>Unclassified</classification>
          <product>WebKit</product>
          <component>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>
          
          <see_also>https://bugs.webkit.org/show_bug.cgi?id=205140</see_also>
          <bug_file_loc></bug_file_loc>
          <status_whiteboard></status_whiteboard>
          <keywords></keywords>
          <priority>P2</priority>
          <bug_severity>Normal</bug_severity>
          <target_milestone>---</target_milestone>
          <dependson>136113</dependson>
          
          <everconfirmed>1</everconfirmed>
          <reporter name="Alex Christensen">achristensen</reporter>
          <assigned_to name="Alex Christensen">achristensen</assigned_to>
          <cc>commit-queue</cc>
    
    <cc>dbates</cc>
          

      

      

      

          <comment_sort_order>oldest_to_newest</comment_sort_order>  
          <long_desc isprivate="0" >
    <commentid>1030307</commentid>
    <comment_count>0</comment_count>
    <who name="Alex Christensen">achristensen</who>
    <bug_when>2014-08-20 10:35:09 -0700</bug_when>
    <thetext>The export symbol lists are another step in the build system that I don&apos;t want to port to CMake, so this is a good time to get rid of them on Mac and Windows.  This is the first step.  I&apos;ve still got about 2000 to go.</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>1030309</commentid>
    <comment_count>1</comment_count>
      <attachid>236878</attachid>
    <who name="Alex Christensen">achristensen</who>
    <bug_when>2014-08-20 10:43:18 -0700</bug_when>
    <thetext>Created attachment 236878
Patch</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>1030311</commentid>
    <comment_count>2</comment_count>
      <attachid>236878</attachid>
    <who name="Antti Koivisto">koivisto</who>
    <bug_when>2014-08-20 10:51:05 -0700</bug_when>
    <thetext>Comment on attachment 236878
Patch

rs=me</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>1030316</commentid>
    <comment_count>3</comment_count>
    <who name="Alex Christensen">achristensen</who>
    <bug_when>2014-08-20 10:59:20 -0700</bug_when>
    <thetext>committed almost all of this to http://trac.webkit.org/changeset/172798</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>1030334</commentid>
    <comment_count>4</comment_count>
    <who name="WebKit Commit Bot">commit-queue</who>
    <bug_when>2014-08-20 11:31:57 -0700</bug_when>
    <thetext>Re-opened since this is blocked by bug 136113</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>1030385</commentid>
    <comment_count>5</comment_count>
      <attachid>236895</attachid>
    <who name="Alex Christensen">achristensen</who>
    <bug_when>2014-08-20 13:57:19 -0700</bug_when>
    <thetext>Created attachment 236895
Patch</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>1030386</commentid>
    <comment_count>6</comment_count>
    <who name="WebKit Commit Bot">commit-queue</who>
    <bug_when>2014-08-20 13:58:53 -0700</bug_when>
    <thetext>Attachment 236895 did not pass style-queue:


ERROR: Source/WebCore/platform/ios/wak/WKView.h:100:  The parameter name &quot;rect&quot; adds no information, so it should be removed.  [readability/parameter_name] [5]
ERROR: Source/WebCore/platform/ios/wak/WKView.h:100:  The parameter name &quot;context&quot; adds no information, so it should be removed.  [readability/parameter_name] [5]
ERROR: Source/WebCore/platform/ios/wak/WKView.h:100:  Extra space before ( in function call  [whitespace/parens] [4]
ERROR: Source/WebCore/platform/ios/wak/WKView.h:106:  The parameter name &quot;view&quot; adds no information, so it should be removed.  [readability/parameter_name] [5]
ERROR: Source/WebCore/platform/ios/wak/WKView.h:106:  Extra space before ( in function call  [whitespace/parens] [4]
ERROR: Source/WebCore/platform/ios/wak/WKView.h:108:  The parameter name &quot;view&quot; adds no information, so it should be removed.  [readability/parameter_name] [5]
ERROR: Source/WebCore/platform/ios/wak/WKView.h:108:  Extra space before ( in function call  [whitespace/parens] [4]
ERROR: Source/WebCore/platform/ios/wak/WKView.h:109:  The parameter name &quot;view&quot; adds no information, so it should be removed.  [readability/parameter_name] [5]
ERROR: Source/WebCore/platform/ios/wak/WKView.h:109:  Extra space before ( in function call  [whitespace/parens] [4]
ERROR: Source/WebCore/platform/ios/wak/WKView.h:113:  The parameter name &quot;view&quot; adds no information, so it should be removed.  [readability/parameter_name] [5]
ERROR: Source/WebCore/platform/ios/wak/WKView.h:113:  Extra space before ( in function call  [whitespace/parens] [4]
ERROR: Source/WebCore/platform/ios/wak/WKView.h:115:  The parameter name &quot;view&quot; adds no information, so it should be removed.  [readability/parameter_name] [5]
ERROR: Source/WebCore/platform/ios/wak/WKView.h:115:  Extra space before ( in function call  [whitespace/parens] [4]
ERROR: Source/WebCore/platform/ios/wak/WKView.h:116:  The parameter name &quot;view&quot; adds no information, so it should be removed.  [readability/parameter_name] [5]
ERROR: Source/WebCore/platform/ios/wak/WKView.h:116:  Extra space before ( in function call  [whitespace/parens] [4]
ERROR: Source/WebCore/platform/ios/wak/WKView.h:119:  The parameter name &quot;view&quot; adds no information, so it should be removed.  [readability/parameter_name] [5]
ERROR: Source/WebCore/platform/ios/wak/WKView.h:119:  Extra space before ( in function call  [whitespace/parens] [4]
ERROR: Source/WebCore/platform/ios/wak/WKView.h:125:  The parameter name &quot;view&quot; adds no information, so it should be removed.  [readability/parameter_name] [5]
ERROR: Source/WebCore/platform/ios/wak/WKView.h:125:  Extra space before ( in function call  [whitespace/parens] [4]
ERROR: Source/WebCore/platform/ios/wak/WKView.h:126:  The parameter name &quot;view&quot; adds no information, so it should be removed.  [readability/parameter_name] [5]
ERROR: Source/WebCore/platform/ios/wak/WKView.h:126:  Extra space before ( in function call  [whitespace/parens] [4]
ERROR: Source/WebCore/platform/ios/wak/WKView.h:135:  The parameter name &quot;view&quot; adds no information, so it should be removed.  [readability/parameter_name] [5]
ERROR: Source/WebCore/platform/ios/wak/WKView.h:135:  The parameter name &quot;r&quot; adds no information, so it should be removed.  [readability/parameter_name] [5]
ERROR: Source/WebCore/platform/ios/wak/WKView.h:135:  Extra space before ( in function call  [whitespace/parens] [4]
ERROR: Source/WebCore/platform/ios/wak/WKView.h:136:  The parameter name &quot;view&quot; adds no information, so it should be removed.  [readability/parameter_name] [5]
ERROR: Source/WebCore/platform/ios/wak/WKView.h:136:  Extra space before ( in function call  [whitespace/parens] [4]
ERROR: Source/WebCore/platform/ios/wak/WKView.h:142:  The parameter name &quot;view&quot; adds no information, so it should be removed.  [readability/parameter_name] [5]
ERROR: Source/WebCore/platform/ios/wak/WKView.h:142:  Extra space before ( in function call  [whitespace/parens] [4]
ERROR: Source/WebCore/platform/ios/wak/WKView.h:144:  The parameter name &quot;view&quot; adds no information, so it should be removed.  [readability/parameter_name] [5]
ERROR: Source/WebCore/platform/ios/wak/WKView.h:144:  Extra space before ( in function call  [whitespace/parens] [4]
ERROR: Source/WebCore/platform/ios/wak/WKView.h:145:  The parameter name &quot;view&quot; adds no information, so it should be removed.  [readability/parameter_name] [5]
ERROR: Source/WebCore/platform/ios/wak/WKView.h:145:  Extra space before ( in function call  [whitespace/parens] [4]
ERROR: Source/WebCore/platform/ios/wak/WKView.h:146:  The parameter name &quot;view&quot; adds no information, so it should be removed.  [readability/parameter_name] [5]
ERROR: Source/WebCore/platform/ios/wak/WKView.h:146:  Extra space before ( in function call  [whitespace/parens] [4]
ERROR: Source/WebCore/platform/graphics/Color.h:117:  The parameter name &quot;a&quot; adds no information, so it should be removed.  [readability/parameter_name] [5]
ERROR: Source/WebCore/platform/graphics/Color.h:118:  The parameter name &quot;b&quot; adds no information, so it should be removed.  [readability/parameter_name] [5]
ERROR: Source/WebCore/platform/graphics/transforms/AffineTransform.h:54:  The parameter name &quot;b&quot; adds no information, so it should be removed.  [readability/parameter_name] [5]
ERROR: Source/WebCore/platform/graphics/transforms/AffineTransform.h:54:  The parameter name &quot;d&quot; adds no information, so it should be removed.  [readability/parameter_name] [5]
ERROR: Source/WebCore/platform/graphics/transforms/AffineTransform.h:54:  The parameter name &quot;e&quot; adds no information, so it should be removed.  [readability/parameter_name] [5]
ERROR: Source/WebCore/loader/appcache/ApplicationCacheStorage.h:59:  The parameter name &quot;size&quot; adds no information, so it should be removed.  [readability/parameter_name] [5]
ERROR: Source/WebCore/loader/appcache/ApplicationCacheStorage.h:65:  The parameter name &quot;quota&quot; adds no information, so it should be removed.  [readability/parameter_name] [5]
ERROR: Source/WebCore/platform/ios/wak/WebCoreThreadMessage.h:53:  The parameter name &quot;obj&quot; adds no information, so it should be removed.  [readability/parameter_name] [5]
ERROR: Source/WebCore/platform/ios/wak/WebCoreThreadMessage.h:56:  The parameter name &quot;invocation&quot; adds no information, so it should be removed.  [readability/parameter_name] [5]
ERROR: Source/WebCore/platform/ios/wak/WebCoreThreadMessage.h:60:  The parameter name &quot;invocation&quot; adds no information, so it should be removed.  [readability/parameter_name] [5]
ERROR: Source/WebCore/platform/ios/wak/WebCoreThreadMessage.h:63:  The parameter name &quot;object&quot; adds no information, so it should be removed.  [readability/parameter_name] [5]
ERROR: Source/WebCore/platform/sql/SQLiteDatabase.h:142:  Missing space inside { }.  [whitespace/braces] [5]
ERROR: Source/WebCore/loader/cache/CachedResource.h:223:  The parameter name &quot;h&quot; adds no information, so it should be removed.  [readability/parameter_name] [5]
ERROR: Source/WebCore/editing/Editor.h:333:  The parameter name &quot;element&quot; adds no information, so it should be removed.  [readability/parameter_name] [5]
ERROR: Source/WebCore/dom/Document.h:571:  Use 0 or null instead of NULL (even in *comments*).  [readability/null] [4]
ERROR: Source/WebCore/dom/Document.h:573:  Use 0 or null instead of NULL (even in *comments*).  [readability/null] [4]
ERROR: Source/WebCore/dom/Document.h:574:  Use 0 or null instead of NULL (even in *comments*).  [readability/null] [4]
ERROR: Source/WebCore/platform/network/AuthenticationChallengeBase.h:51:  The parameter name &quot;a&quot; adds no information, so it should be removed.  [readability/parameter_name] [5]
Total errors found: 52 in 107 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>1030387</commentid>
    <comment_count>7</comment_count>
    <who name="Alex Christensen">achristensen</who>
    <bug_when>2014-08-20 13:59:05 -0700</bug_when>
    <thetext>Added #define WEBCORE_EXPORT to config.h in TestWebKitAPI and WebKit2 to prevent compile failures that we saw in r172798.</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>1030402</commentid>
    <comment_count>8</comment_count>
    <who name="Alex Christensen">achristensen</who>
    <bug_when>2014-08-20 14:57:52 -0700</bug_when>
    <thetext>recommitted to http://trac.webkit.org/changeset/172814</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>1031254</commentid>
    <comment_count>9</comment_count>
    <who name="Daniel Bates">dbates</who>
    <bug_when>2014-08-25 16:10:29 -0700</bug_when>
    <thetext>(In reply to comment #8)
&gt; recommitted to http://trac.webkit.org/changeset/172814

This broke the iOS build. In particular, DumpRenderTree fails to compile on iOS. Used a similar approach as in TestWebKitAPI to stub out the macro define WEBCORE_EXPORT and committed this in &lt;http://trac.webkit.org/changeset/172942&gt;.</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>1032082</commentid>
    <comment_count>10</comment_count>
    <who name="Daniel Bates">dbates</who>
    <bug_when>2014-08-28 15:19:42 -0700</bug_when>
    <thetext>Fixed more iOS WebKit clients in &lt;http://trac.webkit.org/changeset/173090&gt;.</thetext>
  </long_desc>
      
          <attachment
              isobsolete="1"
              ispatch="1"
              isprivate="0"
          >
            <attachid>236878</attachid>
            <date>2014-08-20 10:43:18 -0700</date>
            <delta_ts>2014-08-20 13:57:17 -0700</delta_ts>
            <desc>Patch</desc>
            <filename>bug-136108-20140820104309.patch</filename>
            <type>text/plain</type>
            <size>226849</size>
            <attacher name="Alex Christensen">achristensen</attacher>
            
              <data encoding="base64">SW5kZXg6IFNvdXJjZS9XZWJDb3JlL0NoYW5nZUxvZwo9PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09Ci0tLSBTb3VyY2UvV2Vi
Q29yZS9DaGFuZ2VMb2cJKHJldmlzaW9uIDE3Mjc5NykKKysrIFNvdXJjZS9XZWJDb3JlL0NoYW5n
ZUxvZwkod29ya2luZyBjb3B5KQpAQCAtMSwzICsxLDEyMyBAQAorMjAxNC0wOC0yMCAgQWxleCBD
aHJpc3RlbnNlbiAgPGFjaHJpc3RlbnNlbkB3ZWJraXQub3JnPgorCisgICAgICAgIEludHJvZHVj
aW5nIFdFQkNPUkVfRVhQT1JUIG1hY3JvLgorICAgICAgICBodHRwczovL2J1Z3Mud2Via2l0Lm9y
Zy9zaG93X2J1Zy5jZ2k/aWQ9MTM2MTA4CisKKyAgICAgICAgUmV2aWV3ZWQgYnkgTk9CT0RZIChP
T1BTISkuCisKKyAgICAgICAgVGhpcyBzaG91bGQgZXZlbnR1YWxseSByZXBsYWNlIFdlYkNvcmUu
ZXhwLmluLgorCisgICAgICAgICogcGxhdGZvcm0vUGxhdGZvcm1FeHBvcnRNYWNyb3MuaDoKKyAg
ICAgICAgRGVmaW5lIFdFQkNPUkVfRVhQT1JUIHRvIG5vdGhpbmcgdG8gbm90IGNhdXNlIHByb2Js
ZW1zIHdoaWxlIEknbSB3b3JraW5nIG9uIGl0LgorICAgICAgICAqIE1vZHVsZXMvZW5jcnlwdGVk
bWVkaWEvQ0RNLmg6CisgICAgICAgICogTW9kdWxlcy9zcGVlY2gvRE9NV2luZG93U3BlZWNoU3lu
dGhlc2lzLmg6CisgICAgICAgICogTW9kdWxlcy93ZWJkYXRhYmFzZS9EYXRhYmFzZU1hbmFnZXIu
aDoKKyAgICAgICAgKiBNb2R1bGVzL3dlYmRhdGFiYXNlL0RhdGFiYXNlVHJhY2tlci5oOgorICAg
ICAgICAqIGFjY2Vzc2liaWxpdHkvQVhPYmplY3RDYWNoZS5oOgorICAgICAgICAqIGJpbmRpbmdz
L2pzL0RPTVdyYXBwZXJXb3JsZC5oOgorICAgICAgICAqIGJyaWRnZS9qc2MvQnJpZGdlSlNDLmg6
CisgICAgICAgICogYnJpZGdlL3J1bnRpbWVfbWV0aG9kLmNwcDoKKyAgICAgICAgKiBicmlkZ2Uv
cnVudGltZV9tZXRob2QuaDoKKyAgICAgICAgKiBicmlkZ2UvcnVudGltZV9vYmplY3QuY3BwOgor
ICAgICAgICAqIGJyaWRnZS9ydW50aW1lX29iamVjdC5oOgorICAgICAgICAqIGJyaWRnZS9ydW50
aW1lX3Jvb3QuaDoKKyAgICAgICAgKiBjc3MvQ1NTQ29tcHV0ZWRTdHlsZURlY2xhcmF0aW9uLmg6
CisgICAgICAgICogY3NzL0NTU1BhcnNlck1vZGUuaDoKKyAgICAgICAgKiBjc3MvQ1NTVmFsdWUu
aDoKKyAgICAgICAgKiBjc3MvRE9NV2luZG93Q1NTLmg6CisgICAgICAgICogY3NzL1N0eWxlU2hl
ZXRDb250ZW50cy5oOgorICAgICAgICAqIGRvbS9DaGFyYWN0ZXJEYXRhLmg6CisgICAgICAgICog
ZG9tL0NsaWVudFJlY3QuaDoKKyAgICAgICAgKiBkb20vQ2xpZW50UmVjdExpc3QuaDoKKyAgICAg
ICAgKiBkb20vQ29udGFpbmVyTm9kZS5oOgorICAgICAgICAqIGRvbS9Db250ZXh0RGVzdHJ1Y3Rp
b25PYnNlcnZlci5oOgorICAgICAgICAqIGRvbS9ET01JbXBsZW1lbnRhdGlvbi5oOgorICAgICAg
ICAqIGRvbS9EYXRhVHJhbnNmZXIuaDoKKyAgICAgICAgKiBkb20vRGV2aWNlTW90aW9uRGF0YS5o
OgorICAgICAgICAqIGRvbS9EZXZpY2VPcmllbnRhdGlvbkRhdGEuaDoKKyAgICAgICAgKiBkb20v
RG9jdW1lbnQuaDoKKyAgICAgICAgKFdlYkNvcmU6OkRvY3VtZW50OjpzZXRBbm5vdGF0ZWRSZWdp
b25zRGlydHkpOgorICAgICAgICAqIGRvbS9Eb2N1bWVudE1hcmtlci5oOgorICAgICAgICAqIGRv
bS9Eb2N1bWVudE1hcmtlckNvbnRyb2xsZXIuaDoKKyAgICAgICAgKiBkb20vRG9jdW1lbnRTdHls
ZVNoZWV0Q29sbGVjdGlvbi5oOgorICAgICAgICAqIGRvbS9FbGVtZW50Lmg6CisgICAgICAgICog
ZG9tL0V2ZW50Lmg6CisgICAgICAgIChXZWJDb3JlOjpFdmVudDo6Y3JlYXRlKToKKyAgICAgICAg
KiBkb20vRXZlbnRMaXN0ZW5lck1hcC5oOgorICAgICAgICAqIGVkaXRpbmcvRGljdGF0aW9uQWx0
ZXJuYXRpdmUuaDoKKyAgICAgICAgKiBlZGl0aW5nL0VkaXRDb21tYW5kLmg6CisgICAgICAgICog
ZWRpdGluZy9FZGl0aW5nU3R5bGUuaDoKKyAgICAgICAgKiBlZGl0aW5nL0VkaXRvci5oOgorICAg
ICAgICAqIGVkaXRpbmcvbWFjL0FsdGVybmF0aXZlVGV4dFVJQ29udHJvbGxlci5oOgorICAgICAg
ICAqIGhpc3RvcnkvQmFja0ZvcndhcmRDb250cm9sbGVyLmg6CisgICAgICAgICogaGlzdG9yeS9C
YWNrRm9yd2FyZExpc3QuaDoKKyAgICAgICAgKiBoaXN0b3J5L0NhY2hlZEZyYW1lLmg6CisgICAg
ICAgICogbG9hZGVyL0Nvb2tpZUphci5oOgorICAgICAgICAqIGxvYWRlci9Dcm9zc09yaWdpblBy
ZWZsaWdodFJlc3VsdENhY2hlLmg6CisgICAgICAgICogbG9hZGVyL0RvY3VtZW50TG9hZGVyLmg6
CisgICAgICAgICogbG9hZGVyL0RvY3VtZW50V3JpdGVyLmg6CisgICAgICAgICogbG9hZGVyL2Fw
cGNhY2hlL0FwcGxpY2F0aW9uQ2FjaGUuaDoKKyAgICAgICAgKiBsb2FkZXIvYXBwY2FjaGUvQXBw
bGljYXRpb25DYWNoZUhvc3QuaDoKKyAgICAgICAgKiBsb2FkZXIvYXBwY2FjaGUvQXBwbGljYXRp
b25DYWNoZVN0b3JhZ2UuaDoKKyAgICAgICAgKiBsb2FkZXIvYXJjaGl2ZS9BcmNoaXZlUmVzb3Vy
Y2UuaDoKKyAgICAgICAgKiBsb2FkZXIvY2FjaGUvQ2FjaGVkSW1hZ2UuaDoKKyAgICAgICAgKiBs
b2FkZXIvY2FjaGUvQ2FjaGVkUmVzb3VyY2UuaDoKKyAgICAgICAgKiBsb2FkZXIvY2FjaGUvQ2Fj
aGVkUmVzb3VyY2VIYW5kbGUuaDoKKyAgICAgICAgKiBsb2FkZXIvY2FjaGUvQ2FjaGVkUmVzb3Vy
Y2VMb2FkZXIuaDoKKyAgICAgICAgKiBwYWdlL0Nocm9tZS5oOgorICAgICAgICAqIHBhZ2UvQ29u
dGV4dE1lbnVDb250cm9sbGVyLmg6CisgICAgICAgICogcGFnZS9ET01XaW5kb3cuaDoKKyAgICAg
ICAgKiBwYWdlL0RPTVdpbmRvd0V4dGVuc2lvbi5oOgorICAgICAgICAqIHBhZ2UvRHJhZ0NvbnRy
b2xsZXIuaDoKKyAgICAgICAgKiBwYWdlL0V2ZW50SGFuZGxlci5oOgorICAgICAgICAqIHBhZ2Uv
YW5pbWF0aW9uL0FuaW1hdGlvbkNvbnRyb2xsZXIuaDoKKyAgICAgICAgKiBwYWdlL3Njcm9sbGlu
Zy9Bc3luY1Njcm9sbGluZ0Nvb3JkaW5hdG9yLmg6CisgICAgICAgICogcGxhdGZvcm0vQ2FsY3Vs
YXRpb25WYWx1ZS5oOgorICAgICAgICAqIHBsYXRmb3JtL0NvbnRlbnRGaWx0ZXIuaDoKKyAgICAg
ICAgKiBwbGF0Zm9ybS9Db250ZXh0TWVudS5oOgorICAgICAgICAqIHBsYXRmb3JtL0NvbnRleHRN
ZW51SXRlbS5oOgorICAgICAgICAqIHBsYXRmb3JtL0Nyb3NzVGhyZWFkQ29waWVyLmg6CisgICAg
ICAgICogcGxhdGZvcm0vQ3Vyc29yLmg6CisgICAgICAgICogcGxhdGZvcm0vRGF0YWJhc2VTdHJh
dGVneS5oOgorICAgICAgICAqIHBsYXRmb3JtL0Rpc3BsYXlTbGVlcERpc2FibGVyLmg6CisgICAg
ICAgICogcGxhdGZvcm0vRHJhZ0RhdGEuaDoKKyAgICAgICAgKiBwbGF0Zm9ybS9Mb2NhbGl6ZWRT
dHJpbmdzLmg6CisgICAgICAgICogcGxhdGZvcm0vYXVkaW8vQXVkaW9IYXJkd2FyZUxpc3RlbmVy
Lmg6CisgICAgICAgICogcGxhdGZvcm0vYXVkaW8vQXVkaW9TZXNzaW9uLmg6CisgICAgICAgICog
cGxhdGZvcm0vYXVkaW8vaW9zL01lZGlhU2Vzc2lvbk1hbmFnZXJJT1MubW06CisgICAgICAgICog
cGxhdGZvcm0vZ3JhcGhpY3MvQml0bWFwSW1hZ2UuaDoKKyAgICAgICAgKiBwbGF0Zm9ybS9ncmFw
aGljcy9Db2xvci5oOgorICAgICAgICAqIHBsYXRmb3JtL2dyYXBoaWNzL0Rpc3BsYXlSZWZyZXNo
TW9uaXRvci5oOgorICAgICAgICAqIHBsYXRmb3JtL2dyYXBoaWNzL3RyYW5zZm9ybXMvQWZmaW5l
VHJhbnNmb3JtLmg6CisgICAgICAgICogcGxhdGZvcm0vaW9zL1dlYkNvcmVTeXN0ZW1JbnRlcmZh
Y2VJT1MubW06CisgICAgICAgICogcGxhdGZvcm0vaW9zL1dlYlZpZGVvRnVsbHNjcmVlbk1vZGVs
TWVkaWFFbGVtZW50Lmg6CisgICAgICAgICogcGxhdGZvcm0vaW9zL3dhay9XQUtWaWV3Lm1tOgor
ICAgICAgICAqIHBsYXRmb3JtL2lvcy93YWsvV0tDb250ZW50T2JzZXJ2YXRpb24uaDoKKyAgICAg
ICAgKiBwbGF0Zm9ybS9pb3Mvd2FrL1dLVmlldy5oOgorICAgICAgICAqIHBsYXRmb3JtL2lvcy93
YWsvV2ViQ29yZVRocmVhZC5oOgorICAgICAgICAqIHBsYXRmb3JtL2lvcy93YWsvV2ViQ29yZVRo
cmVhZE1lc3NhZ2UuaDoKKyAgICAgICAgKiBwbGF0Zm9ybS9tYWMvQmxvY2tFeGNlcHRpb25zLmg6
CisgICAgICAgICogcGxhdGZvcm0vbWFjL1dlYkNvcmVTeXN0ZW1JbnRlcmZhY2UubW06CisgICAg
ICAgICogcGxhdGZvcm0vbW9jay9EZXZpY2VPcmllbnRhdGlvbkNsaWVudE1vY2suaDoKKyAgICAg
ICAgKiBwbGF0Zm9ybS9uZXR3b3JrL0F1dGhlbnRpY2F0aW9uQ2hhbGxlbmdlQmFzZS5oOgorICAg
ICAgICAqIHBsYXRmb3JtL25ldHdvcmsvQmxvYkRhdGEuaDoKKyAgICAgICAgKiBwbGF0Zm9ybS9u
ZXR3b3JrL0Jsb2JEYXRhRmlsZVJlZmVyZW5jZS5oOgorICAgICAgICAqIHBsYXRmb3JtL25ldHdv
cmsvQmxvYlJlZ2lzdHJ5Lmg6CisgICAgICAgICogcGxhdGZvcm0vbmV0d29yay9CbG9iUmVnaXN0
cnlJbXBsLmg6CisgICAgICAgICogcGxhdGZvcm0vbmV0d29yay9DcmVkZW50aWFsQmFzZS5oOgor
ICAgICAgICAqIHBsYXRmb3JtL25ldHdvcmsvQ3JlZGVudGlhbFN0b3JhZ2UuaDoKKyAgICAgICAg
KiBwbGF0Zm9ybS9uZXR3b3JrL1BsYXRmb3JtQ29va2llSmFyLmg6CisgICAgICAgICogcGxhdGZv
cm0vbmV0d29yay9jZi9BdXRoZW50aWNhdGlvbkNoYWxsZW5nZS5oOgorICAgICAgICAqIHBsYXRm
b3JtL25ldHdvcmsvY29jb2EvQ3JlZGVudGlhbENvY29hLmg6CisgICAgICAgICogcGxhdGZvcm0v
bmV0d29yay9tYWMvQ2VydGlmaWNhdGVJbmZvLmg6CisgICAgICAgICogcGxhdGZvcm0vc3FsL1NR
TGl0ZURhdGFiYXNlLmg6CisgICAgICAgIChXZWJDb3JlOjpTUUxpdGVEYXRhYmFzZTo6ZGlzYWJs
ZVRocmVhZGluZ0NoZWNrcyk6CisgICAgICAgICogcGxhdGZvcm0vc3FsL1NRTGl0ZURhdGFiYXNl
VHJhY2tlci5oOgorICAgICAgICAqIHBsYXRmb3JtL3NxbC9TUUxpdGVTdGF0ZW1lbnQuaDoKKyAg
ICAgICAgKiBwbGF0Zm9ybS9zcWwvU1FMaXRlVHJhbnNhY3Rpb24uaDoKKyAgICAgICAgKiBwbGF0
Zm9ybS90ZXh0L0JpZGlDb250ZXh0Lmg6CisgICAgICAgIEFkZGVkIFdFQkNPUkVfRVhQT1JUIG1h
Y3Jvcy4KKwogMjAxNC0wOC0yMCAgWmFsYW4gQnVqdGFzICA8emFsYW5AYXBwbGUuY29tPgogCiAg
ICAgICAgIERhc2hlZC9kb3R0ZWQgYm9yZGVycyBkbyBub3QgcGFpbnQuCkluZGV4OiBTb3VyY2Uv
V2ViQ29yZS9Nb2R1bGVzL2VuY3J5cHRlZG1lZGlhL0NETS5oCj09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT0KLS0tIFNvdXJj
ZS9XZWJDb3JlL01vZHVsZXMvZW5jcnlwdGVkbWVkaWEvQ0RNLmgJKHJldmlzaW9uIDE3MjY1OCkK
KysrIFNvdXJjZS9XZWJDb3JlL01vZHVsZXMvZW5jcnlwdGVkbWVkaWEvQ0RNLmgJKHdvcmtpbmcg
Y29weSkKQEAgLTU5LDcgKzU5LDcgQEAgcHVibGljOgogICAgIHN0YXRpYyBib29sIHN1cHBvcnRz
S2V5U3lzdGVtKGNvbnN0IFN0cmluZyYpOwogICAgIHN0YXRpYyBib29sIGtleVN5c3RlbVN1cHBv
cnRzTWltZVR5cGUoY29uc3QgU3RyaW5nJiBrZXlTeXN0ZW0sIGNvbnN0IFN0cmluZyYgbWltZVR5
cGUpOwogICAgIHN0YXRpYyBzdGQ6OnVuaXF1ZV9wdHI8Q0RNPiBjcmVhdGUoY29uc3QgU3RyaW5n
JiBrZXlTeXN0ZW0pOwotICAgIHN0YXRpYyB2b2lkIHJlZ2lzdGVyQ0RNRmFjdG9yeShDcmVhdGVD
RE0sIENETVN1cHBvcnRzS2V5U3lzdGVtLCBDRE1TdXBwb3J0c0tleVN5c3RlbUFuZE1pbWVUeXBl
KTsKKyAgICBXRUJDT1JFX0VYUE9SVCBzdGF0aWMgdm9pZCByZWdpc3RlckNETUZhY3RvcnkoQ3Jl
YXRlQ0RNLCBDRE1TdXBwb3J0c0tleVN5c3RlbSwgQ0RNU3VwcG9ydHNLZXlTeXN0ZW1BbmRNaW1l
VHlwZSk7CiAgICAgfkNETSgpOwogCiAgICAgYm9vbCBzdXBwb3J0c01JTUVUeXBlKGNvbnN0IFN0
cmluZyYpIGNvbnN0OwpJbmRleDogU291cmNlL1dlYkNvcmUvTW9kdWxlcy9zcGVlY2gvRE9NV2lu
ZG93U3BlZWNoU3ludGhlc2lzLmgKPT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PQotLS0gU291cmNlL1dlYkNvcmUvTW9kdWxl
cy9zcGVlY2gvRE9NV2luZG93U3BlZWNoU3ludGhlc2lzLmgJKHJldmlzaW9uIDE3MjY1OCkKKysr
IFNvdXJjZS9XZWJDb3JlL01vZHVsZXMvc3BlZWNoL0RPTVdpbmRvd1NwZWVjaFN5bnRoZXNpcy5o
CSh3b3JraW5nIGNvcHkpCkBAIC00MSw3ICs0MSw3IEBAIHB1YmxpYzoKICAgICBleHBsaWNpdCBE
T01XaW5kb3dTcGVlY2hTeW50aGVzaXMoRE9NV2luZG93Kik7CiAgICAgdmlydHVhbCB+RE9NV2lu
ZG93U3BlZWNoU3ludGhlc2lzKCk7CiAgICAgCi0gICAgc3RhdGljIFNwZWVjaFN5bnRoZXNpcyog
c3BlZWNoU3ludGhlc2lzKERPTVdpbmRvdyopOworICAgIFdFQkNPUkVfRVhQT1JUIHN0YXRpYyBT
cGVlY2hTeW50aGVzaXMqIHNwZWVjaFN5bnRoZXNpcyhET01XaW5kb3cqKTsKICAgICBzdGF0aWMg
RE9NV2luZG93U3BlZWNoU3ludGhlc2lzKiBmcm9tKERPTVdpbmRvdyopOwogICAgIAogcHJpdmF0
ZToKSW5kZXg6IFNvdXJjZS9XZWJDb3JlL01vZHVsZXMvd2ViZGF0YWJhc2UvRGF0YWJhc2VNYW5h
Z2VyLmgKPT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PQotLS0gU291cmNlL1dlYkNvcmUvTW9kdWxlcy93ZWJkYXRhYmFzZS9E
YXRhYmFzZU1hbmFnZXIuaAkocmV2aXNpb24gMTcyNjU4KQorKysgU291cmNlL1dlYkNvcmUvTW9k
dWxlcy93ZWJkYXRhYmFzZS9EYXRhYmFzZU1hbmFnZXIuaAkod29ya2luZyBjb3B5KQpAQCAtNTQs
MTUgKzU0LDE1IEBAIGNsYXNzIFNjcmlwdEV4ZWN1dGlvbkNvbnRleHQ7CiBjbGFzcyBEYXRhYmFz
ZU1hbmFnZXIgewogICAgIFdURl9NQUtFX05PTkNPUFlBQkxFKERhdGFiYXNlTWFuYWdlcik7IFdU
Rl9NQUtFX0ZBU1RfQUxMT0NBVEVEOwogcHVibGljOgotICAgIHN0YXRpYyBEYXRhYmFzZU1hbmFn
ZXImIG1hbmFnZXIoKTsKKyAgICBXRUJDT1JFX0VYUE9SVCBzdGF0aWMgRGF0YWJhc2VNYW5hZ2Vy
JiBtYW5hZ2VyKCk7CiAKLSAgICB2b2lkIGluaXRpYWxpemUoY29uc3QgU3RyaW5nJiBkYXRhYmFz
ZVBhdGgpOwotICAgIHZvaWQgc2V0Q2xpZW50KERhdGFiYXNlTWFuYWdlckNsaWVudCopOworICAg
IFdFQkNPUkVfRVhQT1JUIHZvaWQgaW5pdGlhbGl6ZShjb25zdCBTdHJpbmcmIGRhdGFiYXNlUGF0
aCk7CisgICAgV0VCQ09SRV9FWFBPUlQgdm9pZCBzZXRDbGllbnQoRGF0YWJhc2VNYW5hZ2VyQ2xp
ZW50Kik7CiAgICAgU3RyaW5nIGRhdGFiYXNlRGlyZWN0b3J5UGF0aCgpIGNvbnN0OwogICAgIHZv
aWQgc2V0RGF0YWJhc2VEaXJlY3RvcnlQYXRoKGNvbnN0IFN0cmluZyYpOwogCiAgICAgYm9vbCBp
c0F2YWlsYWJsZSgpOwotICAgIHZvaWQgc2V0SXNBdmFpbGFibGUoYm9vbCk7CisgICAgV0VCQ09S
RV9FWFBPUlQgdm9pZCBzZXRJc0F2YWlsYWJsZShib29sKTsKIAogICAgIC8vIFRoaXMgZ2V0cyBh
IERhdGFiYXNlQ29udGV4dCBmb3IgdGhlIHNwZWNpZmllZCBTY3JpcHRFeGVjdXRpb25Db250ZXh0
LgogICAgIC8vIElmIG9uZSBkb2Vzbid0IGFscmVhZHkgZXhpc3QsIGl0IHdpbGwgY3JlYXRlIGEg
bmV3IG9uZS4KQEAgLTg2LDI0ICs4NiwyNCBAQCBwdWJsaWM6CiAgICAgUGFzc1JlZlB0cjxEYXRh
YmFzZT4gb3BlbkRhdGFiYXNlKFNjcmlwdEV4ZWN1dGlvbkNvbnRleHQqLCBjb25zdCBTdHJpbmcm
IG5hbWUsIGNvbnN0IFN0cmluZyYgZXhwZWN0ZWRWZXJzaW9uLCBjb25zdCBTdHJpbmcmIGRpc3Bs
YXlOYW1lLCB1bnNpZ25lZCBsb25nIGVzdGltYXRlZFNpemUsIFBhc3NSZWZQdHI8RGF0YWJhc2VD
YWxsYmFjaz4sIERhdGFiYXNlRXJyb3ImKTsKICAgICBQYXNzUmVmUHRyPERhdGFiYXNlU3luYz4g
b3BlbkRhdGFiYXNlU3luYyhTY3JpcHRFeGVjdXRpb25Db250ZXh0KiwgY29uc3QgU3RyaW5nJiBu
YW1lLCBjb25zdCBTdHJpbmcmIGV4cGVjdGVkVmVyc2lvbiwgY29uc3QgU3RyaW5nJiBkaXNwbGF5
TmFtZSwgdW5zaWduZWQgbG9uZyBlc3RpbWF0ZWRTaXplLCBQYXNzUmVmUHRyPERhdGFiYXNlQ2Fs
bGJhY2s+LCBEYXRhYmFzZUVycm9yJik7CiAKLSAgICBib29sIGhhc09wZW5EYXRhYmFzZXMoU2Ny
aXB0RXhlY3V0aW9uQ29udGV4dCopOworICAgIFdFQkNPUkVfRVhQT1JUIGJvb2wgaGFzT3BlbkRh
dGFiYXNlcyhTY3JpcHRFeGVjdXRpb25Db250ZXh0Kik7CiAgICAgdm9pZCBzdG9wRGF0YWJhc2Vz
KFNjcmlwdEV4ZWN1dGlvbkNvbnRleHQqLCBEYXRhYmFzZVRhc2tTeW5jaHJvbml6ZXIqKTsKIAog
ICAgIFN0cmluZyBmdWxsUGF0aEZvckRhdGFiYXNlKFNlY3VyaXR5T3JpZ2luKiwgY29uc3QgU3Ry
aW5nJiBuYW1lLCBib29sIGNyZWF0ZUlmRG9lc05vdEV4aXN0ID0gdHJ1ZSk7CiAKICAgICBib29s
IGhhc0VudHJ5Rm9yT3JpZ2luKFNlY3VyaXR5T3JpZ2luKik7Ci0gICAgdm9pZCBvcmlnaW5zKFZl
Y3RvcjxSZWZQdHI8U2VjdXJpdHlPcmlnaW4+PiYgcmVzdWx0KTsKLSAgICBib29sIGRhdGFiYXNl
TmFtZXNGb3JPcmlnaW4oU2VjdXJpdHlPcmlnaW4qLCBWZWN0b3I8U3RyaW5nPiYgcmVzdWx0KTsK
LSAgICBEYXRhYmFzZURldGFpbHMgZGV0YWlsc0Zvck5hbWVBbmRPcmlnaW4oY29uc3QgU3RyaW5n
JiwgU2VjdXJpdHlPcmlnaW4qKTsKLQotICAgIHVuc2lnbmVkIGxvbmcgbG9uZyB1c2FnZUZvck9y
aWdpbihTZWN1cml0eU9yaWdpbiopOwotICAgIHVuc2lnbmVkIGxvbmcgbG9uZyBxdW90YUZvck9y
aWdpbihTZWN1cml0eU9yaWdpbiopOwotCi0gICAgdm9pZCBzZXRRdW90YShTZWN1cml0eU9yaWdp
biosIHVuc2lnbmVkIGxvbmcgbG9uZyk7Ci0KLSAgICB2b2lkIGRlbGV0ZUFsbERhdGFiYXNlcygp
OwotICAgIGJvb2wgZGVsZXRlT3JpZ2luKFNlY3VyaXR5T3JpZ2luKik7Ci0gICAgYm9vbCBkZWxl
dGVEYXRhYmFzZShTZWN1cml0eU9yaWdpbiosIGNvbnN0IFN0cmluZyYgbmFtZSk7CisgICAgV0VC
Q09SRV9FWFBPUlQgdm9pZCBvcmlnaW5zKFZlY3RvcjxSZWZQdHI8U2VjdXJpdHlPcmlnaW4+PiYg
cmVzdWx0KTsKKyAgICBXRUJDT1JFX0VYUE9SVCBib29sIGRhdGFiYXNlTmFtZXNGb3JPcmlnaW4o
U2VjdXJpdHlPcmlnaW4qLCBWZWN0b3I8U3RyaW5nPiYgcmVzdWx0KTsKKyAgICBXRUJDT1JFX0VY
UE9SVCBEYXRhYmFzZURldGFpbHMgZGV0YWlsc0Zvck5hbWVBbmRPcmlnaW4oY29uc3QgU3RyaW5n
JiwgU2VjdXJpdHlPcmlnaW4qKTsKKworICAgIFdFQkNPUkVfRVhQT1JUIHVuc2lnbmVkIGxvbmcg
bG9uZyB1c2FnZUZvck9yaWdpbihTZWN1cml0eU9yaWdpbiopOworICAgIFdFQkNPUkVfRVhQT1JU
IHVuc2lnbmVkIGxvbmcgbG9uZyBxdW90YUZvck9yaWdpbihTZWN1cml0eU9yaWdpbiopOworCisg
ICAgV0VCQ09SRV9FWFBPUlQgdm9pZCBzZXRRdW90YShTZWN1cml0eU9yaWdpbiosIHVuc2lnbmVk
IGxvbmcgbG9uZyk7CisKKyAgICBXRUJDT1JFX0VYUE9SVCB2b2lkIGRlbGV0ZUFsbERhdGFiYXNl
cygpOworICAgIFdFQkNPUkVfRVhQT1JUIGJvb2wgZGVsZXRlT3JpZ2luKFNlY3VyaXR5T3JpZ2lu
Kik7CisgICAgV0VCQ09SRV9FWFBPUlQgYm9vbCBkZWxldGVEYXRhYmFzZShTZWN1cml0eU9yaWdp
biosIGNvbnN0IFN0cmluZyYgbmFtZSk7CiAKICAgICB2b2lkIGludGVycnVwdEFsbERhdGFiYXNl
c0ZvckNvbnRleHQoU2NyaXB0RXhlY3V0aW9uQ29udGV4dCopOwogCkluZGV4OiBTb3VyY2UvV2Vi
Q29yZS9Nb2R1bGVzL3dlYmRhdGFiYXNlL0RhdGFiYXNlVHJhY2tlci5oCj09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT0KLS0t
IFNvdXJjZS9XZWJDb3JlL01vZHVsZXMvd2ViZGF0YWJhc2UvRGF0YWJhc2VUcmFja2VyLmgJKHJl
dmlzaW9uIDE3MjY1OCkKKysrIFNvdXJjZS9XZWJDb3JlL01vZHVsZXMvd2ViZGF0YWJhc2UvRGF0
YWJhc2VUcmFja2VyLmgJKHdvcmtpbmcgY29weSkKQEAgLTUzLDcgKzUzLDcgQEAgY2xhc3MgRGF0
YWJhc2VUcmFja2VyIHsKIHB1YmxpYzoKICAgICBzdGF0aWMgdm9pZCBpbml0aWFsaXplVHJhY2tl
cihjb25zdCBTdHJpbmcmIGRhdGFiYXNlUGF0aCk7CiAKLSAgICBzdGF0aWMgRGF0YWJhc2VUcmFj
a2VyJiB0cmFja2VyKCk7CisgICAgV0VCQ09SRV9FWFBPUlQgc3RhdGljIERhdGFiYXNlVHJhY2tl
ciYgdHJhY2tlcigpOwogICAgIC8vIFRoaXMgc2luZ2xldG9uIHdpbGwgcG90ZW50aWFsbHkgYmUg
dXNlZCBmcm9tIG11bHRpcGxlIHdvcmtlciB0aHJlYWRzIGFuZCB0aGUgcGFnZSdzIGNvbnRleHQg
dGhyZWFkIHNpbXVsdGFuZW91c2x5LiAgVG8ga2VlcCB0aGlzIHNhZmUsIGl0J3MKICAgICAvLyBj
dXJyZW50bHkgdXNpbmcgNCBsb2Nrcy4gIEluIG9yZGVyIHRvIGF2b2lkIGRlYWRsb2NrIHdoZW4g
dGFraW5nIG11bHRpcGxlIGxvY2tzLCB5b3UgbXVzdCB0YWtlIHRoZW0gaW4gdGhlIGNvcnJlY3Qg
b3JkZXI6CiAgICAgLy8gbV9kYXRhYmFzZUd1YXJkIGJlZm9yZSBxdW90YU1hbmFnZXIgaWYgYm90
aCBsb2NrcyBhcmUgbmVlZGVkLgpAQCAtOTksMTggKzk5LDE4IEBAIHB1YmxpYzoKICAgICBib29s
IGRlbGV0ZURhdGFiYXNlKFNlY3VyaXR5T3JpZ2luKiwgY29uc3QgU3RyaW5nJiBuYW1lKTsKIAog
I2lmIFBMQVRGT1JNKElPUykKLSAgICB2b2lkIHJlbW92ZURlbGV0ZWRPcGVuZWREYXRhYmFzZXMo
KTsKLSAgICBzdGF0aWMgYm9vbCBkZWxldGVEYXRhYmFzZUZpbGVJZkVtcHR5KGNvbnN0IFN0cmlu
ZyYpOworICAgIFdFQkNPUkVfRVhQT1JUIHZvaWQgcmVtb3ZlRGVsZXRlZE9wZW5lZERhdGFiYXNl
cygpOworICAgIFdFQkNPUkVfRVhQT1JUIHN0YXRpYyBib29sIGRlbGV0ZURhdGFiYXNlRmlsZUlm
RW1wdHkoY29uc3QgU3RyaW5nJik7CiAKICAgICAvLyBNb2JpbGVTYWZhcmkgd2lsbCBncmFiIHRo
aXMgbXV0ZXggb24gdGhlIG1haW4gdGhyZWFkIGJlZm9yZSBkaXNwYXRjaGluZyB0aGUgdGFzayB0
byAKICAgICAvLyBjbGVhbiB1cCB6ZXJvIGJ5dGUgZGF0YWJhc2UgZmlsZXMuICBBbnkgb3BlcmF0
aW9ucyB0byBvcGVuIG5ldyBkYXRhYmFzZSB3aWxsIGhhdmUgdG8KICAgICAvLyB3YWl0IGZvciB0
aGF0IHRhc2sgdG8gZmluaXNoIGJ5IHdhaXRpbmcgb24gdGhpcyBtdXRleC4KICAgICBzdGF0aWMg
TXV0ZXgmIG9wZW5EYXRhYmFzZU11dGV4KCk7CiAgICAgCi0gICAgc3RhdGljIHZvaWQgZW1wdHlE
YXRhYmFzZUZpbGVzUmVtb3ZhbFRhc2tXaWxsQmVTY2hlZHVsZWQoKTsKLSAgICBzdGF0aWMgdm9p
ZCBlbXB0eURhdGFiYXNlRmlsZXNSZW1vdmFsVGFza0RpZEZpbmlzaCgpOworICAgIFdFQkNPUkVf
RVhQT1JUIHN0YXRpYyB2b2lkIGVtcHR5RGF0YWJhc2VGaWxlc1JlbW92YWxUYXNrV2lsbEJlU2No
ZWR1bGVkKCk7CisgICAgV0VCQ09SRV9FWFBPUlQgc3RhdGljIHZvaWQgZW1wdHlEYXRhYmFzZUZp
bGVzUmVtb3ZhbFRhc2tEaWRGaW5pc2goKTsKICAgICAKLSAgICB2b2lkIHNldERhdGFiYXNlc1Bh
dXNlZChib29sKTsKKyAgICBXRUJDT1JFX0VYUE9SVCB2b2lkIHNldERhdGFiYXNlc1BhdXNlZChi
b29sKTsKICNlbmRpZgogICAgIAogICAgIHZvaWQgc2V0Q2xpZW50KERhdGFiYXNlTWFuYWdlckNs
aWVudCopOwpJbmRleDogU291cmNlL1dlYkNvcmUvYWNjZXNzaWJpbGl0eS9BWE9iamVjdENhY2hl
LmgKPT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PQotLS0gU291cmNlL1dlYkNvcmUvYWNjZXNzaWJpbGl0eS9BWE9iamVjdENh
Y2hlLmgJKHJldmlzaW9uIDE3MjY1OCkKKysrIFNvdXJjZS9XZWJDb3JlL2FjY2Vzc2liaWxpdHkv
QVhPYmplY3RDYWNoZS5oCSh3b3JraW5nIGNvcHkpCkBAIC03NywxMiArNzcsMTIgQEAgcHVibGlj
OgogICAgIGV4cGxpY2l0IEFYT2JqZWN0Q2FjaGUoRG9jdW1lbnQmKTsKICAgICB+QVhPYmplY3RD
YWNoZSgpOwogCi0gICAgc3RhdGljIEFjY2Vzc2liaWxpdHlPYmplY3QqIGZvY3VzZWRVSUVsZW1l
bnRGb3JQYWdlKGNvbnN0IFBhZ2UqKTsKKyAgICBXRUJDT1JFX0VYUE9SVCBzdGF0aWMgQWNjZXNz
aWJpbGl0eU9iamVjdCogZm9jdXNlZFVJRWxlbWVudEZvclBhZ2UoY29uc3QgUGFnZSopOwogCiAg
ICAgLy8gUmV0dXJucyB0aGUgcm9vdCBvYmplY3QgZm9yIHRoZSBlbnRpcmUgZG9jdW1lbnQuCi0g
ICAgQWNjZXNzaWJpbGl0eU9iamVjdCogcm9vdE9iamVjdCgpOworICAgIFdFQkNPUkVfRVhQT1JU
IEFjY2Vzc2liaWxpdHlPYmplY3QqIHJvb3RPYmplY3QoKTsKICAgICAvLyBSZXR1cm5zIHRoZSBy
b290IG9iamVjdCBmb3IgYSBzcGVjaWZpYyBmcmFtZS4KLSAgICBBY2Nlc3NpYmlsaXR5T2JqZWN0
KiByb290T2JqZWN0Rm9yRnJhbWUoRnJhbWUqKTsKKyAgICBXRUJDT1JFX0VYUE9SVCBBY2Nlc3Np
YmlsaXR5T2JqZWN0KiByb290T2JqZWN0Rm9yRnJhbWUoRnJhbWUqKTsKICAgICAKICAgICAvLyBG
b3IgQVggb2JqZWN0cyB3aXRoIGVsZW1lbnRzIHRoYXQgYmFjayB0aGVtLgogICAgIEFjY2Vzc2li
aWxpdHlPYmplY3QqIGdldE9yQ3JlYXRlKFJlbmRlck9iamVjdCopOwpAQCAtMTI3LDExICsxMjcs
MTEgQEAgcHVibGljOgogICAgIHZvaWQgcmVjb21wdXRlSXNJZ25vcmVkKFJlbmRlck9iamVjdCog
cmVuZGVyZXIpOwogCiAjaWYgSEFWRShBQ0NFU1NJQklMSVRZKQotICAgIHN0YXRpYyB2b2lkIGVu
YWJsZUFjY2Vzc2liaWxpdHkoKTsKLSAgICBzdGF0aWMgdm9pZCBkaXNhYmxlQWNjZXNzaWJpbGl0
eSgpOworICAgIFdFQkNPUkVfRVhQT1JUIHN0YXRpYyB2b2lkIGVuYWJsZUFjY2Vzc2liaWxpdHko
KTsKKyAgICBXRUJDT1JFX0VYUE9SVCBzdGF0aWMgdm9pZCBkaXNhYmxlQWNjZXNzaWJpbGl0eSgp
OwogCiAgICAgLy8gRW5oYW5jZWQgdXNlciBpbnRlcmZhY2UgYWNjZXNzaWJpbGl0eSBjYW4gYmUg
dG9nZ2xlZCBieSB0aGUgYXNzaXN0aXZlIHRlY2hub2xvZ3kuCi0gICAgc3RhdGljIHZvaWQgc2V0
RW5oYW5jZWRVc2VySW50ZXJmYWNlQWNjZXNzaWJpbGl0eShib29sIGZsYWcpOworICAgIFdFQkNP
UkVfRVhQT1JUIHN0YXRpYyB2b2lkIHNldEVuaGFuY2VkVXNlckludGVyZmFjZUFjY2Vzc2liaWxp
dHkoYm9vbCBmbGFnKTsKICAgICAKICAgICBzdGF0aWMgYm9vbCBhY2Nlc3NpYmlsaXR5RW5hYmxl
ZCgpIHsgcmV0dXJuIGdBY2Nlc3NpYmlsaXR5RW5hYmxlZDsgfQogICAgIHN0YXRpYyBib29sIGFj
Y2Vzc2liaWxpdHlFbmhhbmNlZFVzZXJJbnRlcmZhY2VFbmFibGVkKCkgeyByZXR1cm4gZ0FjY2Vz
c2liaWxpdHlFbmhhbmNlZFVzZXJJbnRlcmZhY2VFbmFibGVkOyB9CkBAIC0yMzYsOCArMjM2LDgg
QEAgcHJpdmF0ZToKICAgICBIYXNoTWFwPE5vZGUqLCBBWElEPiBtX25vZGVPYmplY3RNYXBwaW5n
OwogICAgIEhhc2hTZXQ8Tm9kZSo+IG1fdGV4dE1hcmtlck5vZGVzOwogICAgIHN0ZDo6dW5pcXVl
X3B0cjxBWENvbXB1dGVkT2JqZWN0QXR0cmlidXRlQ2FjaGU+IG1fY29tcHV0ZWRPYmplY3RBdHRy
aWJ1dGVDYWNoZTsKLSAgICBzdGF0aWMgYm9vbCBnQWNjZXNzaWJpbGl0eUVuYWJsZWQ7Ci0gICAg
c3RhdGljIGJvb2wgZ0FjY2Vzc2liaWxpdHlFbmhhbmNlZFVzZXJJbnRlcmZhY2VFbmFibGVkOwor
ICAgIFdFQkNPUkVfRVhQT1JUIHN0YXRpYyBib29sIGdBY2Nlc3NpYmlsaXR5RW5hYmxlZDsKKyAg
ICBXRUJDT1JFX0VYUE9SVCBzdGF0aWMgYm9vbCBnQWNjZXNzaWJpbGl0eUVuaGFuY2VkVXNlcklu
dGVyZmFjZUVuYWJsZWQ7CiAgICAgCiAgICAgSGFzaFNldDxBWElEPiBtX2lkc0luVXNlOwogICAg
IApJbmRleDogU291cmNlL1dlYkNvcmUvYmluZGluZ3MvanMvRE9NV3JhcHBlcldvcmxkLmgKPT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PQotLS0gU291cmNlL1dlYkNvcmUvYmluZGluZ3MvanMvRE9NV3JhcHBlcldvcmxkLmgJ
KHJldmlzaW9uIDE3MjY1OCkKKysrIFNvdXJjZS9XZWJDb3JlL2JpbmRpbmdzL2pzL0RPTVdyYXBw
ZXJXb3JsZC5oCSh3b3JraW5nIGNvcHkpCkBAIC0zOSwxMCArMzksMTAgQEAgcHVibGljOgogICAg
IHsKICAgICAgICAgcmV0dXJuIGFkb3B0UmVmKG5ldyBET01XcmFwcGVyV29ybGQodm0sIGlzTm9y
bWFsKSk7CiAgICAgfQotICAgIH5ET01XcmFwcGVyV29ybGQoKTsKKyAgICBXRUJDT1JFX0VYUE9S
VCB+RE9NV3JhcHBlcldvcmxkKCk7CiAKICAgICAvLyBGcmVlIGFzIG11Y2ggbWVtb3J5IGhlbGQg
b250byBieSB0aGlzIHdvcmxkIGFzIHBvc3NpYmxlLgotICAgIHZvaWQgY2xlYXJXcmFwcGVycygp
OworICAgIFdFQkNPUkVfRVhQT1JUIHZvaWQgY2xlYXJXcmFwcGVycygpOwogCiAgICAgdm9pZCBk
aWRDcmVhdGVXaW5kb3dTaGVsbChTY3JpcHRDb250cm9sbGVyKiBzY3JpcHRDb250cm9sbGVyKSB7
IG1fc2NyaXB0Q29udHJvbGxlcnNXaXRoV2luZG93U2hlbGxzLmFkZChzY3JpcHRDb250cm9sbGVy
KTsgfQogICAgIHZvaWQgZGlkRGVzdHJveVdpbmRvd1NoZWxsKFNjcmlwdENvbnRyb2xsZXIqIHNj
cmlwdENvbnRyb2xsZXIpIHsgbV9zY3JpcHRDb250cm9sbGVyc1dpdGhXaW5kb3dTaGVsbHMucmVt
b3ZlKHNjcmlwdENvbnRyb2xsZXIpOyB9CkluZGV4OiBTb3VyY2UvV2ViQ29yZS9icmlkZ2UvcnVu
dGltZV9tZXRob2QuY3BwCj09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT0KLS0tIFNvdXJjZS9XZWJDb3JlL2JyaWRnZS9ydW50
aW1lX21ldGhvZC5jcHAJKHJldmlzaW9uIDE3MjY1OCkKKysrIFNvdXJjZS9XZWJDb3JlL2JyaWRn
ZS9ydW50aW1lX21ldGhvZC5jcHAJKHdvcmtpbmcgY29weSkKQEAgLTM5LDcgKzM5LDcgQEAgbmFt
ZXNwYWNlIEpTQyB7CiAKIHVzaW5nIG5hbWVzcGFjZSBCaW5kaW5nczsKIAotY29uc3QgQ2xhc3NJ
bmZvIFJ1bnRpbWVNZXRob2Q6OnNfaW5mbyA9IHsgIlJ1bnRpbWVNZXRob2QiLCAmSW50ZXJuYWxG
dW5jdGlvbjo6c19pbmZvLCAwLCBDUkVBVEVfTUVUSE9EX1RBQkxFKFJ1bnRpbWVNZXRob2QpIH07
CitXRUJDT1JFX0VYUE9SVCBjb25zdCBDbGFzc0luZm8gUnVudGltZU1ldGhvZDo6c19pbmZvID0g
eyAiUnVudGltZU1ldGhvZCIsICZJbnRlcm5hbEZ1bmN0aW9uOjpzX2luZm8sIDAsIENSRUFURV9N
RVRIT0RfVEFCTEUoUnVudGltZU1ldGhvZCkgfTsKIAogUnVudGltZU1ldGhvZDo6UnVudGltZU1l
dGhvZChKU0dsb2JhbE9iamVjdCogZ2xvYmFsT2JqZWN0LCBTdHJ1Y3R1cmUqIHN0cnVjdHVyZSwg
TWV0aG9kKiBtZXRob2QpCiAgICAgLy8gQ2FsbGVycyB3aWxsIG5lZWQgdG8gcGFzcyBpbiB0aGUg
cmlnaHQgZ2xvYmFsIG9iamVjdCBjb3JyZXNwb25kaW5nIHRvIHRoaXMgbmF0aXZlIG9iamVjdCAi
bWV0aG9kIi4KSW5kZXg6IFNvdXJjZS9XZWJDb3JlL2JyaWRnZS9ydW50aW1lX21ldGhvZC5oCj09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT0KLS0tIFNvdXJjZS9XZWJDb3JlL2JyaWRnZS9ydW50aW1lX21ldGhvZC5oCShyZXZp
c2lvbiAxNzI2NTgpCisrKyBTb3VyY2UvV2ViQ29yZS9icmlkZ2UvcnVudGltZV9tZXRob2QuaAko
d29ya2luZyBjb3B5KQpAQCAtNTksMTIgKzU5LDEyIEBAIHB1YmxpYzoKICAgICB9CiAKIHByb3Rl
Y3RlZDoKLSAgICBSdW50aW1lTWV0aG9kKEpTR2xvYmFsT2JqZWN0KiwgU3RydWN0dXJlKiwgQmlu
ZGluZ3M6Ok1ldGhvZCopOwotICAgIHZvaWQgZmluaXNoQ3JlYXRpb24oVk0mLCBjb25zdCBTdHJp
bmcmKTsKKyAgICBXRUJDT1JFX0VYUE9SVCBSdW50aW1lTWV0aG9kKEpTR2xvYmFsT2JqZWN0Kiwg
U3RydWN0dXJlKiwgQmluZGluZ3M6Ok1ldGhvZCopOworICAgIFdFQkNPUkVfRVhQT1JUIHZvaWQg
ZmluaXNoQ3JlYXRpb24oVk0mLCBjb25zdCBTdHJpbmcmKTsKICAgICBzdGF0aWMgY29uc3QgdW5z
aWduZWQgU3RydWN0dXJlRmxhZ3MgPSBPdmVycmlkZXNHZXRPd25Qcm9wZXJ0eVNsb3QgfCBJbnRl
cm5hbEZ1bmN0aW9uOjpTdHJ1Y3R1cmVGbGFnczsKLSAgICBzdGF0aWMgQ2FsbFR5cGUgZ2V0Q2Fs
bERhdGEoSlNDZWxsKiwgQ2FsbERhdGEmKTsKKyAgICBXRUJDT1JFX0VYUE9SVCBzdGF0aWMgQ2Fs
bFR5cGUgZ2V0Q2FsbERhdGEoSlNDZWxsKiwgQ2FsbERhdGEmKTsKIAotICAgIHN0YXRpYyBib29s
IGdldE93blByb3BlcnR5U2xvdChKU09iamVjdCosIEV4ZWNTdGF0ZSosIFByb3BlcnR5TmFtZSwg
UHJvcGVydHlTbG90Jik7CisgICAgV0VCQ09SRV9FWFBPUlQgc3RhdGljIGJvb2wgZ2V0T3duUHJv
cGVydHlTbG90KEpTT2JqZWN0KiwgRXhlY1N0YXRlKiwgUHJvcGVydHlOYW1lLCBQcm9wZXJ0eVNs
b3QmKTsKIAogcHJpdmF0ZToKICAgICBzdGF0aWMgRW5jb2RlZEpTVmFsdWUgbGVuZ3RoR2V0dGVy
KEV4ZWNTdGF0ZSosIEpTT2JqZWN0KiwgRW5jb2RlZEpTVmFsdWUsIFByb3BlcnR5TmFtZSk7Cklu
ZGV4OiBTb3VyY2UvV2ViQ29yZS9icmlkZ2UvcnVudGltZV9vYmplY3QuY3BwCj09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT0K
LS0tIFNvdXJjZS9XZWJDb3JlL2JyaWRnZS9ydW50aW1lX29iamVjdC5jcHAJKHJldmlzaW9uIDE3
MjY1OCkKKysrIFNvdXJjZS9XZWJDb3JlL2JyaWRnZS9ydW50aW1lX29iamVjdC5jcHAJKHdvcmtp
bmcgY29weSkKQEAgLTM1LDcgKzM1LDcgQEAgdXNpbmcgbmFtZXNwYWNlIFdlYkNvcmU7CiBuYW1l
c3BhY2UgSlNDIHsKIG5hbWVzcGFjZSBCaW5kaW5ncyB7CiAKLWNvbnN0IENsYXNzSW5mbyBSdW50
aW1lT2JqZWN0OjpzX2luZm8gPSB7ICJSdW50aW1lT2JqZWN0IiwgJkJhc2U6OnNfaW5mbywgMCwg
Q1JFQVRFX01FVEhPRF9UQUJMRShSdW50aW1lT2JqZWN0KSB9OworV0VCQ09SRV9FWFBPUlQgY29u
c3QgQ2xhc3NJbmZvIFJ1bnRpbWVPYmplY3Q6OnNfaW5mbyA9IHsgIlJ1bnRpbWVPYmplY3QiLCAm
QmFzZTo6c19pbmZvLCAwLCBDUkVBVEVfTUVUSE9EX1RBQkxFKFJ1bnRpbWVPYmplY3QpIH07CiAK
IFJ1bnRpbWVPYmplY3Q6OlJ1bnRpbWVPYmplY3QoVk0mIHZtLCBTdHJ1Y3R1cmUqIHN0cnVjdHVy
ZSwgUGFzc1JlZlB0cjxJbnN0YW5jZT4gaW5zdGFuY2UpCiAgICAgOiBKU0Rlc3RydWN0aWJsZU9i
amVjdCh2bSwgc3RydWN0dXJlKQpJbmRleDogU291cmNlL1dlYkNvcmUvYnJpZGdlL3J1bnRpbWVf
b2JqZWN0LmgKPT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PQotLS0gU291cmNlL1dlYkNvcmUvYnJpZGdlL3J1bnRpbWVfb2Jq
ZWN0LmgJKHJldmlzaW9uIDE3MjY1OCkKKysrIFNvdXJjZS9XZWJDb3JlL2JyaWRnZS9ydW50aW1l
X29iamVjdC5oCSh3b3JraW5nIGNvcHkpCkBAIC00MywxNiArNDMsMTYgQEAgcHVibGljOgogICAg
ICAgICByZXR1cm4gb2JqZWN0OwogICAgIH0KIAotICAgIHN0YXRpYyB2b2lkIGRlc3Ryb3koSlND
ZWxsKik7CisgICAgV0VCQ09SRV9FWFBPUlQgc3RhdGljIHZvaWQgZGVzdHJveShKU0NlbGwqKTsK
IAotICAgIHN0YXRpYyBib29sIGdldE93blByb3BlcnR5U2xvdChKU09iamVjdCosIEV4ZWNTdGF0
ZSosIFByb3BlcnR5TmFtZSwgUHJvcGVydHlTbG90Jik7Ci0gICAgc3RhdGljIHZvaWQgcHV0KEpT
Q2VsbCosIEV4ZWNTdGF0ZSosIFByb3BlcnR5TmFtZSwgSlNWYWx1ZSwgUHV0UHJvcGVydHlTbG90
Jik7Ci0gICAgc3RhdGljIGJvb2wgZGVsZXRlUHJvcGVydHkoSlNDZWxsKiwgRXhlY1N0YXRlKiwg
UHJvcGVydHlOYW1lKTsKLSAgICBzdGF0aWMgSlNWYWx1ZSBkZWZhdWx0VmFsdWUoY29uc3QgSlNP
YmplY3QqLCBFeGVjU3RhdGUqLCBQcmVmZXJyZWRQcmltaXRpdmVUeXBlKTsKLSAgICBzdGF0aWMg
Q2FsbFR5cGUgZ2V0Q2FsbERhdGEoSlNDZWxsKiwgQ2FsbERhdGEmKTsKLSAgICBzdGF0aWMgQ29u
c3RydWN0VHlwZSBnZXRDb25zdHJ1Y3REYXRhKEpTQ2VsbCosIENvbnN0cnVjdERhdGEmKTsKKyAg
ICBXRUJDT1JFX0VYUE9SVCBzdGF0aWMgYm9vbCBnZXRPd25Qcm9wZXJ0eVNsb3QoSlNPYmplY3Qq
LCBFeGVjU3RhdGUqLCBQcm9wZXJ0eU5hbWUsIFByb3BlcnR5U2xvdCYpOworICAgIFdFQkNPUkVf
RVhQT1JUIHN0YXRpYyB2b2lkIHB1dChKU0NlbGwqLCBFeGVjU3RhdGUqLCBQcm9wZXJ0eU5hbWUs
IEpTVmFsdWUsIFB1dFByb3BlcnR5U2xvdCYpOworICAgIFdFQkNPUkVfRVhQT1JUIHN0YXRpYyBi
b29sIGRlbGV0ZVByb3BlcnR5KEpTQ2VsbCosIEV4ZWNTdGF0ZSosIFByb3BlcnR5TmFtZSk7Cisg
ICAgV0VCQ09SRV9FWFBPUlQgc3RhdGljIEpTVmFsdWUgZGVmYXVsdFZhbHVlKGNvbnN0IEpTT2Jq
ZWN0KiwgRXhlY1N0YXRlKiwgUHJlZmVycmVkUHJpbWl0aXZlVHlwZSk7CisgICAgV0VCQ09SRV9F
WFBPUlQgc3RhdGljIENhbGxUeXBlIGdldENhbGxEYXRhKEpTQ2VsbCosIENhbGxEYXRhJik7Cisg
ICAgV0VCQ09SRV9FWFBPUlQgc3RhdGljIENvbnN0cnVjdFR5cGUgZ2V0Q29uc3RydWN0RGF0YShK
U0NlbGwqLCBDb25zdHJ1Y3REYXRhJik7CiAKLSAgICBzdGF0aWMgdm9pZCBnZXRPd25Qcm9wZXJ0
eU5hbWVzKEpTT2JqZWN0KiwgRXhlY1N0YXRlKiwgUHJvcGVydHlOYW1lQXJyYXkmLCBFbnVtZXJh
dGlvbk1vZGUpOworICAgIFdFQkNPUkVfRVhQT1JUIHN0YXRpYyB2b2lkIGdldE93blByb3BlcnR5
TmFtZXMoSlNPYmplY3QqLCBFeGVjU3RhdGUqLCBQcm9wZXJ0eU5hbWVBcnJheSYsIEVudW1lcmF0
aW9uTW9kZSk7CiAKICAgICB2b2lkIGludmFsaWRhdGUoKTsKIApAQCAtNzMsOCArNzMsOCBAQCBw
dWJsaWM6CiAgICAgfQogCiBwcm90ZWN0ZWQ6Ci0gICAgUnVudGltZU9iamVjdChWTSYsIFN0cnVj
dHVyZSosIFBhc3NSZWZQdHI8SW5zdGFuY2U+KTsKLSAgICB2b2lkIGZpbmlzaENyZWF0aW9uKFZN
Jik7CisgICAgV0VCQ09SRV9FWFBPUlQgUnVudGltZU9iamVjdChWTSYsIFN0cnVjdHVyZSosIFBh
c3NSZWZQdHI8SW5zdGFuY2U+KTsKKyAgICBXRUJDT1JFX0VYUE9SVCB2b2lkIGZpbmlzaENyZWF0
aW9uKFZNJik7CiAgICAgc3RhdGljIGNvbnN0IHVuc2lnbmVkIFN0cnVjdHVyZUZsYWdzID0gT3Zl
cnJpZGVzR2V0T3duUHJvcGVydHlTbG90IHwgT3ZlcnJpZGVzR2V0UHJvcGVydHlOYW1lcyB8IEJh
c2U6OlN0cnVjdHVyZUZsYWdzOwogCiBwcml2YXRlOgpJbmRleDogU291cmNlL1dlYkNvcmUvYnJp
ZGdlL3J1bnRpbWVfcm9vdC5oCj09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT0KLS0tIFNvdXJjZS9XZWJDb3JlL2JyaWRnZS9y
dW50aW1lX3Jvb3QuaAkocmV2aXNpb24gMTcyNjU4KQorKysgU291cmNlL1dlYkNvcmUvYnJpZGdl
L3J1bnRpbWVfcm9vdC5oCSh3b3JraW5nIGNvcHkpCkBAIC01NSw3ICs1NSw3IEBAIGNsYXNzIFJv
b3RPYmplY3QgOiBwdWJsaWMgUmVmQ291bnRlZDxSb28KICAgICBmcmllbmQgY2xhc3MgSmF2YUpT
T2JqZWN0OwogCiBwdWJsaWM6Ci0gICAgdmlydHVhbCB+Um9vdE9iamVjdCgpOworICAgIFdFQkNP
UkVfRVhQT1JUIHZpcnR1YWwgflJvb3RPYmplY3QoKTsKICAgICAKICAgICBzdGF0aWMgUGFzc1Jl
ZlB0cjxSb290T2JqZWN0PiBjcmVhdGUoY29uc3Qgdm9pZCogbmF0aXZlSGFuZGxlLCBKU0dsb2Jh
bE9iamVjdCopOwogCkBAIC02Nyw3ICs2Nyw3IEBAIHB1YmxpYzoKICAgICBib29sIGdjSXNQcm90
ZWN0ZWQoSlNPYmplY3QqKTsKIAogICAgIGNvbnN0IHZvaWQqIG5hdGl2ZUhhbmRsZSgpIGNvbnN0
OwotICAgIEpTR2xvYmFsT2JqZWN0KiBnbG9iYWxPYmplY3QoKSBjb25zdDsKKyAgICBXRUJDT1JF
X0VYUE9SVCBKU0dsb2JhbE9iamVjdCogZ2xvYmFsT2JqZWN0KCkgY29uc3Q7CiAgICAgdm9pZCB1
cGRhdGVHbG9iYWxPYmplY3QoSlNHbG9iYWxPYmplY3QqKTsKIAogICAgIHZvaWQgYWRkUnVudGlt
ZU9iamVjdChWTSYsIFJ1bnRpbWVPYmplY3QqKTsKSW5kZXg6IFNvdXJjZS9XZWJDb3JlL2JyaWRn
ZS9qc2MvQnJpZGdlSlNDLmgKPT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PQotLS0gU291cmNlL1dlYkNvcmUvYnJpZGdlL2pz
Yy9CcmlkZ2VKU0MuaAkocmV2aXNpb24gMTcyNjU4KQorKysgU291cmNlL1dlYkNvcmUvYnJpZGdl
L2pzYy9CcmlkZ2VKU0MuaAkod29ya2luZyBjb3B5KQpAQCAtNzAsNyArNzAsNyBAQCBwdWJsaWM6
CiAKIGNsYXNzIEluc3RhbmNlIDogcHVibGljIFJlZkNvdW50ZWQ8SW5zdGFuY2U+IHsKIHB1Ymxp
YzoKLSAgICBJbnN0YW5jZShQYXNzUmVmUHRyPFJvb3RPYmplY3Q+KTsKKyAgICBXRUJDT1JFX0VY
UE9SVCBJbnN0YW5jZShQYXNzUmVmUHRyPFJvb3RPYmplY3Q+KTsKIAogICAgIC8vIFRoZXNlIGZ1
bmN0aW9ucyBhcmUgY2FsbGVkIGJlZm9yZSBhbmQgYWZ0ZXIgdGhlIG1haW4gZW50cnkgcG9pbnRz
IGludG8KICAgICAvLyB0aGUgbmF0aXZlIGltcGxlbWVudGF0aW9ucy4gIFRoZXkgY2FuIGJlIHVz
ZWQgdG8gZXN0YWJsaXNoIGFuZCBjbGVhbnVwCkBAIC03OSw3ICs3OSw3IEBAIHB1YmxpYzoKICAg
ICB2b2lkIGVuZCgpOwogCiAgICAgdmlydHVhbCBDbGFzcyogZ2V0Q2xhc3MoKSBjb25zdCA9IDA7
Ci0gICAgSlNPYmplY3QqIGNyZWF0ZVJ1bnRpbWVPYmplY3QoRXhlY1N0YXRlKik7CisgICAgV0VC
Q09SRV9FWFBPUlQgSlNPYmplY3QqIGNyZWF0ZVJ1bnRpbWVPYmplY3QoRXhlY1N0YXRlKik7CiAg
ICAgdm9pZCB3aWxsSW52YWxpZGF0ZVJ1bnRpbWVPYmplY3QoKTsKIAogICAgIC8vIFJldHVybnMg
ZmFsc2UgaWYgdGhlIHZhbHVlIHdhcyBub3Qgc2V0IHN1Y2Nlc3NmdWxseS4KQEAgLTEwMiw3ICsx
MDIsNyBAQCBwdWJsaWM6CiAKICAgICBSb290T2JqZWN0KiByb290T2JqZWN0KCkgY29uc3Q7CiAK
LSAgICB2aXJ0dWFsIH5JbnN0YW5jZSgpOworICAgIFdFQkNPUkVfRVhQT1JUIHZpcnR1YWwgfklu
c3RhbmNlKCk7CiAKICAgICB2aXJ0dWFsIGJvb2wgZ2V0T3duUHJvcGVydHlTbG90KEpTT2JqZWN0
KiwgRXhlY1N0YXRlKiwgUHJvcGVydHlOYW1lLCBQcm9wZXJ0eVNsb3QmKSB7IHJldHVybiBmYWxz
ZTsgfQogICAgIHZpcnR1YWwgdm9pZCBwdXQoSlNPYmplY3QqLCBFeGVjU3RhdGUqLCBQcm9wZXJ0
eU5hbWUsIEpTVmFsdWUsIFB1dFByb3BlcnR5U2xvdCYpIHsgfQpAQCAtMTEwLDcgKzExMCw3IEBA
IHB1YmxpYzoKIHByb3RlY3RlZDoKICAgICB2aXJ0dWFsIHZvaWQgdmlydHVhbEJlZ2luKCkgeyB9
CiAgICAgdmlydHVhbCB2b2lkIHZpcnR1YWxFbmQoKSB7IH0KLSAgICB2aXJ0dWFsIFJ1bnRpbWVP
YmplY3QqIG5ld1J1bnRpbWVPYmplY3QoRXhlY1N0YXRlKik7CisgICAgV0VCQ09SRV9FWFBPUlQg
dmlydHVhbCBSdW50aW1lT2JqZWN0KiBuZXdSdW50aW1lT2JqZWN0KEV4ZWNTdGF0ZSopOwogCiAg
ICAgUmVmUHRyPFJvb3RPYmplY3Q+IG1fcm9vdE9iamVjdDsKIApJbmRleDogU291cmNlL1dlYkNv
cmUvY3NzL0NTU0NvbXB1dGVkU3R5bGVEZWNsYXJhdGlvbi5oCj09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT0KLS0tIFNvdXJj
ZS9XZWJDb3JlL2Nzcy9DU1NDb21wdXRlZFN0eWxlRGVjbGFyYXRpb24uaAkocmV2aXNpb24gMTcy
NjU4KQorKysgU291cmNlL1dlYkNvcmUvY3NzL0NTU0NvbXB1dGVkU3R5bGVEZWNsYXJhdGlvbi5o
CSh3b3JraW5nIGNvcHkpCkBAIC05OSw3ICs5OSw3IEBAIHB1YmxpYzoKICAgICBTdHJpbmcgZ2V0
UHJvcGVydHlWYWx1ZShDU1NQcm9wZXJ0eUlEKSBjb25zdDsKIAogcHJpdmF0ZToKLSAgICBDU1ND
b21wdXRlZFN0eWxlRGVjbGFyYXRpb24oUGFzc1JlZlB0cjxOb2RlPiwgYm9vbCBhbGxvd1Zpc2l0
ZWRTdHlsZSwgY29uc3QgU3RyaW5nJik7CisgICAgV0VCQ09SRV9FWFBPUlQgQ1NTQ29tcHV0ZWRT
dHlsZURlY2xhcmF0aW9uKFBhc3NSZWZQdHI8Tm9kZT4sIGJvb2wgYWxsb3dWaXNpdGVkU3R5bGUs
IGNvbnN0IFN0cmluZyYpOwogCiAgICAgLy8gQ1NTT00gZnVuY3Rpb25zLiBEb24ndCBtYWtlIHRo
ZXNlIHB1YmxpYy4KICAgICB2aXJ0dWFsIENTU1J1bGUqIHBhcmVudFJ1bGUoKSBjb25zdCBvdmVy
cmlkZTsKSW5kZXg6IFNvdXJjZS9XZWJDb3JlL2Nzcy9DU1NQYXJzZXJNb2RlLmgKPT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PQotLS0gU291cmNlL1dlYkNvcmUvY3NzL0NTU1BhcnNlck1vZGUuaAkocmV2aXNpb24gMTcyNjU4
KQorKysgU291cmNlL1dlYkNvcmUvY3NzL0NTU1BhcnNlck1vZGUuaAkod29ya2luZyBjb3B5KQpA
QCAtNTgsNyArNTgsNyBAQCBzdHJ1Y3QgQ1NTUGFyc2VyQ29udGV4dCB7CiAgICAgV1RGX01BS0Vf
RkFTVF9BTExPQ0FURUQ7CiBwdWJsaWM6CiAgICAgQ1NTUGFyc2VyQ29udGV4dChDU1NQYXJzZXJN
b2RlLCBjb25zdCBVUkwmIGJhc2VVUkwgPSBVUkwoKSk7Ci0gICAgQ1NTUGFyc2VyQ29udGV4dChE
b2N1bWVudCYsIGNvbnN0IFVSTCYgYmFzZVVSTCA9IFVSTCgpLCBjb25zdCBTdHJpbmcmIGNoYXJz
ZXQgPSBlbXB0eVN0cmluZygpKTsKKyAgICBXRUJDT1JFX0VYUE9SVCBDU1NQYXJzZXJDb250ZXh0
KERvY3VtZW50JiwgY29uc3QgVVJMJiBiYXNlVVJMID0gVVJMKCksIGNvbnN0IFN0cmluZyYgY2hh
cnNldCA9IGVtcHR5U3RyaW5nKCkpOwogCiAgICAgVVJMIGJhc2VVUkw7CiAgICAgU3RyaW5nIGNo
YXJzZXQ7CkluZGV4OiBTb3VyY2UvV2ViQ29yZS9jc3MvQ1NTVmFsdWUuaAo9PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09Ci0t
LSBTb3VyY2UvV2ViQ29yZS9jc3MvQ1NTVmFsdWUuaAkocmV2aXNpb24gMTcyNjU4KQorKysgU291
cmNlL1dlYkNvcmUvY3NzL0NTU1ZhbHVlLmgJKHdvcmtpbmcgY29weSkKQEAgLTIwNyw3ICsyMDcs
NyBAQCBwcm90ZWN0ZWQ6CiAgICAgfkNTU1ZhbHVlKCkgeyB9CiAKIHByaXZhdGU6Ci0gICAgdm9p
ZCBkZXN0cm95KCk7CisgICAgV0VCQ09SRV9FWFBPUlQgdm9pZCBkZXN0cm95KCk7CiAKIHByb3Rl
Y3RlZDoKICAgICB1bnNpZ25lZCBtX2lzQ1NTT01TYWZlIDogMTsKSW5kZXg6IFNvdXJjZS9XZWJD
b3JlL2Nzcy9ET01XaW5kb3dDU1MuaAo9PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09Ci0tLSBTb3VyY2UvV2ViQ29yZS9jc3Mv
RE9NV2luZG93Q1NTLmgJKHJldmlzaW9uIDE3MjY1OCkKKysrIFNvdXJjZS9XZWJDb3JlL2Nzcy9E
T01XaW5kb3dDU1MuaAkod29ya2luZyBjb3B5KQpAQCAtNDAsNyArNDAsNyBAQCBuYW1lc3BhY2Ug
V2ViQ29yZSB7CiAKIGNsYXNzIERPTVdpbmRvd0NTUyA6IHB1YmxpYyBSZWZDb3VudGVkPERPTVdp
bmRvd0NTUz4gewogcHVibGljOgotICAgIHN0YXRpYyBQYXNzUmVmUHRyPERPTVdpbmRvd0NTUz4g
Y3JlYXRlKCk7CisgICAgV0VCQ09SRV9FWFBPUlQgc3RhdGljIFBhc3NSZWZQdHI8RE9NV2luZG93
Q1NTPiBjcmVhdGUoKTsKIAogICAgIGJvb2wgc3VwcG9ydHMoY29uc3QgU3RyaW5nJiBwcm9wZXJ0
eSwgY29uc3QgU3RyaW5nJiB2YWx1ZSkgY29uc3Q7CiAgICAgYm9vbCBzdXBwb3J0cyhjb25zdCBT
dHJpbmcmIGNvbmRpdGlvblRleHQpIGNvbnN0OwpJbmRleDogU291cmNlL1dlYkNvcmUvY3NzL1N0
eWxlU2hlZXRDb250ZW50cy5oCj09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT0KLS0tIFNvdXJjZS9XZWJDb3JlL2Nzcy9TdHls
ZVNoZWV0Q29udGVudHMuaAkocmV2aXNpb24gMTcyNjU4KQorKysgU291cmNlL1dlYkNvcmUvY3Nz
L1N0eWxlU2hlZXRDb250ZW50cy5oCSh3b3JraW5nIGNvcHkpCkBAIC0xMzksNyArMTM5LDcgQEAg
cHVibGljOgogICAgIHZvaWQgc2hyaW5rVG9GaXQoKTsKIAogcHJpdmF0ZToKLSAgICBTdHlsZVNo
ZWV0Q29udGVudHMoU3R5bGVSdWxlSW1wb3J0KiBvd25lclJ1bGUsIGNvbnN0IFN0cmluZyYgb3Jp
Z2luYWxVUkwsIGNvbnN0IENTU1BhcnNlckNvbnRleHQmKTsKKyAgICBXRUJDT1JFX0VYUE9SVCBT
dHlsZVNoZWV0Q29udGVudHMoU3R5bGVSdWxlSW1wb3J0KiBvd25lclJ1bGUsIGNvbnN0IFN0cmlu
ZyYgb3JpZ2luYWxVUkwsIGNvbnN0IENTU1BhcnNlckNvbnRleHQmKTsKICAgICBTdHlsZVNoZWV0
Q29udGVudHMoY29uc3QgU3R5bGVTaGVldENvbnRlbnRzJik7CiAKICAgICB2b2lkIGNsZWFyQ2hh
cnNldFJ1bGUoKTsKSW5kZXg6IFNvdXJjZS9XZWJDb3JlL2RvbS9DaGFyYWN0ZXJEYXRhLmgKPT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PQotLS0gU291cmNlL1dlYkNvcmUvZG9tL0NoYXJhY3RlckRhdGEuaAkocmV2aXNpb24g
MTcyNjU4KQorKysgU291cmNlL1dlYkNvcmUvZG9tL0NoYXJhY3RlckRhdGEuaAkod29ya2luZyBj
b3B5KQpAQCAtMzMsNyArMzMsNyBAQCBwdWJsaWM6CiAgICAgU3RyaW5nIGRhdGEoKSBjb25zdCB7
IHJldHVybiBtX2RhdGE7IH0KICAgICBzdGF0aWMgcHRyZGlmZl90IGRhdGFNZW1vcnlPZmZzZXQo
KSB7IHJldHVybiBPQkpFQ1RfT0ZGU0VUT0YoQ2hhcmFjdGVyRGF0YSwgbV9kYXRhKTsgfQogCi0g
ICAgdm9pZCBzZXREYXRhKGNvbnN0IFN0cmluZyYsIEV4Y2VwdGlvbkNvZGUmKTsKKyAgICBXRUJD
T1JFX0VYUE9SVCB2b2lkIHNldERhdGEoY29uc3QgU3RyaW5nJiwgRXhjZXB0aW9uQ29kZSYpOwog
ICAgIHVuc2lnbmVkIGxlbmd0aCgpIGNvbnN0IHsgcmV0dXJuIG1fZGF0YS5sZW5ndGgoKTsgfQog
ICAgIFN0cmluZyBzdWJzdHJpbmdEYXRhKHVuc2lnbmVkIG9mZnNldCwgdW5zaWduZWQgY291bnQs
IEV4Y2VwdGlvbkNvZGUmKTsKICAgICB2b2lkIGFwcGVuZERhdGEoY29uc3QgU3RyaW5nJiwgRXhj
ZXB0aW9uQ29kZSYpOwpJbmRleDogU291cmNlL1dlYkNvcmUvZG9tL0NsaWVudFJlY3QuaAo9PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09Ci0tLSBTb3VyY2UvV2ViQ29yZS9kb20vQ2xpZW50UmVjdC5oCShyZXZpc2lvbiAxNzI2
NTgpCisrKyBTb3VyY2UvV2ViQ29yZS9kb20vQ2xpZW50UmVjdC5oCSh3b3JraW5nIGNvcHkpCkBA
IC01MCw5ICs1MCw5IEBAIG5hbWVzcGFjZSBXZWJDb3JlIHsKICAgICAgICAgZmxvYXQgaGVpZ2h0
KCkgY29uc3QgeyByZXR1cm4gbV9yZWN0LmhlaWdodCgpOyB9CiAKICAgICBwcml2YXRlOgotICAg
ICAgICBDbGllbnRSZWN0KCk7Ci0gICAgICAgIGV4cGxpY2l0IENsaWVudFJlY3QoY29uc3QgSW50
UmVjdCYpOwotICAgICAgICBleHBsaWNpdCBDbGllbnRSZWN0KGNvbnN0IEZsb2F0UmVjdCYpOwor
ICAgICAgICBXRUJDT1JFX0VYUE9SVCBDbGllbnRSZWN0KCk7CisgICAgICAgIFdFQkNPUkVfRVhQ
T1JUIGV4cGxpY2l0IENsaWVudFJlY3QoY29uc3QgSW50UmVjdCYpOworICAgICAgICBXRUJDT1JF
X0VYUE9SVCBleHBsaWNpdCBDbGllbnRSZWN0KGNvbnN0IEZsb2F0UmVjdCYpOwogCiAgICAgICAg
IEZsb2F0UmVjdCBtX3JlY3Q7CiAgICAgfTsgCkluZGV4OiBTb3VyY2UvV2ViQ29yZS9kb20vQ2xp
ZW50UmVjdExpc3QuaAo9PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09Ci0tLSBTb3VyY2UvV2ViQ29yZS9kb20vQ2xpZW50UmVj
dExpc3QuaAkocmV2aXNpb24gMTcyNjU4KQorKysgU291cmNlL1dlYkNvcmUvZG9tL0NsaWVudFJl
Y3RMaXN0LmgJKHdvcmtpbmcgY29weSkKQEAgLTQwLDE0ICs0MCwxNCBAQCBuYW1lc3BhY2UgV2Vi
Q29yZSB7CiAgICAgcHVibGljOgogICAgICAgICBzdGF0aWMgUGFzc1JlZlB0cjxDbGllbnRSZWN0
TGlzdD4gY3JlYXRlKCkgeyByZXR1cm4gYWRvcHRSZWYobmV3IENsaWVudFJlY3RMaXN0KTsgfQog
ICAgICAgICBzdGF0aWMgUGFzc1JlZlB0cjxDbGllbnRSZWN0TGlzdD4gY3JlYXRlKGNvbnN0IFZl
Y3RvcjxGbG9hdFF1YWQ+JiBxdWFkcykgeyByZXR1cm4gYWRvcHRSZWYobmV3IENsaWVudFJlY3RM
aXN0KHF1YWRzKSk7IH0KLSAgICAgICAgfkNsaWVudFJlY3RMaXN0KCk7CisgICAgICAgIFdFQkNP
UkVfRVhQT1JUIH5DbGllbnRSZWN0TGlzdCgpOwogCiAgICAgICAgIHVuc2lnbmVkIGxlbmd0aCgp
IGNvbnN0OwogICAgICAgICBDbGllbnRSZWN0KiBpdGVtKHVuc2lnbmVkIGluZGV4KTsKIAogICAg
IHByaXZhdGU6Ci0gICAgICAgIENsaWVudFJlY3RMaXN0KCk7Ci0gICAgICAgIGV4cGxpY2l0IENs
aWVudFJlY3RMaXN0KGNvbnN0IFZlY3RvcjxGbG9hdFF1YWQ+Jik7CisgICAgICAgIFdFQkNPUkVf
RVhQT1JUIENsaWVudFJlY3RMaXN0KCk7CisgICAgICAgIFdFQkNPUkVfRVhQT1JUIGV4cGxpY2l0
IENsaWVudFJlY3RMaXN0KGNvbnN0IFZlY3RvcjxGbG9hdFF1YWQ+Jik7CiAKICAgICAgICAgVmVj
dG9yPFJlZlB0cjxDbGllbnRSZWN0Pj4gbV9saXN0OwogICAgIH07IApJbmRleDogU291cmNlL1dl
YkNvcmUvZG9tL0NvbnRhaW5lck5vZGUuaAo9PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09Ci0tLSBTb3VyY2UvV2ViQ29yZS9k
b20vQ29udGFpbmVyTm9kZS5oCShyZXZpc2lvbiAxNzI2NTgpCisrKyBTb3VyY2UvV2ViQ29yZS9k
b20vQ29udGFpbmVyTm9kZS5oCSh3b3JraW5nIGNvcHkpCkBAIC04OCwxMyArODgsMTMgQEAgcHVi
bGljOgogICAgIE5vZGUqIGxhc3RDaGlsZCgpIGNvbnN0IHsgcmV0dXJuIG1fbGFzdENoaWxkOyB9
CiAgICAgYm9vbCBoYXNDaGlsZE5vZGVzKCkgY29uc3QgeyByZXR1cm4gbV9maXJzdENoaWxkOyB9
CiAKLSAgICB1bnNpZ25lZCBjaGlsZE5vZGVDb3VudCgpIGNvbnN0OwotICAgIE5vZGUqIGNoaWxk
Tm9kZSh1bnNpZ25lZCBpbmRleCkgY29uc3Q7CisgICAgV0VCQ09SRV9FWFBPUlQgdW5zaWduZWQg
Y2hpbGROb2RlQ291bnQoKSBjb25zdDsKKyAgICBXRUJDT1JFX0VYUE9SVCBOb2RlKiBjaGlsZE5v
ZGUodW5zaWduZWQgaW5kZXgpIGNvbnN0OwogCiAgICAgYm9vbCBpbnNlcnRCZWZvcmUoUGFzc1Jl
ZlB0cjxOb2RlPiBuZXdDaGlsZCwgTm9kZSogcmVmQ2hpbGQsIEV4Y2VwdGlvbkNvZGUmID0gQVNT
RVJUX05PX0VYQ0VQVElPTik7CiAgICAgYm9vbCByZXBsYWNlQ2hpbGQoUGFzc1JlZlB0cjxOb2Rl
PiBuZXdDaGlsZCwgTm9kZSogb2xkQ2hpbGQsIEV4Y2VwdGlvbkNvZGUmID0gQVNTRVJUX05PX0VY
Q0VQVElPTik7Ci0gICAgYm9vbCByZW1vdmVDaGlsZChOb2RlKiBjaGlsZCwgRXhjZXB0aW9uQ29k
ZSYgPSBBU1NFUlRfTk9fRVhDRVBUSU9OKTsKLSAgICBib29sIGFwcGVuZENoaWxkKFBhc3NSZWZQ
dHI8Tm9kZT4gbmV3Q2hpbGQsIEV4Y2VwdGlvbkNvZGUmID0gQVNTRVJUX05PX0VYQ0VQVElPTik7
CisgICAgV0VCQ09SRV9FWFBPUlQgYm9vbCByZW1vdmVDaGlsZChOb2RlKiBjaGlsZCwgRXhjZXB0
aW9uQ29kZSYgPSBBU1NFUlRfTk9fRVhDRVBUSU9OKTsKKyAgICBXRUJDT1JFX0VYUE9SVCBib29s
IGFwcGVuZENoaWxkKFBhc3NSZWZQdHI8Tm9kZT4gbmV3Q2hpbGQsIEV4Y2VwdGlvbkNvZGUmID0g
QVNTRVJUX05PX0VYQ0VQVElPTik7CiAKICAgICAvLyBUaGVzZSBtZXRob2RzIGFyZSBvbmx5IHVz
ZWQgZHVyaW5nIHBhcnNpbmcuCiAgICAgLy8gVGhleSBkb24ndCBzZW5kIERPTSBtdXRhdGlvbiBl
dmVudHMgb3IgaGFuZGxlIHJlcGFyZW50aW5nLgpJbmRleDogU291cmNlL1dlYkNvcmUvZG9tL0Nv
bnRleHREZXN0cnVjdGlvbk9ic2VydmVyLmgKPT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PQotLS0gU291cmNlL1dlYkNvcmUv
ZG9tL0NvbnRleHREZXN0cnVjdGlvbk9ic2VydmVyLmgJKHJldmlzaW9uIDE3MjY1OCkKKysrIFNv
dXJjZS9XZWJDb3JlL2RvbS9Db250ZXh0RGVzdHJ1Y3Rpb25PYnNlcnZlci5oCSh3b3JraW5nIGNv
cHkpCkBAIC0zMywxMyArMzMsMTMgQEAgY2xhc3MgU2NyaXB0RXhlY3V0aW9uQ29udGV4dDsKIAog
Y2xhc3MgQ29udGV4dERlc3RydWN0aW9uT2JzZXJ2ZXIgewogcHVibGljOgotICAgIGV4cGxpY2l0
IENvbnRleHREZXN0cnVjdGlvbk9ic2VydmVyKFNjcmlwdEV4ZWN1dGlvbkNvbnRleHQqKTsKLSAg
ICB2aXJ0dWFsIHZvaWQgY29udGV4dERlc3Ryb3llZCgpOworICAgIFdFQkNPUkVfRVhQT1JUIGV4
cGxpY2l0IENvbnRleHREZXN0cnVjdGlvbk9ic2VydmVyKFNjcmlwdEV4ZWN1dGlvbkNvbnRleHQq
KTsKKyAgICBXRUJDT1JFX0VYUE9SVCB2aXJ0dWFsIHZvaWQgY29udGV4dERlc3Ryb3llZCgpOwog
CiAgICAgU2NyaXB0RXhlY3V0aW9uQ29udGV4dCogc2NyaXB0RXhlY3V0aW9uQ29udGV4dCgpIGNv
bnN0IHsgcmV0dXJuIG1fc2NyaXB0RXhlY3V0aW9uQ29udGV4dDsgfQogCiBwcm90ZWN0ZWQ6Ci0g
ICAgdmlydHVhbCB+Q29udGV4dERlc3RydWN0aW9uT2JzZXJ2ZXIoKTsKKyAgICBXRUJDT1JFX0VY
UE9SVCB2aXJ0dWFsIH5Db250ZXh0RGVzdHJ1Y3Rpb25PYnNlcnZlcigpOwogICAgIHZvaWQgb2Jz
ZXJ2ZUNvbnRleHQoU2NyaXB0RXhlY3V0aW9uQ29udGV4dCopOwogCiAgICAgU2NyaXB0RXhlY3V0
aW9uQ29udGV4dCogbV9zY3JpcHRFeGVjdXRpb25Db250ZXh0OwpJbmRleDogU291cmNlL1dlYkNv
cmUvZG9tL0RPTUltcGxlbWVudGF0aW9uLmgKPT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PQotLS0gU291cmNlL1dlYkNvcmUv
ZG9tL0RPTUltcGxlbWVudGF0aW9uLmgJKHJldmlzaW9uIDE3MjY1OCkKKysrIFNvdXJjZS9XZWJD
b3JlL2RvbS9ET01JbXBsZW1lbnRhdGlvbi5oCSh3b3JraW5nIGNvcHkpCkBAIC02OCw4ICs2OCw4
IEBAIHB1YmxpYzoKICAgICAvLyBPdGhlciBtZXRob2RzIChub3QgcGFydCBvZiBET00pCiAgICAg
c3RhdGljIFBhc3NSZWZQdHI8RG9jdW1lbnQ+IGNyZWF0ZURvY3VtZW50KGNvbnN0IFN0cmluZyYg
TUlNRVR5cGUsIEZyYW1lKiwgY29uc3QgVVJMJik7CiAKLSAgICBzdGF0aWMgYm9vbCBpc1hNTE1J
TUVUeXBlKGNvbnN0IFN0cmluZyYgTUlNRVR5cGUpOwotICAgIHN0YXRpYyBib29sIGlzVGV4dE1J
TUVUeXBlKGNvbnN0IFN0cmluZyYgTUlNRVR5cGUpOworICAgIFdFQkNPUkVfRVhQT1JUIHN0YXRp
YyBib29sIGlzWE1MTUlNRVR5cGUoY29uc3QgU3RyaW5nJiBNSU1FVHlwZSk7CisgICAgV0VCQ09S
RV9FWFBPUlQgc3RhdGljIGJvb2wgaXNUZXh0TUlNRVR5cGUoY29uc3QgU3RyaW5nJiBNSU1FVHlw
ZSk7CiAKIHByaXZhdGU6CiAgICAgRG9jdW1lbnQmIG1fZG9jdW1lbnQ7CkluZGV4OiBTb3VyY2Uv
V2ViQ29yZS9kb20vRGF0YVRyYW5zZmVyLmgKPT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PQotLS0gU291cmNlL1dlYkNvcmUv
ZG9tL0RhdGFUcmFuc2Zlci5oCShyZXZpc2lvbiAxNzI2NTgpCisrKyBTb3VyY2UvV2ViQ29yZS9k
b20vRGF0YVRyYW5zZmVyLmgJKHdvcmtpbmcgY29weSkKQEAgLTQ2LDcgKzQ2LDcgQEAgbmFtZXNw
YWNlIFdlYkNvcmUgewogICAgIHB1YmxpYzoKICAgICAgICAgc3RhdGljIFBhc3NSZWZQdHI8RGF0
YVRyYW5zZmVyPiBjcmVhdGVGb3JDb3B5QW5kUGFzdGUoRGF0YVRyYW5zZmVyQWNjZXNzUG9saWN5
KTsKIAotICAgICAgICB+RGF0YVRyYW5zZmVyKCk7CisgICAgICAgIFdFQkNPUkVfRVhQT1JUIH5E
YXRhVHJhbnNmZXIoKTsKIAogICAgICAgICBTdHJpbmcgZHJvcEVmZmVjdCgpIGNvbnN0OwogICAg
ICAgICB2b2lkIHNldERyb3BFZmZlY3QoY29uc3QgU3RyaW5nJik7CkluZGV4OiBTb3VyY2UvV2Vi
Q29yZS9kb20vRGV2aWNlTW90aW9uRGF0YS5oCj09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT0KLS0tIFNvdXJjZS9XZWJDb3Jl
L2RvbS9EZXZpY2VNb3Rpb25EYXRhLmgJKHJldmlzaW9uIDE3MjY1OCkKKysrIFNvdXJjZS9XZWJD
b3JlL2RvbS9EZXZpY2VNb3Rpb25EYXRhLmgJKHdvcmtpbmcgY29weSkKQEAgLTM2LDcgKzM2LDcg
QEAgY2xhc3MgRGV2aWNlTW90aW9uRGF0YSA6IHB1YmxpYyBSZWZDb3VudAogcHVibGljOgogICAg
IGNsYXNzIEFjY2VsZXJhdGlvbiA6IHB1YmxpYyBSZWZDb3VudGVkPERldmljZU1vdGlvbkRhdGE6
OkFjY2VsZXJhdGlvbj4gewogICAgIHB1YmxpYzoKLSAgICAgICAgc3RhdGljIFBhc3NSZWZQdHI8
QWNjZWxlcmF0aW9uPiBjcmVhdGUoYm9vbCBjYW5Qcm92aWRlWCwgZG91YmxlIHgsIGJvb2wgY2Fu
UHJvdmlkZVksIGRvdWJsZSB5LCBib29sIGNhblByb3ZpZGVaLCBkb3VibGUgeik7CisgICAgICAg
IFdFQkNPUkVfRVhQT1JUIHN0YXRpYyBQYXNzUmVmUHRyPEFjY2VsZXJhdGlvbj4gY3JlYXRlKGJv
b2wgY2FuUHJvdmlkZVgsIGRvdWJsZSB4LCBib29sIGNhblByb3ZpZGVZLCBkb3VibGUgeSwgYm9v
bCBjYW5Qcm92aWRlWiwgZG91YmxlIHopOwogCiAgICAgICAgIGJvb2wgY2FuUHJvdmlkZVgoKSBj
b25zdCB7IHJldHVybiBtX2NhblByb3ZpZGVYOyB9CiAgICAgICAgIGJvb2wgY2FuUHJvdmlkZVko
KSBjb25zdCB7IHJldHVybiBtX2NhblByb3ZpZGVZOyB9CkBAIC02MCw3ICs2MCw3IEBAIHB1Ymxp
YzoKIAogICAgIGNsYXNzIFJvdGF0aW9uUmF0ZSA6IHB1YmxpYyBSZWZDb3VudGVkPERldmljZU1v
dGlvbkRhdGE6OlJvdGF0aW9uUmF0ZT4gewogICAgIHB1YmxpYzoKLSAgICAgICAgc3RhdGljIFBh
c3NSZWZQdHI8Um90YXRpb25SYXRlPiBjcmVhdGUoYm9vbCBjYW5Qcm92aWRlQWxwaGEsIGRvdWJs
ZSBhbHBoYSwgYm9vbCBjYW5Qcm92aWRlQmV0YSwgIGRvdWJsZSBiZXRhLCBib29sIGNhblByb3Zp
ZGVHYW1tYSwgZG91YmxlIGdhbW1hKTsKKyAgICAgICAgV0VCQ09SRV9FWFBPUlQgc3RhdGljIFBh
c3NSZWZQdHI8Um90YXRpb25SYXRlPiBjcmVhdGUoYm9vbCBjYW5Qcm92aWRlQWxwaGEsIGRvdWJs
ZSBhbHBoYSwgYm9vbCBjYW5Qcm92aWRlQmV0YSwgIGRvdWJsZSBiZXRhLCBib29sIGNhblByb3Zp
ZGVHYW1tYSwgZG91YmxlIGdhbW1hKTsKIAogICAgICAgICBib29sIGNhblByb3ZpZGVBbHBoYSgp
IGNvbnN0IHsgcmV0dXJuIG1fY2FuUHJvdmlkZUFscGhhOyB9CiAgICAgICAgIGJvb2wgY2FuUHJv
dmlkZUJldGEoKSBjb25zdCB7IHJldHVybiBtX2NhblByb3ZpZGVCZXRhOyB9CkBAIC04Miw3ICs4
Miw3IEBAIHB1YmxpYzoKICAgICAgICAgYm9vbCBtX2NhblByb3ZpZGVHYW1tYTsKICAgICB9Owog
Ci0gICAgc3RhdGljIFBhc3NSZWZQdHI8RGV2aWNlTW90aW9uRGF0YT4gY3JlYXRlKCk7CisgICAg
V0VCQ09SRV9FWFBPUlQgc3RhdGljIFBhc3NSZWZQdHI8RGV2aWNlTW90aW9uRGF0YT4gY3JlYXRl
KCk7CiAgICAgc3RhdGljIFBhc3NSZWZQdHI8RGV2aWNlTW90aW9uRGF0YT4gY3JlYXRlKFBhc3NS
ZWZQdHI8QWNjZWxlcmF0aW9uPiBhY2NlbGVyYXRpb24sIFBhc3NSZWZQdHI8QWNjZWxlcmF0aW9u
PiBhY2NlbGVyYXRpb25JbmNsdWRpbmdHcmF2aXR5LAogICAgICAgICAgICAgICAgICAgICAgICAg
ICAgICAgICAgICAgICAgICAgICAgICBQYXNzUmVmUHRyPFJvdGF0aW9uUmF0ZT4gcm90YXRpb25S
YXRlLCBib29sIGNhblByb3ZpZGVJbnRlcnZhbCwgZG91YmxlIGludGVydmFsKTsKIApJbmRleDog
U291cmNlL1dlYkNvcmUvZG9tL0RldmljZU9yaWVudGF0aW9uRGF0YS5oCj09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT0KLS0t
IFNvdXJjZS9XZWJDb3JlL2RvbS9EZXZpY2VPcmllbnRhdGlvbkRhdGEuaAkocmV2aXNpb24gMTcy
NjU4KQorKysgU291cmNlL1dlYkNvcmUvZG9tL0RldmljZU9yaWVudGF0aW9uRGF0YS5oCSh3b3Jr
aW5nIGNvcHkpCkBAIC0zNSw5ICszNSw5IEBAIGNsYXNzIERldmljZU9yaWVudGF0aW9uRGF0YSA6
IHB1YmxpYyBSZWYKIHB1YmxpYzoKICAgICBzdGF0aWMgUGFzc1JlZlB0cjxEZXZpY2VPcmllbnRh
dGlvbkRhdGE+IGNyZWF0ZSgpOwogI2lmIFBMQVRGT1JNKElPUykKLSAgICBzdGF0aWMgUGFzc1Jl
ZlB0cjxEZXZpY2VPcmllbnRhdGlvbkRhdGE+IGNyZWF0ZShib29sIGNhblByb3ZpZGVBbHBoYSwg
ZG91YmxlIGFscGhhLCBib29sIGNhblByb3ZpZGVCZXRhLCBkb3VibGUgYmV0YSwgYm9vbCBjYW5Q
cm92aWRlR2FtbWEsIGRvdWJsZSBnYW1tYSwgYm9vbCBjYW5Qcm92aWRlQ29tcGFzc0hlYWRpbmcs
IGRvdWJsZSBjb21wYXNzSGVhZGluZywgYm9vbCBjYW5Qcm92aWRlQ29tcGFzc0FjY3VyYWN5LCBk
b3VibGUgY29tcGFzc0FjY3VyYWN5KTsKKyAgICBXRUJDT1JFX0VYUE9SVCBzdGF0aWMgUGFzc1Jl
ZlB0cjxEZXZpY2VPcmllbnRhdGlvbkRhdGE+IGNyZWF0ZShib29sIGNhblByb3ZpZGVBbHBoYSwg
ZG91YmxlIGFscGhhLCBib29sIGNhblByb3ZpZGVCZXRhLCBkb3VibGUgYmV0YSwgYm9vbCBjYW5Q
cm92aWRlR2FtbWEsIGRvdWJsZSBnYW1tYSwgYm9vbCBjYW5Qcm92aWRlQ29tcGFzc0hlYWRpbmcs
IGRvdWJsZSBjb21wYXNzSGVhZGluZywgYm9vbCBjYW5Qcm92aWRlQ29tcGFzc0FjY3VyYWN5LCBk
b3VibGUgY29tcGFzc0FjY3VyYWN5KTsKICNlbHNlCi0gICAgc3RhdGljIFBhc3NSZWZQdHI8RGV2
aWNlT3JpZW50YXRpb25EYXRhPiBjcmVhdGUoYm9vbCBjYW5Qcm92aWRlQWxwaGEsIGRvdWJsZSBh
bHBoYSwgYm9vbCBjYW5Qcm92aWRlQmV0YSwgZG91YmxlIGJldGEsIGJvb2wgY2FuUHJvdmlkZUdh
bW1hLCBkb3VibGUgZ2FtbWEsIGJvb2wgY2FuUHJvdmlkZUFic29sdXRlID0gZmFsc2UsIGJvb2wg
YWJzb2x1dGUgPSBmYWxzZSk7CisgICAgV0VCQ09SRV9FWFBPUlQgc3RhdGljIFBhc3NSZWZQdHI8
RGV2aWNlT3JpZW50YXRpb25EYXRhPiBjcmVhdGUoYm9vbCBjYW5Qcm92aWRlQWxwaGEsIGRvdWJs
ZSBhbHBoYSwgYm9vbCBjYW5Qcm92aWRlQmV0YSwgZG91YmxlIGJldGEsIGJvb2wgY2FuUHJvdmlk
ZUdhbW1hLCBkb3VibGUgZ2FtbWEsIGJvb2wgY2FuUHJvdmlkZUFic29sdXRlID0gZmFsc2UsIGJv
b2wgYWJzb2x1dGUgPSBmYWxzZSk7CiAjZW5kaWYKIAogICAgIGRvdWJsZSBhbHBoYSgpIGNvbnN0
OwpJbmRleDogU291cmNlL1dlYkNvcmUvZG9tL0RvY3VtZW50LmgKPT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PQotLS0gU291
cmNlL1dlYkNvcmUvZG9tL0RvY3VtZW50LmgJKHJldmlzaW9uIDE3MjY1OCkKKysrIFNvdXJjZS9X
ZWJDb3JlL2RvbS9Eb2N1bWVudC5oCSh3b3JraW5nIGNvcHkpCkBAIC0yOTksNyArMjk5LDcgQEAg
cHVibGljOgogCiAgICAgdm9pZCByZW1vdmVkTGFzdFJlZigpOwogCi0gICAgc3RhdGljIEhhc2hT
ZXQ8RG9jdW1lbnQqPiYgYWxsRG9jdW1lbnRzKCk7CisgICAgV0VCQ09SRV9FWFBPUlQgc3RhdGlj
IEhhc2hTZXQ8RG9jdW1lbnQqPiYgYWxsRG9jdW1lbnRzKCk7CiAKICAgICBNZWRpYVF1ZXJ5TWF0
Y2hlciYgbWVkaWFRdWVyeU1hdGNoZXIoKTsKIApAQCAtNDIxLDggKzQyMSw4IEBAIHB1YmxpYzoK
ICAgICBib29sIGhhc01hbmlmZXN0KCkgY29uc3Q7CiAgICAgCiAgICAgdmlydHVhbCBQYXNzUmVm
UHRyPEVsZW1lbnQ+IGNyZWF0ZUVsZW1lbnQoY29uc3QgQXRvbWljU3RyaW5nJiB0YWdOYW1lLCBF
eGNlcHRpb25Db2RlJik7Ci0gICAgUGFzc1JlZlB0cjxEb2N1bWVudEZyYWdtZW50PiBjcmVhdGVE
b2N1bWVudEZyYWdtZW50KCk7Ci0gICAgUGFzc1JlZlB0cjxUZXh0PiBjcmVhdGVUZXh0Tm9kZShj
b25zdCBTdHJpbmcmIGRhdGEpOworICAgIFdFQkNPUkVfRVhQT1JUIFBhc3NSZWZQdHI8RG9jdW1l
bnRGcmFnbWVudD4gY3JlYXRlRG9jdW1lbnRGcmFnbWVudCgpOworICAgIFdFQkNPUkVfRVhQT1JU
IFBhc3NSZWZQdHI8VGV4dD4gY3JlYXRlVGV4dE5vZGUoY29uc3QgU3RyaW5nJiBkYXRhKTsKICAg
ICBQYXNzUmVmUHRyPENvbW1lbnQ+IGNyZWF0ZUNvbW1lbnQoY29uc3QgU3RyaW5nJiBkYXRhKTsK
ICAgICBQYXNzUmVmUHRyPENEQVRBU2VjdGlvbj4gY3JlYXRlQ0RBVEFTZWN0aW9uKGNvbnN0IFN0
cmluZyYgZGF0YSwgRXhjZXB0aW9uQ29kZSYpOwogICAgIFBhc3NSZWZQdHI8UHJvY2Vzc2luZ0lu
c3RydWN0aW9uPiBjcmVhdGVQcm9jZXNzaW5nSW5zdHJ1Y3Rpb24oY29uc3QgU3RyaW5nJiB0YXJn
ZXQsIGNvbnN0IFN0cmluZyYgZGF0YSwgRXhjZXB0aW9uQ29kZSYpOwpAQCAtNDMxLDcgKzQzMSw3
IEBAIHB1YmxpYzoKICAgICBQYXNzUmVmUHRyPEVudGl0eVJlZmVyZW5jZT4gY3JlYXRlRW50aXR5
UmVmZXJlbmNlKGNvbnN0IFN0cmluZyYgbmFtZSwgRXhjZXB0aW9uQ29kZSYpOwogICAgIFBhc3NS
ZWZQdHI8Tm9kZT4gaW1wb3J0Tm9kZShOb2RlKiBpbXBvcnRlZE5vZGUsIEV4Y2VwdGlvbkNvZGUm
IGVjKSB7IHJldHVybiBpbXBvcnROb2RlKGltcG9ydGVkTm9kZSwgdHJ1ZSwgZWMpOyB9CiAgICAg
UGFzc1JlZlB0cjxOb2RlPiBpbXBvcnROb2RlKE5vZGUqIGltcG9ydGVkTm9kZSwgYm9vbCBkZWVw
LCBFeGNlcHRpb25Db2RlJik7Ci0gICAgUGFzc1JlZlB0cjxFbGVtZW50PiBjcmVhdGVFbGVtZW50
TlMoY29uc3QgU3RyaW5nJiBuYW1lc3BhY2VVUkksIGNvbnN0IFN0cmluZyYgcXVhbGlmaWVkTmFt
ZSwgRXhjZXB0aW9uQ29kZSYpOworICAgIFdFQkNPUkVfRVhQT1JUIFBhc3NSZWZQdHI8RWxlbWVu
dD4gY3JlYXRlRWxlbWVudE5TKGNvbnN0IFN0cmluZyYgbmFtZXNwYWNlVVJJLCBjb25zdCBTdHJp
bmcmIHF1YWxpZmllZE5hbWUsIEV4Y2VwdGlvbkNvZGUmKTsKICAgICBQYXNzUmVmUHRyPEVsZW1l
bnQ+IGNyZWF0ZUVsZW1lbnQoY29uc3QgUXVhbGlmaWVkTmFtZSYsIGJvb2wgY3JlYXRlZEJ5UGFy
c2VyKTsKIAogICAgIGJvb2wgY3NzUmVnaW9uc0VuYWJsZWQoKSBjb25zdDsKQEAgLTU1OCw3ICs1
NTgsNyBAQCBwdWJsaWM6CiAgICAgICogY29uc3RydWN0ZWQgZnJvbSB0aGVzZSB3aGljaCBpcyB1
c2VkIHRvIGNyZWF0ZSB0aGUgYSBuZXcgc3R5bGUgc2VsZWN0b3Igd2hpY2ggY29sbGF0ZXMgYWxs
IG9mIHRoZSBzdHlsZXNoZWV0cwogICAgICAqIGZvdW5kIGFuZCBpcyB1c2VkIHRvIGNhbGN1bGF0
ZSB0aGUgZGVyaXZlZCBzdHlsZXMgZm9yIGFsbCByZW5kZXJpbmcgb2JqZWN0cy4KICAgICAgKi8K
LSAgICB2b2lkIHN0eWxlUmVzb2x2ZXJDaGFuZ2VkKFN0eWxlUmVzb2x2ZXJVcGRhdGVGbGFnKTsK
KyAgICBXRUJDT1JFX0VYUE9SVCB2b2lkIHN0eWxlUmVzb2x2ZXJDaGFuZ2VkKFN0eWxlUmVzb2x2
ZXJVcGRhdGVGbGFnKTsKIAogICAgIHZvaWQgc2NoZWR1bGVPcHRpbWl6ZWRTdHlsZVNoZWV0VXBk
YXRlKCk7CiAKQEAgLTU2OCwxNCArNTY4LDE0IEBAIHB1YmxpYzoKICAgICBWZWN0b3I8U3RyaW5n
PiBmb3JtRWxlbWVudHNTdGF0ZSgpIGNvbnN0OwogICAgIHZvaWQgc2V0U3RhdGVGb3JOZXdGb3Jt
RWxlbWVudHMoY29uc3QgVmVjdG9yPFN0cmluZz4mKTsKIAotICAgIEZyYW1lVmlldyogdmlldygp
IGNvbnN0OyAvLyBjYW4gYmUgTlVMTAorICAgIFdFQkNPUkVfRVhQT1JUIEZyYW1lVmlldyogdmll
dygpIGNvbnN0OyAvLyBjYW4gYmUgTlVMTAogICAgIEZyYW1lKiBmcmFtZSgpIGNvbnN0IHsgcmV0
dXJuIG1fZnJhbWU7IH0gLy8gY2FuIGJlIE5VTEwKLSAgICBQYWdlKiBwYWdlKCkgY29uc3Q7IC8v
IGNhbiBiZSBOVUxMCi0gICAgU2V0dGluZ3MqIHNldHRpbmdzKCkgY29uc3Q7IC8vIGNhbiBiZSBO
VUxMCisgICAgV0VCQ09SRV9FWFBPUlQgUGFnZSogcGFnZSgpIGNvbnN0OyAvLyBjYW4gYmUgTlVM
TAorICAgIFdFQkNPUkVfRVhQT1JUIFNldHRpbmdzKiBzZXR0aW5ncygpIGNvbnN0OyAvLyBjYW4g
YmUgTlVMTAogCiAgICAgZmxvYXQgZGV2aWNlU2NhbGVGYWN0b3IoKSBjb25zdDsKIAotICAgIFBh
c3NSZWZQdHI8UmFuZ2U+IGNyZWF0ZVJhbmdlKCk7CisgICAgV0VCQ09SRV9FWFBPUlQgUGFzc1Jl
ZlB0cjxSYW5nZT4gY3JlYXRlUmFuZ2UoKTsKIAogICAgIFBhc3NSZWZQdHI8Tm9kZUl0ZXJhdG9y
PiBjcmVhdGVOb2RlSXRlcmF0b3IoTm9kZSogcm9vdCwgdW5zaWduZWQgd2hhdFRvU2hvdywKICAg
ICAgICAgUGFzc1JlZlB0cjxOb2RlRmlsdGVyPiwgYm9vbCBleHBhbmRFbnRpdHlSZWZlcmVuY2Vz
LCBFeGNlcHRpb25Db2RlJik7CkBAIC01ODgsMjQgKzU4OCwyNCBAQCBwdWJsaWM6CiAgICAgUGFz
c1JlZlB0cjxUZXh0PiBjcmVhdGVFZGl0aW5nVGV4dE5vZGUoY29uc3QgU3RyaW5nJik7CiAKICAg
ICB2b2lkIHJlY2FsY1N0eWxlKFN0eWxlOjpDaGFuZ2UgPSBTdHlsZTo6Tm9DaGFuZ2UpOwotICAg
IHZvaWQgdXBkYXRlU3R5bGVJZk5lZWRlZCgpOworICAgIFdFQkNPUkVfRVhQT1JUIHZvaWQgdXBk
YXRlU3R5bGVJZk5lZWRlZCgpOwogICAgIGJvb2wgdXBkYXRlU3R5bGVJZk5lZWRlZEZvck5vZGUo
Y29uc3QgTm9kZSYpOwotICAgIHZvaWQgdXBkYXRlTGF5b3V0KCk7CisgICAgV0VCQ09SRV9FWFBP
UlQgdm9pZCB1cGRhdGVMYXlvdXQoKTsKICAgICBlbnVtIFJ1blBvc3RMYXlvdXRUYXNrcyB7CiAg
ICAgICAgIFJ1blBvc3RMYXlvdXRUYXNrc0FzeW5jaHJvbm91c2x5LAogICAgICAgICBSdW5Qb3N0
TGF5b3V0VGFza3NTeW5jaHJvbm91c2x5LAogICAgIH07Ci0gICAgdm9pZCB1cGRhdGVMYXlvdXRJ
Z25vcmVQZW5kaW5nU3R5bGVzaGVldHMoUnVuUG9zdExheW91dFRhc2tzID0gUnVuUG9zdExheW91
dFRhc2tzQXN5bmNocm9ub3VzbHkpOworICAgIFdFQkNPUkVfRVhQT1JUIHZvaWQgdXBkYXRlTGF5
b3V0SWdub3JlUGVuZGluZ1N0eWxlc2hlZXRzKFJ1blBvc3RMYXlvdXRUYXNrcyA9IFJ1blBvc3RM
YXlvdXRUYXNrc0FzeW5jaHJvbm91c2x5KTsKICAgICBQYXNzUmVmPFJlbmRlclN0eWxlPiBzdHls
ZUZvckVsZW1lbnRJZ25vcmluZ1BlbmRpbmdTdHlsZXNoZWV0cyhFbGVtZW50Kik7CiAKICAgICAv
LyBSZXR1cm5zIHRydWUgaWYgcGFnZSBib3ggKG1hcmdpbiBib3hlcyBhbmQgcGFnZSBib3JkZXJz
KSBpcyB2aXNpYmxlLgotICAgIGJvb2wgaXNQYWdlQm94VmlzaWJsZShpbnQgcGFnZUluZGV4KTsK
KyAgICBXRUJDT1JFX0VYUE9SVCBib29sIGlzUGFnZUJveFZpc2libGUoaW50IHBhZ2VJbmRleCk7
CiAKICAgICAvLyBSZXR1cm5zIHRoZSBwcmVmZXJyZWQgcGFnZSBzaXplIGFuZCBtYXJnaW5zIGlu
IHBpeGVscywgYXNzdW1pbmcgOTYKICAgICAvLyBwaXhlbHMgcGVyIGluY2guIHBhZ2VTaXplLCBt
YXJnaW5Ub3AsIG1hcmdpblJpZ2h0LCBtYXJnaW5Cb3R0b20sCiAgICAgLy8gbWFyZ2luTGVmdCBt
dXN0IGJlIGluaXRpYWxpemVkIHRvIHRoZSBkZWZhdWx0IHZhbHVlcyB0aGF0IGFyZSB1c2VkIGlm
CiAgICAgLy8gYXV0byBpcyBzcGVjaWZpZWQuCi0gICAgdm9pZCBwYWdlU2l6ZUFuZE1hcmdpbnNJ
blBpeGVscyhpbnQgcGFnZUluZGV4LCBJbnRTaXplJiBwYWdlU2l6ZSwgaW50JiBtYXJnaW5Ub3As
IGludCYgbWFyZ2luUmlnaHQsIGludCYgbWFyZ2luQm90dG9tLCBpbnQmIG1hcmdpbkxlZnQpOwor
ICAgIFdFQkNPUkVfRVhQT1JUIHZvaWQgcGFnZVNpemVBbmRNYXJnaW5zSW5QaXhlbHMoaW50IHBh
Z2VJbmRleCwgSW50U2l6ZSYgcGFnZVNpemUsIGludCYgbWFyZ2luVG9wLCBpbnQmIG1hcmdpblJp
Z2h0LCBpbnQmIG1hcmdpbkJvdHRvbSwgaW50JiBtYXJnaW5MZWZ0KTsKIAogICAgIENhY2hlZFJl
c291cmNlTG9hZGVyKiBjYWNoZWRSZXNvdXJjZUxvYWRlcigpIHsgcmV0dXJuIG1fY2FjaGVkUmVz
b3VyY2VMb2FkZXIuZ2V0KCk7IH0KIApAQCAtNjI1LDE0ICs2MjUsMTQgQEAgcHVibGljOgogICAg
IGJvb2wgaGFzTGl2aW5nUmVuZGVyVHJlZSgpIGNvbnN0IHsgcmV0dXJuIHJlbmRlclZpZXcoKSAm
JiAhcmVuZGVyVHJlZUJlaW5nRGVzdHJveWVkKCk7IH0KIAogICAgIEFYT2JqZWN0Q2FjaGUqIGV4
aXN0aW5nQVhPYmplY3RDYWNoZSgpIGNvbnN0OwotICAgIEFYT2JqZWN0Q2FjaGUqIGF4T2JqZWN0
Q2FjaGUoKSBjb25zdDsKKyAgICBXRUJDT1JFX0VYUE9SVCBBWE9iamVjdENhY2hlKiBheE9iamVj
dENhY2hlKCkgY29uc3Q7CiAgICAgdm9pZCBjbGVhckFYT2JqZWN0Q2FjaGUoKTsKIAogICAgIC8v
IHRvIGdldCB2aXN1YWxseSBvcmRlcmVkIGhlYnJldyBhbmQgYXJhYmljIHBhZ2VzIHJpZ2h0CiAg
ICAgdm9pZCBzZXRWaXN1YWxseU9yZGVyZWQoKTsKICAgICBib29sIHZpc3VhbGx5T3JkZXJlZCgp
IGNvbnN0IHsgcmV0dXJuIG1fdmlzdWFsbHlPcmRlcmVkOyB9CiAgICAgCi0gICAgRG9jdW1lbnRM
b2FkZXIqIGxvYWRlcigpIGNvbnN0OworICAgIFdFQkNPUkVfRVhQT1JUIERvY3VtZW50TG9hZGVy
KiBsb2FkZXIoKSBjb25zdDsKIAogICAgIHZvaWQgb3BlbihEb2N1bWVudCogb3duZXJEb2N1bWVu
dCA9IDApOwogICAgIHZvaWQgaW1wbGljaXRPcGVuKCk7CkBAIC02NjYsNyArNjY2LDcgQEAgcHVi
bGljOgogICAgIGNvbnN0IFN0cmluZyYgYmFzZVRhcmdldCgpIGNvbnN0IHsgcmV0dXJuIG1fYmFz
ZVRhcmdldDsgfQogICAgIHZvaWQgcHJvY2Vzc0Jhc2VFbGVtZW50KCk7CiAKLSAgICB2aXJ0dWFs
IFVSTCBjb21wbGV0ZVVSTChjb25zdCBTdHJpbmcmKSBjb25zdCBvdmVycmlkZSBmaW5hbDsKKyAg
ICBXRUJDT1JFX0VYUE9SVCB2aXJ0dWFsIFVSTCBjb21wbGV0ZVVSTChjb25zdCBTdHJpbmcmKSBj
b25zdCBvdmVycmlkZSBmaW5hbDsKICAgICBVUkwgY29tcGxldGVVUkwoY29uc3QgU3RyaW5nJiwg
Y29uc3QgVVJMJiBiYXNlVVJMT3ZlcnJpZGUpIGNvbnN0OwogCiAgICAgdmlydHVhbCBTdHJpbmcg
dXNlckFnZW50KGNvbnN0IFVSTCYpIGNvbnN0IG92ZXJyaWRlOwpAQCAtNzM4LDcgKzczOCw3IEBA
IHB1YmxpYzoKICAgICBTdHJpbmcgc2VsZWN0ZWRTdHlsZXNoZWV0U2V0KCkgY29uc3Q7CiAgICAg
dm9pZCBzZXRTZWxlY3RlZFN0eWxlc2hlZXRTZXQoY29uc3QgU3RyaW5nJik7CiAKLSAgICBib29s
IHNldEZvY3VzZWRFbGVtZW50KFBhc3NSZWZQdHI8RWxlbWVudD4sIEZvY3VzRGlyZWN0aW9uID0g
Rm9jdXNEaXJlY3Rpb25Ob25lKTsKKyAgICBXRUJDT1JFX0VYUE9SVCBib29sIHNldEZvY3VzZWRF
bGVtZW50KFBhc3NSZWZQdHI8RWxlbWVudD4sIEZvY3VzRGlyZWN0aW9uID0gRm9jdXNEaXJlY3Rp
b25Ob25lKTsKICAgICBFbGVtZW50KiBmb2N1c2VkRWxlbWVudCgpIGNvbnN0IHsgcmV0dXJuIG1f
Zm9jdXNlZEVsZW1lbnQuZ2V0KCk7IH0KICAgICBVc2VyQWN0aW9uRWxlbWVudFNldCYgdXNlckFj
dGlvbkVsZW1lbnRzKCkgIHsgcmV0dXJuIG1fdXNlckFjdGlvbkVsZW1lbnRzOyB9CiAgICAgY29u
c3QgVXNlckFjdGlvbkVsZW1lbnRTZXQmIHVzZXJBY3Rpb25FbGVtZW50cygpIGNvbnN0IHsgcmV0
dXJuIG1fdXNlckFjdGlvbkVsZW1lbnRzOyB9CkBAIC03NTksNyArNzU5LDcgQEAgcHVibGljOgog
ICAgIEVsZW1lbnQqIGNzc1RhcmdldCgpIGNvbnN0IHsgcmV0dXJuIG1fY3NzVGFyZ2V0OyB9CiAg
ICAgc3RhdGljIHB0cmRpZmZfdCBjc3NUYXJnZXRNZW1vcnlPZmZzZXQoKSB7IHJldHVybiBPQkpF
Q1RfT0ZGU0VUT0YoRG9jdW1lbnQsIG1fY3NzVGFyZ2V0KTsgfQogCi0gICAgdm9pZCBzY2hlZHVs
ZUZvcmNlZFN0eWxlUmVjYWxjKCk7CisgICAgV0VCQ09SRV9FWFBPUlQgdm9pZCBzY2hlZHVsZUZv
cmNlZFN0eWxlUmVjYWxjKCk7CiAgICAgdm9pZCBzY2hlZHVsZVN0eWxlUmVjYWxjKCk7CiAgICAg
dm9pZCB1bnNjaGVkdWxlU3R5bGVSZWNhbGMoKTsKICAgICBib29sIGhhc1BlbmRpbmdTdHlsZVJl
Y2FsYygpIGNvbnN0OwpAQCAtODA2LDcgKzgwNiw3IEBAIHB1YmxpYzoKICAgICB2b2lkIHNldFdp
bmRvd0F0dHJpYnV0ZUV2ZW50TGlzdGVuZXIoY29uc3QgQXRvbWljU3RyaW5nJiBldmVudFR5cGUs
IGNvbnN0IFF1YWxpZmllZE5hbWUmIGF0dHJpYnV0ZU5hbWUsIGNvbnN0IEF0b21pY1N0cmluZyYg
dmFsdWUpOwogICAgIHZvaWQgc2V0V2luZG93QXR0cmlidXRlRXZlbnRMaXN0ZW5lcihjb25zdCBB
dG9taWNTdHJpbmcmIGV2ZW50VHlwZSwgUGFzc1JlZlB0cjxFdmVudExpc3RlbmVyPik7CiAgICAg
RXZlbnRMaXN0ZW5lciogZ2V0V2luZG93QXR0cmlidXRlRXZlbnRMaXN0ZW5lcihjb25zdCBBdG9t
aWNTdHJpbmcmIGV2ZW50VHlwZSk7Ci0gICAgdm9pZCBkaXNwYXRjaFdpbmRvd0V2ZW50KFBhc3NS
ZWZQdHI8RXZlbnQ+LCBQYXNzUmVmUHRyPEV2ZW50VGFyZ2V0PiA9IDApOworICAgIFdFQkNPUkVf
RVhQT1JUIHZvaWQgZGlzcGF0Y2hXaW5kb3dFdmVudChQYXNzUmVmUHRyPEV2ZW50PiwgUGFzc1Jl
ZlB0cjxFdmVudFRhcmdldD4gPSAwKTsKICAgICB2b2lkIGRpc3BhdGNoV2luZG93TG9hZEV2ZW50
KCk7CiAKICAgICBQYXNzUmVmUHRyPEV2ZW50PiBjcmVhdGVFdmVudChjb25zdCBTdHJpbmcmIGV2
ZW50VHlwZSwgRXhjZXB0aW9uQ29kZSYpOwpAQCAtODgyLDcgKzg4Miw3IEBAIHB1YmxpYzoKIAog
ICAgIFN0cmluZyBvcmlnaW4oKSBjb25zdDsKIAotICAgIFN0cmluZyBkb21haW4oKSBjb25zdDsK
KyAgICBXRUJDT1JFX0VYUE9SVCBTdHJpbmcgZG9tYWluKCkgY29uc3Q7CiAgICAgdm9pZCBzZXRE
b21haW4oY29uc3QgU3RyaW5nJiBuZXdEb21haW4sIEV4Y2VwdGlvbkNvZGUmKTsKIAogICAgIFN0
cmluZyBsYXN0TW9kaWZpZWQoKSBjb25zdDsKQEAgLTkyNywxMCArOTI3LDEwIEBAIHB1YmxpYzoK
ICAgICBzdGF0aWMgYm9vbCBoYXNWYWxpZE5hbWVzcGFjZUZvckVsZW1lbnRzKGNvbnN0IFF1YWxp
ZmllZE5hbWUmKTsKICAgICBzdGF0aWMgYm9vbCBoYXNWYWxpZE5hbWVzcGFjZUZvckF0dHJpYnV0
ZXMoY29uc3QgUXVhbGlmaWVkTmFtZSYpOwogCi0gICAgSFRNTEVsZW1lbnQqIGJvZHkoKSBjb25z
dDsKKyAgICBXRUJDT1JFX0VYUE9SVCBIVE1MRWxlbWVudCogYm9keSgpIGNvbnN0OwogICAgIHZv
aWQgc2V0Qm9keShQYXNzUmVmUHRyPEhUTUxFbGVtZW50PiwgRXhjZXB0aW9uQ29kZSYpOwogCi0g
ICAgSFRNTEhlYWRFbGVtZW50KiBoZWFkKCk7CisgICAgV0VCQ09SRV9FWFBPUlQgSFRNTEhlYWRF
bGVtZW50KiBoZWFkKCk7CiAKICAgICBEb2N1bWVudE1hcmtlckNvbnRyb2xsZXImIG1hcmtlcnMo
KSBjb25zdCB7IHJldHVybiAqbV9tYXJrZXJzOyB9CiAKQEAgLTk5Miw3ICs5OTIsNyBAQCBwdWJs
aWM6CiAgICAgYm9vbCBoYXNOb2Rlc1dpdGhQbGFjZWhvbGRlclN0eWxlKCkgY29uc3QgeyByZXR1
cm4gbV9oYXNOb2Rlc1dpdGhQbGFjZWhvbGRlclN0eWxlOyB9CiAgICAgdm9pZCBzZXRIYXNOb2Rl
c1dpdGhQbGFjZWhvbGRlclN0eWxlKCkgeyBtX2hhc05vZGVzV2l0aFBsYWNlaG9sZGVyU3R5bGUg
PSB0cnVlOyB9CiAKLSAgICBjb25zdCBWZWN0b3I8SWNvblVSTD4mIHNob3J0Y3V0SWNvblVSTHMo
KTsKKyAgICBXRUJDT1JFX0VYUE9SVCBjb25zdCBWZWN0b3I8SWNvblVSTD4mIHNob3J0Y3V0SWNv
blVSTHMoKTsKICAgICBjb25zdCBWZWN0b3I8SWNvblVSTD4mIGljb25VUkxzKGludCBpY29uVHlw
ZXNNYXNrKTsKICAgICB2b2lkIGFkZEljb25VUkwoY29uc3QgU3RyaW5nJiB1cmwsIGNvbnN0IFN0
cmluZyYgbWltZVR5cGUsIGNvbnN0IFN0cmluZyYgc2l6ZSwgSWNvblR5cGUpOwogCkBAIC0xMDUy
LDEzICsxMDUyLDEzIEBAIHB1YmxpYzoKICAgICB2b2lkIHJlZ2lzdGVyRm9yVmlzaWJpbGl0eVN0
YXRlQ2hhbmdlZENhbGxiYWNrcyhFbGVtZW50Kik7CiAgICAgdm9pZCB1bnJlZ2lzdGVyRm9yVmlz
aWJpbGl0eVN0YXRlQ2hhbmdlZENhbGxiYWNrcyhFbGVtZW50Kik7CiAKLSAgICB2b2lkIHNldFNo
b3VsZENyZWF0ZVJlbmRlcmVycyhib29sKTsKKyAgICBXRUJDT1JFX0VYUE9SVCB2b2lkIHNldFNo
b3VsZENyZWF0ZVJlbmRlcmVycyhib29sKTsKICAgICBib29sIHNob3VsZENyZWF0ZVJlbmRlcmVy
cygpOwogCiAgICAgdm9pZCBzZXREZWNvZGVyKFBhc3NSZWZQdHI8VGV4dFJlc291cmNlRGVjb2Rl
cj4pOwogICAgIFRleHRSZXNvdXJjZURlY29kZXIqIGRlY29kZXIoKSBjb25zdCB7IHJldHVybiBt
X2RlY29kZXIuZ2V0KCk7IH0KIAotICAgIFN0cmluZyBkaXNwbGF5U3RyaW5nTW9kaWZpZWRCeUVu
Y29kaW5nKGNvbnN0IFN0cmluZyYpIGNvbnN0OworICAgIFdFQkNPUkVfRVhQT1JUIFN0cmluZyBk
aXNwbGF5U3RyaW5nTW9kaWZpZWRCeUVuY29kaW5nKGNvbnN0IFN0cmluZyYpIGNvbnN0OwogICAg
IFBhc3NSZWZQdHI8U3RyaW5nSW1wbD4gZGlzcGxheVN0cmluZ01vZGlmaWVkQnlFbmNvZGluZyhQ
YXNzUmVmUHRyPFN0cmluZ0ltcGw+KSBjb25zdDsKICAgICB2b2lkIGRpc3BsYXlCdWZmZXJNb2Rp
ZmllZEJ5RW5jb2RpbmcoTENoYXIqIGJ1ZmZlciwgdW5zaWduZWQgbGVuKSBjb25zdAogICAgIHsK
QEAgLTEwNzQsNyArMTA3NCw3IEBAIHB1YmxpYzoKICAgICBib29sIGZyYW1lRWxlbWVudHNTaG91
bGRJZ25vcmVTY3JvbGxpbmcoKSBjb25zdCB7IHJldHVybiBtX2ZyYW1lRWxlbWVudHNTaG91bGRJ
Z25vcmVTY3JvbGxpbmc7IH0KIAogI2lmIEVOQUJMRShEQVNIQk9BUkRfU1VQUE9SVCkKLSAgICB2
b2lkIHNldEFubm90YXRlZFJlZ2lvbnNEaXJ0eShib29sIGYpIHsgbV9hbm5vdGF0ZWRSZWdpb25z
RGlydHkgPSBmOyB9CisgICAgV0VCQ09SRV9FWFBPUlQgdm9pZCBzZXRBbm5vdGF0ZWRSZWdpb25z
RGlydHkoYm9vbCBmKSB7IG1fYW5ub3RhdGVkUmVnaW9uc0RpcnR5ID0gZjsgfQogICAgIGJvb2wg
YW5ub3RhdGVkUmVnaW9uc0RpcnR5KCkgY29uc3QgeyByZXR1cm4gbV9hbm5vdGF0ZWRSZWdpb25z
RGlydHk7IH0KICAgICBib29sIGhhc0Fubm90YXRlZFJlZ2lvbnMgKCkgY29uc3QgeyByZXR1cm4g
bV9oYXNBbm5vdGF0ZWRSZWdpb25zOyB9CiAgICAgdm9pZCBzZXRIYXNBbm5vdGF0ZWRSZWdpb25z
KGJvb2wgZikgeyBtX2hhc0Fubm90YXRlZFJlZ2lvbnMgPSBmOyB9CkBAIC0xMDg0LDggKzEwODQs
OCBAQCBwdWJsaWM6CiAKICAgICB2aXJ0dWFsIHZvaWQgcmVtb3ZlQWxsRXZlbnRMaXN0ZW5lcnMo
KSBvdmVycmlkZTsKIAotICAgIGNvbnN0IFNWR0RvY3VtZW50RXh0ZW5zaW9ucyogc3ZnRXh0ZW5z
aW9ucygpOwotICAgIFNWR0RvY3VtZW50RXh0ZW5zaW9ucyogYWNjZXNzU1ZHRXh0ZW5zaW9ucygp
OworICAgIFdFQkNPUkVfRVhQT1JUIGNvbnN0IFNWR0RvY3VtZW50RXh0ZW5zaW9ucyogc3ZnRXh0
ZW5zaW9ucygpOworICAgIFdFQkNPUkVfRVhQT1JUIFNWR0RvY3VtZW50RXh0ZW5zaW9ucyogYWNj
ZXNzU1ZHRXh0ZW5zaW9ucygpOwogCiAgICAgdm9pZCBpbml0U2VjdXJpdHlDb250ZXh0KCk7CiAg
ICAgdm9pZCBpbml0Q29udGVudFNlY3VyaXR5UG9saWN5KCk7CkBAIC0xMTEwLDggKzExMTAsOCBA
QCBwdWJsaWM6CiAgICAgdm9pZCBlbnF1ZXVlUG9wc3RhdGVFdmVudChQYXNzUmVmUHRyPFNlcmlh
bGl6ZWRTY3JpcHRWYWx1ZT4gc3RhdGVPYmplY3QpOwogICAgIHZpcnR1YWwgRG9jdW1lbnRFdmVu
dFF1ZXVlJiBldmVudFF1ZXVlKCkgY29uc3Qgb3ZlcnJpZGUgeyByZXR1cm4gbV9ldmVudFF1ZXVl
OyB9CiAKLSAgICB2b2lkIGFkZE1lZGlhQ2FuU3RhcnRMaXN0ZW5lcihNZWRpYUNhblN0YXJ0TGlz
dGVuZXIqKTsKLSAgICB2b2lkIHJlbW92ZU1lZGlhQ2FuU3RhcnRMaXN0ZW5lcihNZWRpYUNhblN0
YXJ0TGlzdGVuZXIqKTsKKyAgICBXRUJDT1JFX0VYUE9SVCB2b2lkIGFkZE1lZGlhQ2FuU3RhcnRM
aXN0ZW5lcihNZWRpYUNhblN0YXJ0TGlzdGVuZXIqKTsKKyAgICBXRUJDT1JFX0VYUE9SVCB2b2lk
IHJlbW92ZU1lZGlhQ2FuU3RhcnRMaXN0ZW5lcihNZWRpYUNhblN0YXJ0TGlzdGVuZXIqKTsKICAg
ICBNZWRpYUNhblN0YXJ0TGlzdGVuZXIqIHRha2VBbnlNZWRpYUNhblN0YXJ0TGlzdGVuZXIoKTsK
IAogI2lmIEVOQUJMRShGVUxMU0NSRUVOX0FQSSkKQEAgLTExMjUsMTIgKzExMjUsMTIgQEAgcHVi
bGljOgogICAgIH07CiAKICAgICB2b2lkIHJlcXVlc3RGdWxsU2NyZWVuRm9yRWxlbWVudChFbGVt
ZW50KiwgdW5zaWduZWQgc2hvcnQgZmxhZ3MsIEZ1bGxTY3JlZW5DaGVja1R5cGUpOwotICAgIHZv
aWQgd2Via2l0Q2FuY2VsRnVsbFNjcmVlbigpOworICAgIFdFQkNPUkVfRVhQT1JUIHZvaWQgd2Vi
a2l0Q2FuY2VsRnVsbFNjcmVlbigpOwogICAgIAotICAgIHZvaWQgd2Via2l0V2lsbEVudGVyRnVs
bFNjcmVlbkZvckVsZW1lbnQoRWxlbWVudCopOwotICAgIHZvaWQgd2Via2l0RGlkRW50ZXJGdWxs
U2NyZWVuRm9yRWxlbWVudChFbGVtZW50Kik7Ci0gICAgdm9pZCB3ZWJraXRXaWxsRXhpdEZ1bGxT
Y3JlZW5Gb3JFbGVtZW50KEVsZW1lbnQqKTsKLSAgICB2b2lkIHdlYmtpdERpZEV4aXRGdWxsU2Ny
ZWVuRm9yRWxlbWVudChFbGVtZW50Kik7CisgICAgV0VCQ09SRV9FWFBPUlQgdm9pZCB3ZWJraXRX
aWxsRW50ZXJGdWxsU2NyZWVuRm9yRWxlbWVudChFbGVtZW50Kik7CisgICAgV0VCQ09SRV9FWFBP
UlQgdm9pZCB3ZWJraXREaWRFbnRlckZ1bGxTY3JlZW5Gb3JFbGVtZW50KEVsZW1lbnQqKTsKKyAg
ICBXRUJDT1JFX0VYUE9SVCB2b2lkIHdlYmtpdFdpbGxFeGl0RnVsbFNjcmVlbkZvckVsZW1lbnQo
RWxlbWVudCopOworICAgIFdFQkNPUkVfRVhQT1JUIHZvaWQgd2Via2l0RGlkRXhpdEZ1bGxTY3Jl
ZW5Gb3JFbGVtZW50KEVsZW1lbnQqKTsKICAgICAKICAgICB2b2lkIHNldEZ1bGxTY3JlZW5SZW5k
ZXJlcihSZW5kZXJGdWxsU2NyZWVuKik7CiAgICAgUmVuZGVyRnVsbFNjcmVlbiogZnVsbFNjcmVl
blJlbmRlcmVyKCkgY29uc3QgeyByZXR1cm4gbV9mdWxsU2NyZWVuUmVuZGVyZXI7IH0KQEAgLTEx
NDEsNyArMTE0MSw3IEBAIHB1YmxpYzoKICAgICB2b2lkIGZ1bGxTY3JlZW5FbGVtZW50UmVtb3Zl
ZCgpOwogICAgIHZvaWQgcmVtb3ZlRnVsbFNjcmVlbkVsZW1lbnRPZlN1YnRyZWUoTm9kZSosIGJv
b2wgYW1vbmdDaGlsZHJlbk9ubHkgPSBmYWxzZSk7CiAgICAgYm9vbCBpc0FuaW1hdGluZ0Z1bGxT
Y3JlZW4oKSBjb25zdDsKLSAgICB2b2lkIHNldEFuaW1hdGluZ0Z1bGxTY3JlZW4oYm9vbCk7Cisg
ICAgV0VCQ09SRV9FWFBPUlQgdm9pZCBzZXRBbmltYXRpbmdGdWxsU2NyZWVuKGJvb2wpOwogCiAg
ICAgLy8gVzNDIEFQSQogICAgIGJvb2wgd2Via2l0RnVsbHNjcmVlbkVuYWJsZWQoKSBjb25zdDsK
QEAgLTExOTAsOCArMTE5MCw4IEBAIHB1YmxpYzoKICAgICB2b2lkIGluaXRETlNQcmVmZXRjaCgp
OwogCiAgICAgdW5zaWduZWQgd2hlZWxFdmVudEhhbmRsZXJDb3VudCgpIGNvbnN0IHsgcmV0dXJu
IG1fd2hlZWxFdmVudEhhbmRsZXJDb3VudDsgfQotICAgIHZvaWQgZGlkQWRkV2hlZWxFdmVudEhh
bmRsZXIoKTsKLSAgICB2b2lkIGRpZFJlbW92ZVdoZWVsRXZlbnRIYW5kbGVyKCk7CisgICAgV0VC
Q09SRV9FWFBPUlQgdm9pZCBkaWRBZGRXaGVlbEV2ZW50SGFuZGxlcigpOworICAgIFdFQkNPUkVf
RVhQT1JUIHZvaWQgZGlkUmVtb3ZlV2hlZWxFdmVudEhhbmRsZXIoKTsKIAogICAgIGRvdWJsZSBs
YXN0SGFuZGxlZFVzZXJHZXN0dXJlVGltZXN0YW1wKCkgY29uc3QgeyByZXR1cm4gbV9sYXN0SGFu
ZGxlZFVzZXJHZXN0dXJlVGltZXN0YW1wOyB9CiAgICAgdm9pZCByZXNldExhc3RIYW5kbGVkVXNl
ckdlc3R1cmVUaW1lc3RhbXAoKTsKQEAgLTE2MjMsOCArMTYyMyw4IEBAIHB1YmxpYzoKICAgICAv
LyAgICAgIGRvY3VtZW50IGlmIGl0IGhhcyB0aGUgYXBwcm9wcmlhdGUgbWV0YSB0YWcuCiAgICAg
Ly8gICAgLSBpc1RlbGVwaG9uZU51bWJlclBhcnNpbmdFbmFibGVkKCkgPT0gaXNUZWxlcGhvbmVO
dW1iZXJQYXJzaW5nQWxsb3dlZCgpICYmIHBhZ2UoKS0+c2V0dGluZ3MoKS0+aXNUZWxlcGhvbmVO
dW1iZXJQYXJzaW5nRW5hYmxlZCgpCiAKLSAgICBib29sIGlzVGVsZXBob25lTnVtYmVyUGFyc2lu
Z0FsbG93ZWQoKSBjb25zdDsKLSAgICBib29sIGlzVGVsZXBob25lTnVtYmVyUGFyc2luZ0VuYWJs
ZWQoKSBjb25zdDsKKyAgICBXRUJDT1JFX0VYUE9SVCBib29sIGlzVGVsZXBob25lTnVtYmVyUGFy
c2luZ0FsbG93ZWQoKSBjb25zdDsKKyAgICBXRUJDT1JFX0VYUE9SVCBib29sIGlzVGVsZXBob25l
TnVtYmVyUGFyc2luZ0VuYWJsZWQoKSBjb25zdDsKIAogcHJpdmF0ZToKICAgICBmcmllbmQgdm9p
ZCBzZXRQYXJzZXJGZWF0dXJlKGNvbnN0IFN0cmluZyYga2V5LCBjb25zdCBTdHJpbmcmIHZhbHVl
LCBEb2N1bWVudCosIHZvaWQqIHVzZXJEYXRhKTsKSW5kZXg6IFNvdXJjZS9XZWJDb3JlL2RvbS9E
b2N1bWVudE1hcmtlci5oCj09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT0KLS0tIFNvdXJjZS9XZWJDb3JlL2RvbS9Eb2N1bWVu
dE1hcmtlci5oCShyZXZpc2lvbiAxNzI2NTgpCisrKyBTb3VyY2UvV2ViQ29yZS9kb20vRG9jdW1l
bnRNYXJrZXIuaAkod29ya2luZyBjb3B5KQpAQCAtMTI2LDcgKzEyNiw3IEBAIHB1YmxpYzoKICAg
ICB1bnNpZ25lZCBzdGFydE9mZnNldCgpIGNvbnN0IHsgcmV0dXJuIG1fc3RhcnRPZmZzZXQ7IH0K
ICAgICB1bnNpZ25lZCBlbmRPZmZzZXQoKSBjb25zdCB7IHJldHVybiBtX2VuZE9mZnNldDsgfQog
Ci0gICAgY29uc3QgU3RyaW5nJiBkZXNjcmlwdGlvbigpIGNvbnN0OworICAgIFdFQkNPUkVfRVhQ
T1JUIGNvbnN0IFN0cmluZyYgZGVzY3JpcHRpb24oKSBjb25zdDsKICAgICBib29sIGFjdGl2ZU1h
dGNoKCkgY29uc3Q7CiAgICAgRG9jdW1lbnRNYXJrZXJEZXRhaWxzKiBkZXRhaWxzKCkgY29uc3Q7
CiAKSW5kZXg6IFNvdXJjZS9XZWJDb3JlL2RvbS9Eb2N1bWVudE1hcmtlckNvbnRyb2xsZXIuaAo9
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09Ci0tLSBTb3VyY2UvV2ViQ29yZS9kb20vRG9jdW1lbnRNYXJrZXJDb250cm9sbGVy
LmgJKHJldmlzaW9uIDE3MjY1OCkKKysrIFNvdXJjZS9XZWJDb3JlL2RvbS9Eb2N1bWVudE1hcmtl
ckNvbnRyb2xsZXIuaAkod29ya2luZyBjb3B5KQpAQCAtNTMsNyArNTMsNyBAQCBwdWJsaWM6CiAg
ICAgdm9pZCBhZGRNYXJrZXIoUmFuZ2UqLCBEb2N1bWVudE1hcmtlcjo6TWFya2VyVHlwZSwgY29u
c3QgU3RyaW5nJiBkZXNjcmlwdGlvbik7CiAgICAgdm9pZCBhZGRNYXJrZXJUb05vZGUoTm9kZSos
IHVuc2lnbmVkIHN0YXJ0T2Zmc2V0LCB1bnNpZ25lZCBsZW5ndGgsIERvY3VtZW50TWFya2VyOjpN
YXJrZXJUeXBlKTsKICAgICB2b2lkIGFkZE1hcmtlclRvTm9kZShOb2RlKiwgdW5zaWduZWQgc3Rh
cnRPZmZzZXQsIHVuc2lnbmVkIGxlbmd0aCwgRG9jdW1lbnRNYXJrZXI6Ok1hcmtlclR5cGUsIFBh
c3NSZWZQdHI8RG9jdW1lbnRNYXJrZXJEZXRhaWxzPik7Ci0gICAgdm9pZCBhZGRUZXh0TWF0Y2hN
YXJrZXIoY29uc3QgUmFuZ2UqLCBib29sIGFjdGl2ZU1hdGNoKTsKKyAgICBXRUJDT1JFX0VYUE9S
VCB2b2lkIGFkZFRleHRNYXRjaE1hcmtlcihjb25zdCBSYW5nZSosIGJvb2wgYWN0aXZlTWF0Y2gp
OwogI2lmIFBMQVRGT1JNKElPUykKICAgICB2b2lkIGFkZE1hcmtlcihSYW5nZSosIERvY3VtZW50
TWFya2VyOjpNYXJrZXJUeXBlLCBTdHJpbmcgZGVzY3JpcHRpb24sIGNvbnN0IFZlY3RvcjxTdHJp
bmc+JiBpbnRlcnByZXRhdGlvbnMsIGNvbnN0IFJldGFpblB0cjxpZD4mIG1ldGFkYXRhKTsKICAg
ICB2b2lkIGFkZERpY3RhdGlvblBocmFzZVdpdGhBbHRlcm5hdGl2ZXNNYXJrZXIoUmFuZ2UqLCBj
b25zdCBWZWN0b3I8U3RyaW5nPiYgaW50ZXJwcmV0YXRpb25zKTsKQEAgLTc1LDcgKzc1LDcgQEAg
cHVibGljOgogICAgIHZvaWQgcmVtb3ZlTWFya2VycyhSYW5nZSosIERvY3VtZW50TWFya2VyOjpN
YXJrZXJUeXBlcyA9IERvY3VtZW50TWFya2VyOjpBbGxNYXJrZXJzKCksIFJlbW92ZVBhcnRpYWxs
eU92ZXJsYXBwaW5nTWFya2VyT3JOb3QgPSBEb05vdFJlbW92ZVBhcnRpYWxseU92ZXJsYXBwaW5n
TWFya2VyKTsKICAgICB2b2lkIHJlbW92ZU1hcmtlcnMoTm9kZSosIHVuc2lnbmVkIHN0YXJ0T2Zm
c2V0LCBpbnQgbGVuZ3RoLCBEb2N1bWVudE1hcmtlcjo6TWFya2VyVHlwZXMgPSBEb2N1bWVudE1h
cmtlcjo6QWxsTWFya2VycygpLCAgUmVtb3ZlUGFydGlhbGx5T3ZlcmxhcHBpbmdNYXJrZXJPck5v
dCA9IERvTm90UmVtb3ZlUGFydGlhbGx5T3ZlcmxhcHBpbmdNYXJrZXIpOwogCi0gICAgdm9pZCBy
ZW1vdmVNYXJrZXJzKERvY3VtZW50TWFya2VyOjpNYXJrZXJUeXBlcyA9IERvY3VtZW50TWFya2Vy
OjpBbGxNYXJrZXJzKCkpOworICAgIFdFQkNPUkVfRVhQT1JUIHZvaWQgcmVtb3ZlTWFya2VycyhE
b2N1bWVudE1hcmtlcjo6TWFya2VyVHlwZXMgPSBEb2N1bWVudE1hcmtlcjo6QWxsTWFya2Vycygp
KTsKICAgICB2b2lkIHJlbW92ZU1hcmtlcnMoTm9kZSosIERvY3VtZW50TWFya2VyOjpNYXJrZXJU
eXBlcyA9IERvY3VtZW50TWFya2VyOjpBbGxNYXJrZXJzKCkpOwogICAgIHZvaWQgcmVwYWludE1h
cmtlcnMoRG9jdW1lbnRNYXJrZXI6Ok1hcmtlclR5cGVzID0gRG9jdW1lbnRNYXJrZXI6OkFsbE1h
cmtlcnMoKSk7CiAgICAgdm9pZCBpbnZhbGlkYXRlUmVuZGVyZWRSZWN0c0Zvck1hcmtlcnNJblJl
Y3QoY29uc3QgTGF5b3V0UmVjdCYpOwpAQCAtODQsOSArODQsOSBAQCBwdWJsaWM6CiAgICAgdm9p
ZCBzZXRNYXJrZXJzQWN0aXZlKE5vZGUqLCB1bnNpZ25lZCBzdGFydE9mZnNldCwgdW5zaWduZWQg
ZW5kT2Zmc2V0LCBib29sKTsKIAogICAgIERvY3VtZW50TWFya2VyKiBtYXJrZXJDb250YWluaW5n
UG9pbnQoY29uc3QgTGF5b3V0UG9pbnQmLCBEb2N1bWVudE1hcmtlcjo6TWFya2VyVHlwZSk7Ci0g
ICAgVmVjdG9yPERvY3VtZW50TWFya2VyKj4gbWFya2Vyc0ZvcihOb2RlKiwgRG9jdW1lbnRNYXJr
ZXI6Ok1hcmtlclR5cGVzID0gRG9jdW1lbnRNYXJrZXI6OkFsbE1hcmtlcnMoKSk7Ci0gICAgVmVj
dG9yPERvY3VtZW50TWFya2VyKj4gbWFya2Vyc0luUmFuZ2UoUmFuZ2UqLCBEb2N1bWVudE1hcmtl
cjo6TWFya2VyVHlwZXMpOwotICAgIFZlY3RvcjxJbnRSZWN0PiByZW5kZXJlZFJlY3RzRm9yTWFy
a2VycyhEb2N1bWVudE1hcmtlcjo6TWFya2VyVHlwZSk7CisgICAgV0VCQ09SRV9FWFBPUlQgVmVj
dG9yPERvY3VtZW50TWFya2VyKj4gbWFya2Vyc0ZvcihOb2RlKiwgRG9jdW1lbnRNYXJrZXI6Ok1h
cmtlclR5cGVzID0gRG9jdW1lbnRNYXJrZXI6OkFsbE1hcmtlcnMoKSk7CisgICAgV0VCQ09SRV9F
WFBPUlQgVmVjdG9yPERvY3VtZW50TWFya2VyKj4gbWFya2Vyc0luUmFuZ2UoUmFuZ2UqLCBEb2N1
bWVudE1hcmtlcjo6TWFya2VyVHlwZXMpOworICAgIFdFQkNPUkVfRVhQT1JUIFZlY3RvcjxJbnRS
ZWN0PiByZW5kZXJlZFJlY3RzRm9yTWFya2VycyhEb2N1bWVudE1hcmtlcjo6TWFya2VyVHlwZSk7
CiAgICAgdm9pZCBjbGVhckRlc2NyaXB0aW9uT25NYXJrZXJzSW50ZXJzZWN0aW5nUmFuZ2UoUmFu
Z2UqLCBEb2N1bWVudE1hcmtlcjo6TWFya2VyVHlwZXMpOwogCiAjaWZuZGVmIE5ERUJVRwpJbmRl
eDogU291cmNlL1dlYkNvcmUvZG9tL0RvY3VtZW50U3R5bGVTaGVldENvbGxlY3Rpb24uaAo9PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09Ci0tLSBTb3VyY2UvV2ViQ29yZS9kb20vRG9jdW1lbnRTdHlsZVNoZWV0Q29sbGVjdGlv
bi5oCShyZXZpc2lvbiAxNzI2NTgpCisrKyBTb3VyY2UvV2ViQ29yZS9kb20vRG9jdW1lbnRTdHls
ZVNoZWV0Q29sbGVjdGlvbi5oCSh3b3JraW5nIGNvcHkpCkBAIC02Nyw4ICs2Nyw4IEBAIHB1Ymxp
YzoKICAgICB2b2lkIGludmFsaWRhdGVJbmplY3RlZFN0eWxlU2hlZXRDYWNoZSgpOwogICAgIHZv
aWQgdXBkYXRlSW5qZWN0ZWRTdHlsZVNoZWV0Q2FjaGUoKSBjb25zdDsKIAotICAgIHZvaWQgYWRk
QXV0aG9yU2hlZXQoUGFzc1JlZjxTdHlsZVNoZWV0Q29udGVudHM+IGF1dGhvclNoZWV0KTsKLSAg
ICB2b2lkIGFkZFVzZXJTaGVldChQYXNzUmVmPFN0eWxlU2hlZXRDb250ZW50cz4gdXNlclNoZWV0
KTsKKyAgICBXRUJDT1JFX0VYUE9SVCB2b2lkIGFkZEF1dGhvclNoZWV0KFBhc3NSZWY8U3R5bGVT
aGVldENvbnRlbnRzPiBhdXRob3JTaGVldCk7CisgICAgV0VCQ09SRV9FWFBPUlQgdm9pZCBhZGRV
c2VyU2hlZXQoUGFzc1JlZjxTdHlsZVNoZWV0Q29udGVudHM+IHVzZXJTaGVldCk7CiAKICAgICBl
bnVtIFVwZGF0ZUZsYWcgeyBOb1VwZGF0ZSA9IDAsIE9wdGltaXplZFVwZGF0ZSwgRnVsbFVwZGF0
ZSB9OwogCkluZGV4OiBTb3VyY2UvV2ViQ29yZS9kb20vRWxlbWVudC5oCj09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT0KLS0t
IFNvdXJjZS9XZWJDb3JlL2RvbS9FbGVtZW50LmgJKHJldmlzaW9uIDE3MjY1OCkKKysrIFNvdXJj
ZS9XZWJDb3JlL2RvbS9FbGVtZW50LmgJKHdvcmtpbmcgY29weSkKQEAgLTE0Miw5ICsxNDIsOSBA
QCBwdWJsaWM6CiAgICAgREVGSU5FX0FUVFJJQlVURV9FVkVOVF9MSVNURU5FUih3ZWJraXRmdWxs
c2NyZWVuZXJyb3IpOwogI2VuZGlmCiAKLSAgICBib29sIGhhc0F0dHJpYnV0ZShjb25zdCBRdWFs
aWZpZWROYW1lJikgY29uc3Q7Ci0gICAgY29uc3QgQXRvbWljU3RyaW5nJiBnZXRBdHRyaWJ1dGUo
Y29uc3QgUXVhbGlmaWVkTmFtZSYpIGNvbnN0OwotICAgIHZvaWQgc2V0QXR0cmlidXRlKGNvbnN0
IFF1YWxpZmllZE5hbWUmLCBjb25zdCBBdG9taWNTdHJpbmcmIHZhbHVlKTsKKyAgICBXRUJDT1JF
X0VYUE9SVCBib29sIGhhc0F0dHJpYnV0ZShjb25zdCBRdWFsaWZpZWROYW1lJikgY29uc3Q7Cisg
ICAgV0VCQ09SRV9FWFBPUlQgY29uc3QgQXRvbWljU3RyaW5nJiBnZXRBdHRyaWJ1dGUoY29uc3Qg
UXVhbGlmaWVkTmFtZSYpIGNvbnN0OworICAgIFdFQkNPUkVfRVhQT1JUIHZvaWQgc2V0QXR0cmli
dXRlKGNvbnN0IFF1YWxpZmllZE5hbWUmLCBjb25zdCBBdG9taWNTdHJpbmcmIHZhbHVlKTsKICAg
ICB2b2lkIHNldEF0dHJpYnV0ZVdpdGhvdXRTeW5jaHJvbml6YXRpb24oY29uc3QgUXVhbGlmaWVk
TmFtZSYsIGNvbnN0IEF0b21pY1N0cmluZyYgdmFsdWUpOwogICAgIHZvaWQgc2V0U3luY2hyb25p
emVkTGF6eUF0dHJpYnV0ZShjb25zdCBRdWFsaWZpZWROYW1lJiwgY29uc3QgQXRvbWljU3RyaW5n
JiB2YWx1ZSk7CiAgICAgYm9vbCByZW1vdmVBdHRyaWJ1dGUoY29uc3QgUXVhbGlmaWVkTmFtZSYp
OwpAQCAtMTYwLDcgKzE2MCw3IEBAIHB1YmxpYzoKICAgICBib29sIGZhc3RIYXNBdHRyaWJ1dGUo
Y29uc3QgUXVhbGlmaWVkTmFtZSYpIGNvbnN0OwogICAgIGNvbnN0IEF0b21pY1N0cmluZyYgZmFz
dEdldEF0dHJpYnV0ZShjb25zdCBRdWFsaWZpZWROYW1lJikgY29uc3Q7CiAjaWZuZGVmIE5ERUJV
RwotICAgIGJvb2wgZmFzdEF0dHJpYnV0ZUxvb2t1cEFsbG93ZWQoY29uc3QgUXVhbGlmaWVkTmFt
ZSYpIGNvbnN0OworICAgIFdFQkNPUkVfRVhQT1JUIGJvb2wgZmFzdEF0dHJpYnV0ZUxvb2t1cEFs
bG93ZWQoY29uc3QgUXVhbGlmaWVkTmFtZSYpIGNvbnN0OwogI2VuZGlmCiAKICNpZmRlZiBEVU1Q
X05PREVfU1RBVElTVElDUwpAQCAtMTc0LDEwICsxNzQsMTAgQEAgcHVibGljOgogICAgIGJvb2wg
aGFzQXR0cmlidXRlKGNvbnN0IEF0b21pY1N0cmluZyYgbmFtZSkgY29uc3Q7CiAgICAgYm9vbCBo
YXNBdHRyaWJ1dGVOUyhjb25zdCBBdG9taWNTdHJpbmcmIG5hbWVzcGFjZVVSSSwgY29uc3QgQXRv
bWljU3RyaW5nJiBsb2NhbE5hbWUpIGNvbnN0OwogCi0gICAgY29uc3QgQXRvbWljU3RyaW5nJiBn
ZXRBdHRyaWJ1dGUoY29uc3QgQXRvbWljU3RyaW5nJiBuYW1lKSBjb25zdDsKKyAgICBXRUJDT1JF
X0VYUE9SVCBjb25zdCBBdG9taWNTdHJpbmcmIGdldEF0dHJpYnV0ZShjb25zdCBBdG9taWNTdHJp
bmcmIG5hbWUpIGNvbnN0OwogICAgIGNvbnN0IEF0b21pY1N0cmluZyYgZ2V0QXR0cmlidXRlTlMo
Y29uc3QgQXRvbWljU3RyaW5nJiBuYW1lc3BhY2VVUkksIGNvbnN0IEF0b21pY1N0cmluZyYgbG9j
YWxOYW1lKSBjb25zdDsKIAotICAgIHZvaWQgc2V0QXR0cmlidXRlKGNvbnN0IEF0b21pY1N0cmlu
ZyYgbmFtZSwgY29uc3QgQXRvbWljU3RyaW5nJiB2YWx1ZSwgRXhjZXB0aW9uQ29kZSYpOworICAg
IFdFQkNPUkVfRVhQT1JUIHZvaWQgc2V0QXR0cmlidXRlKGNvbnN0IEF0b21pY1N0cmluZyYgbmFt
ZSwgY29uc3QgQXRvbWljU3RyaW5nJiB2YWx1ZSwgRXhjZXB0aW9uQ29kZSYpOwogICAgIHN0YXRp
YyBib29sIHBhcnNlQXR0cmlidXRlTmFtZShRdWFsaWZpZWROYW1lJiwgY29uc3QgQXRvbWljU3Ry
aW5nJiBuYW1lc3BhY2VVUkksIGNvbnN0IEF0b21pY1N0cmluZyYgcXVhbGlmaWVkTmFtZSwgRXhj
ZXB0aW9uQ29kZSYpOwogICAgIHZvaWQgc2V0QXR0cmlidXRlTlMoY29uc3QgQXRvbWljU3RyaW5n
JiBuYW1lc3BhY2VVUkksIGNvbnN0IEF0b21pY1N0cmluZyYgcXVhbGlmaWVkTmFtZSwgY29uc3Qg
QXRvbWljU3RyaW5nJiB2YWx1ZSwgRXhjZXB0aW9uQ29kZSYpOwogCkBAIC0yMjcsMTUgKzIyNywx
NSBAQCBwdWJsaWM6CiAgICAgdmlydHVhbCBpbnQgc2Nyb2xsV2lkdGgoKTsKICAgICB2aXJ0dWFs
IGludCBzY3JvbGxIZWlnaHQoKTsKIAotICAgIEludFJlY3QgYm91bmRzSW5Sb290Vmlld1NwYWNl
KCk7CisgICAgV0VCQ09SRV9FWFBPUlQgSW50UmVjdCBib3VuZHNJblJvb3RWaWV3U3BhY2UoKTsK
IAogICAgIFBhc3NSZWZQdHI8Q2xpZW50UmVjdExpc3Q+IGdldENsaWVudFJlY3RzKCk7CiAgICAg
UGFzc1JlZlB0cjxDbGllbnRSZWN0PiBnZXRCb3VuZGluZ0NsaWVudFJlY3QoKTsKICAgICAKICAg
ICAvLyBSZXR1cm5zIHRoZSBhYnNvbHV0ZSBib3VuZGluZyBib3ggdHJhbnNsYXRlZCBpbnRvIGNs
aWVudCBjb29yZGluYXRlcy4KLSAgICBJbnRSZWN0IGNsaWVudFJlY3QoKSBjb25zdDsKKyAgICBX
RUJDT1JFX0VYUE9SVCBJbnRSZWN0IGNsaWVudFJlY3QoKSBjb25zdDsKICAgICAvLyBSZXR1cm5z
IHRoZSBhYnNvbHV0ZSBib3VuZGluZyBib3ggdHJhbnNsYXRlZCBpbnRvIHNjcmVlbiBjb29yZGlu
YXRlcy4KLSAgICBJbnRSZWN0IHNjcmVlblJlY3QoKSBjb25zdDsKKyAgICBXRUJDT1JFX0VYUE9S
VCBJbnRSZWN0IHNjcmVlblJlY3QoKSBjb25zdDsKIAogICAgIGJvb2wgcmVtb3ZlQXR0cmlidXRl
KGNvbnN0IEF0b21pY1N0cmluZyYgbmFtZSk7CiAgICAgYm9vbCByZW1vdmVBdHRyaWJ1dGVOUyhj
b25zdCBBdG9taWNTdHJpbmcmIG5hbWVzcGFjZVVSSSwgY29uc3QgQXRvbWljU3RyaW5nJiBsb2Nh
bE5hbWUpOwpAQCAtMzI0LDggKzMyNCw4IEBAIHB1YmxpYzoKICAgICB2aXJ0dWFsIGJvb2wgcmVu
ZGVyZXJJc05lZWRlZChjb25zdCBSZW5kZXJTdHlsZSYpOwogICAgIHZvaWQgZGlkQWZmZWN0U2Vs
ZWN0b3IoQWZmZWN0ZWRTZWxlY3Rvck1hc2spOwogCi0gICAgU2hhZG93Um9vdCogc2hhZG93Um9v
dCgpIGNvbnN0OwotICAgIFBhc3NSZWZQdHI8U2hhZG93Um9vdD4gY3JlYXRlU2hhZG93Um9vdChF
eGNlcHRpb25Db2RlJik7CisgICAgV0VCQ09SRV9FWFBPUlQgU2hhZG93Um9vdCogc2hhZG93Um9v
dCgpIGNvbnN0OworICAgIFdFQkNPUkVfRVhQT1JUIFBhc3NSZWZQdHI8U2hhZG93Um9vdD4gY3Jl
YXRlU2hhZG93Um9vdChFeGNlcHRpb25Db2RlJik7CiAKICAgICBTaGFkb3dSb290KiB1c2VyQWdl
bnRTaGFkb3dSb290KCkgY29uc3Q7CiAgICAgU2hhZG93Um9vdCYgZW5zdXJlVXNlckFnZW50U2hh
ZG93Um9vdCgpOwpAQCAtMzk1LDcgKzM5NSw3IEBAIHB1YmxpYzoKICAgICB2aXJ0dWFsIFN0cmlu
ZyBjb21wbGV0ZVVSTHNJbkF0dHJpYnV0ZVZhbHVlKGNvbnN0IFVSTCYgYmFzZSwgY29uc3QgQXR0
cmlidXRlJikgY29uc3Q7CiAgICAgdmlydHVhbCBib29sIGlzSFRNTENvbnRlbnRBdHRyaWJ1dGUo
Y29uc3QgQXR0cmlidXRlJikgY29uc3QgeyByZXR1cm4gZmFsc2U7IH0KIAotICAgIFVSTCBnZXRV
UkxBdHRyaWJ1dGUoY29uc3QgUXVhbGlmaWVkTmFtZSYpIGNvbnN0OworICAgIFdFQkNPUkVfRVhQ
T1JUIFVSTCBnZXRVUkxBdHRyaWJ1dGUoY29uc3QgUXVhbGlmaWVkTmFtZSYpIGNvbnN0OwogICAg
IFVSTCBnZXROb25FbXB0eVVSTEF0dHJpYnV0ZShjb25zdCBRdWFsaWZpZWROYW1lJikgY29uc3Q7
CiAKICAgICB2aXJ0dWFsIGNvbnN0IEF0b21pY1N0cmluZyYgaW1hZ2VTb3VyY2VVUkwoKSBjb25z
dDsKQEAgLTQwNiwxMyArNDA2LDEzIEBAIHB1YmxpYzoKICAgICB2aXJ0dWFsIHZvaWQgdXBkYXRl
Rm9jdXNBcHBlYXJhbmNlKGJvb2wgcmVzdG9yZVByZXZpb3VzU2VsZWN0aW9uKTsKICAgICB2aXJ0
dWFsIHZvaWQgYmx1cigpOwogCi0gICAgU3RyaW5nIGlubmVyVGV4dCgpOworICAgIFdFQkNPUkVf
RVhQT1JUIFN0cmluZyBpbm5lclRleHQoKTsKICAgICBTdHJpbmcgb3V0ZXJUZXh0KCk7CiAgCiAg
ICAgdmlydHVhbCBTdHJpbmcgdGl0bGUoKSBjb25zdDsKIAogICAgIGNvbnN0IEF0b21pY1N0cmlu
ZyYgcHNldWRvKCkgY29uc3Q7Ci0gICAgdm9pZCBzZXRQc2V1ZG8oY29uc3QgQXRvbWljU3RyaW5n
Jik7CisgICAgV0VCQ09SRV9FWFBPUlQgdm9pZCBzZXRQc2V1ZG8oY29uc3QgQXRvbWljU3RyaW5n
Jik7CiAKICAgICBMYXlvdXRTaXplIG1pbmltdW1TaXplRm9yUmVzaXppbmcoKSBjb25zdDsKICAg
ICB2b2lkIHNldE1pbmltdW1TaXplRm9yUmVzaXppbmcoY29uc3QgTGF5b3V0U2l6ZSYpOwpAQCAt
NDQxLDggKzQ0MSw4IEBAIHB1YmxpYzoKICAgICB2aXJ0dWFsIHZvaWQgZmluaXNoUGFyc2luZ0No
aWxkcmVuKCkgb3ZlcnJpZGU7CiAgICAgdmlydHVhbCB2b2lkIGJlZ2luUGFyc2luZ0NoaWxkcmVu
KCkgb3ZlcnJpZGUgZmluYWw7CiAKLSAgICBQc2V1ZG9FbGVtZW50KiBiZWZvcmVQc2V1ZG9FbGVt
ZW50KCkgY29uc3Q7Ci0gICAgUHNldWRvRWxlbWVudCogYWZ0ZXJQc2V1ZG9FbGVtZW50KCkgY29u
c3Q7CisgICAgV0VCQ09SRV9FWFBPUlQgUHNldWRvRWxlbWVudCogYmVmb3JlUHNldWRvRWxlbWVu
dCgpIGNvbnN0OworICAgIFdFQkNPUkVfRVhQT1JUIFBzZXVkb0VsZW1lbnQqIGFmdGVyUHNldWRv
RWxlbWVudCgpIGNvbnN0OwogICAgIGJvb2wgY2hpbGROZWVkc1NoYWRvd1dhbGtlcigpIGNvbnN0
OwogICAgIHZvaWQgZGlkU2hhZG93VHJlZUF3YXJlQ2hpbGRyZW5DaGFuZ2UoKTsKIApAQCAtNDk5
LDcgKzQ5OSw3IEBAIHB1YmxpYzoKICAgICB9OwogICAgIAogICAgIHZvaWQgd2Via2l0UmVxdWVz
dEZ1bGxTY3JlZW4odW5zaWduZWQgc2hvcnQgZmxhZ3MpOwotICAgIGJvb2wgY29udGFpbnNGdWxs
U2NyZWVuRWxlbWVudCgpIGNvbnN0OworICAgIFdFQkNPUkVfRVhQT1JUIGJvb2wgY29udGFpbnNG
dWxsU2NyZWVuRWxlbWVudCgpIGNvbnN0OwogICAgIHZvaWQgc2V0Q29udGFpbnNGdWxsU2NyZWVu
RWxlbWVudChib29sKTsKICAgICB2b2lkIHNldENvbnRhaW5zRnVsbFNjcmVlbkVsZW1lbnRPbkFu
Y2VzdG9yc0Nyb3NzaW5nRnJhbWVCb3VuZGFyaWVzKGJvb2wpOwogCkBAIC01NjEsNyArNTYxLDcg
QEAgcHVibGljOgogICAgIHZvaWQgY2xlYXJTdHlsZURlcml2ZWREYXRhQmVmb3JlRGV0YWNoaW5n
UmVuZGVyZXIoKTsKICAgICB2b2lkIGNsZWFySG92ZXJBbmRBY3RpdmVTdGF0dXNCZWZvcmVEZXRh
Y2hpbmdSZW5kZXJlcigpOwogCi0gICAgVVJMIGFic29sdXRlTGlua1VSTCgpIGNvbnN0OworICAg
IFdFQkNPUkVfRVhQT1JUIFVSTCBhYnNvbHV0ZUxpbmtVUkwoKSBjb25zdDsKIAogcHJvdGVjdGVk
OgogICAgIEVsZW1lbnQoY29uc3QgUXVhbGlmaWVkTmFtZSYgdGFnTmFtZSwgRG9jdW1lbnQmIGRv
Y3VtZW50LCBDb25zdHJ1Y3Rpb25UeXBlIHR5cGUpCkluZGV4OiBTb3VyY2UvV2ViQ29yZS9kb20v
RXZlbnQuaAo9PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09Ci0tLSBTb3VyY2UvV2ViQ29yZS9kb20vRXZlbnQuaAkocmV2aXNp
b24gMTcyNjU4KQorKysgU291cmNlL1dlYkNvcmUvZG9tL0V2ZW50LmgJKHdvcmtpbmcgY29weSkK
QEAgLTg2LDcgKzg2LDcgQEAgcHVibGljOgogICAgIHsKICAgICAgICAgcmV0dXJuIGFkb3B0UmVm
KG5ldyBFdmVudCk7CiAgICAgfQotICAgIHN0YXRpYyBQYXNzUmVmUHRyPEV2ZW50PiBjcmVhdGUo
Y29uc3QgQXRvbWljU3RyaW5nJiB0eXBlLCBib29sIGNhbkJ1YmJsZSwgYm9vbCBjYW5jZWxhYmxl
KQorICAgIFdFQkNPUkVfRVhQT1JUIHN0YXRpYyBQYXNzUmVmUHRyPEV2ZW50PiBjcmVhdGUoY29u
c3QgQXRvbWljU3RyaW5nJiB0eXBlLCBib29sIGNhbkJ1YmJsZSwgYm9vbCBjYW5jZWxhYmxlKQog
ICAgIHsKICAgICAgICAgcmV0dXJuIGFkb3B0UmVmKG5ldyBFdmVudCh0eXBlLCBjYW5CdWJibGUs
IGNhbmNlbGFibGUpKTsKICAgICB9CkluZGV4OiBTb3VyY2UvV2ViQ29yZS9kb20vRXZlbnRMaXN0
ZW5lck1hcC5oCj09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT0KLS0tIFNvdXJjZS9XZWJDb3JlL2RvbS9FdmVudExpc3RlbmVy
TWFwLmgJKHJldmlzaW9uIDE3MjY1OCkKKysrIFNvdXJjZS9XZWJDb3JlL2RvbS9FdmVudExpc3Rl
bmVyTWFwLmgJKHdvcmtpbmcgY29weSkKQEAgLTQ5LDcgKzQ5LDcgQEAgcHVibGljOgogICAgIEV2
ZW50TGlzdGVuZXJNYXAoKTsKIAogICAgIGJvb2wgaXNFbXB0eSgpIGNvbnN0IHsgcmV0dXJuIG1f
ZW50cmllcy5pc0VtcHR5KCk7IH0KLSAgICBib29sIGNvbnRhaW5zKGNvbnN0IEF0b21pY1N0cmlu
ZyYgZXZlbnRUeXBlKSBjb25zdDsKKyAgICBXRUJDT1JFX0VYUE9SVCBib29sIGNvbnRhaW5zKGNv
bnN0IEF0b21pY1N0cmluZyYgZXZlbnRUeXBlKSBjb25zdDsKICAgICBib29sIGNvbnRhaW5zQ2Fw
dHVyaW5nKGNvbnN0IEF0b21pY1N0cmluZyYgZXZlbnRUeXBlKSBjb25zdDsKIAogICAgIHZvaWQg
Y2xlYXIoKTsKSW5kZXg6IFNvdXJjZS9XZWJDb3JlL2VkaXRpbmcvRGljdGF0aW9uQWx0ZXJuYXRp
dmUuaAo9PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09Ci0tLSBTb3VyY2UvV2ViQ29yZS9lZGl0aW5nL0RpY3RhdGlvbkFsdGVy
bmF0aXZlLmgJKHJldmlzaW9uIDE3MjY1OCkKKysrIFNvdXJjZS9XZWJDb3JlL2VkaXRpbmcvRGlj
dGF0aW9uQWx0ZXJuYXRpdmUuaAkod29ya2luZyBjb3B5KQpAQCAtMzAsOCArMzAsOCBAQAogCiBu
YW1lc3BhY2UgV2ViQ29yZSB7CiBzdHJ1Y3QgRGljdGF0aW9uQWx0ZXJuYXRpdmUgewotICAgIERp
Y3RhdGlvbkFsdGVybmF0aXZlKHVuc2lnbmVkIHN0YXJ0LCB1bnNpZ25lZCBsZW5ndGgsIHVpbnQ2
NF90IGNvbnRleHQpOwotICAgIERpY3RhdGlvbkFsdGVybmF0aXZlKCk7CisgICAgV0VCQ09SRV9F
WFBPUlQgRGljdGF0aW9uQWx0ZXJuYXRpdmUodW5zaWduZWQgc3RhcnQsIHVuc2lnbmVkIGxlbmd0
aCwgdWludDY0X3QgY29udGV4dCk7CisgICAgV0VCQ09SRV9FWFBPUlQgRGljdGF0aW9uQWx0ZXJu
YXRpdmUoKTsKICAgICB1bnNpZ25lZCByYW5nZVN0YXJ0OwogICAgIHVuc2lnbmVkIHJhbmdlTGVu
Z3RoOwogCkluZGV4OiBTb3VyY2UvV2ViQ29yZS9lZGl0aW5nL0VkaXRDb21tYW5kLmgKPT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PQotLS0gU291cmNlL1dlYkNvcmUvZWRpdGluZy9FZGl0Q29tbWFuZC5oCShyZXZpc2lvbiAx
NzI2NTgpCisrKyBTb3VyY2UvV2ViQ29yZS9lZGl0aW5nL0VkaXRDb21tYW5kLmgJKHdvcmtpbmcg
Y29weSkKQEAgLTcwLDcgKzcwLDcgQEAgcHJvdGVjdGVkOgogICAgIERvY3VtZW50JiBkb2N1bWVu
dCgpIHsgcmV0dXJuIG1fZG9jdW1lbnQuZ2V0KCk7IH0KICAgICBDb21wb3NpdGVFZGl0Q29tbWFu
ZCogcGFyZW50KCkgY29uc3QgeyByZXR1cm4gbV9wYXJlbnQ7IH0KICAgICB2b2lkIHNldFN0YXJ0
aW5nU2VsZWN0aW9uKGNvbnN0IFZpc2libGVTZWxlY3Rpb24mKTsKLSAgICB2b2lkIHNldEVuZGlu
Z1NlbGVjdGlvbihjb25zdCBWaXNpYmxlU2VsZWN0aW9uJik7CisgICAgV0VCQ09SRV9FWFBPUlQg
dm9pZCBzZXRFbmRpbmdTZWxlY3Rpb24oY29uc3QgVmlzaWJsZVNlbGVjdGlvbiYpOwogCiBwcml2
YXRlOgogICAgIFJlZjxEb2N1bWVudD4gbV9kb2N1bWVudDsKSW5kZXg6IFNvdXJjZS9XZWJDb3Jl
L2VkaXRpbmcvRWRpdGluZ1N0eWxlLmgKPT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PQotLS0gU291cmNlL1dlYkNvcmUvZWRp
dGluZy9FZGl0aW5nU3R5bGUuaAkocmV2aXNpb24gMTcyNjU4KQorKysgU291cmNlL1dlYkNvcmUv
ZWRpdGluZy9FZGl0aW5nU3R5bGUuaAkod29ya2luZyBjb3B5KQpAQCAtOTUsNyArOTUsNyBAQCBw
dWJsaWM6CiAgICAgICAgIHJldHVybiBhZG9wdFJlZihuZXcgRWRpdGluZ1N0eWxlKHByb3BlcnR5
SUQsIHZhbHVlKSk7CiAgICAgfQogCi0gICAgfkVkaXRpbmdTdHlsZSgpOworICAgIFdFQkNPUkVf
RVhQT1JUIH5FZGl0aW5nU3R5bGUoKTsKIAogICAgIE11dGFibGVTdHlsZVByb3BlcnRpZXMqIHN0
eWxlKCkgeyByZXR1cm4gbV9tdXRhYmxlU3R5bGUuZ2V0KCk7IH0KICAgICBib29sIHRleHREaXJl
Y3Rpb24oV3JpdGluZ0RpcmVjdGlvbiYpIGNvbnN0OwpJbmRleDogU291cmNlL1dlYkNvcmUvZWRp
dGluZy9FZGl0b3IuaAo9PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09Ci0tLSBTb3VyY2UvV2ViQ29yZS9lZGl0aW5nL0VkaXRv
ci5oCShyZXZpc2lvbiAxNzI2NTgpCisrKyBTb3VyY2UvV2ViQ29yZS9lZGl0aW5nL0VkaXRvci5o
CSh3b3JraW5nIGNvcHkpCkBAIC0xMDAsNyArMTAwLDcgQEAgcHVibGljOgogICAgIGV4cGxpY2l0
IEVkaXRvcihGcmFtZSYpOwogICAgIH5FZGl0b3IoKTsKIAotICAgIEVkaXRvckNsaWVudCogY2xp
ZW50KCkgY29uc3Q7CisgICAgV0VCQ09SRV9FWFBPUlQgRWRpdG9yQ2xpZW50KiBjbGllbnQoKSBj
b25zdDsKICAgICBUZXh0Q2hlY2tlckNsaWVudCogdGV4dENoZWNrZXIoKSBjb25zdDsKIAogICAg
IENvbXBvc2l0ZUVkaXRDb21tYW5kKiBsYXN0RWRpdENvbW1hbmQoKSB7IHJldHVybiBtX2xhc3RF
ZGl0Q29tbWFuZC5nZXQoKTsgfQpAQCAtMTA5LDMwICsxMDksMzAgQEAgcHVibGljOgogICAgIHZv
aWQgaGFuZGxlSW5wdXRNZXRob2RLZXlkb3duKEtleWJvYXJkRXZlbnQqKTsKICAgICBib29sIGhh
bmRsZVRleHRFdmVudChUZXh0RXZlbnQqKTsKIAotICAgIGJvb2wgY2FuRWRpdCgpIGNvbnN0Owot
ICAgIGJvb2wgY2FuRWRpdFJpY2hseSgpIGNvbnN0OworICAgIFdFQkNPUkVfRVhQT1JUIGJvb2wg
Y2FuRWRpdCgpIGNvbnN0OworICAgIFdFQkNPUkVfRVhQT1JUIGJvb2wgY2FuRWRpdFJpY2hseSgp
IGNvbnN0OwogCiAgICAgYm9vbCBjYW5ESFRNTEN1dCgpOwogICAgIGJvb2wgY2FuREhUTUxDb3B5
KCk7Ci0gICAgYm9vbCBjYW5ESFRNTFBhc3RlKCk7CisgICAgV0VCQ09SRV9FWFBPUlQgYm9vbCBj
YW5ESFRNTFBhc3RlKCk7CiAgICAgYm9vbCB0cnlESFRNTENvcHkoKTsKICAgICBib29sIHRyeURI
VE1MQ3V0KCk7Ci0gICAgYm9vbCB0cnlESFRNTFBhc3RlKCk7CisgICAgV0VCQ09SRV9FWFBPUlQg
Ym9vbCB0cnlESFRNTFBhc3RlKCk7CiAKLSAgICBib29sIGNhbkN1dCgpIGNvbnN0OwotICAgIGJv
b2wgY2FuQ29weSgpIGNvbnN0OwotICAgIGJvb2wgY2FuUGFzdGUoKSBjb25zdDsKLSAgICBib29s
IGNhbkRlbGV0ZSgpIGNvbnN0OworICAgIFdFQkNPUkVfRVhQT1JUIGJvb2wgY2FuQ3V0KCkgY29u
c3Q7CisgICAgV0VCQ09SRV9FWFBPUlQgYm9vbCBjYW5Db3B5KCkgY29uc3Q7CisgICAgV0VCQ09S
RV9FWFBPUlQgYm9vbCBjYW5QYXN0ZSgpIGNvbnN0OworICAgIFdFQkNPUkVfRVhQT1JUIGJvb2wg
Y2FuRGVsZXRlKCkgY29uc3Q7CiAgICAgYm9vbCBjYW5TbWFydENvcHlPckRlbGV0ZSgpOwogCi0g
ICAgdm9pZCBjdXQoKTsKLSAgICB2b2lkIGNvcHkoKTsKLSAgICB2b2lkIHBhc3RlKCk7CisgICAg
V0VCQ09SRV9FWFBPUlQgdm9pZCBjdXQoKTsKKyAgICBXRUJDT1JFX0VYUE9SVCB2b2lkIGNvcHko
KTsKKyAgICBXRUJDT1JFX0VYUE9SVCB2b2lkIHBhc3RlKCk7CiAgICAgdm9pZCBwYXN0ZShQYXN0
ZWJvYXJkJik7CiAgICAgdm9pZCBwYXN0ZUFzUGxhaW5UZXh0KCk7Ci0gICAgdm9pZCBwZXJmb3Jt
RGVsZXRlKCk7CisgICAgV0VCQ09SRV9FWFBPUlQgdm9pZCBwZXJmb3JtRGVsZXRlKCk7CiAKLSAg
ICB2b2lkIGNvcHlVUkwoY29uc3QgVVJMJiwgY29uc3QgU3RyaW5nJiB0aXRsZSk7CisgICAgV0VC
Q09SRV9FWFBPUlQgdm9pZCBjb3B5VVJMKGNvbnN0IFVSTCYsIGNvbnN0IFN0cmluZyYgdGl0bGUp
OwogICAgIHZvaWQgY29weVVSTChjb25zdCBVUkwmLCBjb25zdCBTdHJpbmcmIHRpdGxlLCBQYXN0
ZWJvYXJkJik7CiAjaWYgIVBMQVRGT1JNKElPUykKICAgICB2b2lkIGNvcHlJbWFnZShjb25zdCBI
aXRUZXN0UmVzdWx0Jik7CkBAIC0xNDAsNTEgKzE0MCw1MSBAQCBwdWJsaWM6CiAKICAgICBTdHJp
bmcgcmVhZFBsYWluVGV4dEZyb21QYXN0ZWJvYXJkKFBhc3RlYm9hcmQmKTsKIAotICAgIHZvaWQg
aW5kZW50KCk7Ci0gICAgdm9pZCBvdXRkZW50KCk7CisgICAgV0VCQ09SRV9FWFBPUlQgdm9pZCBp
bmRlbnQoKTsKKyAgICBXRUJDT1JFX0VYUE9SVCB2b2lkIG91dGRlbnQoKTsKICAgICB2b2lkIHRy
YW5zcG9zZSgpOwogCiAgICAgYm9vbCBzaG91bGRJbnNlcnRGcmFnbWVudChQYXNzUmVmUHRyPERv
Y3VtZW50RnJhZ21lbnQ+LCBQYXNzUmVmUHRyPFJhbmdlPiwgRWRpdG9ySW5zZXJ0QWN0aW9uKTsK
ICAgICBib29sIHNob3VsZEluc2VydFRleHQoY29uc3QgU3RyaW5nJiwgUmFuZ2UqLCBFZGl0b3JJ
bnNlcnRBY3Rpb24pIGNvbnN0OwotICAgIGJvb2wgc2hvdWxkRGVsZXRlUmFuZ2UoUmFuZ2UqKSBj
b25zdDsKKyAgICBXRUJDT1JFX0VYUE9SVCBib29sIHNob3VsZERlbGV0ZVJhbmdlKFJhbmdlKikg
Y29uc3Q7CiAgICAgYm9vbCBzaG91bGRBcHBseVN0eWxlKFN0eWxlUHJvcGVydGllcyosIFJhbmdl
Kik7CiAKICAgICB2b2lkIHJlc3BvbmRUb0NoYW5nZWRDb250ZW50cyhjb25zdCBWaXNpYmxlU2Vs
ZWN0aW9uJiBlbmRpbmdTZWxlY3Rpb24pOwogCiAgICAgYm9vbCBzZWxlY3Rpb25TdGFydEhhc1N0
eWxlKENTU1Byb3BlcnR5SUQsIGNvbnN0IFN0cmluZyYgdmFsdWUpIGNvbnN0OwotICAgIFRyaVN0
YXRlIHNlbGVjdGlvbkhhc1N0eWxlKENTU1Byb3BlcnR5SUQsIGNvbnN0IFN0cmluZyYgdmFsdWUp
IGNvbnN0OworICAgIFdFQkNPUkVfRVhQT1JUIFRyaVN0YXRlIHNlbGVjdGlvbkhhc1N0eWxlKENT
U1Byb3BlcnR5SUQsIGNvbnN0IFN0cmluZyYgdmFsdWUpIGNvbnN0OwogICAgIFN0cmluZyBzZWxl
Y3Rpb25TdGFydENTU1Byb3BlcnR5VmFsdWUoQ1NTUHJvcGVydHlJRCk7CiAgICAgCiAgICAgVHJp
U3RhdGUgc2VsZWN0aW9uVW5vcmRlcmVkTGlzdFN0YXRlKCkgY29uc3Q7CiAgICAgVHJpU3RhdGUg
c2VsZWN0aW9uT3JkZXJlZExpc3RTdGF0ZSgpIGNvbnN0OwotICAgIFBhc3NSZWZQdHI8Tm9kZT4g
aW5zZXJ0T3JkZXJlZExpc3QoKTsKLSAgICBQYXNzUmVmUHRyPE5vZGU+IGluc2VydFVub3JkZXJl
ZExpc3QoKTsKLSAgICBib29sIGNhbkluY3JlYXNlU2VsZWN0aW9uTGlzdExldmVsKCk7Ci0gICAg
Ym9vbCBjYW5EZWNyZWFzZVNlbGVjdGlvbkxpc3RMZXZlbCgpOwotICAgIFBhc3NSZWZQdHI8Tm9k
ZT4gaW5jcmVhc2VTZWxlY3Rpb25MaXN0TGV2ZWwoKTsKLSAgICBQYXNzUmVmUHRyPE5vZGU+IGlu
Y3JlYXNlU2VsZWN0aW9uTGlzdExldmVsT3JkZXJlZCgpOwotICAgIFBhc3NSZWZQdHI8Tm9kZT4g
aW5jcmVhc2VTZWxlY3Rpb25MaXN0TGV2ZWxVbm9yZGVyZWQoKTsKLSAgICB2b2lkIGRlY3JlYXNl
U2VsZWN0aW9uTGlzdExldmVsKCk7CisgICAgV0VCQ09SRV9FWFBPUlQgUGFzc1JlZlB0cjxOb2Rl
PiBpbnNlcnRPcmRlcmVkTGlzdCgpOworICAgIFdFQkNPUkVfRVhQT1JUIFBhc3NSZWZQdHI8Tm9k
ZT4gaW5zZXJ0VW5vcmRlcmVkTGlzdCgpOworICAgIFdFQkNPUkVfRVhQT1JUIGJvb2wgY2FuSW5j
cmVhc2VTZWxlY3Rpb25MaXN0TGV2ZWwoKTsKKyAgICBXRUJDT1JFX0VYUE9SVCBib29sIGNhbkRl
Y3JlYXNlU2VsZWN0aW9uTGlzdExldmVsKCk7CisgICAgV0VCQ09SRV9FWFBPUlQgUGFzc1JlZlB0
cjxOb2RlPiBpbmNyZWFzZVNlbGVjdGlvbkxpc3RMZXZlbCgpOworICAgIFdFQkNPUkVfRVhQT1JU
IFBhc3NSZWZQdHI8Tm9kZT4gaW5jcmVhc2VTZWxlY3Rpb25MaXN0TGV2ZWxPcmRlcmVkKCk7Cisg
ICAgV0VCQ09SRV9FWFBPUlQgUGFzc1JlZlB0cjxOb2RlPiBpbmNyZWFzZVNlbGVjdGlvbkxpc3RM
ZXZlbFVub3JkZXJlZCgpOworICAgIFdFQkNPUkVfRVhQT1JUIHZvaWQgZGVjcmVhc2VTZWxlY3Rp
b25MaXN0TGV2ZWwoKTsKICAgIAogICAgIHZvaWQgcmVtb3ZlRm9ybWF0dGluZ0FuZFN0eWxlKCk7
CiAKICAgICB2b2lkIGNsZWFyTGFzdEVkaXRDb21tYW5kKCk7CiAjaWYgUExBVEZPUk0oSU9TKQot
ICAgIHZvaWQgZW5zdXJlTGFzdEVkaXRDb21tYW5kSGFzQ3VycmVudFNlbGVjdGlvbklmT3BlbkZv
ck1vcmVUeXBpbmcoKTsKKyAgICBXRUJDT1JFX0VYUE9SVCB2b2lkIGVuc3VyZUxhc3RFZGl0Q29t
bWFuZEhhc0N1cnJlbnRTZWxlY3Rpb25JZk9wZW5Gb3JNb3JlVHlwaW5nKCk7CiAjZW5kaWYKIAot
ICAgIGJvb2wgZGVsZXRlV2l0aERpcmVjdGlvbihTZWxlY3Rpb25EaXJlY3Rpb24sIFRleHRHcmFu
dWxhcml0eSwgYm9vbCBraWxsUmluZywgYm9vbCBpc1R5cGluZ0FjdGlvbik7Ci0gICAgdm9pZCBk
ZWxldGVTZWxlY3Rpb25XaXRoU21hcnREZWxldGUoYm9vbCBzbWFydERlbGV0ZSk7CisgICAgV0VC
Q09SRV9FWFBPUlQgYm9vbCBkZWxldGVXaXRoRGlyZWN0aW9uKFNlbGVjdGlvbkRpcmVjdGlvbiwg
VGV4dEdyYW51bGFyaXR5LCBib29sIGtpbGxSaW5nLCBib29sIGlzVHlwaW5nQWN0aW9uKTsKKyAg
ICBXRUJDT1JFX0VYUE9SVCB2b2lkIGRlbGV0ZVNlbGVjdGlvbldpdGhTbWFydERlbGV0ZShib29s
IHNtYXJ0RGVsZXRlKTsKICNpZiBQTEFURk9STShJT1MpCiAgICAgdm9pZCBjbGVhclRleHQoKTsK
LSAgICB2b2lkIHJlbW92ZVVuY2hhbmdlYWJsZVN0eWxlcygpOworICAgIFdFQkNPUkVfRVhQT1JU
IHZvaWQgcmVtb3ZlVW5jaGFuZ2VhYmxlU3R5bGVzKCk7CiAjZW5kaWYKICAgICAKICAgICBib29s
IGRpc3BhdGNoQ1BQRXZlbnQoY29uc3QgQXRvbWljU3RyaW5nJiwgRGF0YVRyYW5zZmVyQWNjZXNz
UG9saWN5KTsKICAgICAKLSAgICB2b2lkIGFwcGx5U3R5bGUoU3R5bGVQcm9wZXJ0aWVzKiwgRWRp
dEFjdGlvbiA9IEVkaXRBY3Rpb25VbnNwZWNpZmllZCk7CisgICAgV0VCQ09SRV9FWFBPUlQgdm9p
ZCBhcHBseVN0eWxlKFN0eWxlUHJvcGVydGllcyosIEVkaXRBY3Rpb24gPSBFZGl0QWN0aW9uVW5z
cGVjaWZpZWQpOwogICAgIHZvaWQgYXBwbHlQYXJhZ3JhcGhTdHlsZShTdHlsZVByb3BlcnRpZXMq
LCBFZGl0QWN0aW9uID0gRWRpdEFjdGlvblVuc3BlY2lmaWVkKTsKLSAgICB2b2lkIGFwcGx5U3R5
bGVUb1NlbGVjdGlvbihTdHlsZVByb3BlcnRpZXMqLCBFZGl0QWN0aW9uKTsKKyAgICBXRUJDT1JF
X0VYUE9SVCB2b2lkIGFwcGx5U3R5bGVUb1NlbGVjdGlvbihTdHlsZVByb3BlcnRpZXMqLCBFZGl0
QWN0aW9uKTsKICAgICB2b2lkIGFwcGx5UGFyYWdyYXBoU3R5bGVUb1NlbGVjdGlvbihTdHlsZVBy
b3BlcnRpZXMqLCBFZGl0QWN0aW9uKTsKIAogICAgIHZvaWQgYXBwbGllZEVkaXRpbmcoUGFzc1Jl
ZlB0cjxDb21wb3NpdGVFZGl0Q29tbWFuZD4pOwpAQCAtMTk3LDU4ICsxOTcsNTggQEAgcHVibGlj
OgogCiAgICAgY2xhc3MgQ29tbWFuZCB7CiAgICAgcHVibGljOgotICAgICAgICBDb21tYW5kKCk7
CisgICAgICAgIFdFQkNPUkVfRVhQT1JUIENvbW1hbmQoKTsKICAgICAgICAgQ29tbWFuZChjb25z
dCBFZGl0b3JJbnRlcm5hbENvbW1hbmQqLCBFZGl0b3JDb21tYW5kU291cmNlLCBQYXNzUmVmUHRy
PEZyYW1lPik7CiAKLSAgICAgICAgYm9vbCBleGVjdXRlKGNvbnN0IFN0cmluZyYgcGFyYW1ldGVy
ID0gU3RyaW5nKCksIEV2ZW50KiB0cmlnZ2VyaW5nRXZlbnQgPSAwKSBjb25zdDsKLSAgICAgICAg
Ym9vbCBleGVjdXRlKEV2ZW50KiB0cmlnZ2VyaW5nRXZlbnQpIGNvbnN0OworICAgICAgICBXRUJD
T1JFX0VYUE9SVCBib29sIGV4ZWN1dGUoY29uc3QgU3RyaW5nJiBwYXJhbWV0ZXIgPSBTdHJpbmco
KSwgRXZlbnQqIHRyaWdnZXJpbmdFdmVudCA9IDApIGNvbnN0OworICAgICAgICBXRUJDT1JFX0VY
UE9SVCBib29sIGV4ZWN1dGUoRXZlbnQqIHRyaWdnZXJpbmdFdmVudCkgY29uc3Q7CiAKLSAgICAg
ICAgYm9vbCBpc1N1cHBvcnRlZCgpIGNvbnN0OwotICAgICAgICBib29sIGlzRW5hYmxlZChFdmVu
dCogdHJpZ2dlcmluZ0V2ZW50ID0gMCkgY29uc3Q7CisgICAgICAgIFdFQkNPUkVfRVhQT1JUIGJv
b2wgaXNTdXBwb3J0ZWQoKSBjb25zdDsKKyAgICAgICAgV0VCQ09SRV9FWFBPUlQgYm9vbCBpc0Vu
YWJsZWQoRXZlbnQqIHRyaWdnZXJpbmdFdmVudCA9IDApIGNvbnN0OwogCi0gICAgICAgIFRyaVN0
YXRlIHN0YXRlKEV2ZW50KiB0cmlnZ2VyaW5nRXZlbnQgPSAwKSBjb25zdDsKKyAgICAgICAgV0VC
Q09SRV9FWFBPUlQgVHJpU3RhdGUgc3RhdGUoRXZlbnQqIHRyaWdnZXJpbmdFdmVudCA9IDApIGNv
bnN0OwogICAgICAgICBTdHJpbmcgdmFsdWUoRXZlbnQqIHRyaWdnZXJpbmdFdmVudCA9IDApIGNv
bnN0OwogCi0gICAgICAgIGJvb2wgaXNUZXh0SW5zZXJ0aW9uKCkgY29uc3Q7CisgICAgICAgIFdF
QkNPUkVfRVhQT1JUIGJvb2wgaXNUZXh0SW5zZXJ0aW9uKCkgY29uc3Q7CiAKICAgICBwcml2YXRl
OgogICAgICAgICBjb25zdCBFZGl0b3JJbnRlcm5hbENvbW1hbmQqIG1fY29tbWFuZDsKICAgICAg
ICAgRWRpdG9yQ29tbWFuZFNvdXJjZSBtX3NvdXJjZTsKICAgICAgICAgUmVmUHRyPEZyYW1lPiBt
X2ZyYW1lOwogICAgIH07Ci0gICAgQ29tbWFuZCBjb21tYW5kKGNvbnN0IFN0cmluZyYgY29tbWFu
ZE5hbWUpOyAvLyBDb21tYW5kIHNvdXJjZSBpcyBDb21tYW5kRnJvbU1lbnVPcktleUJpbmRpbmcu
CisgICAgV0VCQ09SRV9FWFBPUlQgQ29tbWFuZCBjb21tYW5kKGNvbnN0IFN0cmluZyYgY29tbWFu
ZE5hbWUpOyAvLyBDb21tYW5kIHNvdXJjZSBpcyBDb21tYW5kRnJvbU1lbnVPcktleUJpbmRpbmcu
CiAgICAgQ29tbWFuZCBjb21tYW5kKGNvbnN0IFN0cmluZyYgY29tbWFuZE5hbWUsIEVkaXRvckNv
bW1hbmRTb3VyY2UpOwotICAgIHN0YXRpYyBib29sIGNvbW1hbmRJc1N1cHBvcnRlZEZyb21NZW51
T3JLZXlCaW5kaW5nKGNvbnN0IFN0cmluZyYgY29tbWFuZE5hbWUpOyAvLyBXb3JrcyB3aXRob3V0
IGEgZnJhbWUuCisgICAgV0VCQ09SRV9FWFBPUlQgc3RhdGljIGJvb2wgY29tbWFuZElzU3VwcG9y
dGVkRnJvbU1lbnVPcktleUJpbmRpbmcoY29uc3QgU3RyaW5nJiBjb21tYW5kTmFtZSk7IC8vIFdv
cmtzIHdpdGhvdXQgYSBmcmFtZS4KIAotICAgIGJvb2wgaW5zZXJ0VGV4dChjb25zdCBTdHJpbmcm
LCBFdmVudCogdHJpZ2dlcmluZ0V2ZW50KTsKKyAgICBXRUJDT1JFX0VYUE9SVCBib29sIGluc2Vy
dFRleHQoY29uc3QgU3RyaW5nJiwgRXZlbnQqIHRyaWdnZXJpbmdFdmVudCk7CiAgICAgYm9vbCBp
bnNlcnRUZXh0Rm9yQ29uZmlybWVkQ29tcG9zaXRpb24oY29uc3QgU3RyaW5nJiB0ZXh0KTsKLSAg
ICBib29sIGluc2VydERpY3RhdGVkVGV4dChjb25zdCBTdHJpbmcmLCBjb25zdCBWZWN0b3I8RGlj
dGF0aW9uQWx0ZXJuYXRpdmU+JiBkaWN0YXRpb25BbHRlcm5hdGl2ZXMsIEV2ZW50KiB0cmlnZ2Vy
aW5nRXZlbnQpOworICAgIFdFQkNPUkVfRVhQT1JUIGJvb2wgaW5zZXJ0RGljdGF0ZWRUZXh0KGNv
bnN0IFN0cmluZyYsIGNvbnN0IFZlY3RvcjxEaWN0YXRpb25BbHRlcm5hdGl2ZT4mIGRpY3RhdGlv
bkFsdGVybmF0aXZlcywgRXZlbnQqIHRyaWdnZXJpbmdFdmVudCk7CiAgICAgYm9vbCBpbnNlcnRU
ZXh0V2l0aG91dFNlbmRpbmdUZXh0RXZlbnQoY29uc3QgU3RyaW5nJiwgYm9vbCBzZWxlY3RJbnNl
cnRlZFRleHQsIFRleHRFdmVudCogdHJpZ2dlcmluZ0V2ZW50KTsKICAgICBib29sIGluc2VydExp
bmVCcmVhaygpOwogICAgIGJvb2wgaW5zZXJ0UGFyYWdyYXBoU2VwYXJhdG9yKCk7CiAKLSAgICBi
b29sIGlzQ29udGludW91c1NwZWxsQ2hlY2tpbmdFbmFibGVkKCkgY29uc3Q7Ci0gICAgdm9pZCB0
b2dnbGVDb250aW51b3VzU3BlbGxDaGVja2luZygpOworICAgIFdFQkNPUkVfRVhQT1JUIGJvb2wg
aXNDb250aW51b3VzU3BlbGxDaGVja2luZ0VuYWJsZWQoKSBjb25zdDsKKyAgICBXRUJDT1JFX0VY
UE9SVCB2b2lkIHRvZ2dsZUNvbnRpbnVvdXNTcGVsbENoZWNraW5nKCk7CiAgICAgYm9vbCBpc0dy
YW1tYXJDaGVja2luZ0VuYWJsZWQoKTsKICAgICB2b2lkIHRvZ2dsZUdyYW1tYXJDaGVja2luZygp
OwogICAgIHZvaWQgaWdub3JlU3BlbGxpbmcoKTsKICAgICB2b2lkIGxlYXJuU3BlbGxpbmcoKTsK
ICAgICBpbnQgc3BlbGxDaGVja2VyRG9jdW1lbnRUYWcoKTsKLSAgICBib29sIGlzU2VsZWN0aW9u
VW5ncmFtbWF0aWNhbCgpOworICAgIFdFQkNPUkVfRVhQT1JUIGJvb2wgaXNTZWxlY3Rpb25Vbmdy
YW1tYXRpY2FsKCk7CiAgICAgU3RyaW5nIG1pc3NwZWxsZWRTZWxlY3Rpb25TdHJpbmcoKSBjb25z
dDsKICAgICBTdHJpbmcgbWlzc3BlbGxlZFdvcmRBdENhcmV0T3JSYW5nZShOb2RlKiBjbGlja2Vk
Tm9kZSkgY29uc3Q7CiAgICAgVmVjdG9yPFN0cmluZz4gZ3Vlc3Nlc0Zvck1pc3NwZWxsZWRXb3Jk
KGNvbnN0IFN0cmluZyYpIGNvbnN0OwogICAgIFZlY3RvcjxTdHJpbmc+IGd1ZXNzZXNGb3JNaXNz
cGVsbGVkT3JVbmdyYW1tYXRpY2FsKGJvb2wmIG1pc3NwZWxsZWQsIGJvb2wmIHVuZ3JhbW1hdGlj
YWwpOwogICAgIGJvb2wgaXNTcGVsbENoZWNraW5nRW5hYmxlZEluRm9jdXNlZE5vZGUoKSBjb25z
dDsKICAgICBib29sIGlzU3BlbGxDaGVja2luZ0VuYWJsZWRGb3IoTm9kZSopIGNvbnN0OwotICAg
IHZvaWQgbWFya01pc3NwZWxsaW5nc0FmdGVyVHlwaW5nVG9Xb3JkKGNvbnN0IFZpc2libGVQb3Np
dGlvbiAmd29yZFN0YXJ0LCBjb25zdCBWaXNpYmxlU2VsZWN0aW9uJiBzZWxlY3Rpb25BZnRlclR5
cGluZywgYm9vbCBkb1JlcGxhY2VtZW50KTsKKyAgICBXRUJDT1JFX0VYUE9SVCB2b2lkIG1hcmtN
aXNzcGVsbGluZ3NBZnRlclR5cGluZ1RvV29yZChjb25zdCBWaXNpYmxlUG9zaXRpb24gJndvcmRT
dGFydCwgY29uc3QgVmlzaWJsZVNlbGVjdGlvbiYgc2VsZWN0aW9uQWZ0ZXJUeXBpbmcsIGJvb2wg
ZG9SZXBsYWNlbWVudCk7CiAgICAgdm9pZCBtYXJrTWlzc3BlbGxpbmdzKGNvbnN0IFZpc2libGVT
ZWxlY3Rpb24mLCBSZWZQdHI8UmFuZ2U+JiBmaXJzdE1pc3NwZWxsaW5nUmFuZ2UpOwogICAgIHZv
aWQgbWFya0JhZEdyYW1tYXIoY29uc3QgVmlzaWJsZVNlbGVjdGlvbiYpOwogICAgIHZvaWQgbWFy
a01pc3NwZWxsaW5nc0FuZEJhZEdyYW1tYXIoY29uc3QgVmlzaWJsZVNlbGVjdGlvbiYgc3BlbGxp
bmdTZWxlY3Rpb24sIGJvb2wgbWFya0dyYW1tYXIsIGNvbnN0IFZpc2libGVTZWxlY3Rpb24mIGdy
YW1tYXJTZWxlY3Rpb24pOwogICAgIHZvaWQgbWFya0FuZFJlcGxhY2VGb3IoUGFzc1JlZlB0cjxT
cGVsbENoZWNrUmVxdWVzdD4sIGNvbnN0IFZlY3RvcjxUZXh0Q2hlY2tpbmdSZXN1bHQ+Jik7CiAK
ICAgICBib29sIGlzT3ZlcndyaXRlTW9kZUVuYWJsZWQoKSBjb25zdCB7IHJldHVybiBtX292ZXJ3
cml0ZU1vZGVFbmFibGVkOyB9Ci0gICAgdm9pZCB0b2dnbGVPdmVyd3JpdGVNb2RlRW5hYmxlZCgp
OworICAgIFdFQkNPUkVfRVhQT1JUIHZvaWQgdG9nZ2xlT3ZlcndyaXRlTW9kZUVuYWJsZWQoKTsK
IAogICAgIHZvaWQgbWFya0FsbE1pc3NwZWxsaW5nc0FuZEJhZEdyYW1tYXJJblJhbmdlcyhUZXh0
Q2hlY2tpbmdUeXBlTWFzaywgUmFuZ2UqIHNwZWxsaW5nUmFuZ2UsIFJhbmdlKiBncmFtbWFyUmFu
Z2UpOwogI2lmIFBMQVRGT1JNKElPUykKQEAgLTI1Nyw3ICsyNTcsNyBAQCBwdWJsaWM6CiAgICAg
dm9pZCBjaGFuZ2VCYWNrVG9SZXBsYWNlZFN0cmluZyhjb25zdCBTdHJpbmcmIHJlcGxhY2VkU3Ry
aW5nKTsKIAogI2lmICFQTEFURk9STShJT1MpCi0gICAgdm9pZCBhZHZhbmNlVG9OZXh0TWlzc3Bl
bGxpbmcoYm9vbCBzdGFydEJlZm9yZVNlbGVjdGlvbiA9IGZhbHNlKTsKKyAgICBXRUJDT1JFX0VY
UE9SVCB2b2lkIGFkdmFuY2VUb05leHRNaXNzcGVsbGluZyhib29sIHN0YXJ0QmVmb3JlU2VsZWN0
aW9uID0gZmFsc2UpOwogI2VuZGlmIC8vICFQTEFURk9STShJT1MpCiAgICAgdm9pZCBzaG93U3Bl
bGxpbmdHdWVzc1BhbmVsKCk7CiAgICAgYm9vbCBzcGVsbGluZ1BhbmVsSXNTaG93aW5nKCk7CkBA
IC0yODEsMjQgKzI4MSwyNCBAQCBwdWJsaWM6CiAgICAgdm9pZCBzaG93Q29sb3JQYW5lbCgpOwog
ICAgIHZvaWQgdG9nZ2xlQm9sZCgpOwogICAgIHZvaWQgdG9nZ2xlVW5kZXJsaW5lKCk7Ci0gICAg
dm9pZCBzZXRCYXNlV3JpdGluZ0RpcmVjdGlvbihXcml0aW5nRGlyZWN0aW9uKTsKKyAgICBXRUJD
T1JFX0VYUE9SVCB2b2lkIHNldEJhc2VXcml0aW5nRGlyZWN0aW9uKFdyaXRpbmdEaXJlY3Rpb24p
OwogCiAgICAgLy8gc21hcnRJbnNlcnREZWxldGVFbmFibGVkIGFuZCBzZWxlY3RUcmFpbGluZ1do
aXRlc3BhY2VFbmFibGVkIGFyZSAKICAgICAvLyBtdXR1YWxseSBleGNsdXNpdmUsIG1lYW5pbmcg
dGhhdCBlbmFibGluZyBvbmUgd2lsbCBkaXNhYmxlIHRoZSBvdGhlci4KICAgICBib29sIHNtYXJ0
SW5zZXJ0RGVsZXRlRW5hYmxlZCgpOwogICAgIGJvb2wgaXNTZWxlY3RUcmFpbGluZ1doaXRlc3Bh
Y2VFbmFibGVkKCk7CiAgICAgCi0gICAgYm9vbCBoYXNCaWRpU2VsZWN0aW9uKCkgY29uc3Q7Cisg
ICAgV0VCQ09SRV9FWFBPUlQgYm9vbCBoYXNCaWRpU2VsZWN0aW9uKCkgY29uc3Q7CiAKICAgICAv
LyBpbnRlcm5hdGlvbmFsIHRleHQgaW5wdXQgY29tcG9zaXRpb24KICAgICBib29sIGhhc0NvbXBv
c2l0aW9uKCkgY29uc3QgeyByZXR1cm4gbV9jb21wb3NpdGlvbk5vZGU7IH0KLSAgICB2b2lkIHNl
dENvbXBvc2l0aW9uKGNvbnN0IFN0cmluZyYsIGNvbnN0IFZlY3RvcjxDb21wb3NpdGlvblVuZGVy
bGluZT4mLCB1bnNpZ25lZCBzZWxlY3Rpb25TdGFydCwgdW5zaWduZWQgc2VsZWN0aW9uRW5kKTsK
LSAgICB2b2lkIGNvbmZpcm1Db21wb3NpdGlvbigpOwotICAgIHZvaWQgY29uZmlybUNvbXBvc2l0
aW9uKGNvbnN0IFN0cmluZyYpOyAvLyBpZiBubyBleGlzdGluZyBjb21wb3NpdGlvbiwgcmVwbGFj
ZXMgc2VsZWN0aW9uCi0gICAgdm9pZCBjYW5jZWxDb21wb3NpdGlvbigpOworICAgIFdFQkNPUkVf
RVhQT1JUIHZvaWQgc2V0Q29tcG9zaXRpb24oY29uc3QgU3RyaW5nJiwgY29uc3QgVmVjdG9yPENv
bXBvc2l0aW9uVW5kZXJsaW5lPiYsIHVuc2lnbmVkIHNlbGVjdGlvblN0YXJ0LCB1bnNpZ25lZCBz
ZWxlY3Rpb25FbmQpOworICAgIFdFQkNPUkVfRVhQT1JUIHZvaWQgY29uZmlybUNvbXBvc2l0aW9u
KCk7CisgICAgV0VCQ09SRV9FWFBPUlQgdm9pZCBjb25maXJtQ29tcG9zaXRpb24oY29uc3QgU3Ry
aW5nJik7IC8vIGlmIG5vIGV4aXN0aW5nIGNvbXBvc2l0aW9uLCByZXBsYWNlcyBzZWxlY3Rpb24K
KyAgICBXRUJDT1JFX0VYUE9SVCB2b2lkIGNhbmNlbENvbXBvc2l0aW9uKCk7CiAgICAgYm9vbCBj
YW5jZWxDb21wb3NpdGlvbklmU2VsZWN0aW9uSXNJbnZhbGlkKCk7Ci0gICAgUGFzc1JlZlB0cjxS
YW5nZT4gY29tcG9zaXRpb25SYW5nZSgpIGNvbnN0OwotICAgIGJvb2wgZ2V0Q29tcG9zaXRpb25T
ZWxlY3Rpb24odW5zaWduZWQmIHNlbGVjdGlvblN0YXJ0LCB1bnNpZ25lZCYgc2VsZWN0aW9uRW5k
KSBjb25zdDsKKyAgICBXRUJDT1JFX0VYUE9SVCBQYXNzUmVmUHRyPFJhbmdlPiBjb21wb3NpdGlv
blJhbmdlKCkgY29uc3Q7CisgICAgV0VCQ09SRV9FWFBPUlQgYm9vbCBnZXRDb21wb3NpdGlvblNl
bGVjdGlvbih1bnNpZ25lZCYgc2VsZWN0aW9uU3RhcnQsIHVuc2lnbmVkJiBzZWxlY3Rpb25FbmQp
IGNvbnN0OwogCiAgICAgLy8gZ2V0dGluZyBpbnRlcm5hdGlvbmFsIHRleHQgaW5wdXQgY29tcG9z
aXRpb24gc3RhdGUgKGZvciB1c2UgYnkgSW5saW5lVGV4dEJveCkKICAgICBUZXh0KiBjb21wb3Np
dGlvbk5vZGUoKSBjb25zdCB7IHJldHVybiBtX2NvbXBvc2l0aW9uTm9kZS5nZXQoKTsgfQpAQCAt
MzA3LDEyICszMDcsMTIgQEAgcHVibGljOgogICAgIGJvb2wgY29tcG9zaXRpb25Vc2VzQ3VzdG9t
VW5kZXJsaW5lcygpIGNvbnN0IHsgcmV0dXJuICFtX2N1c3RvbUNvbXBvc2l0aW9uVW5kZXJsaW5l
cy5pc0VtcHR5KCk7IH0KICAgICBjb25zdCBWZWN0b3I8Q29tcG9zaXRpb25VbmRlcmxpbmU+JiBj
dXN0b21Db21wb3NpdGlvblVuZGVybGluZXMoKSBjb25zdCB7IHJldHVybiBtX2N1c3RvbUNvbXBv
c2l0aW9uVW5kZXJsaW5lczsgfQogCi0gICAgdm9pZCBzZXRJZ25vcmVDb21wb3NpdGlvblNlbGVj
dGlvbkNoYW5nZShib29sKTsKKyAgICBXRUJDT1JFX0VYUE9SVCB2b2lkIHNldElnbm9yZUNvbXBv
c2l0aW9uU2VsZWN0aW9uQ2hhbmdlKGJvb2wpOwogICAgIGJvb2wgaWdub3JlQ29tcG9zaXRpb25T
ZWxlY3Rpb25DaGFuZ2UoKSBjb25zdCB7IHJldHVybiBtX2lnbm9yZUNvbXBvc2l0aW9uU2VsZWN0
aW9uQ2hhbmdlOyB9CiAKICAgICB2b2lkIHNldFN0YXJ0TmV3S2lsbFJpbmdTZXF1ZW5jZShib29s
KTsKIAotICAgIFBhc3NSZWZQdHI8UmFuZ2U+IHJhbmdlRm9yUG9pbnQoY29uc3QgSW50UG9pbnQm
IHdpbmRvd1BvaW50KTsKKyAgICBXRUJDT1JFX0VYUE9SVCBQYXNzUmVmUHRyPFJhbmdlPiByYW5n
ZUZvclBvaW50KGNvbnN0IEludFBvaW50JiB3aW5kb3dQb2ludCk7CiAKICAgICB2b2lkIGNsZWFy
KCk7CiAKQEAgLTMyNiwyNSArMzI2LDI1IEBAIHB1YmxpYzoKICAgICBQYXNzUmVmUHRyPFJhbmdl
PiBzZWxlY3RlZFJhbmdlKCk7CiAKICNpZiBQTEFURk9STShJT1MpCi0gICAgdm9pZCBjb25maXJt
TWFya2VkVGV4dCgpOwotICAgIHZvaWQgc2V0VGV4dEFzQ2hpbGRPZkVsZW1lbnQoY29uc3QgU3Ry
aW5nJiwgRWxlbWVudCopOwotICAgIHZvaWQgc2V0VGV4dEFsaWdubWVudEZvckNoYW5nZWRCYXNl
V3JpdGluZ0RpcmVjdGlvbihXcml0aW5nRGlyZWN0aW9uKTsKLSAgICB2b2lkIGluc2VydERpY3Rh
dGlvblBocmFzZXMoUGFzc093blB0cjxWZWN0b3I8VmVjdG9yPFN0cmluZz4gPiA+IGRpY3RhdGlv
blBocmFzZXMsIFJldGFpblB0cjxpZD4gbWV0YWRhdGEpOwotICAgIHZvaWQgc2V0RGljdGF0aW9u
UGhyYXNlc0FzQ2hpbGRPZkVsZW1lbnQoUGFzc093blB0cjxWZWN0b3I8VmVjdG9yPFN0cmluZz4g
PiA+IGRpY3RhdGlvblBocmFzZXMsIFJldGFpblB0cjxpZD4gbWV0YWRhdGEsIEVsZW1lbnQqIGVs
ZW1lbnQpOworICAgIFdFQkNPUkVfRVhQT1JUIHZvaWQgY29uZmlybU1hcmtlZFRleHQoKTsKKyAg
ICBXRUJDT1JFX0VYUE9SVCB2b2lkIHNldFRleHRBc0NoaWxkT2ZFbGVtZW50KGNvbnN0IFN0cmlu
ZyYsIEVsZW1lbnQqKTsKKyAgICBXRUJDT1JFX0VYUE9SVCB2b2lkIHNldFRleHRBbGlnbm1lbnRG
b3JDaGFuZ2VkQmFzZVdyaXRpbmdEaXJlY3Rpb24oV3JpdGluZ0RpcmVjdGlvbik7CisgICAgV0VC
Q09SRV9FWFBPUlQgdm9pZCBpbnNlcnREaWN0YXRpb25QaHJhc2VzKFBhc3NPd25QdHI8VmVjdG9y
PFZlY3RvcjxTdHJpbmc+ID4gPiBkaWN0YXRpb25QaHJhc2VzLCBSZXRhaW5QdHI8aWQ+IG1ldGFk
YXRhKTsKKyAgICBXRUJDT1JFX0VYUE9SVCB2b2lkIHNldERpY3RhdGlvblBocmFzZXNBc0NoaWxk
T2ZFbGVtZW50KFBhc3NPd25QdHI8VmVjdG9yPFZlY3RvcjxTdHJpbmc+ID4gPiBkaWN0YXRpb25Q
aHJhc2VzLCBSZXRhaW5QdHI8aWQ+IG1ldGFkYXRhLCBFbGVtZW50KiBlbGVtZW50KTsKICNlbmRp
ZgogICAgIAogICAgIHZvaWQgYWRkVG9LaWxsUmluZyhSYW5nZSosIGJvb2wgcHJlcGVuZCk7CiAK
ICAgICB2b2lkIHN0YXJ0QWx0ZXJuYXRpdmVUZXh0VUlUaW1lcigpOwogICAgIC8vIElmIHVzZXIg
Y29uZmlybWVkIGEgY29ycmVjdGlvbiBpbiB0aGUgY29ycmVjdGlvbiBwYW5lbCwgY29ycmVjdGlv
biBoYXMgbm9uLXplcm8gbGVuZ3RoLCBvdGhlcndpc2UgaXQgbWVhbnMgdGhhdCB1c2VyIGhhcyBk
aXNtaXNzZWQgdGhlIHBhbmVsLgotICAgIHZvaWQgaGFuZGxlQWx0ZXJuYXRpdmVUZXh0VUlSZXN1
bHQoY29uc3QgU3RyaW5nJiBjb3JyZWN0aW9uKTsKKyAgICBXRUJDT1JFX0VYUE9SVCB2b2lkIGhh
bmRsZUFsdGVybmF0aXZlVGV4dFVJUmVzdWx0KGNvbnN0IFN0cmluZyYgY29ycmVjdGlvbik7CiAg
ICAgdm9pZCBkaXNtaXNzQ29ycmVjdGlvblBhbmVsQXNJZ25vcmVkKCk7CiAKLSAgICB2b2lkIHBh
c3RlQXNGcmFnbWVudChQYXNzUmVmUHRyPERvY3VtZW50RnJhZ21lbnQ+LCBib29sIHNtYXJ0UmVw
bGFjZSwgYm9vbCBtYXRjaFN0eWxlLCBNYWlsQmxvY2txdW90ZUhhbmRsaW5nID0gTWFpbEJsb2Nr
cXVvdGVIYW5kbGluZzo6UmVzcGVjdEJsb2NrcXVvdGUpOwotICAgIHZvaWQgcGFzdGVBc1BsYWlu
VGV4dChjb25zdCBTdHJpbmcmLCBib29sIHNtYXJ0UmVwbGFjZSk7CisgICAgV0VCQ09SRV9FWFBP
UlQgdm9pZCBwYXN0ZUFzRnJhZ21lbnQoUGFzc1JlZlB0cjxEb2N1bWVudEZyYWdtZW50PiwgYm9v
bCBzbWFydFJlcGxhY2UsIGJvb2wgbWF0Y2hTdHlsZSwgTWFpbEJsb2NrcXVvdGVIYW5kbGluZyA9
IE1haWxCbG9ja3F1b3RlSGFuZGxpbmc6OlJlc3BlY3RCbG9ja3F1b3RlKTsKKyAgICBXRUJDT1JF
X0VYUE9SVCB2b2lkIHBhc3RlQXNQbGFpblRleHQoY29uc3QgU3RyaW5nJiwgYm9vbCBzbWFydFJl
cGxhY2UpOwogCiAgICAgLy8gVGhpcyBpcyBvbmx5IGNhbGxlZCBvbiB0aGUgbWFjIHdoZXJlIHBh
c3RlIGlzIGltcGxlbWVudGVkIHByaW1hcmlseSBhdCB0aGUgV2ViS2l0IGxldmVsLgotICAgIHZv
aWQgcGFzdGVBc1BsYWluVGV4dEJ5cGFzc2luZ0RIVE1MKCk7CisgICAgV0VCQ09SRV9FWFBPUlQg
dm9pZCBwYXN0ZUFzUGxhaW5UZXh0QnlwYXNzaW5nREhUTUwoKTsKICAKICAgICB2b2lkIGNsZWFy
TWlzc3BlbGxpbmdzQW5kQmFkR3JhbW1hcihjb25zdCBWaXNpYmxlU2VsZWN0aW9uJik7CiAgICAg
dm9pZCBtYXJrTWlzc3BlbGxpbmdzQW5kQmFkR3JhbW1hcihjb25zdCBWaXNpYmxlU2VsZWN0aW9u
Jik7CkBAIC0zNTMsNyArMzUzLDcgQEAgcHVibGljOgogCiAgICAgU3RyaW5nIHNlbGVjdGVkVGV4
dCgpIGNvbnN0OwogICAgIFN0cmluZyBzZWxlY3RlZFRleHRGb3JEYXRhVHJhbnNmZXIoKSBjb25z
dDsKLSAgICBib29sIGZpbmRTdHJpbmcoY29uc3QgU3RyaW5nJiwgRmluZE9wdGlvbnMpOworICAg
IFdFQkNPUkVfRVhQT1JUIGJvb2wgZmluZFN0cmluZyhjb25zdCBTdHJpbmcmLCBGaW5kT3B0aW9u
cyk7CiAKICAgICBQYXNzUmVmUHRyPFJhbmdlPiByYW5nZU9mU3RyaW5nKGNvbnN0IFN0cmluZyYs
IFJhbmdlKiwgRmluZE9wdGlvbnMpOwogICAgIFBhc3NSZWZQdHI8UmFuZ2U+IGZpbmRTdHJpbmdB
bmRTY3JvbGxUb1Zpc2libGUoY29uc3QgU3RyaW5nJiwgUmFuZ2UqLCBGaW5kT3B0aW9ucyk7CkBA
IC0zNjEsMTggKzM2MSwxOCBAQCBwdWJsaWM6CiAgICAgY29uc3QgVmlzaWJsZVNlbGVjdGlvbiYg
bWFyaygpIGNvbnN0OyAvLyBNYXJrLCB0byBiZSB1c2VkIGFzIGVtYWNzIHVzZXMgaXQuCiAgICAg
dm9pZCBzZXRNYXJrKGNvbnN0IFZpc2libGVTZWxlY3Rpb24mKTsKIAotICAgIHZvaWQgY29tcHV0
ZUFuZFNldFR5cGluZ1N0eWxlKFN0eWxlUHJvcGVydGllcyogLCBFZGl0QWN0aW9uID0gRWRpdEFj
dGlvblVuc3BlY2lmaWVkKTsKLSAgICB2b2lkIGFwcGx5RWRpdGluZ1N0eWxlVG9Cb2R5RWxlbWVu
dCgpIGNvbnN0OworICAgIFdFQkNPUkVfRVhQT1JUIHZvaWQgY29tcHV0ZUFuZFNldFR5cGluZ1N0
eWxlKFN0eWxlUHJvcGVydGllcyogLCBFZGl0QWN0aW9uID0gRWRpdEFjdGlvblVuc3BlY2lmaWVk
KTsKKyAgICBXRUJDT1JFX0VYUE9SVCB2b2lkIGFwcGx5RWRpdGluZ1N0eWxlVG9Cb2R5RWxlbWVu
dCgpIGNvbnN0OwogICAgIHZvaWQgYXBwbHlFZGl0aW5nU3R5bGVUb0VsZW1lbnQoRWxlbWVudCop
IGNvbnN0OwogCi0gICAgSW50UmVjdCBmaXJzdFJlY3RGb3JSYW5nZShSYW5nZSopIGNvbnN0Owor
ICAgIFdFQkNPUkVfRVhQT1JUIEludFJlY3QgZmlyc3RSZWN0Rm9yUmFuZ2UoUmFuZ2UqKSBjb25z
dDsKIAogICAgIHZvaWQgcmVzcG9uZFRvQ2hhbmdlZFNlbGVjdGlvbihjb25zdCBWaXNpYmxlU2Vs
ZWN0aW9uJiBvbGRTZWxlY3Rpb24sIEZyYW1lU2VsZWN0aW9uOjpTZXRTZWxlY3Rpb25PcHRpb25z
KTsKLSAgICB2b2lkIHVwZGF0ZUVkaXRvclVJTm93SWZTY2hlZHVsZWQoKTsKKyAgICBXRUJDT1JF
X0VYUE9SVCB2b2lkIHVwZGF0ZUVkaXRvclVJTm93SWZTY2hlZHVsZWQoKTsKICAgICBib29sIHNo
b3VsZENoYW5nZVNlbGVjdGlvbihjb25zdCBWaXNpYmxlU2VsZWN0aW9uJiBvbGRTZWxlY3Rpb24s
IGNvbnN0IFZpc2libGVTZWxlY3Rpb24mIG5ld1NlbGVjdGlvbiwgRUFmZmluaXR5LCBib29sIHN0
aWxsU2VsZWN0aW5nKSBjb25zdDsKLSAgICB1bnNpZ25lZCBjb3VudE1hdGNoZXNGb3JUZXh0KGNv
bnN0IFN0cmluZyYsIFJhbmdlKiwgRmluZE9wdGlvbnMsIHVuc2lnbmVkIGxpbWl0LCBib29sIG1h
cmtNYXRjaGVzLCBWZWN0b3I8UmVmUHRyPFJhbmdlPj4qKTsKKyAgICBXRUJDT1JFX0VYUE9SVCB1
bnNpZ25lZCBjb3VudE1hdGNoZXNGb3JUZXh0KGNvbnN0IFN0cmluZyYsIFJhbmdlKiwgRmluZE9w
dGlvbnMsIHVuc2lnbmVkIGxpbWl0LCBib29sIG1hcmtNYXRjaGVzLCBWZWN0b3I8UmVmUHRyPFJh
bmdlPj4qKTsKICAgICBib29sIG1hcmtlZFRleHRNYXRjaGVzQXJlSGlnaGxpZ2h0ZWQoKSBjb25z
dDsKLSAgICB2b2lkIHNldE1hcmtlZFRleHRNYXRjaGVzQXJlSGlnaGxpZ2h0ZWQoYm9vbCk7Cisg
ICAgV0VCQ09SRV9FWFBPUlQgdm9pZCBzZXRNYXJrZWRUZXh0TWF0Y2hlc0FyZUhpZ2hsaWdodGVk
KGJvb2wpOwogCiAgICAgdm9pZCB0ZXh0RmllbGREaWRCZWdpbkVkaXRpbmcoRWxlbWVudCopOwog
ICAgIHZvaWQgdGV4dEZpZWxkRGlkRW5kRWRpdGluZyhFbGVtZW50Kik7CkBAIC0zODAsMTUgKzM4
MCwxNSBAQCBwdWJsaWM6CiAgICAgYm9vbCBkb1RleHRGaWVsZENvbW1hbmRGcm9tRXZlbnQoRWxl
bWVudCosIEtleWJvYXJkRXZlbnQqKTsKICAgICB2b2lkIHRleHRXaWxsQmVEZWxldGVkSW5UZXh0
RmllbGQoRWxlbWVudCogaW5wdXQpOwogICAgIHZvaWQgdGV4dERpZENoYW5nZUluVGV4dEFyZWEo
RWxlbWVudCopOwotICAgIFdyaXRpbmdEaXJlY3Rpb24gYmFzZVdyaXRpbmdEaXJlY3Rpb25Gb3JT
ZWxlY3Rpb25TdGFydCgpIGNvbnN0OworICAgIFdFQkNPUkVfRVhQT1JUIFdyaXRpbmdEaXJlY3Rp
b24gYmFzZVdyaXRpbmdEaXJlY3Rpb25Gb3JTZWxlY3Rpb25TdGFydCgpIGNvbnN0OwogCi0gICAg
dm9pZCByZXBsYWNlU2VsZWN0aW9uV2l0aEZyYWdtZW50KFBhc3NSZWZQdHI8RG9jdW1lbnRGcmFn
bWVudD4sIGJvb2wgc2VsZWN0UmVwbGFjZW1lbnQsIGJvb2wgc21hcnRSZXBsYWNlLCBib29sIG1h
dGNoU3R5bGUsIE1haWxCbG9ja3F1b3RlSGFuZGxpbmcgPSBNYWlsQmxvY2txdW90ZUhhbmRsaW5n
OjpSZXNwZWN0QmxvY2txdW90ZSk7Ci0gICAgdm9pZCByZXBsYWNlU2VsZWN0aW9uV2l0aFRleHQo
Y29uc3QgU3RyaW5nJiwgYm9vbCBzZWxlY3RSZXBsYWNlbWVudCwgYm9vbCBzbWFydFJlcGxhY2Up
OwotICAgIGJvb2wgc2VsZWN0aW9uU3RhcnRIYXNNYXJrZXJGb3IoRG9jdW1lbnRNYXJrZXI6Ok1h
cmtlclR5cGUsIGludCBmcm9tLCBpbnQgbGVuZ3RoKSBjb25zdDsKKyAgICBXRUJDT1JFX0VYUE9S
VCB2b2lkIHJlcGxhY2VTZWxlY3Rpb25XaXRoRnJhZ21lbnQoUGFzc1JlZlB0cjxEb2N1bWVudEZy
YWdtZW50PiwgYm9vbCBzZWxlY3RSZXBsYWNlbWVudCwgYm9vbCBzbWFydFJlcGxhY2UsIGJvb2wg
bWF0Y2hTdHlsZSwgTWFpbEJsb2NrcXVvdGVIYW5kbGluZyA9IE1haWxCbG9ja3F1b3RlSGFuZGxp
bmc6OlJlc3BlY3RCbG9ja3F1b3RlKTsKKyAgICBXRUJDT1JFX0VYUE9SVCB2b2lkIHJlcGxhY2VT
ZWxlY3Rpb25XaXRoVGV4dChjb25zdCBTdHJpbmcmLCBib29sIHNlbGVjdFJlcGxhY2VtZW50LCBi
b29sIHNtYXJ0UmVwbGFjZSk7CisgICAgV0VCQ09SRV9FWFBPUlQgYm9vbCBzZWxlY3Rpb25TdGFy
dEhhc01hcmtlckZvcihEb2N1bWVudE1hcmtlcjo6TWFya2VyVHlwZSwgaW50IGZyb20sIGludCBs
ZW5ndGgpIGNvbnN0OwogICAgIHZvaWQgdXBkYXRlTWFya2Vyc0ZvcldvcmRzQWZmZWN0ZWRCeUVk
aXRpbmcoYm9vbCBvbmx5SGFuZGxlV29yZHNDb250YWluaW5nU2VsZWN0aW9uKTsKICAgICB2b2lk
IGRlbGV0ZWRBdXRvY29ycmVjdGlvbkF0UG9zaXRpb24oY29uc3QgUG9zaXRpb24mLCBjb25zdCBT
dHJpbmcmIG9yaWdpbmFsU3RyaW5nKTsKICAgICAKLSAgICB2b2lkIHNpbXBsaWZ5TWFya3VwKE5v
ZGUqIHN0YXJ0Tm9kZSwgTm9kZSogZW5kTm9kZSk7CisgICAgV0VCQ09SRV9FWFBPUlQgdm9pZCBz
aW1wbGlmeU1hcmt1cChOb2RlKiBzdGFydE5vZGUsIE5vZGUqIGVuZE5vZGUpOwogCiAgICAgdm9p
ZCBkZXZpY2VTY2FsZUZhY3RvckNoYW5nZWQoKTsKIApAQCAtNDAxLDI1ICs0MDEsMjUgQEAgcHVi
bGljOgogICAgIFZpc2libGVTZWxlY3Rpb24gYXZvaWRJbnRlcnNlY3Rpb25XaXRoRGVsZXRlQnV0
dG9uQ29udHJvbGxlcihjb25zdCBWaXNpYmxlU2VsZWN0aW9uJikgY29uc3Q7CiAKICNpZiBVU0Uo
QVBQS0lUKQotICAgIHZvaWQgdXBwZXJjYXNlV29yZCgpOwotICAgIHZvaWQgbG93ZXJjYXNlV29y
ZCgpOwotICAgIHZvaWQgY2FwaXRhbGl6ZVdvcmQoKTsKKyAgICBXRUJDT1JFX0VYUE9SVCB2b2lk
IHVwcGVyY2FzZVdvcmQoKTsKKyAgICBXRUJDT1JFX0VYUE9SVCB2b2lkIGxvd2VyY2FzZVdvcmQo
KTsKKyAgICBXRUJDT1JFX0VYUE9SVCB2b2lkIGNhcGl0YWxpemVXb3JkKCk7CiAjZW5kaWYKIAog
I2lmIFVTRShBVVRPTUFUSUNfVEVYVF9SRVBMQUNFTUVOVCkKLSAgICB2b2lkIHNob3dTdWJzdGl0
dXRpb25zUGFuZWwoKTsKLSAgICBib29sIHN1YnN0aXR1dGlvbnNQYW5lbElzU2hvd2luZygpOwot
ICAgIHZvaWQgdG9nZ2xlU21hcnRJbnNlcnREZWxldGUoKTsKLSAgICBib29sIGlzQXV0b21hdGlj
UXVvdGVTdWJzdGl0dXRpb25FbmFibGVkKCk7Ci0gICAgdm9pZCB0b2dnbGVBdXRvbWF0aWNRdW90
ZVN1YnN0aXR1dGlvbigpOwotICAgIGJvb2wgaXNBdXRvbWF0aWNMaW5rRGV0ZWN0aW9uRW5hYmxl
ZCgpOwotICAgIHZvaWQgdG9nZ2xlQXV0b21hdGljTGlua0RldGVjdGlvbigpOwotICAgIGJvb2wg
aXNBdXRvbWF0aWNEYXNoU3Vic3RpdHV0aW9uRW5hYmxlZCgpOwotICAgIHZvaWQgdG9nZ2xlQXV0
b21hdGljRGFzaFN1YnN0aXR1dGlvbigpOwotICAgIGJvb2wgaXNBdXRvbWF0aWNUZXh0UmVwbGFj
ZW1lbnRFbmFibGVkKCk7Ci0gICAgdm9pZCB0b2dnbGVBdXRvbWF0aWNUZXh0UmVwbGFjZW1lbnQo
KTsKLSAgICBib29sIGlzQXV0b21hdGljU3BlbGxpbmdDb3JyZWN0aW9uRW5hYmxlZCgpOwotICAg
IHZvaWQgdG9nZ2xlQXV0b21hdGljU3BlbGxpbmdDb3JyZWN0aW9uKCk7CisgICAgV0VCQ09SRV9F
WFBPUlQgdm9pZCBzaG93U3Vic3RpdHV0aW9uc1BhbmVsKCk7CisgICAgV0VCQ09SRV9FWFBPUlQg
Ym9vbCBzdWJzdGl0dXRpb25zUGFuZWxJc1Nob3dpbmcoKTsKKyAgICBXRUJDT1JFX0VYUE9SVCB2
b2lkIHRvZ2dsZVNtYXJ0SW5zZXJ0RGVsZXRlKCk7CisgICAgV0VCQ09SRV9FWFBPUlQgYm9vbCBp
c0F1dG9tYXRpY1F1b3RlU3Vic3RpdHV0aW9uRW5hYmxlZCgpOworICAgIFdFQkNPUkVfRVhQT1JU
IHZvaWQgdG9nZ2xlQXV0b21hdGljUXVvdGVTdWJzdGl0dXRpb24oKTsKKyAgICBXRUJDT1JFX0VY
UE9SVCBib29sIGlzQXV0b21hdGljTGlua0RldGVjdGlvbkVuYWJsZWQoKTsKKyAgICBXRUJDT1JF
X0VYUE9SVCB2b2lkIHRvZ2dsZUF1dG9tYXRpY0xpbmtEZXRlY3Rpb24oKTsKKyAgICBXRUJDT1JF
X0VYUE9SVCBib29sIGlzQXV0b21hdGljRGFzaFN1YnN0aXR1dGlvbkVuYWJsZWQoKTsKKyAgICBX
RUJDT1JFX0VYUE9SVCB2b2lkIHRvZ2dsZUF1dG9tYXRpY0Rhc2hTdWJzdGl0dXRpb24oKTsKKyAg
ICBXRUJDT1JFX0VYUE9SVCBib29sIGlzQXV0b21hdGljVGV4dFJlcGxhY2VtZW50RW5hYmxlZCgp
OworICAgIFdFQkNPUkVfRVhQT1JUIHZvaWQgdG9nZ2xlQXV0b21hdGljVGV4dFJlcGxhY2VtZW50
KCk7CisgICAgV0VCQ09SRV9FWFBPUlQgYm9vbCBpc0F1dG9tYXRpY1NwZWxsaW5nQ29ycmVjdGlv
bkVuYWJsZWQoKTsKKyAgICBXRUJDT1JFX0VYUE9SVCB2b2lkIHRvZ2dsZUF1dG9tYXRpY1NwZWxs
aW5nQ29ycmVjdGlvbigpOwogI2VuZGlmCiAKICNpZiBFTkFCTEUoREVMRVRJT05fVUkpCkBAIC00
MjcsMjUgKzQyNywyNSBAQCBwdWJsaWM6CiAjZW5kaWYKIAogI2lmIFBMQVRGT1JNKENPQ09BKQot
ICAgIHN0YXRpYyBSZW5kZXJTdHlsZSogc3R5bGVGb3JTZWxlY3Rpb25TdGFydChGcmFtZSogLCBO
b2RlICombm9kZVRvUmVtb3ZlKTsKLSAgICBib29sIGluc2VydFBhcmFncmFwaFNlcGFyYXRvcklu
UXVvdGVkQ29udGVudCgpOwotICAgIGNvbnN0IFNpbXBsZUZvbnREYXRhKiBmb250Rm9yU2VsZWN0
aW9uKGJvb2wmKSBjb25zdDsKLSAgICBOU0RpY3Rpb25hcnkqIGZvbnRBdHRyaWJ1dGVzRm9yU2Vs
ZWN0aW9uU3RhcnQoKSBjb25zdDsKLSAgICBTdHJpbmcgc3RyaW5nU2VsZWN0aW9uRm9yUGFzdGVi
b2FyZCgpOworICAgIFdFQkNPUkVfRVhQT1JUIHN0YXRpYyBSZW5kZXJTdHlsZSogc3R5bGVGb3JT
ZWxlY3Rpb25TdGFydChGcmFtZSogLCBOb2RlICombm9kZVRvUmVtb3ZlKTsKKyAgICBXRUJDT1JF
X0VYUE9SVCBib29sIGluc2VydFBhcmFncmFwaFNlcGFyYXRvckluUXVvdGVkQ29udGVudCgpOwor
ICAgIFdFQkNPUkVfRVhQT1JUIGNvbnN0IFNpbXBsZUZvbnREYXRhKiBmb250Rm9yU2VsZWN0aW9u
KGJvb2wmKSBjb25zdDsKKyAgICBXRUJDT1JFX0VYUE9SVCBOU0RpY3Rpb25hcnkqIGZvbnRBdHRy
aWJ1dGVzRm9yU2VsZWN0aW9uU3RhcnQoKSBjb25zdDsKKyAgICBXRUJDT1JFX0VYUE9SVCBTdHJp
bmcgc3RyaW5nU2VsZWN0aW9uRm9yUGFzdGVib2FyZCgpOwogICAgIFN0cmluZyBzdHJpbmdTZWxl
Y3Rpb25Gb3JQYXN0ZWJvYXJkV2l0aEltYWdlQWx0VGV4dCgpOwogICAgIFBhc3NSZWZQdHI8RG9j
dW1lbnRGcmFnbWVudD4gd2ViQ29udGVudEZyb21QYXN0ZWJvYXJkKFBhc3RlYm9hcmQmLCBSYW5n
ZSYgY29udGV4dCwgYm9vbCBhbGxvd1BsYWluVGV4dCwgYm9vbCYgY2hvc2VQbGFpblRleHQpOwog
I2lmICFQTEFURk9STShJT1MpCiAgICAgYm9vbCBjYW5Db3B5RXhjbHVkaW5nU3RhbmRhbG9uZUlt
YWdlcygpOwogICAgIHZvaWQgdGFrZUZpbmRTdHJpbmdGcm9tU2VsZWN0aW9uKCk7Ci0gICAgdm9p
ZCByZWFkU2VsZWN0aW9uRnJvbVBhc3RlYm9hcmQoY29uc3QgU3RyaW5nJiBwYXN0ZWJvYXJkTmFt
ZSwgTWFpbEJsb2NrcXVvdGVIYW5kbGluZyA9IE1haWxCbG9ja3F1b3RlSGFuZGxpbmc6OlJlc3Bl
Y3RCbG9ja3F1b3RlKTsKLSAgICB2b2lkIHJlcGxhY2VOb2RlRnJvbVBhc3RlYm9hcmQoTm9kZSos
IGNvbnN0IFN0cmluZyYgcGFzdGVib2FyZE5hbWUpOwotICAgIFBhc3NSZWZQdHI8U2hhcmVkQnVm
ZmVyPiBkYXRhU2VsZWN0aW9uRm9yUGFzdGVib2FyZChjb25zdCBTdHJpbmcmIHBhc3RlYm9hcmRO
YW1lKTsKKyAgICBXRUJDT1JFX0VYUE9SVCB2b2lkIHJlYWRTZWxlY3Rpb25Gcm9tUGFzdGVib2Fy
ZChjb25zdCBTdHJpbmcmIHBhc3RlYm9hcmROYW1lLCBNYWlsQmxvY2txdW90ZUhhbmRsaW5nID0g
TWFpbEJsb2NrcXVvdGVIYW5kbGluZzo6UmVzcGVjdEJsb2NrcXVvdGUpOworICAgIFdFQkNPUkVf
RVhQT1JUIHZvaWQgcmVwbGFjZU5vZGVGcm9tUGFzdGVib2FyZChOb2RlKiwgY29uc3QgU3RyaW5n
JiBwYXN0ZWJvYXJkTmFtZSk7CisgICAgV0VCQ09SRV9FWFBPUlQgUGFzc1JlZlB0cjxTaGFyZWRC
dWZmZXI+IGRhdGFTZWxlY3Rpb25Gb3JQYXN0ZWJvYXJkKGNvbnN0IFN0cmluZyYgcGFzdGVib2Fy
ZE5hbWUpOwogI2VuZGlmIC8vICFQTEFURk9STShJT1MpCiAjZW5kaWYKIAogI2lmIFBMQVRGT1JN
KENPQ09BKSB8fCBQTEFURk9STShFRkwpCi0gICAgdm9pZCB3cml0ZVNlbGVjdGlvblRvUGFzdGVi
b2FyZChQYXN0ZWJvYXJkJik7Ci0gICAgdm9pZCB3cml0ZUltYWdlVG9QYXN0ZWJvYXJkKFBhc3Rl
Ym9hcmQmLCBFbGVtZW50JiBpbWFnZUVsZW1lbnQsIGNvbnN0IFVSTCYsIGNvbnN0IFN0cmluZyYg
dGl0bGUpOworICAgIFdFQkNPUkVfRVhQT1JUIHZvaWQgd3JpdGVTZWxlY3Rpb25Ub1Bhc3RlYm9h
cmQoUGFzdGVib2FyZCYpOworICAgIFdFQkNPUkVfRVhQT1JUIHZvaWQgd3JpdGVJbWFnZVRvUGFz
dGVib2FyZChQYXN0ZWJvYXJkJiwgRWxlbWVudCYgaW1hZ2VFbGVtZW50LCBjb25zdCBVUkwmLCBj
b25zdCBTdHJpbmcmIHRpdGxlKTsKICNlbmRpZgogCiAjaWYgRU5BQkxFKFRFTEVQSE9ORV9OVU1C
RVJfREVURUNUSU9OKSAmJiAhUExBVEZPUk0oSU9TKQpAQCAtNDY4LDcgKzQ2OCw3IEBAIHByaXZh
dGU6CiAgICAgdm9pZCBtYXJrTWlzc3BlbGxpbmdzT3JCYWRHcmFtbWFyKGNvbnN0IFZpc2libGVT
ZWxlY3Rpb24mLCBib29sIGNoZWNrU3BlbGxpbmcsIFJlZlB0cjxSYW5nZT4mIGZpcnN0TWlzc3Bl
bGxpbmdSYW5nZSk7CiAgICAgVGV4dENoZWNraW5nVHlwZU1hc2sgcmVzb2x2ZVRleHRDaGVja2lu
Z1R5cGVNYXNrKFRleHRDaGVja2luZ1R5cGVNYXNrKTsKIAotICAgIFN0cmluZyBzZWxlY3RlZFRl
eHQoVGV4dEl0ZXJhdG9yQmVoYXZpb3IpIGNvbnN0OworICAgIFdFQkNPUkVfRVhQT1JUIFN0cmlu
ZyBzZWxlY3RlZFRleHQoVGV4dEl0ZXJhdG9yQmVoYXZpb3IpIGNvbnN0OwogCiAgICAgdm9pZCBz
ZWxlY3RDb21wb3NpdGlvbigpOwogICAgIGVudW0gU2V0Q29tcG9zaXRpb25Nb2RlIHsgQ29uZmly
bUNvbXBvc2l0aW9uLCBDYW5jZWxDb21wb3NpdGlvbiB9OwpJbmRleDogU291cmNlL1dlYkNvcmUv
ZWRpdGluZy9tYWMvQWx0ZXJuYXRpdmVUZXh0VUlDb250cm9sbGVyLmgKPT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PQotLS0g
U291cmNlL1dlYkNvcmUvZWRpdGluZy9tYWMvQWx0ZXJuYXRpdmVUZXh0VUlDb250cm9sbGVyLmgJ
KHJldmlzaW9uIDE3MjY1OCkKKysrIFNvdXJjZS9XZWJDb3JlL2VkaXRpbmcvbWFjL0FsdGVybmF0
aXZlVGV4dFVJQ29udHJvbGxlci5oCSh3b3JraW5nIGNvcHkpCkBAIC00MSwxMSArNDEsMTEgQEAg
Y2xhc3MgQWx0ZXJuYXRpdmVUZXh0VUlDb250cm9sbGVyIHsKIHB1YmxpYzoKICAgICBBbHRlcm5h
dGl2ZVRleHRVSUNvbnRyb2xsZXIoKSB7IH0KICAgICAvLyBSZXR1cm5zIGEgY29udGV4dCBJRC4K
LSAgICB1aW50NjRfdCBhZGRBbHRlcm5hdGl2ZXMoY29uc3QgUmV0YWluUHRyPE5TVGV4dEFsdGVy
bmF0aXZlcz4mKTsKLSAgICB2b2lkIGNsZWFyKCk7Ci0gICAgdm9pZCBzaG93QWx0ZXJuYXRpdmVz
KE5TVmlldyosIGNvbnN0IEZsb2F0UmVjdCYgYm91bmRpbmdCb3hPZlByaW1hcnlTdHJpbmcsIHVp
bnQ2NF90IGNvbnRleHQsIHZvaWQoXmFjY2VwdGFuY2VIYW5kbGVyKShOU1N0cmluZyopKTsKLSAg
ICB2b2lkIHJlbW92ZUFsdGVybmF0aXZlcyh1aW50NjRfdCBjb250ZXh0KTsKLSAgICBWZWN0b3I8
U3RyaW5nPiBhbHRlcm5hdGl2ZXNGb3JDb250ZXh0KHVpbnQ2NF90IGNvbnRleHQpOworICAgIFdF
QkNPUkVfRVhQT1JUIHVpbnQ2NF90IGFkZEFsdGVybmF0aXZlcyhjb25zdCBSZXRhaW5QdHI8TlNU
ZXh0QWx0ZXJuYXRpdmVzPiYpOworICAgIFdFQkNPUkVfRVhQT1JUIHZvaWQgY2xlYXIoKTsKKyAg
ICBXRUJDT1JFX0VYUE9SVCB2b2lkIHNob3dBbHRlcm5hdGl2ZXMoTlNWaWV3KiwgY29uc3QgRmxv
YXRSZWN0JiBib3VuZGluZ0JveE9mUHJpbWFyeVN0cmluZywgdWludDY0X3QgY29udGV4dCwgdm9p
ZCheYWNjZXB0YW5jZUhhbmRsZXIpKE5TU3RyaW5nKikpOworICAgIHZvaWQgV0VCQ09SRV9FWFBP
UlQgcmVtb3ZlQWx0ZXJuYXRpdmVzKHVpbnQ2NF90IGNvbnRleHQpOworICAgIFdFQkNPUkVfRVhQ
T1JUIFZlY3RvcjxTdHJpbmc+IGFsdGVybmF0aXZlc0ZvckNvbnRleHQodWludDY0X3QgY29udGV4
dCk7CiAKIHByaXZhdGU6CiAgICAgdm9pZCBoYW5kbGVBY2NlcHRlZEFsdGVybmF0aXZlKE5TU3Ry
aW5nKiBhY2NlcHRlZEFsdGVybmF0aXZlLCB1aW50NjRfdCBjb250ZXh0LCBOU1RleHRBbHRlcm5h
dGl2ZXMqKTsKSW5kZXg6IFNvdXJjZS9XZWJDb3JlL2hpc3RvcnkvQmFja0ZvcndhcmRDb250cm9s
bGVyLmgKPT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PQotLS0gU291cmNlL1dlYkNvcmUvaGlzdG9yeS9CYWNrRm9yd2FyZENv
bnRyb2xsZXIuaAkocmV2aXNpb24gMTcyNjU4KQorKysgU291cmNlL1dlYkNvcmUvaGlzdG9yeS9C
YWNrRm9yd2FyZENvbnRyb2xsZXIuaAkod29ya2luZyBjb3B5KQpAQCAtNDQsMjAgKzQ0LDIwIEBA
IHB1YmxpYzoKIAogICAgIEJhY2tGb3J3YXJkQ2xpZW50KiBjbGllbnQoKSBjb25zdCB7IHJldHVy
biBtX2NsaWVudC5nZXQoKTsgfQogCi0gICAgYm9vbCBjYW5Hb0JhY2tPckZvcndhcmQoaW50IGRp
c3RhbmNlKSBjb25zdDsKKyAgICBXRUJDT1JFX0VYUE9SVCBib29sIGNhbkdvQmFja09yRm9yd2Fy
ZChpbnQgZGlzdGFuY2UpIGNvbnN0OwogICAgIHZvaWQgZ29CYWNrT3JGb3J3YXJkKGludCBkaXN0
YW5jZSk7CiAKLSAgICBib29sIGdvQmFjaygpOwotICAgIGJvb2wgZ29Gb3J3YXJkKCk7CisgICAg
V0VCQ09SRV9FWFBPUlQgYm9vbCBnb0JhY2soKTsKKyAgICBXRUJDT1JFX0VYUE9SVCBib29sIGdv
Rm9yd2FyZCgpOwogCiAgICAgdm9pZCBhZGRJdGVtKFBhc3NSZWZQdHI8SGlzdG9yeUl0ZW0+KTsK
ICAgICB2b2lkIHNldEN1cnJlbnRJdGVtKEhpc3RvcnlJdGVtKik7CiAgICAgICAgIAogICAgIGlu
dCBjb3VudCgpIGNvbnN0OwotICAgIGludCBiYWNrQ291bnQoKSBjb25zdDsKLSAgICBpbnQgZm9y
d2FyZENvdW50KCkgY29uc3Q7CisgICAgV0VCQ09SRV9FWFBPUlQgaW50IGJhY2tDb3VudCgpIGNv
bnN0OworICAgIFdFQkNPUkVfRVhQT1JUIGludCBmb3J3YXJkQ291bnQoKSBjb25zdDsKIAotICAg
IEhpc3RvcnlJdGVtKiBpdGVtQXRJbmRleChpbnQpOworICAgIFdFQkNPUkVfRVhQT1JUIEhpc3Rv
cnlJdGVtKiBpdGVtQXRJbmRleChpbnQpOwogCiAgICAgdm9pZCBjbG9zZSgpOwogCkluZGV4OiBT
b3VyY2UvV2ViQ29yZS9oaXN0b3J5L0JhY2tGb3J3YXJkTGlzdC5oCj09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT0KLS0tIFNv
dXJjZS9XZWJDb3JlL2hpc3RvcnkvQmFja0ZvcndhcmRMaXN0LmgJKHJldmlzaW9uIDE3MjY1OCkK
KysrIFNvdXJjZS9XZWJDb3JlL2hpc3RvcnkvQmFja0ZvcndhcmRMaXN0LmgJKHdvcmtpbmcgY29w
eSkKQEAgLTQ3LDMxICs0NywzMSBAQCBwdWJsaWM6IAogICAgIFBhZ2UqIHBhZ2UoKSB7IHJldHVy
biBtX3BhZ2U7IH0KIAogICAgIHZpcnR1YWwgdm9pZCBhZGRJdGVtKFBhc3NSZWZQdHI8SGlzdG9y
eUl0ZW0+KSBvdmVycmlkZTsKLSAgICB2b2lkIGdvQmFjaygpOwotICAgIHZvaWQgZ29Gb3J3YXJk
KCk7CisgICAgV0VCQ09SRV9FWFBPUlQgdm9pZCBnb0JhY2soKTsKKyAgICBXRUJDT1JFX0VYUE9S
VCB2b2lkIGdvRm9yd2FyZCgpOwogICAgIHZpcnR1YWwgdm9pZCBnb1RvSXRlbShIaXN0b3J5SXRl
bSopIG92ZXJyaWRlOwogICAgICAgICAKLSAgICBIaXN0b3J5SXRlbSogYmFja0l0ZW0oKTsKLSAg
ICBIaXN0b3J5SXRlbSogY3VycmVudEl0ZW0oKTsKLSAgICBIaXN0b3J5SXRlbSogZm9yd2FyZEl0
ZW0oKTsKKyAgICBXRUJDT1JFX0VYUE9SVCBIaXN0b3J5SXRlbSogYmFja0l0ZW0oKTsKKyAgICBX
RUJDT1JFX0VYUE9SVCBIaXN0b3J5SXRlbSogY3VycmVudEl0ZW0oKTsKKyAgICBXRUJDT1JFX0VY
UE9SVCBIaXN0b3J5SXRlbSogZm9yd2FyZEl0ZW0oKTsKICAgICB2aXJ0dWFsIEhpc3RvcnlJdGVt
KiBpdGVtQXRJbmRleChpbnQpIG92ZXJyaWRlOwogCi0gICAgdm9pZCBiYWNrTGlzdFdpdGhMaW1p
dChpbnQsIEhpc3RvcnlJdGVtVmVjdG9yJik7Ci0gICAgdm9pZCBmb3J3YXJkTGlzdFdpdGhMaW1p
dChpbnQsIEhpc3RvcnlJdGVtVmVjdG9yJik7CisgICAgV0VCQ09SRV9FWFBPUlQgdm9pZCBiYWNr
TGlzdFdpdGhMaW1pdChpbnQsIEhpc3RvcnlJdGVtVmVjdG9yJik7CisgICAgV0VCQ09SRV9FWFBP
UlQgdm9pZCBmb3J3YXJkTGlzdFdpdGhMaW1pdChpbnQsIEhpc3RvcnlJdGVtVmVjdG9yJik7CiAK
LSAgICBpbnQgY2FwYWNpdHkoKTsKLSAgICB2b2lkIHNldENhcGFjaXR5KGludCk7Ci0gICAgYm9v
bCBlbmFibGVkKCk7Ci0gICAgdm9pZCBzZXRFbmFibGVkKGJvb2wpOworICAgIFdFQkNPUkVfRVhQ
T1JUIGludCBjYXBhY2l0eSgpOworICAgIFdFQkNPUkVfRVhQT1JUIHZvaWQgc2V0Q2FwYWNpdHko
aW50KTsKKyAgICBXRUJDT1JFX0VYUE9SVCBib29sIGVuYWJsZWQoKTsKKyAgICBXRUJDT1JFX0VY
UE9SVCB2b2lkIHNldEVuYWJsZWQoYm9vbCk7CiAgICAgdmlydHVhbCBpbnQgYmFja0xpc3RDb3Vu
dCgpIG92ZXJyaWRlOwogICAgIHZpcnR1YWwgaW50IGZvcndhcmRMaXN0Q291bnQoKSBvdmVycmlk
ZTsKLSAgICBib29sIGNvbnRhaW5zSXRlbShIaXN0b3J5SXRlbSopOworICAgIFdFQkNPUkVfRVhQ
T1JUIGJvb2wgY29udGFpbnNJdGVtKEhpc3RvcnlJdGVtKik7CiAKICAgICB2aXJ0dWFsIHZvaWQg
Y2xvc2UoKSBvdmVycmlkZTsKLSAgICBib29sIGNsb3NlZCgpOworICAgIFdFQkNPUkVfRVhQT1JU
IGJvb2wgY2xvc2VkKCk7CiAKLSAgICB2b2lkIHJlbW92ZUl0ZW0oSGlzdG9yeUl0ZW0qKTsKLSAg
ICBIaXN0b3J5SXRlbVZlY3RvciYgZW50cmllcygpOworICAgIFdFQkNPUkVfRVhQT1JUIHZvaWQg
cmVtb3ZlSXRlbShIaXN0b3J5SXRlbSopOworICAgIFdFQkNPUkVfRVhQT1JUIEhpc3RvcnlJdGVt
VmVjdG9yJiBlbnRyaWVzKCk7CiAKICNpZiBQTEFURk9STShJT1MpCiAgICAgdmlydHVhbCB1bnNp
Z25lZCBjdXJyZW50KCkgb3ZlcnJpZGU7CkBAIC04MSw3ICs4MSw3IEBAIHB1YmxpYzogCiAjZW5k
aWYKIAogcHJpdmF0ZToKLSAgICBleHBsaWNpdCBCYWNrRm9yd2FyZExpc3QoUGFnZSopOworICAg
IFdFQkNPUkVfRVhQT1JUIGV4cGxpY2l0IEJhY2tGb3J3YXJkTGlzdChQYWdlKik7CiAKICAgICBQ
YWdlKiBtX3BhZ2U7CiAgICAgSGlzdG9yeUl0ZW1WZWN0b3IgbV9lbnRyaWVzOwpJbmRleDogU291
cmNlL1dlYkNvcmUvaGlzdG9yeS9DYWNoZWRGcmFtZS5oCj09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT0KLS0tIFNvdXJjZS9X
ZWJDb3JlL2hpc3RvcnkvQ2FjaGVkRnJhbWUuaAkocmV2aXNpb24gMTcyNjU4KQorKysgU291cmNl
L1dlYkNvcmUvaGlzdG9yeS9DYWNoZWRGcmFtZS5oCSh3b3JraW5nIGNvcHkpCkBAIC03Myw4ICs3
Myw4IEBAIHB1YmxpYzoKICAgICB2b2lkIGNsZWFyKCk7CiAgICAgdm9pZCBkZXN0cm95KCk7CiAK
LSAgICB2b2lkIHNldENhY2hlZEZyYW1lUGxhdGZvcm1EYXRhKHN0ZDo6dW5pcXVlX3B0cjxDYWNo
ZWRGcmFtZVBsYXRmb3JtRGF0YT4pOwotICAgIENhY2hlZEZyYW1lUGxhdGZvcm1EYXRhKiBjYWNo
ZWRGcmFtZVBsYXRmb3JtRGF0YSgpOworICAgIFdFQkNPUkVfRVhQT1JUIHZvaWQgc2V0Q2FjaGVk
RnJhbWVQbGF0Zm9ybURhdGEoc3RkOjp1bmlxdWVfcHRyPENhY2hlZEZyYW1lUGxhdGZvcm1EYXRh
Pik7CisgICAgV0VCQ09SRV9FWFBPUlQgQ2FjaGVkRnJhbWVQbGF0Zm9ybURhdGEqIGNhY2hlZEZy
YW1lUGxhdGZvcm1EYXRhKCk7CiAKICAgICB1c2luZyBDYWNoZWRGcmFtZUJhc2U6OmRvY3VtZW50
OwogICAgIHVzaW5nIENhY2hlZEZyYW1lQmFzZTo6dmlldzsKSW5kZXg6IFNvdXJjZS9XZWJDb3Jl
L2xvYWRlci9Db29raWVKYXIuaAo9PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09Ci0tLSBTb3VyY2UvV2ViQ29yZS9sb2FkZXIv
Q29va2llSmFyLmgJKHJldmlzaW9uIDE3MjY1OCkKKysrIFNvdXJjZS9XZWJDb3JlL2xvYWRlci9D
b29raWVKYXIuaAkod29ya2luZyBjb3B5KQpAQCAtNDAsMTMgKzQwLDEzIEBAIHN0cnVjdCBDb29r
aWU7CiAvLyBGdW5jdGlvbnMgaW4gdGhpcyBmaWxlIHRha2UgYSBEb2N1bWVudCBwb2ludGVyIHRv
IGRldGVybWluZSB3aGljaCBjb29raWUgc3RvcmFnZSB0byB1c2UuIFdlIHNob3VsZCBtZXJnZSB0
aGF0IGludG8gY2FsbCBzaXRlcywgYW5kIHVzZSBQbGF0Zm9ybUNvb2tpZUphciBkaXJlY3RseS4K
IAogLy8gVGhlc2UgdHdvIGZ1bmN0aW9ucyBpbXBsZW1lbnQgZG9jdW1lbnQuY29va2llIEFQSSwg
d2l0aCBzcGVjaWFsIHJ1bGVzIGZvciBIdHRwT25seSBjb29raWVzLgotU3RyaW5nIGNvb2tpZXMo
Y29uc3QgRG9jdW1lbnQqLCBjb25zdCBVUkwmKTsKLXZvaWQgc2V0Q29va2llcyhEb2N1bWVudCos
IGNvbnN0IFVSTCYsIGNvbnN0IFN0cmluZyYgY29va2llU3RyaW5nKTsKK1dFQkNPUkVfRVhQT1JU
IFN0cmluZyBjb29raWVzKGNvbnN0IERvY3VtZW50KiwgY29uc3QgVVJMJik7CitXRUJDT1JFX0VY
UE9SVCB2b2lkIHNldENvb2tpZXMoRG9jdW1lbnQqLCBjb25zdCBVUkwmLCBjb25zdCBTdHJpbmcm
IGNvb2tpZVN0cmluZyk7CiAKLWJvb2wgY29va2llc0VuYWJsZWQoY29uc3QgRG9jdW1lbnQqKTsK
LVN0cmluZyBjb29raWVSZXF1ZXN0SGVhZGVyRmllbGRWYWx1ZShjb25zdCBEb2N1bWVudCosIGNv
bnN0IFVSTCYpOwotYm9vbCBnZXRSYXdDb29raWVzKGNvbnN0IERvY3VtZW50KiwgY29uc3QgVVJM
JiwgVmVjdG9yPENvb2tpZT4mKTsKLXZvaWQgZGVsZXRlQ29va2llKGNvbnN0IERvY3VtZW50Kiwg
Y29uc3QgVVJMJiwgY29uc3QgU3RyaW5nJiBjb29raWVOYW1lKTsKK1dFQkNPUkVfRVhQT1JUIGJv
b2wgY29va2llc0VuYWJsZWQoY29uc3QgRG9jdW1lbnQqKTsKK1dFQkNPUkVfRVhQT1JUIFN0cmlu
ZyBjb29raWVSZXF1ZXN0SGVhZGVyRmllbGRWYWx1ZShjb25zdCBEb2N1bWVudCosIGNvbnN0IFVS
TCYpOworV0VCQ09SRV9FWFBPUlQgYm9vbCBnZXRSYXdDb29raWVzKGNvbnN0IERvY3VtZW50Kiwg
Y29uc3QgVVJMJiwgVmVjdG9yPENvb2tpZT4mKTsKK1dFQkNPUkVfRVhQT1JUIHZvaWQgZGVsZXRl
Q29va2llKGNvbnN0IERvY3VtZW50KiwgY29uc3QgVVJMJiwgY29uc3QgU3RyaW5nJiBjb29raWVO
YW1lKTsKIAogfQogCkluZGV4OiBTb3VyY2UvV2ViQ29yZS9sb2FkZXIvQ3Jvc3NPcmlnaW5QcmVm
bGlnaHRSZXN1bHRDYWNoZS5oCj09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT0KLS0tIFNvdXJjZS9XZWJDb3JlL2xvYWRlci9D
cm9zc09yaWdpblByZWZsaWdodFJlc3VsdENhY2hlLmgJKHJldmlzaW9uIDE3MjY1OCkKKysrIFNv
dXJjZS9XZWJDb3JlL2xvYWRlci9Dcm9zc09yaWdpblByZWZsaWdodFJlc3VsdENhY2hlLmgJKHdv
cmtpbmcgY29weSkKQEAgLTY2LDEyICs2NiwxMiBAQCBjbGFzcyBDcm9zc09yaWdpblByZWZsaWdo
dFJlc3VsdENhY2hlIHsKICAgICBXVEZfTUFLRV9OT05DT1BZQUJMRShDcm9zc09yaWdpblByZWZs
aWdodFJlc3VsdENhY2hlKTsgV1RGX01BS0VfRkFTVF9BTExPQ0FURUQ7CiAKIHB1YmxpYzoKLSAg
ICBzdGF0aWMgQ3Jvc3NPcmlnaW5QcmVmbGlnaHRSZXN1bHRDYWNoZSYgc2hhcmVkKCk7CisgICAg
V0VCQ09SRV9FWFBPUlQgc3RhdGljIENyb3NzT3JpZ2luUHJlZmxpZ2h0UmVzdWx0Q2FjaGUmIHNo
YXJlZCgpOwogCiAgICAgdm9pZCBhcHBlbmRFbnRyeShjb25zdCBTdHJpbmcmIG9yaWdpbiwgY29u
c3QgVVJMJiwgc3RkOjp1bmlxdWVfcHRyPENyb3NzT3JpZ2luUHJlZmxpZ2h0UmVzdWx0Q2FjaGVJ
dGVtPik7CiAgICAgYm9vbCBjYW5Ta2lwUHJlZmxpZ2h0KGNvbnN0IFN0cmluZyYgb3JpZ2luLCBj
b25zdCBVUkwmLCBTdG9yZWRDcmVkZW50aWFscywgY29uc3QgU3RyaW5nJiBtZXRob2QsIGNvbnN0
IEhUVFBIZWFkZXJNYXAmIHJlcXVlc3RIZWFkZXJzKTsKIAotICAgIHZvaWQgZW1wdHkoKTsKKyAg
ICBXRUJDT1JFX0VYUE9SVCB2b2lkIGVtcHR5KCk7CiAKIHByaXZhdGU6CiAgICAgZnJpZW5kIE5l
dmVyRGVzdHJveWVkPENyb3NzT3JpZ2luUHJlZmxpZ2h0UmVzdWx0Q2FjaGU+OwpJbmRleDogU291
cmNlL1dlYkNvcmUvbG9hZGVyL0RvY3VtZW50TG9hZGVyLmgKPT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PQotLS0gU291cmNl
L1dlYkNvcmUvbG9hZGVyL0RvY3VtZW50TG9hZGVyLmgJKHJldmlzaW9uIDE3MjY1OCkKKysrIFNv
dXJjZS9XZWJDb3JlL2xvYWRlci9Eb2N1bWVudExvYWRlci5oCSh3b3JraW5nIGNvcHkpCkBAIC04
MywyNCArODMsMjQgQEAgbmFtZXNwYWNlIFdlYkNvcmUgewogICAgICAgICB7CiAgICAgICAgICAg
ICByZXR1cm4gYWRvcHRSZWYobmV3IERvY3VtZW50TG9hZGVyKHJlcXVlc3QsIGRhdGEpKTsKICAg
ICAgICAgfQotICAgICAgICB2aXJ0dWFsIH5Eb2N1bWVudExvYWRlcigpOworICAgICAgICBXRUJD
T1JFX0VYUE9SVCB2aXJ0dWFsIH5Eb2N1bWVudExvYWRlcigpOwogCi0gICAgICAgIHZvaWQgc2V0
RnJhbWUoRnJhbWUqKTsKKyAgICAgICAgV0VCQ09SRV9FWFBPUlQgdm9pZCBzZXRGcmFtZShGcmFt
ZSopOwogICAgICAgICBGcmFtZSogZnJhbWUoKSBjb25zdCB7IHJldHVybiBtX2ZyYW1lOyB9CiAK
LSAgICAgICAgdmlydHVhbCB2b2lkIGF0dGFjaFRvRnJhbWUoKTsKLSAgICAgICAgdmlydHVhbCB2
b2lkIGRldGFjaEZyb21GcmFtZSgpOworICAgICAgICBXRUJDT1JFX0VYUE9SVCB2aXJ0dWFsIHZv
aWQgYXR0YWNoVG9GcmFtZSgpOworICAgICAgICBXRUJDT1JFX0VYUE9SVCB2aXJ0dWFsIHZvaWQg
ZGV0YWNoRnJvbUZyYW1lKCk7CiAKLSAgICAgICAgRnJhbWVMb2FkZXIqIGZyYW1lTG9hZGVyKCkg
Y29uc3Q7Ci0gICAgICAgIFJlc291cmNlTG9hZGVyKiBtYWluUmVzb3VyY2VMb2FkZXIoKSBjb25z
dDsKLSAgICAgICAgUGFzc1JlZlB0cjxSZXNvdXJjZUJ1ZmZlcj4gbWFpblJlc291cmNlRGF0YSgp
IGNvbnN0OworICAgICAgICBXRUJDT1JFX0VYUE9SVCBGcmFtZUxvYWRlciogZnJhbWVMb2FkZXIo
KSBjb25zdDsKKyAgICAgICAgV0VCQ09SRV9FWFBPUlQgUmVzb3VyY2VMb2FkZXIqIG1haW5SZXNv
dXJjZUxvYWRlcigpIGNvbnN0OworICAgICAgICBXRUJDT1JFX0VYUE9SVCBQYXNzUmVmUHRyPFJl
c291cmNlQnVmZmVyPiBtYWluUmVzb3VyY2VEYXRhKCkgY29uc3Q7CiAgICAgICAgIAogICAgICAg
ICBEb2N1bWVudFdyaXRlciYgd3JpdGVyKCkgY29uc3QgeyByZXR1cm4gbV93cml0ZXI7IH0KIAot
ICAgICAgICBjb25zdCBSZXNvdXJjZVJlcXVlc3QmIG9yaWdpbmFsUmVxdWVzdCgpIGNvbnN0Owot
ICAgICAgICBjb25zdCBSZXNvdXJjZVJlcXVlc3QmIG9yaWdpbmFsUmVxdWVzdENvcHkoKSBjb25z
dDsKKyAgICAgICAgV0VCQ09SRV9FWFBPUlQgY29uc3QgUmVzb3VyY2VSZXF1ZXN0JiBvcmlnaW5h
bFJlcXVlc3QoKSBjb25zdDsKKyAgICAgICAgV0VCQ09SRV9FWFBPUlQgY29uc3QgUmVzb3VyY2VS
ZXF1ZXN0JiBvcmlnaW5hbFJlcXVlc3RDb3B5KCkgY29uc3Q7CiAKLSAgICAgICAgY29uc3QgUmVz
b3VyY2VSZXF1ZXN0JiByZXF1ZXN0KCkgY29uc3Q7CisgICAgICAgIFdFQkNPUkVfRVhQT1JUIGNv
bnN0IFJlc291cmNlUmVxdWVzdCYgcmVxdWVzdCgpIGNvbnN0OwogICAgICAgICBSZXNvdXJjZVJl
cXVlc3QmIHJlcXVlc3QoKTsKIAogICAgICAgICBDYWNoZWRSZXNvdXJjZUxvYWRlciYgY2FjaGVk
UmVzb3VyY2VMb2FkZXIoKSB7IHJldHVybiBtX2NhY2hlZFJlc291cmNlTG9hZGVyLmdldCgpOyB9
CkBAIC0xMDgsMTYgKzEwOCwxNiBAQCBuYW1lc3BhY2UgV2ViQ29yZSB7CiAgICAgICAgIGNvbnN0
IFN1YnN0aXR1dGVEYXRhJiBzdWJzdGl0dXRlRGF0YSgpIGNvbnN0IHsgcmV0dXJuIG1fc3Vic3Rp
dHV0ZURhdGE7IH0KIAogICAgICAgICAvLyBGSVhNRTogVGhpcyBpcyB0aGUgc2FtZSBhcyByZXF1
ZXN0VVJMKCkuIFdlIHNob3VsZCByZW1vdmUgb25lIG9mIHRoZW0uCi0gICAgICAgIGNvbnN0IFVS
TCYgdXJsKCkgY29uc3Q7Ci0gICAgICAgIGNvbnN0IFVSTCYgdW5yZWFjaGFibGVVUkwoKSBjb25z
dDsKKyAgICAgICAgV0VCQ09SRV9FWFBPUlQgY29uc3QgVVJMJiB1cmwoKSBjb25zdDsKKyAgICAg
ICAgV0VCQ09SRV9FWFBPUlQgY29uc3QgVVJMJiB1bnJlYWNoYWJsZVVSTCgpIGNvbnN0OwogCiAg
ICAgICAgIGNvbnN0IFVSTCYgb3JpZ2luYWxVUkwoKSBjb25zdDsKLSAgICAgICAgY29uc3QgVVJM
JiByZXF1ZXN0VVJMKCkgY29uc3Q7Ci0gICAgICAgIGNvbnN0IFVSTCYgcmVzcG9uc2VVUkwoKSBj
b25zdDsKLSAgICAgICAgY29uc3QgU3RyaW5nJiByZXNwb25zZU1JTUVUeXBlKCkgY29uc3Q7Cisg
ICAgICAgIFdFQkNPUkVfRVhQT1JUIGNvbnN0IFVSTCYgcmVxdWVzdFVSTCgpIGNvbnN0OworICAg
ICAgICBXRUJDT1JFX0VYUE9SVCBjb25zdCBVUkwmIHJlc3BvbnNlVVJMKCkgY29uc3Q7CisgICAg
ICAgIFdFQkNPUkVfRVhQT1JUIGNvbnN0IFN0cmluZyYgcmVzcG9uc2VNSU1FVHlwZSgpIGNvbnN0
OwogI2lmIFBMQVRGT1JNKElPUykKICAgICAgICAgLy8gRklYTUU6IFRoaXMgbWV0aG9kIHNlZW1z
IHRvIHZpb2xhdGUgdGhlIGVuY2Fwc3VsYXRpb24gb2YgdGhpcyBjbGFzcy4KLSAgICAgICAgdm9p
ZCBzZXRSZXNwb25zZU1JTUVUeXBlKGNvbnN0IFN0cmluZyYpOworICAgICAgICBXRUJDT1JFX0VY
UE9SVCB2b2lkIHNldFJlc3BvbnNlTUlNRVR5cGUoY29uc3QgU3RyaW5nJik7CiAjZW5kaWYKIAog
ICAgICAgICB2b2lkIHJlcGxhY2VSZXF1ZXN0VVJMRm9yU2FtZURvY3VtZW50TmF2aWdhdGlvbihj
b25zdCBVUkwmKTsKQEAgLTEyNSw3ICsxMjUsNyBAQCBuYW1lc3BhY2UgV2ViQ29yZSB7CiAgICAg
ICAgIHZvaWQgc3RvcExvYWRpbmcoKTsKICAgICAgICAgdm9pZCBzZXRDb21taXR0ZWQoYm9vbCBj
b21taXR0ZWQpIHsgbV9jb21taXR0ZWQgPSBjb21taXR0ZWQ7IH0KICAgICAgICAgYm9vbCBpc0Nv
bW1pdHRlZCgpIGNvbnN0IHsgcmV0dXJuIG1fY29tbWl0dGVkOyB9Ci0gICAgICAgIGJvb2wgaXNM
b2FkaW5nKCkgY29uc3Q7CisgICAgICAgIFdFQkNPUkVfRVhQT1JUIGJvb2wgaXNMb2FkaW5nKCkg
Y29uc3Q7CiAKICAgICAgICAgY29uc3QgUmVzb3VyY2VFcnJvciYgbWFpbkRvY3VtZW50RXJyb3Io
KSBjb25zdCB7IHJldHVybiBtX21haW5Eb2N1bWVudEVycm9yOyB9CiAKQEAgLTEzOSw4ICsxMzks
OCBAQCBuYW1lc3BhY2UgV2ViQ29yZSB7CiAgICAgICAgIHZvaWQgc2V0SXNDbGllbnRSZWRpcmVj
dChib29sIGlzQ2xpZW50UmVkaXJlY3QpIHsgbV9pc0NsaWVudFJlZGlyZWN0ID0gaXNDbGllbnRS
ZWRpcmVjdDsgfQogICAgICAgICB2b2lkIGhhbmRsZWRPbmxvYWRFdmVudHMoKTsKICAgICAgICAg
Ym9vbCB3YXNPbmxvYWRIYW5kbGVkKCkgeyByZXR1cm4gbV93YXNPbmxvYWRIYW5kbGVkOyB9Ci0g
ICAgICAgIGJvb2wgaXNMb2FkaW5nSW5BUElTZW5zZSgpIGNvbnN0OwotICAgICAgICB2b2lkIHNl
dFRpdGxlKGNvbnN0IFN0cmluZ1dpdGhEaXJlY3Rpb24mKTsKKyAgICAgICAgV0VCQ09SRV9FWFBP
UlQgYm9vbCBpc0xvYWRpbmdJbkFQSVNlbnNlKCkgY29uc3Q7CisgICAgICAgIFdFQkNPUkVfRVhQ
T1JUIHZvaWQgc2V0VGl0bGUoY29uc3QgU3RyaW5nV2l0aERpcmVjdGlvbiYpOwogICAgICAgICBj
b25zdCBTdHJpbmcmIG92ZXJyaWRlRW5jb2RpbmcoKSBjb25zdCB7IHJldHVybiBtX292ZXJyaWRl
RW5jb2Rpbmc7IH0KIAogI2lmIFBMQVRGT1JNKE1BQykKQEAgLTE1MCwyMyArMTUwLDIzIEBAIG5h
bWVzcGFjZSBXZWJDb3JlIHsKIAogI2lmIEVOQUJMRShXRUJfQVJDSElWRSkgfHwgRU5BQkxFKE1I
VE1MKQogICAgICAgICB2b2lkIHNldEFyY2hpdmUoUGFzc1JlZlB0cjxBcmNoaXZlPik7Ci0gICAg
ICAgIHZvaWQgYWRkQWxsQXJjaGl2ZVJlc291cmNlcyhBcmNoaXZlKik7Ci0gICAgICAgIHZvaWQg
YWRkQXJjaGl2ZVJlc291cmNlKFBhc3NSZWZQdHI8QXJjaGl2ZVJlc291cmNlPik7CisgICAgICAg
IFdFQkNPUkVfRVhQT1JUIHZvaWQgYWRkQWxsQXJjaGl2ZVJlc291cmNlcyhBcmNoaXZlKik7Cisg
ICAgICAgIFdFQkNPUkVfRVhQT1JUIHZvaWQgYWRkQXJjaGl2ZVJlc291cmNlKFBhc3NSZWZQdHI8
QXJjaGl2ZVJlc291cmNlPik7CiAgICAgICAgIFBhc3NSZWZQdHI8QXJjaGl2ZT4gcG9wQXJjaGl2
ZUZvclN1YmZyYW1lKGNvbnN0IFN0cmluZyYgZnJhbWVOYW1lLCBjb25zdCBVUkwmKTsKLSAgICAg
ICAgU2hhcmVkQnVmZmVyKiBwYXJzZWRBcmNoaXZlRGF0YSgpIGNvbnN0OworICAgICAgICBXRUJD
T1JFX0VYUE9SVCBTaGFyZWRCdWZmZXIqIHBhcnNlZEFyY2hpdmVEYXRhKCkgY29uc3Q7CiAKLSAg
ICAgICAgYm9vbCBzY2hlZHVsZUFyY2hpdmVMb2FkKFJlc291cmNlTG9hZGVyKiwgY29uc3QgUmVz
b3VyY2VSZXF1ZXN0Jik7CisgICAgICAgIFdFQkNPUkVfRVhQT1JUIGJvb2wgc2NoZWR1bGVBcmNo
aXZlTG9hZChSZXNvdXJjZUxvYWRlciosIGNvbnN0IFJlc291cmNlUmVxdWVzdCYpOwogI2VuZGlm
CiAKICAgICAgICAgLy8gUmV0dXJuIHRoZSBBcmNoaXZlUmVzb3VyY2UgZm9yIHRoZSBVUkwgb25s
eSB3aGVuIGxvYWRpbmcgYW4gQXJjaGl2ZQogICAgICAgICBBcmNoaXZlUmVzb3VyY2UqIGFyY2hp
dmVSZXNvdXJjZUZvclVSTChjb25zdCBVUkwmKSBjb25zdDsKIAotICAgICAgICBQYXNzUmVmUHRy
PEFyY2hpdmVSZXNvdXJjZT4gbWFpblJlc291cmNlKCkgY29uc3Q7CisgICAgICAgIFdFQkNPUkVf
RVhQT1JUIFBhc3NSZWZQdHI8QXJjaGl2ZVJlc291cmNlPiBtYWluUmVzb3VyY2UoKSBjb25zdDsK
IAogICAgICAgICAvLyBSZXR1cm4gYW4gQXJjaGl2ZVJlc291cmNlIGZvciB0aGUgVVJMLCBlaXRo
ZXIgY3JlYXRpbmcgZnJvbSBsaXZlIGRhdGEgb3IKICAgICAgICAgLy8gcHVsbGluZyBmcm9tIHRo
ZSBBcmNoaXZlUmVzb3VyY2VDb2xsZWN0aW9uCi0gICAgICAgIFBhc3NSZWZQdHI8QXJjaGl2ZVJl
c291cmNlPiBzdWJyZXNvdXJjZShjb25zdCBVUkwmKSBjb25zdDsKLSAgICAgICAgVmVjdG9yPFJl
ZlB0cjxBcmNoaXZlUmVzb3VyY2U+PiBzdWJyZXNvdXJjZXMoKSBjb25zdDsKKyAgICAgICAgV0VC
Q09SRV9FWFBPUlQgUGFzc1JlZlB0cjxBcmNoaXZlUmVzb3VyY2U+IHN1YnJlc291cmNlKGNvbnN0
IFVSTCYpIGNvbnN0OworICAgICAgICBXRUJDT1JFX0VYUE9SVCBWZWN0b3I8UmVmUHRyPEFyY2hp
dmVSZXNvdXJjZT4+IHN1YnJlc291cmNlcygpIGNvbnN0OwogCiAjaWZuZGVmIE5ERUJVRwogICAg
ICAgICBib29sIGlzU3Vic3RpdHV0ZUxvYWRQZW5kaW5nKFJlc291cmNlTG9hZGVyKikgY29uc3Q7
CkBAIC0xODUsOCArMTg1LDggQEAgbmFtZXNwYWNlIFdlYkNvcmUgewogICAgICAgICB2b2lkIHN0
b3BSZWNvcmRpbmdSZXNwb25zZXMoKTsKICAgICAgICAgY29uc3QgU3RyaW5nV2l0aERpcmVjdGlv
biYgdGl0bGUoKSBjb25zdCB7IHJldHVybiBtX3BhZ2VUaXRsZTsgfQogCi0gICAgICAgIFVSTCB1
cmxGb3JIaXN0b3J5KCkgY29uc3Q7Ci0gICAgICAgIGJvb2wgdXJsRm9ySGlzdG9yeVJlZmxlY3Rz
RmFpbHVyZSgpIGNvbnN0OworICAgICAgICBXRUJDT1JFX0VYUE9SVCBVUkwgdXJsRm9ySGlzdG9y
eSgpIGNvbnN0OworICAgICAgICBXRUJDT1JFX0VYUE9SVCBib29sIHVybEZvckhpc3RvcnlSZWZs
ZWN0c0ZhaWx1cmUoKSBjb25zdDsKIAogICAgICAgICAvLyBUaGVzZSBhY2Nlc3NvcnMgYWNjb21t
b2RhdGUgV2ViQ29yZSdzIHNvbWV3aGF0IGZpY2tsZSBjdXN0b20gb2YgY3JlYXRpbmcgaGlzdG9y
eQogICAgICAgICAvLyBpdGVtcyBmb3IgcmVkaXJlY3RzLCBidXQgb25seSBzb21ldGltZXMuIEZv
ciAic291cmNlIiBhbmQgImRlc3RpbmF0aW9uIiwKQEAgLTIwOSw3ICsyMDksNyBAQCBuYW1lc3Bh
Y2UgV2ViQ29yZSB7CiAgICAgICAgIHZvaWQgc2V0TWFpblJlc291cmNlRGF0YUJ1ZmZlcmluZ1Bv
bGljeShEYXRhQnVmZmVyaW5nUG9saWN5KTsKIAogICAgICAgICB2b2lkIHN0YXJ0TG9hZGluZ01h
aW5SZXNvdXJjZSgpOwotICAgICAgICB2b2lkIGNhbmNlbE1haW5SZXNvdXJjZUxvYWQoY29uc3Qg
UmVzb3VyY2VFcnJvciYpOworICAgICAgICBXRUJDT1JFX0VYUE9SVCB2b2lkIGNhbmNlbE1haW5S
ZXNvdXJjZUxvYWQoY29uc3QgUmVzb3VyY2VFcnJvciYpOwogICAgICAgICAKICAgICAgICAgLy8g
U3VwcG9ydCBpY29uRGF0YWJhc2UgaW4gc3luY2hyb25vdXMgbW9kZS4KICAgICAgICAgdm9pZCBp
Y29uTG9hZERlY2lzaW9uQXZhaWxhYmxlKCk7CkBAIC0yMjcsOCArMjI3LDggQEAgbmFtZXNwYWNl
IFdlYkNvcmUgewogCiAgICAgICAgIHZvaWQgYWRkU3VicmVzb3VyY2VMb2FkZXIoUmVzb3VyY2VM
b2FkZXIqKTsKICAgICAgICAgdm9pZCByZW1vdmVTdWJyZXNvdXJjZUxvYWRlcihSZXNvdXJjZUxv
YWRlciopOwotICAgICAgICB2b2lkIGFkZFBsdWdJblN0cmVhbUxvYWRlcihSZXNvdXJjZUxvYWRl
ciopOwotICAgICAgICB2b2lkIHJlbW92ZVBsdWdJblN0cmVhbUxvYWRlcihSZXNvdXJjZUxvYWRl
ciopOworICAgICAgICBXRUJDT1JFX0VYUE9SVCB2b2lkIGFkZFBsdWdJblN0cmVhbUxvYWRlcihS
ZXNvdXJjZUxvYWRlciopOworICAgICAgICBXRUJDT1JFX0VYUE9SVCB2b2lkIHJlbW92ZVBsdWdJ
blN0cmVhbUxvYWRlcihSZXNvdXJjZUxvYWRlciopOwogCiAgICAgICAgIHZvaWQgc3VicmVzb3Vy
Y2VMb2FkZXJGaW5pc2hlZExvYWRpbmdPbmVQYXJ0KFJlc291cmNlTG9hZGVyKik7CiAKQEAgLTI1
NCw3ICsyNTQsNyBAQCBuYW1lc3BhY2UgV2ViQ29yZSB7CiAKICAgICAgICAgLy8gVGhlIFdlYktp
dCBsYXllciBjYWxscyB0aGlzIGZ1bmN0aW9uIHdoZW4gaXQncyByZWFkeSBmb3IgdGhlIGRhdGEg
dG8KICAgICAgICAgLy8gYWN0dWFsbHkgYmUgYWRkZWQgdG8gdGhlIGRvY3VtZW50LgotICAgICAg
ICB2b2lkIGNvbW1pdERhdGEoY29uc3QgY2hhciogYnl0ZXMsIHNpemVfdCBsZW5ndGgpOworICAg
ICAgICBXRUJDT1JFX0VYUE9SVCB2b2lkIGNvbW1pdERhdGEoY29uc3QgY2hhciogYnl0ZXMsIHNp
emVfdCBsZW5ndGgpOwogCiAgICAgICAgIEFwcGxpY2F0aW9uQ2FjaGVIb3N0KiBhcHBsaWNhdGlv
bkNhY2hlSG9zdCgpIGNvbnN0IHsgcmV0dXJuIG1fYXBwbGljYXRpb25DYWNoZUhvc3QuZ2V0KCk7
IH0KIApAQCAtMjY5LDcgKzI2OSw3IEBAIG5hbWVzcGFjZSBXZWJDb3JlIHsKICNlbmRpZgogCiAg
ICAgcHJvdGVjdGVkOgotICAgICAgICBEb2N1bWVudExvYWRlcihjb25zdCBSZXNvdXJjZVJlcXVl
c3QmLCBjb25zdCBTdWJzdGl0dXRlRGF0YSYpOworICAgICAgICBXRUJDT1JFX0VYUE9SVCBEb2N1
bWVudExvYWRlcihjb25zdCBSZXNvdXJjZVJlcXVlc3QmLCBjb25zdCBTdWJzdGl0dXRlRGF0YSYp
OwogCiAgICAgICAgIGJvb2wgbV9kZWZlck1haW5SZXNvdXJjZURhdGFMb2FkOwogCkBAIC0yOTQs
MTAgKzI5NCwxMCBAQCBuYW1lc3BhY2UgV2ViQ29yZSB7CiAgICAgICAgIHZvaWQgd2lsbFNlbmRS
ZXF1ZXN0KFJlc291cmNlUmVxdWVzdCYsIGNvbnN0IFJlc291cmNlUmVzcG9uc2UmKTsKICAgICAg
ICAgdm9pZCBmaW5pc2hlZExvYWRpbmcoZG91YmxlIGZpbmlzaFRpbWUpOwogICAgICAgICB2b2lk
IG1haW5SZWNlaXZlZEVycm9yKGNvbnN0IFJlc291cmNlRXJyb3ImKTsKLSAgICAgICAgdmlydHVh
bCB2b2lkIHJlZGlyZWN0UmVjZWl2ZWQoQ2FjaGVkUmVzb3VyY2UqLCBSZXNvdXJjZVJlcXVlc3Qm
LCBjb25zdCBSZXNvdXJjZVJlc3BvbnNlJikgb3ZlcnJpZGU7Ci0gICAgICAgIHZpcnR1YWwgdm9p
ZCByZXNwb25zZVJlY2VpdmVkKENhY2hlZFJlc291cmNlKiwgY29uc3QgUmVzb3VyY2VSZXNwb25z
ZSYpIG92ZXJyaWRlOwotICAgICAgICB2aXJ0dWFsIHZvaWQgZGF0YVJlY2VpdmVkKENhY2hlZFJl
c291cmNlKiwgY29uc3QgY2hhciogZGF0YSwgaW50IGxlbmd0aCkgb3ZlcnJpZGU7Ci0gICAgICAg
IHZpcnR1YWwgdm9pZCBub3RpZnlGaW5pc2hlZChDYWNoZWRSZXNvdXJjZSopIG92ZXJyaWRlOwor
ICAgICAgICBXRUJDT1JFX0VYUE9SVCB2aXJ0dWFsIHZvaWQgcmVkaXJlY3RSZWNlaXZlZChDYWNo
ZWRSZXNvdXJjZSosIFJlc291cmNlUmVxdWVzdCYsIGNvbnN0IFJlc291cmNlUmVzcG9uc2UmKSBv
dmVycmlkZTsKKyAgICAgICAgV0VCQ09SRV9FWFBPUlQgdmlydHVhbCB2b2lkIHJlc3BvbnNlUmVj
ZWl2ZWQoQ2FjaGVkUmVzb3VyY2UqLCBjb25zdCBSZXNvdXJjZVJlc3BvbnNlJikgb3ZlcnJpZGU7
CisgICAgICAgIFdFQkNPUkVfRVhQT1JUIHZpcnR1YWwgdm9pZCBkYXRhUmVjZWl2ZWQoQ2FjaGVk
UmVzb3VyY2UqLCBjb25zdCBjaGFyKiBkYXRhLCBpbnQgbGVuZ3RoKSBvdmVycmlkZTsKKyAgICAg
ICAgV0VCQ09SRV9FWFBPUlQgdmlydHVhbCB2b2lkIG5vdGlmeUZpbmlzaGVkKENhY2hlZFJlc291
cmNlKikgb3ZlcnJpZGU7CiAKICAgICAgICAgYm9vbCBtYXliZUxvYWRFbXB0eSgpOwogCkluZGV4
OiBTb3VyY2UvV2ViQ29yZS9sb2FkZXIvRG9jdW1lbnRXcml0ZXIuaAo9PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09Ci0tLSBT
b3VyY2UvV2ViQ29yZS9sb2FkZXIvRG9jdW1lbnRXcml0ZXIuaAkocmV2aXNpb24gMTcyNjU4KQor
KysgU291cmNlL1dlYkNvcmUvbG9hZGVyL0RvY3VtZW50V3JpdGVyLmgJKHdvcmtpbmcgY29weSkK
QEAgLTUyLDExICs1MiwxMSBAQCBwdWJsaWM6CiAgICAgdm9pZCBiZWdpbigpOwogICAgIHZvaWQg
YmVnaW4oY29uc3QgVVJMJiwgYm9vbCBkaXNwYXRjaFdpbmRvd09iamVjdEF2YWlsYWJsZSA9IHRy
dWUsIERvY3VtZW50KiBvd25lckRvY3VtZW50ID0gMCk7CiAgICAgdm9pZCBhZGREYXRhKGNvbnN0
IGNoYXIqIGJ5dGVzLCBzaXplX3QgbGVuZ3RoKTsKLSAgICB2b2lkIGVuZCgpOworICAgIFdFQkNP
UkVfRVhQT1JUIHZvaWQgZW5kKCk7CiAgICAgCiAgICAgdm9pZCBzZXRGcmFtZShGcmFtZSogZnJh
bWUpIHsgbV9mcmFtZSA9IGZyYW1lOyB9CiAKLSAgICB2b2lkIHNldEVuY29kaW5nKGNvbnN0IFN0
cmluZyYgZW5jb2RpbmcsIGJvb2wgdXNlckNob3Nlbik7CisgICAgV0VCQ09SRV9FWFBPUlQgdm9p
ZCBzZXRFbmNvZGluZyhjb25zdCBTdHJpbmcmIGVuY29kaW5nLCBib29sIHVzZXJDaG9zZW4pOwog
CiAgICAgY29uc3QgU3RyaW5nJiBtaW1lVHlwZSgpIGNvbnN0IHsgcmV0dXJuIG1fbWltZVR5cGU7
IH0KICAgICB2b2lkIHNldE1JTUVUeXBlKGNvbnN0IFN0cmluZyYgdHlwZSkgeyBtX21pbWVUeXBl
ID0gdHlwZTsgfQpJbmRleDogU291cmNlL1dlYkNvcmUvbG9hZGVyL2FwcGNhY2hlL0FwcGxpY2F0
aW9uQ2FjaGUuaAo9PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09Ci0tLSBTb3VyY2UvV2ViQ29yZS9sb2FkZXIvYXBwY2FjaGUv
QXBwbGljYXRpb25DYWNoZS5oCShyZXZpc2lvbiAxNzI2NTgpCisrKyBTb3VyY2UvV2ViQ29yZS9s
b2FkZXIvYXBwY2FjaGUvQXBwbGljYXRpb25DYWNoZS5oCSh3b3JraW5nIGNvcHkpCkBAIC00OCw3
ICs0OCw3IEBAIGNsYXNzIEFwcGxpY2F0aW9uQ2FjaGUgOiBwdWJsaWMgUmVmQ291bnQKIHB1Ymxp
YzoKICAgICBzdGF0aWMgUGFzc1JlZlB0cjxBcHBsaWNhdGlvbkNhY2hlPiBjcmVhdGUoKSB7IHJl
dHVybiBhZG9wdFJlZihuZXcgQXBwbGljYXRpb25DYWNoZSk7IH0KICAgICAKLSAgICBzdGF0aWMg
dm9pZCBkZWxldGVDYWNoZUZvck9yaWdpbihTZWN1cml0eU9yaWdpbiopOworICAgIFdFQkNPUkVf
RVhQT1JUIHN0YXRpYyB2b2lkIGRlbGV0ZUNhY2hlRm9yT3JpZ2luKFNlY3VyaXR5T3JpZ2luKik7
CiAgICAgCiAgICAgfkFwcGxpY2F0aW9uQ2FjaGUoKTsKIApAQCAtODksNyArODksNyBAQCBwdWJs
aWM6CiAgICAgCiAgICAgc3RhdGljIGJvb2wgcmVxdWVzdElzSFRUUE9ySFRUUFNHZXQoY29uc3Qg
UmVzb3VyY2VSZXF1ZXN0Jik7CiAKLSAgICBzdGF0aWMgaW50NjRfdCBkaXNrVXNhZ2VGb3JPcmln
aW4oU2VjdXJpdHlPcmlnaW4qKTsKKyAgICBXRUJDT1JFX0VYUE9SVCBzdGF0aWMgaW50NjRfdCBk
aXNrVXNhZ2VGb3JPcmlnaW4oU2VjdXJpdHlPcmlnaW4qKTsKICAgICAKICAgICBpbnQ2NF90IGVz
dGltYXRlZFNpemVJblN0b3JhZ2UoKSBjb25zdCB7IHJldHVybiBtX2VzdGltYXRlZFNpemVJblN0
b3JhZ2U7IH0KIApJbmRleDogU291cmNlL1dlYkNvcmUvbG9hZGVyL2FwcGNhY2hlL0FwcGxpY2F0
aW9uQ2FjaGVIb3N0LmgKPT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PQotLS0gU291cmNlL1dlYkNvcmUvbG9hZGVyL2FwcGNh
Y2hlL0FwcGxpY2F0aW9uQ2FjaGVIb3N0LmgJKHJldmlzaW9uIDE3MjY1OCkKKysrIFNvdXJjZS9X
ZWJDb3JlL2xvYWRlci9hcHBjYWNoZS9BcHBsaWNhdGlvbkNhY2hlSG9zdC5oCSh3b3JraW5nIGNv
cHkpCkBAIC0xMjMsMTAgKzEyMywxMCBAQCBuYW1lc3BhY2UgV2ViQ29yZSB7CiAgICAgICAgIHZv
aWQgZmluaXNoZWRMb2FkaW5nTWFpblJlc291cmNlKCk7CiAgICAgICAgIHZvaWQgZmFpbGVkTG9h
ZGluZ01haW5SZXNvdXJjZSgpOwogCi0gICAgICAgIGJvb2wgbWF5YmVMb2FkUmVzb3VyY2UoUmVz
b3VyY2VMb2FkZXIqLCBjb25zdCBSZXNvdXJjZVJlcXVlc3QmLCBjb25zdCBVUkwmIG9yaWdpbmFs
VVJMKTsKLSAgICAgICAgYm9vbCBtYXliZUxvYWRGYWxsYmFja0ZvclJlZGlyZWN0KFJlc291cmNl
TG9hZGVyKiwgUmVzb3VyY2VSZXF1ZXN0JiwgY29uc3QgUmVzb3VyY2VSZXNwb25zZSYpOwotICAg
ICAgICBib29sIG1heWJlTG9hZEZhbGxiYWNrRm9yUmVzcG9uc2UoUmVzb3VyY2VMb2FkZXIqLCBj
b25zdCBSZXNvdXJjZVJlc3BvbnNlJik7Ci0gICAgICAgIGJvb2wgbWF5YmVMb2FkRmFsbGJhY2tG
b3JFcnJvcihSZXNvdXJjZUxvYWRlciosIGNvbnN0IFJlc291cmNlRXJyb3ImKTsKKyAgICAgICAg
V0VCQ09SRV9FWFBPUlQgYm9vbCBtYXliZUxvYWRSZXNvdXJjZShSZXNvdXJjZUxvYWRlciosIGNv
bnN0IFJlc291cmNlUmVxdWVzdCYsIGNvbnN0IFVSTCYgb3JpZ2luYWxVUkwpOworICAgICAgICBX
RUJDT1JFX0VYUE9SVCBib29sIG1heWJlTG9hZEZhbGxiYWNrRm9yUmVkaXJlY3QoUmVzb3VyY2VM
b2FkZXIqLCBSZXNvdXJjZVJlcXVlc3QmLCBjb25zdCBSZXNvdXJjZVJlc3BvbnNlJik7CisgICAg
ICAgIFdFQkNPUkVfRVhQT1JUIGJvb2wgbWF5YmVMb2FkRmFsbGJhY2tGb3JSZXNwb25zZShSZXNv
dXJjZUxvYWRlciosIGNvbnN0IFJlc291cmNlUmVzcG9uc2UmKTsKKyAgICAgICAgV0VCQ09SRV9F
WFBPUlQgYm9vbCBtYXliZUxvYWRGYWxsYmFja0ZvckVycm9yKFJlc291cmNlTG9hZGVyKiwgY29u
c3QgUmVzb3VyY2VFcnJvciYpOwogCiAgICAgICAgIGJvb2wgbWF5YmVMb2FkU3luY2hyb25vdXNs
eShSZXNvdXJjZVJlcXVlc3QmLCBSZXNvdXJjZUVycm9yJiwgUmVzb3VyY2VSZXNwb25zZSYsIFZl
Y3RvcjxjaGFyPiYgZGF0YSk7CiAgICAgICAgIHZvaWQgbWF5YmVMb2FkRmFsbGJhY2tTeW5jaHJv
bm91c2x5KGNvbnN0IFJlc291cmNlUmVxdWVzdCYsIFJlc291cmNlRXJyb3ImLCBSZXNvdXJjZVJl
c3BvbnNlJiwgVmVjdG9yPGNoYXI+JiBkYXRhKTsKSW5kZXg6IFNvdXJjZS9XZWJDb3JlL2xvYWRl
ci9hcHBjYWNoZS9BcHBsaWNhdGlvbkNhY2hlU3RvcmFnZS5oCj09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT0KLS0tIFNvdXJj
ZS9XZWJDb3JlL2xvYWRlci9hcHBjYWNoZS9BcHBsaWNhdGlvbkNhY2hlU3RvcmFnZS5oCShyZXZp
c2lvbiAxNzI2NTgpCisrKyBTb3VyY2UvV2ViQ29yZS9sb2FkZXIvYXBwY2FjaGUvQXBwbGljYXRp
b25DYWNoZVN0b3JhZ2UuaAkod29ya2luZyBjb3B5KQpAQCAtNTMsMjAgKzUzLDIwIEBAIHB1Ymxp
YzoKICAgICAgICAgRGlza09yT3BlcmF0aW9uRmFpbHVyZQogICAgIH07CiAKLSAgICB2b2lkIHNl
dENhY2hlRGlyZWN0b3J5KGNvbnN0IFN0cmluZyYpOworICAgIFdFQkNPUkVfRVhQT1JUIHZvaWQg
c2V0Q2FjaGVEaXJlY3RvcnkoY29uc3QgU3RyaW5nJik7CiAgICAgY29uc3QgU3RyaW5nJiBjYWNo
ZURpcmVjdG9yeSgpIGNvbnN0OwogICAgIAotICAgIHZvaWQgc2V0TWF4aW11bVNpemUoaW50NjRf
dCBzaXplKTsKLSAgICBpbnQ2NF90IG1heGltdW1TaXplKCkgY29uc3Q7CisgICAgV0VCQ09SRV9F
WFBPUlQgdm9pZCBzZXRNYXhpbXVtU2l6ZShpbnQ2NF90IHNpemUpOworICAgIFdFQkNPUkVfRVhQ
T1JUIGludDY0X3QgbWF4aW11bVNpemUoKSBjb25zdDsKICAgICBib29sIGlzTWF4aW11bVNpemVS
ZWFjaGVkKCkgY29uc3Q7CiAgICAgaW50NjRfdCBzcGFjZU5lZWRlZChpbnQ2NF90IGNhY2hlVG9T
YXZlKTsKIAogICAgIGludDY0X3QgZGVmYXVsdE9yaWdpblF1b3RhKCkgY29uc3QgeyByZXR1cm4g
bV9kZWZhdWx0T3JpZ2luUXVvdGE7IH0KLSAgICB2b2lkIHNldERlZmF1bHRPcmlnaW5RdW90YShp
bnQ2NF90IHF1b3RhKTsKLSAgICBib29sIGNhbGN1bGF0ZVVzYWdlRm9yT3JpZ2luKGNvbnN0IFNl
Y3VyaXR5T3JpZ2luKiwgaW50NjRfdCYgdXNhZ2UpOwotICAgIGJvb2wgY2FsY3VsYXRlUXVvdGFG
b3JPcmlnaW4oY29uc3QgU2VjdXJpdHlPcmlnaW4qLCBpbnQ2NF90JiBxdW90YSk7CisgICAgV0VC
Q09SRV9FWFBPUlQgdm9pZCBzZXREZWZhdWx0T3JpZ2luUXVvdGEoaW50NjRfdCBxdW90YSk7Cisg
ICAgV0VCQ09SRV9FWFBPUlQgYm9vbCBjYWxjdWxhdGVVc2FnZUZvck9yaWdpbihjb25zdCBTZWN1
cml0eU9yaWdpbiosIGludDY0X3QmIHVzYWdlKTsKKyAgICBXRUJDT1JFX0VYUE9SVCBib29sIGNh
bGN1bGF0ZVF1b3RhRm9yT3JpZ2luKGNvbnN0IFNlY3VyaXR5T3JpZ2luKiwgaW50NjRfdCYgcXVv
dGEpOwogICAgIGJvb2wgY2FsY3VsYXRlUmVtYWluaW5nU2l6ZUZvck9yaWdpbkV4Y2x1ZGluZ0Nh
Y2hlKGNvbnN0IFNlY3VyaXR5T3JpZ2luKiwgQXBwbGljYXRpb25DYWNoZSosIGludDY0X3QmIHJl
bWFpbmluZ1NpemUpOwotICAgIGJvb2wgc3RvcmVVcGRhdGVkUXVvdGFGb3JPcmlnaW4oY29uc3Qg
U2VjdXJpdHlPcmlnaW4qLCBpbnQ2NF90IHF1b3RhKTsKKyAgICBXRUJDT1JFX0VYUE9SVCBib29s
IHN0b3JlVXBkYXRlZFF1b3RhRm9yT3JpZ2luKGNvbnN0IFNlY3VyaXR5T3JpZ2luKiwgaW50NjRf
dCBxdW90YSk7CiAgICAgYm9vbCBjaGVja09yaWdpblF1b3RhKEFwcGxpY2F0aW9uQ2FjaGVHcm91
cCosIEFwcGxpY2F0aW9uQ2FjaGUqIG9sZENhY2hlLCBBcHBsaWNhdGlvbkNhY2hlKiBuZXdDYWNo
ZSwgaW50NjRfdCYgdG90YWxTcGFjZU5lZWRlZCk7CiAKICAgICBBcHBsaWNhdGlvbkNhY2hlR3Jv
dXAqIGNhY2hlR3JvdXBGb3JVUkwoY29uc3QgVVJMJik7IC8vIENhY2hlIHRvIGxvYWQgYSBtYWlu
IHJlc291cmNlIGZyb20uCkBAIC04NSwxNyArODUsMTcgQEAgcHVibGljOgogICAgIC8vIFJlbW92
ZXMgdGhlIGdyb3VwIGlmIHRoZSBjYWNoZSB0byBiZSByZW1vdmVkIGlzIHRoZSBuZXdlc3Qgb25l
IChzbywgc3RvcmVOZXdlc3RDYWNoZSgpIG5lZWRzIHRvIGJlIGNhbGxlZCBiZWZvcmVoYW5kIHdo
ZW4gdXBkYXRpbmcpLgogICAgIHZvaWQgcmVtb3ZlKEFwcGxpY2F0aW9uQ2FjaGUqKTsKICAgICAK
LSAgICB2b2lkIGVtcHR5KCk7CisgICAgV0VCQ09SRV9FWFBPUlQgdm9pZCBlbXB0eSgpOwogICAg
IAotICAgIHN0YXRpYyBib29sIHN0b3JlQ29weU9mQ2FjaGUoY29uc3QgU3RyaW5nJiBjYWNoZURp
cmVjdG9yeSwgQXBwbGljYXRpb25DYWNoZUhvc3QqKTsKKyAgICBzdGF0aWMgYm9vbCBXRUJDT1JF
X0VYUE9SVCBzdG9yZUNvcHlPZkNhY2hlKGNvbnN0IFN0cmluZyYgY2FjaGVEaXJlY3RvcnksIEFw
cGxpY2F0aW9uQ2FjaGVIb3N0Kik7CiAKICAgICBib29sIG1hbmlmZXN0VVJMcyhWZWN0b3I8VVJM
PiogdXJscyk7CiAgICAgYm9vbCBjYWNoZUdyb3VwU2l6ZShjb25zdCBTdHJpbmcmIG1hbmlmZXN0
VVJMLCBpbnQ2NF90KiBzaXplKTsKICAgICBib29sIGRlbGV0ZUNhY2hlR3JvdXAoY29uc3QgU3Ry
aW5nJiBtYW5pZmVzdFVSTCk7Ci0gICAgdm9pZCB2YWN1dW1EYXRhYmFzZUZpbGUoKTsKKyAgICBX
RUJDT1JFX0VYUE9SVCB2b2lkIHZhY3V1bURhdGFiYXNlRmlsZSgpOwogCi0gICAgdm9pZCBnZXRP
cmlnaW5zV2l0aENhY2hlKEhhc2hTZXQ8UmVmUHRyPFNlY3VyaXR5T3JpZ2luPiwgU2VjdXJpdHlP
cmlnaW5IYXNoPiYpOwotICAgIHZvaWQgZGVsZXRlQWxsRW50cmllcygpOworICAgIFdFQkNPUkVf
RVhQT1JUIHZvaWQgZ2V0T3JpZ2luc1dpdGhDYWNoZShIYXNoU2V0PFJlZlB0cjxTZWN1cml0eU9y
aWdpbj4sIFNlY3VyaXR5T3JpZ2luSGFzaD4mKTsKKyAgICBXRUJDT1JFX0VYUE9SVCB2b2lkIGRl
bGV0ZUFsbEVudHJpZXMoKTsKIAogICAgIHN0YXRpYyBpbnQ2NF90IHVua25vd25RdW90YSgpIHsg
cmV0dXJuIC0xOyB9CiAgICAgc3RhdGljIGludDY0X3Qgbm9RdW90YSgpIHsgcmV0dXJuIHN0ZDo6
bnVtZXJpY19saW1pdHM8aW50NjRfdD46Om1heCgpOyB9CkluZGV4OiBTb3VyY2UvV2ViQ29yZS9s
b2FkZXIvYXJjaGl2ZS9BcmNoaXZlUmVzb3VyY2UuaAo9PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09Ci0tLSBTb3VyY2UvV2Vi
Q29yZS9sb2FkZXIvYXJjaGl2ZS9BcmNoaXZlUmVzb3VyY2UuaAkocmV2aXNpb24gMTcyNjU4KQor
KysgU291cmNlL1dlYkNvcmUvbG9hZGVyL2FyY2hpdmUvQXJjaGl2ZVJlc291cmNlLmgJKHdvcmtp
bmcgY29weSkKQEAgLTM2LDcgKzM2LDcgQEAgbmFtZXNwYWNlIFdlYkNvcmUgewogY2xhc3MgQXJj
aGl2ZVJlc291cmNlIDogcHVibGljIFN1YnN0aXR1dGVSZXNvdXJjZSB7CiBwdWJsaWM6CiAgICAg
c3RhdGljIFBhc3NSZWZQdHI8QXJjaGl2ZVJlc291cmNlPiBjcmVhdGUoUGFzc1JlZlB0cjxTaGFy
ZWRCdWZmZXI+LCBjb25zdCBVUkwmLCBjb25zdCBSZXNvdXJjZVJlc3BvbnNlJik7Ci0gICAgc3Rh
dGljIFBhc3NSZWZQdHI8QXJjaGl2ZVJlc291cmNlPiBjcmVhdGUoUGFzc1JlZlB0cjxTaGFyZWRC
dWZmZXI+LCBjb25zdCBVUkwmLAorICAgIFdFQkNPUkVfRVhQT1JUIHN0YXRpYyBQYXNzUmVmUHRy
PEFyY2hpdmVSZXNvdXJjZT4gY3JlYXRlKFBhc3NSZWZQdHI8U2hhcmVkQnVmZmVyPiwgY29uc3Qg
VVJMJiwKICAgICAgICAgY29uc3QgU3RyaW5nJiBtaW1lVHlwZSwgY29uc3QgU3RyaW5nJiB0ZXh0
RW5jb2RpbmcsIGNvbnN0IFN0cmluZyYgZnJhbWVOYW1lLAogICAgICAgICBjb25zdCBSZXNvdXJj
ZVJlc3BvbnNlJiA9IFJlc291cmNlUmVzcG9uc2UoKSk7CiAKSW5kZXg6IFNvdXJjZS9XZWJDb3Jl
L2xvYWRlci9jYWNoZS9DYWNoZWRJbWFnZS5oCj09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT0KLS0tIFNvdXJjZS9XZWJDb3Jl
L2xvYWRlci9jYWNoZS9DYWNoZWRJbWFnZS5oCShyZXZpc2lvbiAxNzI2NTgpCisrKyBTb3VyY2Uv
V2ViQ29yZS9sb2FkZXIvY2FjaGUvQ2FjaGVkSW1hZ2UuaAkod29ya2luZyBjb3B5KQpAQCAtNTYs
OCArNTYsOCBAQCBwdWJsaWM6CiAgICAgQ2FjaGVkSW1hZ2UoY29uc3QgVVJMJiwgSW1hZ2UqLCBD
YWNoZUJlaGF2aW9yVHlwZSwgU2Vzc2lvbklEKTsKICAgICB2aXJ0dWFsIH5DYWNoZWRJbWFnZSgp
OwogCi0gICAgSW1hZ2UqIGltYWdlKCk7IC8vIFJldHVybnMgdGhlIG51bGxJbWFnZSgpIGlmIHRo
ZSBpbWFnZSBpcyBub3QgYXZhaWxhYmxlIHlldC4KLSAgICBJbWFnZSogaW1hZ2VGb3JSZW5kZXJl
cihjb25zdCBSZW5kZXJPYmplY3QqKTsgLy8gUmV0dXJucyB0aGUgbnVsbEltYWdlKCkgaWYgdGhl
IGltYWdlIGlzIG5vdCBhdmFpbGFibGUgeWV0LgorICAgIFdFQkNPUkVfRVhQT1JUIEltYWdlKiBp
bWFnZSgpOyAvLyBSZXR1cm5zIHRoZSBudWxsSW1hZ2UoKSBpZiB0aGUgaW1hZ2UgaXMgbm90IGF2
YWlsYWJsZSB5ZXQuCisgICAgV0VCQ09SRV9FWFBPUlQgSW1hZ2UqIGltYWdlRm9yUmVuZGVyZXIo
Y29uc3QgUmVuZGVyT2JqZWN0Kik7IC8vIFJldHVybnMgdGhlIG51bGxJbWFnZSgpIGlmIHRoZSBp
bWFnZSBpcyBub3QgYXZhaWxhYmxlIHlldC4KICAgICBib29sIGhhc0ltYWdlKCkgY29uc3QgeyBy
ZXR1cm4gbV9pbWFnZS5nZXQoKTsgfQogICAgIGJvb2wgY3VycmVudEZyYW1lS25vd25Ub0JlT3Bh
cXVlKGNvbnN0IFJlbmRlckVsZW1lbnQqKTsKIApJbmRleDogU291cmNlL1dlYkNvcmUvbG9hZGVy
L2NhY2hlL0NhY2hlZFJlc291cmNlLmgKPT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PQotLS0gU291cmNlL1dlYkNvcmUvbG9h
ZGVyL2NhY2hlL0NhY2hlZFJlc291cmNlLmgJKHJldmlzaW9uIDE3MjY1OCkKKysrIFNvdXJjZS9X
ZWJDb3JlL2xvYWRlci9jYWNoZS9DYWNoZWRSZXNvdXJjZS5oCSh3b3JraW5nIGNvcHkpCkBAIC0x
MTgsOCArMTE4LDggQEAgcHVibGljOgogICAgIFJlc291cmNlTG9hZFByaW9yaXR5IGxvYWRQcmlv
cml0eSgpIGNvbnN0IHsgcmV0dXJuIG1fbG9hZFByaW9yaXR5OyB9CiAgICAgdm9pZCBzZXRMb2Fk
UHJpb3JpdHkoUmVzb3VyY2VMb2FkUHJpb3JpdHkpOwogCi0gICAgdm9pZCBhZGRDbGllbnQoQ2Fj
aGVkUmVzb3VyY2VDbGllbnQqKTsKLSAgICB2b2lkIHJlbW92ZUNsaWVudChDYWNoZWRSZXNvdXJj
ZUNsaWVudCopOworICAgIFdFQkNPUkVfRVhQT1JUIHZvaWQgYWRkQ2xpZW50KENhY2hlZFJlc291
cmNlQ2xpZW50Kik7CisgICAgV0VCQ09SRV9FWFBPUlQgdm9pZCByZW1vdmVDbGllbnQoQ2FjaGVk
UmVzb3VyY2VDbGllbnQqKTsKICAgICBib29sIGhhc0NsaWVudHMoKSBjb25zdCB7IHJldHVybiAh
bV9jbGllbnRzLmlzRW1wdHkoKSB8fCAhbV9jbGllbnRzQXdhaXRpbmdDYWxsYmFjay5pc0VtcHR5
KCk7IH0KICAgICBib29sIGhhc0NsaWVudChDYWNoZWRSZXNvdXJjZUNsaWVudCogY2xpZW50KSB7
IHJldHVybiBtX2NsaWVudHMuY29udGFpbnMoY2xpZW50KSB8fCBtX2NsaWVudHNBd2FpdGluZ0Nh
bGxiYWNrLmNvbnRhaW5zKGNsaWVudCk7IH0KICAgICBib29sIGRlbGV0ZUlmUG9zc2libGUoKTsK
QEAgLTIyMiw3ICsyMjIsNyBAQCBwdWJsaWM6CiAgICAgdm9pZCBkZWNyZWFzZVByZWxvYWRDb3Vu
dCgpIHsgQVNTRVJUKG1fcHJlbG9hZENvdW50KTsgLS1tX3ByZWxvYWRDb3VudDsgfQogICAgIAog
ICAgIHZvaWQgcmVnaXN0ZXJIYW5kbGUoQ2FjaGVkUmVzb3VyY2VIYW5kbGVCYXNlKiBoKTsKLSAg
ICB2b2lkIHVucmVnaXN0ZXJIYW5kbGUoQ2FjaGVkUmVzb3VyY2VIYW5kbGVCYXNlKiBoKTsKKyAg
ICBXRUJDT1JFX0VYUE9SVCB2b2lkIHVucmVnaXN0ZXJIYW5kbGUoQ2FjaGVkUmVzb3VyY2VIYW5k
bGVCYXNlKiBoKTsKICAgICAKICAgICBib29sIGNhblVzZUNhY2hlVmFsaWRhdG9yKCkgY29uc3Q7
CiAKQEAgLTI1OSw3ICsyNTksNyBAQCBwdWJsaWM6CiAgICAgdmlydHVhbCBib29sIGNhblJldXNl
KGNvbnN0IFJlc291cmNlUmVxdWVzdCYpIGNvbnN0IHsgcmV0dXJuIHRydWU7IH0KIAogI2lmIFVT
RShGT1VOREFUSU9OKQotICAgIHZvaWQgdHJ5UmVwbGFjZUVuY29kZWREYXRhKFBhc3NSZWZQdHI8
U2hhcmVkQnVmZmVyPik7CisgICAgV0VCQ09SRV9FWFBPUlQgdm9pZCB0cnlSZXBsYWNlRW5jb2Rl
ZERhdGEoUGFzc1JlZlB0cjxTaGFyZWRCdWZmZXI+KTsKICNlbmRpZgogCiAjaWYgVVNFKFNPVVAp
CkluZGV4OiBTb3VyY2UvV2ViQ29yZS9sb2FkZXIvY2FjaGUvQ2FjaGVkUmVzb3VyY2VIYW5kbGUu
aAo9PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09Ci0tLSBTb3VyY2UvV2ViQ29yZS9sb2FkZXIvY2FjaGUvQ2FjaGVkUmVzb3Vy
Y2VIYW5kbGUuaAkocmV2aXNpb24gMTcyNjU4KQorKysgU291cmNlL1dlYkNvcmUvbG9hZGVyL2Nh
Y2hlL0NhY2hlZFJlc291cmNlSGFuZGxlLmgJKHdvcmtpbmcgY29weSkKQEAgLTQ5LDcgKzQ5LDcg
QEAgcHJvdGVjdGVkOgogICAgIENhY2hlZFJlc291cmNlSGFuZGxlQmFzZShDYWNoZWRSZXNvdXJj
ZSopOwogICAgIENhY2hlZFJlc291cmNlSGFuZGxlQmFzZShjb25zdCBDYWNoZWRSZXNvdXJjZUhh
bmRsZUJhc2UmKTsKIAotICAgIHZvaWQgc2V0UmVzb3VyY2UoQ2FjaGVkUmVzb3VyY2UqKTsKKyAg
ICBXRUJDT1JFX0VYUE9SVCB2b2lkIHNldFJlc291cmNlKENhY2hlZFJlc291cmNlKik7CiAgICAg
CiBwcml2YXRlOgogICAgIENhY2hlZFJlc291cmNlSGFuZGxlQmFzZSYgb3BlcmF0b3I9KGNvbnN0
IENhY2hlZFJlc291cmNlSGFuZGxlQmFzZSYpIHsgcmV0dXJuICp0aGlzOyB9IApJbmRleDogU291
cmNlL1dlYkNvcmUvbG9hZGVyL2NhY2hlL0NhY2hlZFJlc291cmNlTG9hZGVyLmgKPT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PQotLS0gU291cmNlL1dlYkNvcmUvbG9hZGVyL2NhY2hlL0NhY2hlZFJlc291cmNlTG9hZGVyLmgJ
KHJldmlzaW9uIDE3MjY1OCkKKysrIFNvdXJjZS9XZWJDb3JlL2xvYWRlci9jYWNoZS9DYWNoZWRS
ZXNvdXJjZUxvYWRlci5oCSh3b3JraW5nIGNvcHkpCkBAIC0xMTcsMTMgKzExNywxMyBAQCBwdWJs
aWM6CiAKICAgICB2b2lkIGxvYWREb25lKENhY2hlZFJlc291cmNlKiwgYm9vbCBzaG91bGRQZXJm
b3JtUG9zdExvYWRBY3Rpb25zID0gdHJ1ZSk7CiAKLSAgICB2b2lkIGdhcmJhZ2VDb2xsZWN0RG9j
dW1lbnRSZXNvdXJjZXMoKTsKKyAgICBXRUJDT1JFX0VYUE9SVCB2b2lkIGdhcmJhZ2VDb2xsZWN0
RG9jdW1lbnRSZXNvdXJjZXMoKTsKICAgICAKICAgICB2b2lkIGluY3JlbWVudFJlcXVlc3RDb3Vu
dChjb25zdCBDYWNoZWRSZXNvdXJjZSopOwogICAgIHZvaWQgZGVjcmVtZW50UmVxdWVzdENvdW50
KGNvbnN0IENhY2hlZFJlc291cmNlKik7CiAgICAgaW50IHJlcXVlc3RDb3VudCgpIGNvbnN0IHsg
cmV0dXJuIG1fcmVxdWVzdENvdW50OyB9CiAKLSAgICBib29sIGlzUHJlbG9hZGVkKGNvbnN0IFN0
cmluZyYgdXJsU3RyaW5nKSBjb25zdDsKKyAgICBXRUJDT1JFX0VYUE9SVCBib29sIGlzUHJlbG9h
ZGVkKGNvbnN0IFN0cmluZyYgdXJsU3RyaW5nKSBjb25zdDsKICAgICB2b2lkIGNsZWFyUHJlbG9h
ZHMoKTsKICAgICB2b2lkIGNsZWFyUGVuZGluZ1ByZWxvYWRzKCk7CiAgICAgdm9pZCBwcmVsb2Fk
KENhY2hlZFJlc291cmNlOjpUeXBlLCBDYWNoZWRSZXNvdXJjZVJlcXVlc3QmLCBjb25zdCBTdHJp
bmcmIGNoYXJzZXQpOwpJbmRleDogU291cmNlL1dlYkNvcmUvcGFnZS9DaHJvbWUuaAo9PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09Ci0tLSBTb3VyY2UvV2ViQ29yZS9wYWdlL0Nocm9tZS5oCShyZXZpc2lvbiAxNzI2NTgpCisr
KyBTb3VyY2UvV2ViQ29yZS9wYWdlL0Nocm9tZS5oCSh3b3JraW5nIGNvcHkpCkBAIC0xMTUsNyAr
MTE1LDcgQEAgcHVibGljOgogICAgIHZvaWQgZm9jdXNlZEVsZW1lbnRDaGFuZ2VkKEVsZW1lbnQq
KSBjb25zdDsKICAgICB2b2lkIGZvY3VzZWRGcmFtZUNoYW5nZWQoRnJhbWUqKSBjb25zdDsKIAot
ICAgIFBhZ2UqIGNyZWF0ZVdpbmRvdyhGcmFtZSosIGNvbnN0IEZyYW1lTG9hZFJlcXVlc3QmLCBj
b25zdCBXaW5kb3dGZWF0dXJlcyYsIGNvbnN0IE5hdmlnYXRpb25BY3Rpb24mKSBjb25zdDsKKyAg
ICBXRUJDT1JFX0VYUE9SVCBQYWdlKiBjcmVhdGVXaW5kb3coRnJhbWUqLCBjb25zdCBGcmFtZUxv
YWRSZXF1ZXN0JiwgY29uc3QgV2luZG93RmVhdHVyZXMmLCBjb25zdCBOYXZpZ2F0aW9uQWN0aW9u
JikgY29uc3Q7CiAgICAgdm9pZCBzaG93KCkgY29uc3Q7CiAKICAgICBib29sIGNhblJ1bk1vZGFs
KCkgY29uc3Q7CkBAIC0xNDQsNyArMTQ0LDcgQEAgcHVibGljOgogICAgIHZvaWQgcnVuSmF2YVNj
cmlwdEFsZXJ0KEZyYW1lKiwgY29uc3QgU3RyaW5nJik7CiAgICAgYm9vbCBydW5KYXZhU2NyaXB0
Q29uZmlybShGcmFtZSosIGNvbnN0IFN0cmluZyYpOwogICAgIGJvb2wgcnVuSmF2YVNjcmlwdFBy
b21wdChGcmFtZSosIGNvbnN0IFN0cmluZyYgbWVzc2FnZSwgY29uc3QgU3RyaW5nJiBkZWZhdWx0
VmFsdWUsIFN0cmluZyYgcmVzdWx0KTsKLSAgICB2b2lkIHNldFN0YXR1c2JhclRleHQoRnJhbWUq
LCBjb25zdCBTdHJpbmcmKTsKKyAgICBXRUJDT1JFX0VYUE9SVCB2b2lkIHNldFN0YXR1c2JhclRl
eHQoRnJhbWUqLCBjb25zdCBTdHJpbmcmKTsKICAgICBib29sIHNob3VsZEludGVycnVwdEphdmFT
Y3JpcHQoKTsKIAogICAgIEludFJlY3Qgd2luZG93UmVzaXplclJlY3QoKSBjb25zdDsKQEAgLTE1
Myw3ICsxNTMsNyBAQCBwdWJsaWM6CiAKICAgICB2b2lkIHNldFRvb2xUaXAoY29uc3QgSGl0VGVz
dFJlc3VsdCYpOwogCi0gICAgdm9pZCBwcmludChGcmFtZSopOworICAgIFdFQkNPUkVfRVhQT1JU
IHZvaWQgcHJpbnQoRnJhbWUqKTsKIAogICAgIHZvaWQgZW5hYmxlU3VkZGVuVGVybWluYXRpb24o
KTsKICAgICB2b2lkIGRpc2FibGVTdWRkZW5UZXJtaW5hdGlvbigpOwpAQCAtMTc0LDcgKzE3NCw3
IEBAIHB1YmxpYzoKICAgICBib29sIHJlcXVpcmVzRnVsbHNjcmVlbkZvclZpZGVvUGxheWJhY2so
KTsKIAogI2lmIFBMQVRGT1JNKENPQ09BKQotICAgIHZvaWQgZm9jdXNOU1ZpZXcoTlNWaWV3Kik7
CisgICAgV0VCQ09SRV9FWFBPUlQgdm9pZCBmb2N1c05TVmlldyhOU1ZpZXcqKTsKICNlbmRpZgog
CiAgICAgYm9vbCBzZWxlY3RJdGVtV3JpdGluZ0RpcmVjdGlvbklzTmF0dXJhbCgpOwpJbmRleDog
U291cmNlL1dlYkNvcmUvcGFnZS9Db250ZXh0TWVudUNvbnRyb2xsZXIuaAo9PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09Ci0t
LSBTb3VyY2UvV2ViQ29yZS9wYWdlL0NvbnRleHRNZW51Q29udHJvbGxlci5oCShyZXZpc2lvbiAx
NzI2NTgpCisrKyBTb3VyY2UvV2ViQ29yZS9wYWdlL0NvbnRleHRNZW51Q29udHJvbGxlci5oCSh3
b3JraW5nIGNvcHkpCkBAIC01MCwxNiArNTAsMTYgQEAgcHVibGljOgogICAgIH5Db250ZXh0TWVu
dUNvbnRyb2xsZXIoKTsKIAogICAgIENvbnRleHRNZW51KiBjb250ZXh0TWVudSgpIGNvbnN0IHsg
cmV0dXJuIG1fY29udGV4dE1lbnUuZ2V0KCk7IH0KLSAgICB2b2lkIGNsZWFyQ29udGV4dE1lbnUo
KTsKKyAgICBXRUJDT1JFX0VYUE9SVCB2b2lkIGNsZWFyQ29udGV4dE1lbnUoKTsKIAogICAgIHZv
aWQgaGFuZGxlQ29udGV4dE1lbnVFdmVudChFdmVudCopOwogICAgIHZvaWQgc2hvd0NvbnRleHRN
ZW51KEV2ZW50KiwgUGFzc1JlZlB0cjxDb250ZXh0TWVudVByb3ZpZGVyPik7CiAKICAgICB2b2lk
IHBvcHVsYXRlKCk7Ci0gICAgdm9pZCBjb250ZXh0TWVudUl0ZW1TZWxlY3RlZChDb250ZXh0TWVu
dUl0ZW0qKTsKKyAgICBXRUJDT1JFX0VYUE9SVCB2b2lkIGNvbnRleHRNZW51SXRlbVNlbGVjdGVk
KENvbnRleHRNZW51SXRlbSopOwogICAgIHZvaWQgYWRkSW5zcGVjdEVsZW1lbnRJdGVtKCk7CiAK
LSAgICB2b2lkIGNoZWNrT3JFbmFibGVJZk5lZWRlZChDb250ZXh0TWVudUl0ZW0mKSBjb25zdDsK
KyAgICBXRUJDT1JFX0VYUE9SVCB2b2lkIGNoZWNrT3JFbmFibGVJZk5lZWRlZChDb250ZXh0TWVu
dUl0ZW0mKSBjb25zdDsKIAogICAgIHZvaWQgc2V0Q29udGV4dE1lbnVDb250ZXh0KGNvbnN0IENv
bnRleHRNZW51Q29udGV4dCYgY29udGV4dCkgeyBtX2NvbnRleHQgPSBjb250ZXh0OyB9CiAgICAg
Y29uc3QgQ29udGV4dE1lbnVDb250ZXh0JiBjb250ZXh0KCkgY29uc3QgeyByZXR1cm4gbV9jb250
ZXh0OyB9CkluZGV4OiBTb3VyY2UvV2ViQ29yZS9wYWdlL0RPTVdpbmRvdy5oCj09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT0K
LS0tIFNvdXJjZS9XZWJDb3JlL3BhZ2UvRE9NV2luZG93LmgJKHJldmlzaW9uIDE3MjY1OCkKKysr
IFNvdXJjZS9XZWJDb3JlL3BhZ2UvRE9NV2luZG93LmgJKHdvcmtpbmcgY29weSkKQEAgLTEyNCwx
MCArMTI0LDEwIEBAIG5hbWVzcGFjZSBXZWJDb3JlIHsKIAogICAgICAgICBQYXNzUmVmUHRyPE1l
ZGlhUXVlcnlMaXN0PiBtYXRjaE1lZGlhKGNvbnN0IFN0cmluZyYpOwogCi0gICAgICAgIHVuc2ln
bmVkIHBlbmRpbmdVbmxvYWRFdmVudExpc3RlbmVycygpIGNvbnN0OworICAgICAgICBXRUJDT1JF
X0VYUE9SVCB1bnNpZ25lZCBwZW5kaW5nVW5sb2FkRXZlbnRMaXN0ZW5lcnMoKSBjb25zdDsKIAot
ICAgICAgICBzdGF0aWMgYm9vbCBkaXNwYXRjaEFsbFBlbmRpbmdCZWZvcmVVbmxvYWRFdmVudHMo
KTsKLSAgICAgICAgc3RhdGljIHZvaWQgZGlzcGF0Y2hBbGxQZW5kaW5nVW5sb2FkRXZlbnRzKCk7
CisgICAgICAgIFdFQkNPUkVfRVhQT1JUIHN0YXRpYyBib29sIGRpc3BhdGNoQWxsUGVuZGluZ0Jl
Zm9yZVVubG9hZEV2ZW50cygpOworICAgICAgICBXRUJDT1JFX0VYUE9SVCBzdGF0aWMgdm9pZCBk
aXNwYXRjaEFsbFBlbmRpbmdVbmxvYWRFdmVudHMoKTsKIAogICAgICAgICBzdGF0aWMgRmxvYXRS
ZWN0IGFkanVzdFdpbmRvd1JlY3QoUGFnZSosIGNvbnN0IEZsb2F0UmVjdCYgcGVuZGluZ0NoYW5n
ZXMpOwogCkBAIC0xNjAsMTEgKzE2MCwxMSBAQCBuYW1lc3BhY2UgV2ViQ29yZSB7CiAKICAgICAg
ICAgdm9pZCBmb2N1cyhTY3JpcHRFeGVjdXRpb25Db250ZXh0KiA9IDApOwogICAgICAgICB2b2lk
IGJsdXIoKTsKLSAgICAgICAgdm9pZCBjbG9zZShTY3JpcHRFeGVjdXRpb25Db250ZXh0KiA9IDAp
OworICAgICAgICBXRUJDT1JFX0VYUE9SVCB2b2lkIGNsb3NlKFNjcmlwdEV4ZWN1dGlvbkNvbnRl
eHQqID0gMCk7CiAgICAgICAgIHZvaWQgcHJpbnQoKTsKICAgICAgICAgdm9pZCBzdG9wKCk7CiAK
LSAgICAgICAgUGFzc1JlZlB0cjxET01XaW5kb3c+IG9wZW4oY29uc3QgU3RyaW5nJiB1cmxTdHJp
bmcsIGNvbnN0IEF0b21pY1N0cmluZyYgZnJhbWVOYW1lLCBjb25zdCBTdHJpbmcmIHdpbmRvd0Zl
YXR1cmVzU3RyaW5nLAorICAgICAgICBXRUJDT1JFX0VYUE9SVCBQYXNzUmVmUHRyPERPTVdpbmRv
dz4gb3Blbihjb25zdCBTdHJpbmcmIHVybFN0cmluZywgY29uc3QgQXRvbWljU3RyaW5nJiBmcmFt
ZU5hbWUsIGNvbnN0IFN0cmluZyYgd2luZG93RmVhdHVyZXNTdHJpbmcsCiAgICAgICAgICAgICBE
T01XaW5kb3cmIGFjdGl2ZVdpbmRvdywgRE9NV2luZG93JiBmaXJzdFdpbmRvdyk7CiAKICAgICAg
ICAgdm9pZCBzaG93TW9kYWxEaWFsb2coY29uc3QgU3RyaW5nJiB1cmxTdHJpbmcsIGNvbnN0IFN0
cmluZyYgZGlhbG9nRmVhdHVyZXNTdHJpbmcsIERPTVdpbmRvdyYgYWN0aXZlV2luZG93LCBET01X
aW5kb3cmIGZpcnN0V2luZG93LCBzdGQ6OmZ1bmN0aW9uPHZvaWQgKERPTVdpbmRvdyYpPiBwcmVw
YXJlRGlhbG9nRnVuY3Rpb24pOwpAQCAtMjE2LDcgKzIxNiw3IEBAIG5hbWVzcGFjZSBXZWJDb3Jl
IHsKIAogICAgICAgICAvLyBET00gTGV2ZWwgMiBBYnN0cmFjdFZpZXcgSW50ZXJmYWNlCiAKLSAg
ICAgICAgRG9jdW1lbnQqIGRvY3VtZW50KCkgY29uc3Q7CisgICAgICAgIFdFQkNPUkVfRVhQT1JU
IERvY3VtZW50KiBkb2N1bWVudCgpIGNvbnN0OwogCiAgICAgICAgIC8vIENTU09NIFZpZXcgTW9k
dWxlCiAKSW5kZXg6IFNvdXJjZS9XZWJDb3JlL3BhZ2UvRE9NV2luZG93RXh0ZW5zaW9uLmgKPT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PQotLS0gU291cmNlL1dlYkNvcmUvcGFnZS9ET01XaW5kb3dFeHRlbnNpb24uaAkocmV2
aXNpb24gMTcyNjU4KQorKysgU291cmNlL1dlYkNvcmUvcGFnZS9ET01XaW5kb3dFeHRlbnNpb24u
aAkod29ya2luZyBjb3B5KQpAQCAtNTMsNyArNTMsNyBAQCBwdWJsaWM6CiAgICAgRE9NV3JhcHBl
cldvcmxkJiB3b3JsZCgpIGNvbnN0IHsgcmV0dXJuICptX3dvcmxkOyB9CiAKIHByaXZhdGU6Ci0g
ICAgRE9NV2luZG93RXh0ZW5zaW9uKEZyYW1lKiwgRE9NV3JhcHBlcldvcmxkJik7CisgICAgV0VC
Q09SRV9FWFBPUlQgRE9NV2luZG93RXh0ZW5zaW9uKEZyYW1lKiwgRE9NV3JhcHBlcldvcmxkJik7
CiAKICAgICBSZWZQdHI8RE9NV3JhcHBlcldvcmxkPiBtX3dvcmxkOwogICAgIFJlZlB0cjxGcmFt
ZT4gbV9kaXNjb25uZWN0ZWRGcmFtZTsKSW5kZXg6IFNvdXJjZS9XZWJDb3JlL3BhZ2UvRHJhZ0Nv
bnRyb2xsZXIuaAo9PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09Ci0tLSBTb3VyY2UvV2ViQ29yZS9wYWdlL0RyYWdDb250cm9s
bGVyLmgJKHJldmlzaW9uIDE3MjY1OCkKKysrIFNvdXJjZS9XZWJDb3JlL3BhZ2UvRHJhZ0NvbnRy
b2xsZXIuaAkod29ya2luZyBjb3B5KQpAQCAtNTcsMTAgKzU3LDEwIEBAIG5hbWVzcGFjZSBXZWJD
b3JlIHsKIAogICAgICAgICBEcmFnQ2xpZW50JiBjbGllbnQoKSBjb25zdCB7IHJldHVybiBtX2Ns
aWVudDsgfQogCi0gICAgICAgIERyYWdPcGVyYXRpb24gZHJhZ0VudGVyZWQoRHJhZ0RhdGEmKTsK
LSAgICAgICAgdm9pZCBkcmFnRXhpdGVkKERyYWdEYXRhJik7Ci0gICAgICAgIERyYWdPcGVyYXRp
b24gZHJhZ1VwZGF0ZWQoRHJhZ0RhdGEmKTsKLSAgICAgICAgYm9vbCBwZXJmb3JtRHJhZ09wZXJh
dGlvbihEcmFnRGF0YSYpOworICAgICAgICBXRUJDT1JFX0VYUE9SVCBEcmFnT3BlcmF0aW9uIGRy
YWdFbnRlcmVkKERyYWdEYXRhJik7CisgICAgICAgIFdFQkNPUkVfRVhQT1JUIHZvaWQgZHJhZ0V4
aXRlZChEcmFnRGF0YSYpOworICAgICAgICBXRUJDT1JFX0VYUE9SVCBEcmFnT3BlcmF0aW9uIGRy
YWdVcGRhdGVkKERyYWdEYXRhJik7CisgICAgICAgIFdFQkNPUkVfRVhQT1JUIGJvb2wgcGVyZm9y
bURyYWdPcGVyYXRpb24oRHJhZ0RhdGEmKTsKIAogICAgICAgICBib29sIG1vdXNlSXNPdmVyRmls
ZUlucHV0KCkgY29uc3QgeyByZXR1cm4gbV9maWxlSW5wdXRFbGVtZW50VW5kZXJNb3VzZTsgfQog
ICAgICAgICB1bnNpZ25lZCBudW1iZXJPZkl0ZW1zVG9CZUFjY2VwdGVkKCkgY29uc3QgeyByZXR1
cm4gbV9udW1iZXJPZkl0ZW1zVG9CZUFjY2VwdGVkOyB9CkBAIC04MCw5ICs4MCw5IEBAIG5hbWVz
cGFjZSBXZWJDb3JlIHsKICAgICAgICAgRHJhZ1NvdXJjZUFjdGlvbiBkZWxlZ2F0ZURyYWdTb3Vy
Y2VBY3Rpb24oY29uc3QgSW50UG9pbnQmIHJvb3RWaWV3UG9pbnQpOwogICAgICAgICAKICAgICAg
ICAgRWxlbWVudCogZHJhZ2dhYmxlRWxlbWVudChjb25zdCBGcmFtZSosIEVsZW1lbnQqIHN0YXJ0
LCBjb25zdCBJbnRQb2ludCYsIERyYWdTdGF0ZSYpIGNvbnN0OwotICAgICAgICB2b2lkIGRyYWdF
bmRlZCgpOworICAgICAgICBXRUJDT1JFX0VYUE9SVCB2b2lkIGRyYWdFbmRlZCgpOwogICAgICAg
ICAKLSAgICAgICAgdm9pZCBwbGFjZURyYWdDYXJldChjb25zdCBJbnRQb2ludCYpOworICAgICAg
ICBXRUJDT1JFX0VYUE9SVCB2b2lkIHBsYWNlRHJhZ0NhcmV0KGNvbnN0IEludFBvaW50Jik7CiAg
ICAgICAgIAogICAgICAgICBib29sIHN0YXJ0RHJhZyhGcmFtZSYgc3JjLCBjb25zdCBEcmFnU3Rh
dGUmLCBEcmFnT3BlcmF0aW9uIHNyY09wLCBjb25zdCBQbGF0Zm9ybU1vdXNlRXZlbnQmIGRyYWdF
dmVudCwgY29uc3QgSW50UG9pbnQmIGRyYWdPcmlnaW4pOwogICAgICAgICBzdGF0aWMgY29uc3Qg
SW50U2l6ZSYgbWF4RHJhZ0ltYWdlU2l6ZSgpOwpJbmRleDogU291cmNlL1dlYkNvcmUvcGFnZS9F
dmVudEhhbmRsZXIuaAo9PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09Ci0tLSBTb3VyY2UvV2ViQ29yZS9wYWdlL0V2ZW50SGFu
ZGxlci5oCShyZXZpc2lvbiAxNzI2NTgpCisrKyBTb3VyY2UvV2ViQ29yZS9wYWdlL0V2ZW50SGFu
ZGxlci5oCSh3b3JraW5nIGNvcHkpCkBAIC0xNDcsMTQgKzE0NywxNCBAQCBwdWJsaWM6CiAgICAg
dm9pZCBkaXNwYXRjaEZha2VNb3VzZU1vdmVFdmVudFNvb24oKTsKICAgICB2b2lkIGRpc3BhdGNo
RmFrZU1vdXNlTW92ZUV2ZW50U29vbkluUXVhZChjb25zdCBGbG9hdFF1YWQmKTsKIAotICAgIEhp
dFRlc3RSZXN1bHQgaGl0VGVzdFJlc3VsdEF0UG9pbnQoY29uc3QgTGF5b3V0UG9pbnQmLAorICAg
IFdFQkNPUkVfRVhQT1JUIEhpdFRlc3RSZXN1bHQgaGl0VGVzdFJlc3VsdEF0UG9pbnQoY29uc3Qg
TGF5b3V0UG9pbnQmLAogICAgICAgICBIaXRUZXN0UmVxdWVzdDo6SGl0VGVzdFJlcXVlc3RUeXBl
IGhpdFR5cGUgPSBIaXRUZXN0UmVxdWVzdDo6UmVhZE9ubHkgfCBIaXRUZXN0UmVxdWVzdDo6QWN0
aXZlIHwgSGl0VGVzdFJlcXVlc3Q6OkRpc2FsbG93U2hhZG93Q29udGVudCwKICAgICAgICAgY29u
c3QgTGF5b3V0U2l6ZSYgcGFkZGluZyA9IExheW91dFNpemUoKSk7CiAKICAgICBib29sIG1vdXNl
UHJlc3NlZCgpIGNvbnN0IHsgcmV0dXJuIG1fbW91c2VQcmVzc2VkOyB9CiAgICAgTm9kZSogbW91
c2VQcmVzc05vZGUoKSBjb25zdCB7IHJldHVybiBtX21vdXNlUHJlc3NOb2RlLmdldCgpOyB9CiAK
LSAgICB2b2lkIHNldENhcHR1cmluZ01vdXNlRXZlbnRzRWxlbWVudChQYXNzUmVmUHRyPEVsZW1l
bnQ+KTsgLy8gQSBjYWxsZXIgaXMgcmVzcG9uc2libGUgZm9yIHJlc2V0dGluZyBjYXB0dXJpbmcg
ZWxlbWVudCB0byAwLgorICAgIFdFQkNPUkVfRVhQT1JUIHZvaWQgc2V0Q2FwdHVyaW5nTW91c2VF
dmVudHNFbGVtZW50KFBhc3NSZWZQdHI8RWxlbWVudD4pOyAvLyBBIGNhbGxlciBpcyByZXNwb25z
aWJsZSBmb3IgcmVzZXR0aW5nIGNhcHR1cmluZyBlbGVtZW50IHRvIDAuCiAKICNpZiBFTkFCTEUo
RFJBR19TVVBQT1JUKQogICAgIGJvb2wgdXBkYXRlRHJhZ0FuZERyb3AoY29uc3QgUGxhdGZvcm1N
b3VzZUV2ZW50JiwgRGF0YVRyYW5zZmVyKik7CkBAIC0xNzgsMjIgKzE3OCwyMiBAQCBwdWJsaWM6
CiAgICAgc3RhdGljIEZyYW1lKiBzdWJmcmFtZUZvclRhcmdldE5vZGUoTm9kZSopOwogICAgIHN0
YXRpYyBGcmFtZSogc3ViZnJhbWVGb3JIaXRUZXN0UmVzdWx0KGNvbnN0IE1vdXNlRXZlbnRXaXRo
SGl0VGVzdFJlc3VsdHMmKTsKIAotICAgIGJvb2wgc2Nyb2xsT3ZlcmZsb3coU2Nyb2xsRGlyZWN0
aW9uLCBTY3JvbGxHcmFudWxhcml0eSwgTm9kZSogc3RhcnRpbmdOb2RlID0gMCk7Ci0gICAgYm9v
bCBzY3JvbGxSZWN1cnNpdmVseShTY3JvbGxEaXJlY3Rpb24sIFNjcm9sbEdyYW51bGFyaXR5LCBO
b2RlKiBzdGFydGluZ05vZGUgPSAwKTsKLSAgICBib29sIGxvZ2ljYWxTY3JvbGxSZWN1cnNpdmVs
eShTY3JvbGxMb2dpY2FsRGlyZWN0aW9uLCBTY3JvbGxHcmFudWxhcml0eSwgTm9kZSogc3RhcnRp
bmdOb2RlID0gMCk7CisgICAgV0VCQ09SRV9FWFBPUlQgYm9vbCBzY3JvbGxPdmVyZmxvdyhTY3Jv
bGxEaXJlY3Rpb24sIFNjcm9sbEdyYW51bGFyaXR5LCBOb2RlKiBzdGFydGluZ05vZGUgPSAwKTsK
KyAgICBXRUJDT1JFX0VYUE9SVCBib29sIHNjcm9sbFJlY3Vyc2l2ZWx5KFNjcm9sbERpcmVjdGlv
biwgU2Nyb2xsR3JhbnVsYXJpdHksIE5vZGUqIHN0YXJ0aW5nTm9kZSA9IDApOworICAgIFdFQkNP
UkVfRVhQT1JUIGJvb2wgbG9naWNhbFNjcm9sbFJlY3Vyc2l2ZWx5KFNjcm9sbExvZ2ljYWxEaXJl
Y3Rpb24sIFNjcm9sbEdyYW51bGFyaXR5LCBOb2RlKiBzdGFydGluZ05vZGUgPSAwKTsKIAogICAg
IGJvb2wgdGFic1RvTGlua3MoS2V5Ym9hcmRFdmVudCopIGNvbnN0OwogICAgIGJvb2wgdGFic1Rv
QWxsRm9ybUNvbnRyb2xzKEtleWJvYXJkRXZlbnQqKSBjb25zdDsKIAogICAgIGJvb2wgbW91c2VN
b3ZlZChjb25zdCBQbGF0Zm9ybU1vdXNlRXZlbnQmKTsKLSAgICBib29sIHBhc3NNb3VzZU1vdmVk
RXZlbnRUb1Njcm9sbGJhcnMoY29uc3QgUGxhdGZvcm1Nb3VzZUV2ZW50Jik7CisgICAgV0VCQ09S
RV9FWFBPUlQgYm9vbCBwYXNzTW91c2VNb3ZlZEV2ZW50VG9TY3JvbGxiYXJzKGNvbnN0IFBsYXRm
b3JtTW91c2VFdmVudCYpOwogCiAgICAgdm9pZCBsb3N0TW91c2VDYXB0dXJlKCk7CiAKICAgICBi
b29sIGhhbmRsZU1vdXNlUHJlc3NFdmVudChjb25zdCBQbGF0Zm9ybU1vdXNlRXZlbnQmKTsKICAg
ICBib29sIGhhbmRsZU1vdXNlTW92ZUV2ZW50KGNvbnN0IFBsYXRmb3JtTW91c2VFdmVudCYsIEhp
dFRlc3RSZXN1bHQqIGhvdmVyZWROb2RlID0gMCwgYm9vbCBvbmx5VXBkYXRlU2Nyb2xsYmFycyA9
IGZhbHNlKTsKICAgICBib29sIGhhbmRsZU1vdXNlUmVsZWFzZUV2ZW50KGNvbnN0IFBsYXRmb3Jt
TW91c2VFdmVudCYpOwotICAgIGJvb2wgaGFuZGxlV2hlZWxFdmVudChjb25zdCBQbGF0Zm9ybVdo
ZWVsRXZlbnQmKTsKKyAgICBXRUJDT1JFX0VYUE9SVCBib29sIGhhbmRsZVdoZWVsRXZlbnQoY29u
c3QgUGxhdGZvcm1XaGVlbEV2ZW50Jik7CiAgICAgdm9pZCBkZWZhdWx0V2hlZWxFdmVudEhhbmRs
ZXIoTm9kZSosIFdoZWVsRXZlbnQqKTsKICAgICBib29sIGhhbmRsZVBhc3RlR2xvYmFsU2VsZWN0
aW9uKGNvbnN0IFBsYXRmb3JtTW91c2VFdmVudCYpOwogCkBAIC0yMjEsNyArMjIxLDcgQEAgcHVi
bGljOgogI2VuZGlmCiAKICNpZiBFTkFCTEUoQ09OVEVYVF9NRU5VUykKLSAgICBib29sIHNlbmRD
b250ZXh0TWVudUV2ZW50KGNvbnN0IFBsYXRmb3JtTW91c2VFdmVudCYpOworICAgIFdFQkNPUkVf
RVhQT1JUIGJvb2wgc2VuZENvbnRleHRNZW51RXZlbnQoY29uc3QgUGxhdGZvcm1Nb3VzZUV2ZW50
Jik7CiAgICAgYm9vbCBzZW5kQ29udGV4dE1lbnVFdmVudEZvcktleSgpOwogI2VuZGlmCiAKQEAg
LTIzMCw0MSArMjMwLDQxIEBAIHB1YmxpYzoKICAgICBib29sIG5lZWRzS2V5Ym9hcmRFdmVudERp
c2FtYmlndWF0aW9uUXVpcmtzKCkgY29uc3Q7CiAKICAgICBzdGF0aWMgdW5zaWduZWQgYWNjZXNz
S2V5TW9kaWZpZXJzKCk7Ci0gICAgYm9vbCBoYW5kbGVBY2Nlc3NLZXkoY29uc3QgUGxhdGZvcm1L
ZXlib2FyZEV2ZW50Jik7Ci0gICAgYm9vbCBrZXlFdmVudChjb25zdCBQbGF0Zm9ybUtleWJvYXJk
RXZlbnQmKTsKKyAgICBXRUJDT1JFX0VYUE9SVCBib29sIGhhbmRsZUFjY2Vzc0tleShjb25zdCBQ
bGF0Zm9ybUtleWJvYXJkRXZlbnQmKTsKKyAgICBXRUJDT1JFX0VYUE9SVCBib29sIGtleUV2ZW50
KGNvbnN0IFBsYXRmb3JtS2V5Ym9hcmRFdmVudCYpOwogICAgIHZvaWQgZGVmYXVsdEtleWJvYXJk
RXZlbnRIYW5kbGVyKEtleWJvYXJkRXZlbnQqKTsKIAotICAgIHZvaWQgaGFuZGxlS2V5Ym9hcmRT
ZWxlY3Rpb25Nb3ZlbWVudEZvckFjY2Vzc2liaWxpdHkoS2V5Ym9hcmRFdmVudCopOworICAgIFdF
QkNPUkVfRVhQT1JUIHZvaWQgaGFuZGxlS2V5Ym9hcmRTZWxlY3Rpb25Nb3ZlbWVudEZvckFjY2Vz
c2liaWxpdHkoS2V5Ym9hcmRFdmVudCopOwogCiAgICAgYm9vbCBoYW5kbGVUZXh0SW5wdXRFdmVu
dChjb25zdCBTdHJpbmcmIHRleHQsIEV2ZW50KiB1bmRlcmx5aW5nRXZlbnQgPSAwLCBUZXh0RXZl
bnRJbnB1dFR5cGUgPSBUZXh0RXZlbnRJbnB1dEtleWJvYXJkKTsKICAgICB2b2lkIGRlZmF1bHRU
ZXh0SW5wdXRFdmVudEhhbmRsZXIoVGV4dEV2ZW50Kik7CiAKICNpZiBFTkFCTEUoRFJBR19TVVBQ
T1JUKQotICAgIGJvb2wgZXZlbnRNYXlTdGFydERyYWcoY29uc3QgUGxhdGZvcm1Nb3VzZUV2ZW50
JikgY29uc3Q7CisgICAgV0VCQ09SRV9FWFBPUlQgYm9vbCBldmVudE1heVN0YXJ0RHJhZyhjb25z
dCBQbGF0Zm9ybU1vdXNlRXZlbnQmKSBjb25zdDsKICAgICAKLSAgICB2b2lkIGRyYWdTb3VyY2VF
bmRlZEF0KGNvbnN0IFBsYXRmb3JtTW91c2VFdmVudCYsIERyYWdPcGVyYXRpb24pOworICAgIFdF
QkNPUkVfRVhQT1JUIHZvaWQgZHJhZ1NvdXJjZUVuZGVkQXQoY29uc3QgUGxhdGZvcm1Nb3VzZUV2
ZW50JiwgRHJhZ09wZXJhdGlvbik7CiAjZW5kaWYKIAogICAgIHZvaWQgZm9jdXNEb2N1bWVudFZp
ZXcoKTsKIAogICAgIHZvaWQgY2Fwc0xvY2tTdGF0ZU1heUhhdmVDaGFuZ2VkKCk7IC8vIE9ubHkg
Y2FsbGVkIGJ5IEZyYW1lU2VsZWN0aW9uCiAgICAgCi0gICAgdm9pZCBzZW5kU2Nyb2xsRXZlbnQo
KTsgLy8gRGl0dG8KKyAgICBXRUJDT1JFX0VYUE9SVCB2b2lkIHNlbmRTY3JvbGxFdmVudCgpOyAv
LyBEaXR0bwogCiAjaWYgUExBVEZPUk0oQ09DT0EpICYmIGRlZmluZWQoX19PQkpDX18pCiAjaWYg
IVBMQVRGT1JNKElPUykKLSAgICB2b2lkIG1vdXNlRG93bihOU0V2ZW50ICopOwotICAgIHZvaWQg
bW91c2VEcmFnZ2VkKE5TRXZlbnQgKik7Ci0gICAgdm9pZCBtb3VzZVVwKE5TRXZlbnQgKik7Ci0g
ICAgdm9pZCBtb3VzZU1vdmVkKE5TRXZlbnQgKik7Ci0gICAgYm9vbCBrZXlFdmVudChOU0V2ZW50
ICopOwotICAgIGJvb2wgd2hlZWxFdmVudChOU0V2ZW50ICopOworICAgIFdFQkNPUkVfRVhQT1JU
IHZvaWQgbW91c2VEb3duKE5TRXZlbnQgKik7CisgICAgV0VCQ09SRV9FWFBPUlQgdm9pZCBtb3Vz
ZURyYWdnZWQoTlNFdmVudCAqKTsKKyAgICBXRUJDT1JFX0VYUE9SVCB2b2lkIG1vdXNlVXAoTlNF
dmVudCAqKTsKKyAgICBXRUJDT1JFX0VYUE9SVCB2b2lkIG1vdXNlTW92ZWQoTlNFdmVudCAqKTsK
KyAgICBXRUJDT1JFX0VYUE9SVCBib29sIGtleUV2ZW50KE5TRXZlbnQgKik7CisgICAgV0VCQ09S
RV9FWFBPUlQgYm9vbCB3aGVlbEV2ZW50KE5TRXZlbnQgKik7CiAjZWxzZQotICAgIHZvaWQgbW91
c2VEb3duKFdlYkV2ZW50ICopOwotICAgIHZvaWQgbW91c2VVcChXZWJFdmVudCAqKTsKLSAgICB2
b2lkIG1vdXNlTW92ZWQoV2ViRXZlbnQgKik7Ci0gICAgYm9vbCBrZXlFdmVudChXZWJFdmVudCAq
KTsKLSAgICBib29sIHdoZWVsRXZlbnQoV2ViRXZlbnQgKik7CisgICAgV0VCQ09SRV9FWFBPUlQg
dm9pZCBtb3VzZURvd24oV2ViRXZlbnQgKik7CisgICAgV0VCQ09SRV9FWFBPUlQgdm9pZCBtb3Vz
ZVVwKFdlYkV2ZW50ICopOworICAgIFdFQkNPUkVfRVhQT1JUIHZvaWQgbW91c2VNb3ZlZChXZWJF
dmVudCAqKTsKKyAgICBXRUJDT1JFX0VYUE9SVCBib29sIGtleUV2ZW50KFdlYkV2ZW50ICopOwor
ICAgIFdFQkNPUkVfRVhQT1JUIGJvb2wgd2hlZWxFdmVudChXZWJFdmVudCAqKTsKICNlbmRpZgog
CiAjaWYgRU5BQkxFKElPU19UT1VDSF9FVkVOVFMpCkBAIC0yNzIsMTUgKzI3MiwxNSBAQCBwdWJs
aWM6CiAjZW5kaWYKIAogI2lmICFQTEFURk9STShJT1MpCi0gICAgdm9pZCBwYXNzTW91c2VNb3Zl
ZEV2ZW50VG9TY3JvbGxiYXJzKE5TRXZlbnQgKik7CisgICAgV0VCQ09SRV9FWFBPUlQgdm9pZCBw
YXNzTW91c2VNb3ZlZEV2ZW50VG9TY3JvbGxiYXJzKE5TRXZlbnQgKik7CiAKLSAgICB2b2lkIHNl
bmRGYWtlRXZlbnRzQWZ0ZXJXaWRnZXRUcmFja2luZyhOU0V2ZW50ICppbml0aWF0aW5nRXZlbnQp
OworICAgIFdFQkNPUkVfRVhQT1JUIHZvaWQgc2VuZEZha2VFdmVudHNBZnRlcldpZGdldFRyYWNr
aW5nKE5TRXZlbnQgKmluaXRpYXRpbmdFdmVudCk7CiAjZW5kaWYKIAogI2lmICFQTEFURk9STShJ
T1MpCiAgICAgdm9pZCBzZXRBY3RpdmF0aW9uRXZlbnROdW1iZXIoaW50IG51bSkgeyBtX2FjdGl2
YXRpb25FdmVudE51bWJlciA9IG51bTsgfQogCi0gICAgc3RhdGljIE5TRXZlbnQgKmN1cnJlbnRO
U0V2ZW50KCk7CisgICAgV0VCQ09SRV9FWFBPUlQgc3RhdGljIE5TRXZlbnQgKmN1cnJlbnROU0V2
ZW50KCk7CiAjZWxzZQogICAgIHN0YXRpYyBXZWJFdmVudCAqY3VycmVudEV2ZW50KCk7CiAjZW5k
aWYgLy8gIVBMQVRGT1JNKElPUykKQEAgLTI5MSw3ICsyOTEsNyBAQCBwdWJsaWM6CiAjZW5kaWYK
IAogI2lmIEVOQUJMRShUT1VDSF9FVkVOVFMpCi0gICAgYm9vbCBoYW5kbGVUb3VjaEV2ZW50KGNv
bnN0IFBsYXRmb3JtVG91Y2hFdmVudCYpOworICAgIFdFQkNPUkVfRVhQT1JUIGJvb2wgaGFuZGxl
VG91Y2hFdmVudChjb25zdCBQbGF0Zm9ybVRvdWNoRXZlbnQmKTsKICNlbmRpZgogCiAgICAgYm9v
bCB1c2VIYW5kQ3Vyc29yKE5vZGUqLCBib29sIGlzT3ZlckxpbmssIGJvb2wgc2hpZnRLZXkpOwpA
QCAtMzE1LDE0ICszMTUsMTQgQEAgcHJpdmF0ZToKIAogICAgIGJvb2wgaGFuZGxlTW91c2VEb3Vi
bGVDbGlja0V2ZW50KGNvbnN0IFBsYXRmb3JtTW91c2VFdmVudCYpOwogCi0gICAgYm9vbCBoYW5k
bGVNb3VzZVByZXNzRXZlbnQoY29uc3QgTW91c2VFdmVudFdpdGhIaXRUZXN0UmVzdWx0cyYpOwor
ICAgIFdFQkNPUkVfRVhQT1JUIGJvb2wgaGFuZGxlTW91c2VQcmVzc0V2ZW50KGNvbnN0IE1vdXNl
RXZlbnRXaXRoSGl0VGVzdFJlc3VsdHMmKTsKICAgICBib29sIGhhbmRsZU1vdXNlUHJlc3NFdmVu
dFNpbmdsZUNsaWNrKGNvbnN0IE1vdXNlRXZlbnRXaXRoSGl0VGVzdFJlc3VsdHMmKTsKICAgICBi
b29sIGhhbmRsZU1vdXNlUHJlc3NFdmVudERvdWJsZUNsaWNrKGNvbnN0IE1vdXNlRXZlbnRXaXRo
SGl0VGVzdFJlc3VsdHMmKTsKICAgICBib29sIGhhbmRsZU1vdXNlUHJlc3NFdmVudFRyaXBsZUNs
aWNrKGNvbnN0IE1vdXNlRXZlbnRXaXRoSGl0VGVzdFJlc3VsdHMmKTsKICNpZiBFTkFCTEUoRFJB
R19TVVBQT1JUKQogICAgIGJvb2wgaGFuZGxlTW91c2VEcmFnZ2VkRXZlbnQoY29uc3QgTW91c2VF
dmVudFdpdGhIaXRUZXN0UmVzdWx0cyYpOwogI2VuZGlmCi0gICAgYm9vbCBoYW5kbGVNb3VzZVJl
bGVhc2VFdmVudChjb25zdCBNb3VzZUV2ZW50V2l0aEhpdFRlc3RSZXN1bHRzJik7CisgICAgV0VC
Q09SRV9FWFBPUlQgYm9vbCBoYW5kbGVNb3VzZVJlbGVhc2VFdmVudChjb25zdCBNb3VzZUV2ZW50
V2l0aEhpdFRlc3RSZXN1bHRzJik7CiAKICAgICBPcHRpb25hbEN1cnNvciBzZWxlY3RDdXJzb3Io
Y29uc3QgSGl0VGVzdFJlc3VsdCYsIGJvb2wgc2hpZnRLZXkpOwogCkluZGV4OiBTb3VyY2UvV2Vi
Q29yZS9wYWdlL2FuaW1hdGlvbi9BbmltYXRpb25Db250cm9sbGVyLmgKPT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PQotLS0g
U291cmNlL1dlYkNvcmUvcGFnZS9hbmltYXRpb24vQW5pbWF0aW9uQ29udHJvbGxlci5oCShyZXZp
c2lvbiAxNzI2NTgpCisrKyBTb3VyY2UvV2ViQ29yZS9wYWdlL2FuaW1hdGlvbi9BbmltYXRpb25D
b250cm9sbGVyLmgJKHdvcmtpbmcgY29weSkKQEAgLTU0LDE2ICs1NCwxNiBAQCBwdWJsaWM6CiAg
ICAgLy8gVGhpcyBpcyBjYWxsZWQgd2hlbiBhbiBhY2NlbGVyYXRlZCBhbmltYXRpb24gb3IgdHJh
bnNpdGlvbiBoYXMgYWN0dWFsbHkgc3RhcnRlZCB0byBhbmltYXRlLgogICAgIHZvaWQgbm90aWZ5
QW5pbWF0aW9uU3RhcnRlZChSZW5kZXJFbGVtZW50KiwgZG91YmxlIHN0YXJ0VGltZSk7CiAKLSAg
ICBib29sIHBhdXNlQW5pbWF0aW9uQXRUaW1lKFJlbmRlckVsZW1lbnQqLCBjb25zdCBBdG9taWNT
dHJpbmcmIG5hbWUsIGRvdWJsZSB0KTsgLy8gVG8gYmUgdXNlZCBvbmx5IGZvciB0ZXN0aW5nCi0g
ICAgYm9vbCBwYXVzZVRyYW5zaXRpb25BdFRpbWUoUmVuZGVyRWxlbWVudCosIGNvbnN0IFN0cmlu
ZyYgcHJvcGVydHksIGRvdWJsZSB0KTsgLy8gVG8gYmUgdXNlZCBvbmx5IGZvciB0ZXN0aW5nCi0g
ICAgdW5zaWduZWQgbnVtYmVyT2ZBY3RpdmVBbmltYXRpb25zKERvY3VtZW50KikgY29uc3Q7IC8v
IFRvIGJlIHVzZWQgb25seSBmb3IgdGVzdGluZworICAgIFdFQkNPUkVfRVhQT1JUIGJvb2wgcGF1
c2VBbmltYXRpb25BdFRpbWUoUmVuZGVyRWxlbWVudCosIGNvbnN0IEF0b21pY1N0cmluZyYgbmFt
ZSwgZG91YmxlIHQpOyAvLyBUbyBiZSB1c2VkIG9ubHkgZm9yIHRlc3RpbmcKKyAgICBXRUJDT1JF
X0VYUE9SVCBib29sIHBhdXNlVHJhbnNpdGlvbkF0VGltZShSZW5kZXJFbGVtZW50KiwgY29uc3Qg
U3RyaW5nJiBwcm9wZXJ0eSwgZG91YmxlIHQpOyAvLyBUbyBiZSB1c2VkIG9ubHkgZm9yIHRlc3Rp
bmcKKyAgICBXRUJDT1JFX0VYUE9SVCB1bnNpZ25lZCBudW1iZXJPZkFjdGl2ZUFuaW1hdGlvbnMo
RG9jdW1lbnQqKSBjb25zdDsgLy8gVG8gYmUgdXNlZCBvbmx5IGZvciB0ZXN0aW5nCiAgICAgCiAg
ICAgYm9vbCBpc1J1bm5pbmdBbmltYXRpb25PblJlbmRlcmVyKFJlbmRlckVsZW1lbnQqLCBDU1NQ
cm9wZXJ0eUlELCBBbmltYXRpb25CYXNlOjpSdW5uaW5nU3RhdGUpIGNvbnN0OwogICAgIGJvb2wg
aXNSdW5uaW5nQWNjZWxlcmF0ZWRBbmltYXRpb25PblJlbmRlcmVyKFJlbmRlckVsZW1lbnQqLCBD
U1NQcm9wZXJ0eUlELCBBbmltYXRpb25CYXNlOjpSdW5uaW5nU3RhdGUpIGNvbnN0OwogCi0gICAg
Ym9vbCBpc1N1c3BlbmRlZCgpIGNvbnN0OwotICAgIHZvaWQgc3VzcGVuZEFuaW1hdGlvbnMoKTsK
LSAgICB2b2lkIHJlc3VtZUFuaW1hdGlvbnMoKTsKKyAgICBXRUJDT1JFX0VYUE9SVCBib29sIGlz
U3VzcGVuZGVkKCkgY29uc3Q7CisgICAgV0VCQ09SRV9FWFBPUlQgdm9pZCBzdXNwZW5kQW5pbWF0
aW9ucygpOworICAgIFdFQkNPUkVfRVhQT1JUIHZvaWQgcmVzdW1lQW5pbWF0aW9ucygpOwogI2lm
IEVOQUJMRShSRVFVRVNUX0FOSU1BVElPTl9GUkFNRSkKICAgICB2b2lkIHNlcnZpY2VBbmltYXRp
b25zKCk7CiAjZW5kaWYKQEAgLTc1LDggKzc1LDggQEAgcHVibGljOgogICAgIHZvaWQgYmVnaW5B
bmltYXRpb25VcGRhdGUoKTsKICAgICB2b2lkIGVuZEFuaW1hdGlvblVwZGF0ZSgpOwogCi0gICAg
Ym9vbCBhbGxvd3NOZXdBbmltYXRpb25zV2hpbGVTdXNwZW5kZWQoKSBjb25zdDsKLSAgICB2b2lk
IHNldEFsbG93c05ld0FuaW1hdGlvbnNXaGlsZVN1c3BlbmRlZChib29sKTsKKyAgICBXRUJDT1JF
X0VYUE9SVCBib29sIGFsbG93c05ld0FuaW1hdGlvbnNXaGlsZVN1c3BlbmRlZCgpIGNvbnN0Owor
ICAgIFdFQkNPUkVfRVhQT1JUIHZvaWQgc2V0QWxsb3dzTmV3QW5pbWF0aW9uc1doaWxlU3VzcGVu
ZGVkKGJvb2wpOwogICAgIAogICAgIHN0YXRpYyBib29sIHN1cHBvcnRzQWNjZWxlcmF0ZWRBbmlt
YXRpb25PZlByb3BlcnR5KENTU1Byb3BlcnR5SUQpOwogCkluZGV4OiBTb3VyY2UvV2ViQ29yZS9w
YWdlL3Njcm9sbGluZy9Bc3luY1Njcm9sbGluZ0Nvb3JkaW5hdG9yLmgKPT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PQotLS0g
U291cmNlL1dlYkNvcmUvcGFnZS9zY3JvbGxpbmcvQXN5bmNTY3JvbGxpbmdDb29yZGluYXRvci5o
CShyZXZpc2lvbiAxNzI2NTgpCisrKyBTb3VyY2UvV2ViQ29yZS9wYWdlL3Njcm9sbGluZy9Bc3lu
Y1Njcm9sbGluZ0Nvb3JkaW5hdG9yLmgJKHdvcmtpbmcgY29weSkKQEAgLTQ5LDE2ICs0OSwxNiBA
QCBjbGFzcyBTY3JvbGxpbmdTdGF0ZVRyZWU7CiBjbGFzcyBBc3luY1Njcm9sbGluZ0Nvb3JkaW5h
dG9yIDogcHVibGljIFNjcm9sbGluZ0Nvb3JkaW5hdG9yIHsKIHB1YmxpYzoKICAgICBzdGF0aWMg
UGFzc1JlZlB0cjxBc3luY1Njcm9sbGluZ0Nvb3JkaW5hdG9yPiBjcmVhdGUoUGFnZSopOwotICAg
IHZpcnR1YWwgfkFzeW5jU2Nyb2xsaW5nQ29vcmRpbmF0b3IoKTsKKyAgICBXRUJDT1JFX0VYUE9S
VCB2aXJ0dWFsIH5Bc3luY1Njcm9sbGluZ0Nvb3JkaW5hdG9yKCk7CiAKICAgICBTY3JvbGxpbmdU
cmVlKiBzY3JvbGxpbmdUcmVlKCkgY29uc3QgeyByZXR1cm4gbV9zY3JvbGxpbmdUcmVlLmdldCgp
OyB9CiAKICAgICB2b2lkIHNjcm9sbGluZ1N0YXRlVHJlZVByb3BlcnRpZXNDaGFuZ2VkKCk7CiAK
LSAgICB2b2lkIHNjaGVkdWxlVXBkYXRlU2Nyb2xsUG9zaXRpb25BZnRlckFzeW5jU2Nyb2xsKFNj
cm9sbGluZ05vZGVJRCwgY29uc3QgRmxvYXRQb2ludCYsIGJvb2wgcHJvZ3JhbW1hdGljU2Nyb2xs
LCBTZXRPclN5bmNTY3JvbGxpbmdMYXllclBvc2l0aW9uKTsKKyAgICBXRUJDT1JFX0VYUE9SVCB2
b2lkIHNjaGVkdWxlVXBkYXRlU2Nyb2xsUG9zaXRpb25BZnRlckFzeW5jU2Nyb2xsKFNjcm9sbGlu
Z05vZGVJRCwgY29uc3QgRmxvYXRQb2ludCYsIGJvb2wgcHJvZ3JhbW1hdGljU2Nyb2xsLCBTZXRP
clN5bmNTY3JvbGxpbmdMYXllclBvc2l0aW9uKTsKIAogcHJvdGVjdGVkOgotICAgIEFzeW5jU2Ny
b2xsaW5nQ29vcmRpbmF0b3IoUGFnZSopOworICAgIFdFQkNPUkVfRVhQT1JUIEFzeW5jU2Nyb2xs
aW5nQ29vcmRpbmF0b3IoUGFnZSopOwogCiAgICAgdm9pZCBzZXRTY3JvbGxpbmdUcmVlKFBhc3NS
ZWZQdHI8U2Nyb2xsaW5nVHJlZT4gc2Nyb2xsaW5nVHJlZSkgeyBtX3Njcm9sbGluZ1RyZWUgPSBz
Y3JvbGxpbmdUcmVlOyB9CiAKQEAgLTY4LDcgKzY4LDcgQEAgcHJvdGVjdGVkOgogCiAgICAgdm9p
ZCB1cGRhdGVTY3JvbGxQb3NpdGlvbkFmdGVyQXN5bmNTY3JvbGwoU2Nyb2xsaW5nTm9kZUlELCBj
b25zdCBGbG9hdFBvaW50JiwgYm9vbCBwcm9ncmFtbWF0aWNTY3JvbGwsIFNldE9yU3luY1Njcm9s
bGluZ0xheWVyUG9zaXRpb24pOwogCi0gICAgdmlydHVhbCBTdHJpbmcgc2Nyb2xsaW5nU3RhdGVU
cmVlQXNUZXh0KCkgY29uc3Qgb3ZlcnJpZGU7CisgICAgV0VCQ09SRV9FWFBPUlQgdmlydHVhbCBT
dHJpbmcgc2Nyb2xsaW5nU3RhdGVUcmVlQXNUZXh0KCkgY29uc3Qgb3ZlcnJpZGU7CiAKIHByaXZh
dGU6CiAgICAgdmlydHVhbCBib29sIGlzQXN5bmNTY3JvbGxpbmdDb29yZGluYXRvcigpIGNvbnN0
IG92ZXJyaWRlIHsgcmV0dXJuIHRydWU7IH0KQEAgLTc2LDI5ICs3NiwyOSBAQCBwcml2YXRlOgog
ICAgIHZpcnR1YWwgYm9vbCBzdXBwb3J0c0ZpeGVkUG9zaXRpb25MYXllcnMoKSBjb25zdCBvdmVy
cmlkZSB7IHJldHVybiB0cnVlOyB9CiAgICAgdmlydHVhbCBib29sIGhhc1Zpc2libGVTbG93UmVw
YWludFZpZXdwb3J0Q29uc3RyYWluZWRPYmplY3RzKEZyYW1lVmlldyopIGNvbnN0IG92ZXJyaWRl
IHsgcmV0dXJuIGZhbHNlOyB9CiAKLSAgICB2aXJ0dWFsIHZvaWQgZnJhbWVWaWV3TGF5b3V0VXBk
YXRlZChGcmFtZVZpZXcqKSBvdmVycmlkZTsKLSAgICB2aXJ0dWFsIHZvaWQgZnJhbWVWaWV3Um9v
dExheWVyRGlkQ2hhbmdlKEZyYW1lVmlldyopIG92ZXJyaWRlOwotICAgIHZpcnR1YWwgdm9pZCBm
cmFtZVZpZXdOb25GYXN0U2Nyb2xsYWJsZVJlZ2lvbkNoYW5nZWQoRnJhbWVWaWV3Kikgb3ZlcnJp
ZGU7Ci0KLSAgICB2aXJ0dWFsIGJvb2wgcmVxdWVzdFNjcm9sbFBvc2l0aW9uVXBkYXRlKEZyYW1l
VmlldyosIGNvbnN0IEludFBvaW50Jikgb3ZlcnJpZGU7Ci0KLSAgICB2aXJ0dWFsIFNjcm9sbGlu
Z05vZGVJRCBhdHRhY2hUb1N0YXRlVHJlZShTY3JvbGxpbmdOb2RlVHlwZSwgU2Nyb2xsaW5nTm9k
ZUlEIG5ld05vZGVJRCwgU2Nyb2xsaW5nTm9kZUlEIHBhcmVudElEKSBvdmVycmlkZTsKLSAgICB2
aXJ0dWFsIHZvaWQgZGV0YWNoRnJvbVN0YXRlVHJlZShTY3JvbGxpbmdOb2RlSUQpIG92ZXJyaWRl
OwotICAgIHZpcnR1YWwgdm9pZCBjbGVhclN0YXRlVHJlZSgpIG92ZXJyaWRlOworICAgIFdFQkNP
UkVfRVhQT1JUIHZpcnR1YWwgdm9pZCBmcmFtZVZpZXdMYXlvdXRVcGRhdGVkKEZyYW1lVmlldyop
IG92ZXJyaWRlOworICAgIFdFQkNPUkVfRVhQT1JUIHZpcnR1YWwgdm9pZCBmcmFtZVZpZXdSb290
TGF5ZXJEaWRDaGFuZ2UoRnJhbWVWaWV3Kikgb3ZlcnJpZGU7CisgICAgV0VCQ09SRV9FWFBPUlQg
dmlydHVhbCB2b2lkIGZyYW1lVmlld05vbkZhc3RTY3JvbGxhYmxlUmVnaW9uQ2hhbmdlZChGcmFt
ZVZpZXcqKSBvdmVycmlkZTsKKworICAgIFdFQkNPUkVfRVhQT1JUIHZpcnR1YWwgYm9vbCByZXF1
ZXN0U2Nyb2xsUG9zaXRpb25VcGRhdGUoRnJhbWVWaWV3KiwgY29uc3QgSW50UG9pbnQmKSBvdmVy
cmlkZTsKKworICAgIFdFQkNPUkVfRVhQT1JUIHZpcnR1YWwgU2Nyb2xsaW5nTm9kZUlEIGF0dGFj
aFRvU3RhdGVUcmVlKFNjcm9sbGluZ05vZGVUeXBlLCBTY3JvbGxpbmdOb2RlSUQgbmV3Tm9kZUlE
LCBTY3JvbGxpbmdOb2RlSUQgcGFyZW50SUQpIG92ZXJyaWRlOworICAgIFdFQkNPUkVfRVhQT1JU
IHZpcnR1YWwgdm9pZCBkZXRhY2hGcm9tU3RhdGVUcmVlKFNjcm9sbGluZ05vZGVJRCkgb3ZlcnJp
ZGU7CisgICAgV0VCQ09SRV9FWFBPUlQgdmlydHVhbCB2b2lkIGNsZWFyU3RhdGVUcmVlKCkgb3Zl
cnJpZGU7CiAgICAgCi0gICAgdmlydHVhbCB2b2lkIHVwZGF0ZVZpZXdwb3J0Q29uc3RyYWluZWRO
b2RlKFNjcm9sbGluZ05vZGVJRCwgY29uc3QgVmlld3BvcnRDb25zdHJhaW50cyYsIEdyYXBoaWNz
TGF5ZXIqKSBvdmVycmlkZTsKKyAgICBXRUJDT1JFX0VYUE9SVCB2aXJ0dWFsIHZvaWQgdXBkYXRl
Vmlld3BvcnRDb25zdHJhaW5lZE5vZGUoU2Nyb2xsaW5nTm9kZUlELCBjb25zdCBWaWV3cG9ydENv
bnN0cmFpbnRzJiwgR3JhcGhpY3NMYXllciopIG92ZXJyaWRlOwogICAgIAotICAgIHZpcnR1YWwg
dm9pZCB1cGRhdGVGcmFtZVNjcm9sbGluZ05vZGUoU2Nyb2xsaW5nTm9kZUlELCBHcmFwaGljc0xh
eWVyKiBzY3JvbGxMYXllciwgR3JhcGhpY3NMYXllciogc2Nyb2xsZWRDb250ZW50c0xheWVyLCBH
cmFwaGljc0xheWVyKiBjb3VudGVyU2Nyb2xsaW5nTGF5ZXIsIEdyYXBoaWNzTGF5ZXIqIGluc2V0
Q2xpcExheWVyLCBjb25zdCBTY3JvbGxpbmdHZW9tZXRyeSogPSBudWxscHRyKTsKLSAgICB2aXJ0
dWFsIHZvaWQgdXBkYXRlT3ZlcmZsb3dTY3JvbGxpbmdOb2RlKFNjcm9sbGluZ05vZGVJRCwgR3Jh
cGhpY3NMYXllciogc2Nyb2xsTGF5ZXIsIEdyYXBoaWNzTGF5ZXIqIHNjcm9sbGVkQ29udGVudHNM
YXllciwgY29uc3QgU2Nyb2xsaW5nR2VvbWV0cnkqID0gbnVsbHB0cik7CisgICAgV0VCQ09SRV9F
WFBPUlQgdmlydHVhbCB2b2lkIHVwZGF0ZUZyYW1lU2Nyb2xsaW5nTm9kZShTY3JvbGxpbmdOb2Rl
SUQsIEdyYXBoaWNzTGF5ZXIqIHNjcm9sbExheWVyLCBHcmFwaGljc0xheWVyKiBzY3JvbGxlZENv
bnRlbnRzTGF5ZXIsIEdyYXBoaWNzTGF5ZXIqIGNvdW50ZXJTY3JvbGxpbmdMYXllciwgR3JhcGhp
Y3NMYXllciogaW5zZXRDbGlwTGF5ZXIsIGNvbnN0IFNjcm9sbGluZ0dlb21ldHJ5KiA9IG51bGxw
dHIpOworICAgIFdFQkNPUkVfRVhQT1JUIHZpcnR1YWwgdm9pZCB1cGRhdGVPdmVyZmxvd1Njcm9s
bGluZ05vZGUoU2Nyb2xsaW5nTm9kZUlELCBHcmFwaGljc0xheWVyKiBzY3JvbGxMYXllciwgR3Jh
cGhpY3NMYXllciogc2Nyb2xsZWRDb250ZW50c0xheWVyLCBjb25zdCBTY3JvbGxpbmdHZW9tZXRy
eSogPSBudWxscHRyKTsKICAgICAKICAgICB2aXJ0dWFsIGJvb2wgaXNSdWJiZXJCYW5kSW5Qcm9n
cmVzcygpIGNvbnN0IG92ZXJyaWRlOwogICAgIHZpcnR1YWwgdm9pZCBzZXRTY3JvbGxQaW5uaW5n
QmVoYXZpb3IoU2Nyb2xsUGlubmluZ0JlaGF2aW9yKSBvdmVycmlkZTsKIAotICAgIHZpcnR1YWwg
dm9pZCBzeW5jQ2hpbGRQb3NpdGlvbnMoY29uc3QgTGF5b3V0UmVjdCYgdmlld3BvcnRSZWN0KSBv
dmVycmlkZTsKLSAgICB2aXJ0dWFsIHZvaWQgc2Nyb2xsYWJsZUFyZWFTY3JvbGxiYXJMYXllckRp
ZENoYW5nZShTY3JvbGxhYmxlQXJlYSosIFNjcm9sbGJhck9yaWVudGF0aW9uKSBvdmVycmlkZTsK
KyAgICBXRUJDT1JFX0VYUE9SVCB2aXJ0dWFsIHZvaWQgc3luY0NoaWxkUG9zaXRpb25zKGNvbnN0
IExheW91dFJlY3QmIHZpZXdwb3J0UmVjdCkgb3ZlcnJpZGU7CisgICAgV0VCQ09SRV9FWFBPUlQg
dmlydHVhbCB2b2lkIHNjcm9sbGFibGVBcmVhU2Nyb2xsYmFyTGF5ZXJEaWRDaGFuZ2UoU2Nyb2xs
YWJsZUFyZWEqLCBTY3JvbGxiYXJPcmllbnRhdGlvbikgb3ZlcnJpZGU7CiAKLSAgICB2aXJ0dWFs
IHZvaWQgcmVjb21wdXRlV2hlZWxFdmVudEhhbmRsZXJDb3VudEZvckZyYW1lVmlldyhGcmFtZVZp
ZXcqKSBvdmVycmlkZTsKLSAgICB2aXJ0dWFsIHZvaWQgc2V0U3luY2hyb25vdXNTY3JvbGxpbmdS
ZWFzb25zKFN5bmNocm9ub3VzU2Nyb2xsaW5nUmVhc29ucykgb3ZlcnJpZGU7CisgICAgV0VCQ09S
RV9FWFBPUlQgdmlydHVhbCB2b2lkIHJlY29tcHV0ZVdoZWVsRXZlbnRIYW5kbGVyQ291bnRGb3JG
cmFtZVZpZXcoRnJhbWVWaWV3Kikgb3ZlcnJpZGU7CisgICAgV0VCQ09SRV9FWFBPUlQgdmlydHVh
bCB2b2lkIHNldFN5bmNocm9ub3VzU2Nyb2xsaW5nUmVhc29ucyhTeW5jaHJvbm91c1Njcm9sbGlu
Z1JlYXNvbnMpIG92ZXJyaWRlOwogCiAgICAgdmlydHVhbCB2b2lkIHNjaGVkdWxlVHJlZVN0YXRl
Q29tbWl0KCkgPSAwOwogCkluZGV4OiBTb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9DYWxjdWxhdGlv
blZhbHVlLmgKPT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PQotLS0gU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vQ2FsY3VsYXRp
b25WYWx1ZS5oCShyZXZpc2lvbiAxNzI2NTgpCisrKyBTb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9D
YWxjdWxhdGlvblZhbHVlLmgJKHdvcmtpbmcgY29weSkKQEAgLTEzNiw3ICsxMzYsNyBAQCBwcml2
YXRlOgogCiBjbGFzcyBDYWxjdWxhdGlvblZhbHVlIDogcHVibGljIFJlZkNvdW50ZWQ8Q2FsY3Vs
YXRpb25WYWx1ZT4gewogcHVibGljOgotICAgIHN0YXRpYyBQYXNzUmVmPENhbGN1bGF0aW9uVmFs
dWU+IGNyZWF0ZShzdGQ6OnVuaXF1ZV9wdHI8Q2FsY0V4cHJlc3Npb25Ob2RlPiwgQ2FsY3VsYXRp
b25QZXJtaXR0ZWRWYWx1ZVJhbmdlKTsKKyAgICBXRUJDT1JFX0VYUE9SVCBzdGF0aWMgUGFzc1Jl
ZjxDYWxjdWxhdGlvblZhbHVlPiBjcmVhdGUoc3RkOjp1bmlxdWVfcHRyPENhbGNFeHByZXNzaW9u
Tm9kZT4sIENhbGN1bGF0aW9uUGVybWl0dGVkVmFsdWVSYW5nZSk7CiAgICAgZmxvYXQgZXZhbHVh
dGUoZmxvYXQgbWF4VmFsdWUpIGNvbnN0OwogCiAgICAgYm9vbCBzaG91bGRDbGFtcFRvTm9uTmVn
YXRpdmUoKSBjb25zdCB7IHJldHVybiBtX3Nob3VsZENsYW1wVG9Ob25OZWdhdGl2ZTsgfQpJbmRl
eDogU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vQ29udGVudEZpbHRlci5oCj09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT0KLS0t
IFNvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL0NvbnRlbnRGaWx0ZXIuaAkocmV2aXNpb24gMTcyNjU4
KQorKysgU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vQ29udGVudEZpbHRlci5oCSh3b3JraW5nIGNv
cHkpCkBAIC02MCw3ICs2MCw3IEBAIHB1YmxpYzoKICAgICBzdGF0aWMgYm9vbCBjYW5IYW5kbGVS
ZXNwb25zZShjb25zdCBSZXNvdXJjZVJlc3BvbnNlJik7CiAKICAgICBleHBsaWNpdCBDb250ZW50
RmlsdGVyKGNvbnN0IFJlc291cmNlUmVzcG9uc2UmKTsKLSAgICB+Q29udGVudEZpbHRlcigpOwor
ICAgIFdFQkNPUkVfRVhQT1JUIH5Db250ZW50RmlsdGVyKCk7CiAKICAgICB2b2lkIGFkZERhdGEo
Y29uc3QgY2hhciogZGF0YSwgaW50IGxlbmd0aCk7CiAgICAgdm9pZCBmaW5pc2hlZEFkZGluZ0Rh
dGEoKTsKQEAgLTY5LDEzICs2OSwxMyBAQCBwdWJsaWM6CiAgICAgY29uc3QgY2hhciogZ2V0UmVw
bGFjZW1lbnREYXRhKGludCYgbGVuZ3RoKSBjb25zdDsKIAogI2lmIFBMQVRGT1JNKENPQ09BKQot
ICAgIENvbnRlbnRGaWx0ZXIoKTsKLSAgICB2b2lkIGVuY29kZShOU0tleWVkQXJjaGl2ZXIgKikg
Y29uc3Q7Ci0gICAgc3RhdGljIGJvb2wgZGVjb2RlKE5TS2V5ZWRVbmFyY2hpdmVyICosIENvbnRl
bnRGaWx0ZXImKTsKKyAgICBXRUJDT1JFX0VYUE9SVCBDb250ZW50RmlsdGVyKCk7CisgICAgV0VC
Q09SRV9FWFBPUlQgdm9pZCBlbmNvZGUoTlNLZXllZEFyY2hpdmVyICopIGNvbnN0OworICAgIFdF
QkNPUkVfRVhQT1JUIHN0YXRpYyBib29sIGRlY29kZShOU0tleWVkVW5hcmNoaXZlciAqLCBDb250
ZW50RmlsdGVyJik7CiAjZW5kaWYKIAogI2lmIFBMQVRGT1JNKElPUykKLSAgICBib29sIGhhbmRs
ZVVuYmxvY2tSZXF1ZXN0QW5kRGlzcGF0Y2hJZlN1Y2Nlc3NmdWwoY29uc3QgUmVzb3VyY2VSZXF1
ZXN0Jiwgc3RkOjpmdW5jdGlvbjx2b2lkKCk+KTsKKyAgICBXRUJDT1JFX0VYUE9SVCBib29sIGhh
bmRsZVVuYmxvY2tSZXF1ZXN0QW5kRGlzcGF0Y2hJZlN1Y2Nlc3NmdWwoY29uc3QgUmVzb3VyY2VS
ZXF1ZXN0Jiwgc3RkOjpmdW5jdGlvbjx2b2lkKCk+KTsKICNlbmRpZgogCiBwcml2YXRlOgpJbmRl
eDogU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vQ29udGV4dE1lbnUuaAo9PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09Ci0tLSBT
b3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9Db250ZXh0TWVudS5oCShyZXZpc2lvbiAxNzI2NTgpCisr
KyBTb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9Db250ZXh0TWVudS5oCSh3b3JraW5nIGNvcHkpCkBA
IC03Nyw4ICs3Nyw4IEBAIG5hbWVzcGFjZSBXZWJDb3JlIHsKIAogICAgICAgICB1bnNpZ25lZCBp
dGVtQ291bnQoKSBjb25zdDsKIAotICAgICAgICBQbGF0Zm9ybU1lbnVEZXNjcmlwdGlvbiBwbGF0
Zm9ybURlc2NyaXB0aW9uKCkgY29uc3Q7Ci0gICAgICAgIHZvaWQgc2V0UGxhdGZvcm1EZXNjcmlw
dGlvbihQbGF0Zm9ybU1lbnVEZXNjcmlwdGlvbik7CisgICAgICAgIFdFQkNPUkVfRVhQT1JUIFBs
YXRmb3JtTWVudURlc2NyaXB0aW9uIHBsYXRmb3JtRGVzY3JpcHRpb24oKSBjb25zdDsKKyAgICAg
ICAgV0VCQ09SRV9FWFBPUlQgdm9pZCBzZXRQbGF0Zm9ybURlc2NyaXB0aW9uKFBsYXRmb3JtTWVu
dURlc2NyaXB0aW9uKTsKIAogICAgICAgICBQbGF0Zm9ybU1lbnVEZXNjcmlwdGlvbiByZWxlYXNl
UGxhdGZvcm1EZXNjcmlwdGlvbigpOwogI2VuZGlmIC8vIFVTRShDUk9TU19QTEFURk9STV9DT05U
RVhUX01FTlVTKQpAQCAtMTAxLDcgKzEwMSw3IEBAIG5hbWVzcGFjZSBXZWJDb3JlIHsKICAgICB9
OwogCiAjaWYgIVVTRShDUk9TU19QTEFURk9STV9DT05URVhUX01FTlVTKQotVmVjdG9yPENvbnRl
eHRNZW51SXRlbT4gY29udGV4dE1lbnVJdGVtVmVjdG9yKFBsYXRmb3JtTWVudURlc2NyaXB0aW9u
KTsKK1dFQkNPUkVfRVhQT1JUIFZlY3RvcjxDb250ZXh0TWVudUl0ZW0+IGNvbnRleHRNZW51SXRl
bVZlY3RvcihQbGF0Zm9ybU1lbnVEZXNjcmlwdGlvbik7CiBQbGF0Zm9ybU1lbnVEZXNjcmlwdGlv
biBwbGF0Zm9ybU1lbnVEZXNjcmlwdGlvbihWZWN0b3I8Q29udGV4dE1lbnVJdGVtPiYpOwogI2Vu
ZGlmCiAKSW5kZXg6IFNvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL0NvbnRleHRNZW51SXRlbS5oCj09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT0KLS0tIFNvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL0NvbnRleHRNZW51SXRlbS5oCShy
ZXZpc2lvbiAxNzI2NTgpCisrKyBTb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9Db250ZXh0TWVudUl0
ZW0uaAkod29ya2luZyBjb3B5KQpAQCAtMTg4LDIyICsxODgsMjIgQEAgbmFtZXNwYWNlIFdlYkNv
cmUgewogICAgIGNsYXNzIENvbnRleHRNZW51SXRlbSB7CiAgICAgICAgIFdURl9NQUtFX0ZBU1Rf
QUxMT0NBVEVEOwogICAgIHB1YmxpYzoKLSAgICAgICAgQ29udGV4dE1lbnVJdGVtKENvbnRleHRN
ZW51SXRlbVR5cGUsIENvbnRleHRNZW51QWN0aW9uLCBjb25zdCBTdHJpbmcmLCBDb250ZXh0TWVu
dSogc3ViTWVudSA9IDApOwotICAgICAgICBDb250ZXh0TWVudUl0ZW0oQ29udGV4dE1lbnVJdGVt
VHlwZSwgQ29udGV4dE1lbnVBY3Rpb24sIGNvbnN0IFN0cmluZyYsIGJvb2wgZW5hYmxlZCwgYm9v
bCBjaGVja2VkKTsKKyAgICAgICAgV0VCQ09SRV9FWFBPUlQgQ29udGV4dE1lbnVJdGVtKENvbnRl
eHRNZW51SXRlbVR5cGUsIENvbnRleHRNZW51QWN0aW9uLCBjb25zdCBTdHJpbmcmLCBDb250ZXh0
TWVudSogc3ViTWVudSA9IDApOworICAgICAgICBXRUJDT1JFX0VYUE9SVCBDb250ZXh0TWVudUl0
ZW0oQ29udGV4dE1lbnVJdGVtVHlwZSwgQ29udGV4dE1lbnVBY3Rpb24sIGNvbnN0IFN0cmluZyYs
IGJvb2wgZW5hYmxlZCwgYm9vbCBjaGVja2VkKTsKIAotICAgICAgICB+Q29udGV4dE1lbnVJdGVt
KCk7CisgICAgICAgIFdFQkNPUkVfRVhQT1JUIH5Db250ZXh0TWVudUl0ZW0oKTsKIAogICAgICAg
ICB2b2lkIHNldFR5cGUoQ29udGV4dE1lbnVJdGVtVHlwZSk7Ci0gICAgICAgIENvbnRleHRNZW51
SXRlbVR5cGUgdHlwZSgpIGNvbnN0OworICAgICAgICBXRUJDT1JFX0VYUE9SVCBDb250ZXh0TWVu
dUl0ZW1UeXBlIHR5cGUoKSBjb25zdDsKIAogICAgICAgICB2b2lkIHNldEFjdGlvbihDb250ZXh0
TWVudUFjdGlvbik7Ci0gICAgICAgIENvbnRleHRNZW51QWN0aW9uIGFjdGlvbigpIGNvbnN0Owor
ICAgICAgICBXRUJDT1JFX0VYUE9SVCBDb250ZXh0TWVudUFjdGlvbiBhY3Rpb24oKSBjb25zdDsK
IAogICAgICAgICB2b2lkIHNldENoZWNrZWQoYm9vbCA9IHRydWUpOwotICAgICAgICBib29sIGNo
ZWNrZWQoKSBjb25zdDsKKyAgICAgICAgV0VCQ09SRV9FWFBPUlQgYm9vbCBjaGVja2VkKCkgY29u
c3Q7CiAKICAgICAgICAgdm9pZCBzZXRFbmFibGVkKGJvb2wgPSB0cnVlKTsKLSAgICAgICAgYm9v
bCBlbmFibGVkKCkgY29uc3Q7CisgICAgICAgIFdFQkNPUkVfRVhQT1JUIGJvb2wgZW5hYmxlZCgp
IGNvbnN0OwogCiAgICAgICAgIHZvaWQgc2V0U3ViTWVudShDb250ZXh0TWVudSopOwogCkBAIC0y
MjUsMTYgKzIyNSwxNiBAQCBuYW1lc3BhY2UgV2ViQ29yZSB7CiAgICAgICAgIGNvbnN0IFZlY3Rv
cjxDb250ZXh0TWVudUl0ZW0+JiBzdWJNZW51SXRlbXMoKSBjb25zdCB7IHJldHVybiBtX3N1Yk1l
bnVJdGVtczsgfQogI2Vsc2UKICAgICBwdWJsaWM6Ci0gICAgICAgIGV4cGxpY2l0IENvbnRleHRN
ZW51SXRlbShQbGF0Zm9ybU1lbnVJdGVtRGVzY3JpcHRpb24pOworICAgICAgICBXRUJDT1JFX0VY
UE9SVCBleHBsaWNpdCBDb250ZXh0TWVudUl0ZW0oUGxhdGZvcm1NZW51SXRlbURlc2NyaXB0aW9u
KTsKICAgICAgICAgZXhwbGljaXQgQ29udGV4dE1lbnVJdGVtKENvbnRleHRNZW51KiBzdWJNZW51
ID0gMCk7CiAgICAgICAgIENvbnRleHRNZW51SXRlbShDb250ZXh0TWVudUFjdGlvbiwgY29uc3Qg
U3RyaW5nJiwgYm9vbCBlbmFibGVkLCBib29sIGNoZWNrZWQsIFZlY3RvcjxDb250ZXh0TWVudUl0
ZW0+JiBzdWJtZW51SXRlbXMpOwogCi0gICAgICAgIFBsYXRmb3JtTWVudUl0ZW1EZXNjcmlwdGlv
biByZWxlYXNlUGxhdGZvcm1EZXNjcmlwdGlvbigpOworICAgICAgICBXRUJDT1JFX0VYUE9SVCBQ
bGF0Zm9ybU1lbnVJdGVtRGVzY3JpcHRpb24gcmVsZWFzZVBsYXRmb3JtRGVzY3JpcHRpb24oKTsK
IAotICAgICAgICBTdHJpbmcgdGl0bGUoKSBjb25zdDsKKyAgICAgICAgV0VCQ09SRV9FWFBPUlQg
U3RyaW5nIHRpdGxlKCkgY29uc3Q7CiAgICAgICAgIHZvaWQgc2V0VGl0bGUoY29uc3QgU3RyaW5n
Jik7CiAKLSAgICAgICAgUGxhdGZvcm1NZW51RGVzY3JpcHRpb24gcGxhdGZvcm1TdWJNZW51KCkg
Y29uc3Q7CisgICAgICAgIFdFQkNPUkVfRVhQT1JUIFBsYXRmb3JtTWVudURlc2NyaXB0aW9uIHBs
YXRmb3JtU3ViTWVudSgpIGNvbnN0OwogICAgICAgICB2b2lkIHNldFN1Yk1lbnUoVmVjdG9yPENv
bnRleHRNZW51SXRlbT4mKTsKIAogI2VuZGlmIC8vIFVTRShDUk9TU19QTEFURk9STV9DT05URVhU
X01FTlVTKQpJbmRleDogU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vQ3Jvc3NUaHJlYWRDb3BpZXIu
aAo9PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09Ci0tLSBTb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9Dcm9zc1RocmVhZENvcGll
ci5oCShyZXZpc2lvbiAxNzI2NTgpCisrKyBTb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9Dcm9zc1Ro
cmVhZENvcGllci5oCSh3b3JraW5nIGNvcHkpCkBAIC0xMDcsNyArMTA3LDcgQEAgbmFtZXNwYWNl
IFdlYkNvcmUgewogICAgICAgICBzdGF0aWNfYXNzZXJ0KHN0ZDo6aXNfY29udmVydGlibGU8UmVm
Q291bnRlZFR5cGUqLCBUaHJlYWRTYWZlUmVmQ291bnRlZDxSZWZDb3VudGVkVHlwZT4qPjo6dmFs
dWUsICJUIGlzIG5vdCBjb252ZXJ0aWJsZSB0byBUaHJlYWRTYWZlUmVmQ291bnRlZCEiKTsKIAog
ICAgICAgICB0eXBlZGVmIFBhc3NSZWZQdHI8UmVmQ291bnRlZFR5cGU+IFR5cGU7Ci0gICAgICAg
IHN0YXRpYyBUeXBlIGNvcHkoY29uc3QgVCYgcmVmUHRyKQorICAgICAgICBXRUJDT1JFX0VYUE9S
VCBzdGF0aWMgVHlwZSBjb3B5KGNvbnN0IFQmIHJlZlB0cikKICAgICAgICAgewogICAgICAgICAg
ICAgcmV0dXJuIHJlZlB0cjsKICAgICAgICAgfQpJbmRleDogU291cmNlL1dlYkNvcmUvcGxhdGZv
cm0vQ3Vyc29yLmgKPT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PQotLS0gU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vQ3Vyc29y
LmgJKHJldmlzaW9uIDE3MjY1OCkKKysrIFNvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL0N1cnNvci5o
CSh3b3JraW5nIGNvcHkpCkBAIC0xMjYsNyArMTI2LDcgQEAgbmFtZXNwYWNlIFdlYkNvcmUgewog
ICAgICAgICAgICAgQ3VzdG9tCiAgICAgICAgIH07CiAKLSAgICAgICAgc3RhdGljIGNvbnN0IEN1
cnNvciYgZnJvbVR5cGUoQ3Vyc29yOjpUeXBlKTsKKyAgICAgICAgV0VCQ09SRV9FWFBPUlQgc3Rh
dGljIGNvbnN0IEN1cnNvciYgZnJvbVR5cGUoQ3Vyc29yOjpUeXBlKTsKIAogICAgICAgICBDdXJz
b3IoKQogI2lmICFQTEFURk9STShJT1MpCkBAIC0xMzgsMTYgKzEzOCwxNiBAQCBuYW1lc3BhY2Ug
V2ViQ29yZSB7CiAgICAgICAgIH0KIAogI2lmICFQTEFURk9STShJT1MpCi0gICAgICAgIEN1cnNv
cihJbWFnZSosIGNvbnN0IEludFBvaW50JiBob3RTcG90KTsKLSAgICAgICAgQ3Vyc29yKGNvbnN0
IEN1cnNvciYpOworICAgICAgICBXRUJDT1JFX0VYUE9SVCBDdXJzb3IoSW1hZ2UqLCBjb25zdCBJ
bnRQb2ludCYgaG90U3BvdCk7CisgICAgICAgIFdFQkNPUkVfRVhQT1JUIEN1cnNvcihjb25zdCBD
dXJzb3ImKTsKIAogI2lmIEVOQUJMRShNT1VTRV9DVVJTT1JfU0NBTEUpCiAgICAgICAgIC8vIEhv
dCBzcG90IGlzIGluIGltYWdlIHBpeGVscy4KICAgICAgICAgQ3Vyc29yKEltYWdlKiwgY29uc3Qg
SW50UG9pbnQmIGhvdFNwb3QsIGZsb2F0IGltYWdlU2NhbGVGYWN0b3IpOwogI2VuZGlmCiAKLSAg
ICAgICAgfkN1cnNvcigpOwotICAgICAgICBDdXJzb3ImIG9wZXJhdG9yPShjb25zdCBDdXJzb3Im
KTsKKyAgICAgICAgV0VCQ09SRV9FWFBPUlQgfkN1cnNvcigpOworICAgICAgICBXRUJDT1JFX0VY
UE9SVCBDdXJzb3ImIG9wZXJhdG9yPShjb25zdCBDdXJzb3ImKTsKIAogICAgICAgICBleHBsaWNp
dCBDdXJzb3IoVHlwZSk7CiAgICAgICAgIFR5cGUgdHlwZSgpIGNvbnN0CkBAIC0xNjEsNyArMTYx
LDcgQEAgbmFtZXNwYWNlIFdlYkNvcmUgewogICAgICAgICAvLyBJbWFnZSBzY2FsZSBpbiBpbWFn
ZSBwaXhlbHMgcGVyIGxvZ2ljYWwgKFVJKSBwaXhlbC4KICAgICAgICAgZmxvYXQgaW1hZ2VTY2Fs
ZUZhY3RvcigpIGNvbnN0IHsgcmV0dXJuIG1faW1hZ2VTY2FsZUZhY3RvcjsgfQogI2VuZGlmCi0g
ICAgICAgIFBsYXRmb3JtQ3Vyc29yIHBsYXRmb3JtQ3Vyc29yKCkgY29uc3Q7CisgICAgICAgIFdF
QkNPUkVfRVhQT1JUIFBsYXRmb3JtQ3Vyc29yIHBsYXRmb3JtQ3Vyc29yKCkgY29uc3Q7CiAKICAg
ICAgcHJpdmF0ZToKICAgICAgICAgdm9pZCBlbnN1cmVQbGF0Zm9ybUN1cnNvcigpIGNvbnN0OwpJ
bmRleDogU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vRGF0YWJhc2VTdHJhdGVneS5oCj09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT0KLS0tIFNvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL0RhdGFiYXNlU3RyYXRlZ3kuaAkocmV2aXNp
b24gMTcyNjU4KQorKysgU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vRGF0YWJhc2VTdHJhdGVneS5o
CSh3b3JraW5nIGNvcHkpCkBAIC0zNywxMSArMzcsMTEgQEAgY2xhc3MgSURCRmFjdG9yeUJhY2tl
bmRJbnRlcmZhY2U7CiBjbGFzcyBEYXRhYmFzZVN0cmF0ZWd5IHsKIHB1YmxpYzoKICNpZiBFTkFC
TEUoU1FMX0RBVEFCQVNFKQotICAgIHZpcnR1YWwgQWJzdHJhY3REYXRhYmFzZVNlcnZlciogZ2V0
RGF0YWJhc2VTZXJ2ZXIoKTsKKyAgICBXRUJDT1JFX0VYUE9SVCB2aXJ0dWFsIEFic3RyYWN0RGF0
YWJhc2VTZXJ2ZXIqIGdldERhdGFiYXNlU2VydmVyKCk7CiAjZW5kaWYKIAogI2lmIEVOQUJMRShJ
TkRFWEVEX0RBVEFCQVNFKQotICAgIHZpcnR1YWwgUGFzc1JlZlB0cjxJREJGYWN0b3J5QmFja2Vu
ZEludGVyZmFjZT4gY3JlYXRlSURCRmFjdG9yeUJhY2tlbmQoY29uc3QgU3RyaW5nJiBkYXRhYmFz
ZURpcmVjdG9yeUlkZW50aWZpZXIpOworICAgIFdFQkNPUkVfRVhQT1JUIHZpcnR1YWwgUGFzc1Jl
ZlB0cjxJREJGYWN0b3J5QmFja2VuZEludGVyZmFjZT4gY3JlYXRlSURCRmFjdG9yeUJhY2tlbmQo
Y29uc3QgU3RyaW5nJiBkYXRhYmFzZURpcmVjdG9yeUlkZW50aWZpZXIpOwogI2VuZGlmCiAKIHBy
b3RlY3RlZDoKSW5kZXg6IFNvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL0Rpc3BsYXlTbGVlcERpc2Fi
bGVyLmgKPT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PQotLS0gU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vRGlzcGxheVNsZWVw
RGlzYWJsZXIuaAkocmV2aXNpb24gMTcyNjU4KQorKysgU291cmNlL1dlYkNvcmUvcGxhdGZvcm0v
RGlzcGxheVNsZWVwRGlzYWJsZXIuaAkod29ya2luZyBjb3B5KQpAQCAtMzEsMTAgKzMxLDEwIEBA
IG5hbWVzcGFjZSBXZWJDb3JlIHsKIGNsYXNzIERpc3BsYXlTbGVlcERpc2FibGVyIHsKIHB1Ymxp
YzoKICAgICBzdGF0aWMgc3RkOjp1bmlxdWVfcHRyPERpc3BsYXlTbGVlcERpc2FibGVyPiBjcmVh
dGUoY29uc3QgY2hhciopOwotICAgIHZpcnR1YWwgfkRpc3BsYXlTbGVlcERpc2FibGVyKCk7Cisg
ICAgV0VCQ09SRV9FWFBPUlQgdmlydHVhbCB+RGlzcGxheVNsZWVwRGlzYWJsZXIoKTsKIAogcHJv
dGVjdGVkOgotICAgIERpc3BsYXlTbGVlcERpc2FibGVyKGNvbnN0IGNoYXIqKTsKKyAgICBXRUJD
T1JFX0VYUE9SVCBEaXNwbGF5U2xlZXBEaXNhYmxlcihjb25zdCBjaGFyKik7CiB9OwogCiB9Cklu
ZGV4OiBTb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9EcmFnRGF0YS5oCj09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT0KLS0tIFNv
dXJjZS9XZWJDb3JlL3BsYXRmb3JtL0RyYWdEYXRhLmgJKHJldmlzaW9uIDE3MjY1OCkKKysrIFNv
dXJjZS9XZWJDb3JlL3BsYXRmb3JtL0RyYWdEYXRhLmgJKHdvcmtpbmcgY29weSkKQEAgLTgyLDEw
ICs4MiwxMCBAQCBwdWJsaWM6CiAgICAgZW51bSBGaWxlbmFtZUNvbnZlcnNpb25Qb2xpY3kgeyBE
b05vdENvbnZlcnRGaWxlbmFtZXMsIENvbnZlcnRGaWxlbmFtZXMgfTsKIAogICAgIC8vIGNsaWVu
dFBvc2l0aW9uIGlzIHRha2VuIHRvIGJlIHRoZSBwb3NpdGlvbiBvZiB0aGUgZHJhZyBldmVudCB3
aXRoaW4gdGhlIHRhcmdldCB3aW5kb3csIHdpdGggKDAsMCkgYXQgdGhlIHRvcCBsZWZ0Ci0gICAg
RHJhZ0RhdGEoRHJhZ0RhdGFSZWYsIGNvbnN0IEludFBvaW50JiBjbGllbnRQb3NpdGlvbiwgY29u
c3QgSW50UG9pbnQmIGdsb2JhbFBvc2l0aW9uLCBEcmFnT3BlcmF0aW9uLCBEcmFnQXBwbGljYXRp
b25GbGFncyA9IERyYWdBcHBsaWNhdGlvbk5vbmUpOwotICAgIERyYWdEYXRhKGNvbnN0IFN0cmlu
ZyYgZHJhZ1N0b3JhZ2VOYW1lLCBjb25zdCBJbnRQb2ludCYgY2xpZW50UG9zaXRpb24sIGNvbnN0
IEludFBvaW50JiBnbG9iYWxQb3NpdGlvbiwgRHJhZ09wZXJhdGlvbiwgRHJhZ0FwcGxpY2F0aW9u
RmxhZ3MgPSBEcmFnQXBwbGljYXRpb25Ob25lKTsKKyAgICBXRUJDT1JFX0VYUE9SVCBEcmFnRGF0
YShEcmFnRGF0YVJlZiwgY29uc3QgSW50UG9pbnQmIGNsaWVudFBvc2l0aW9uLCBjb25zdCBJbnRQ
b2ludCYgZ2xvYmFsUG9zaXRpb24sIERyYWdPcGVyYXRpb24sIERyYWdBcHBsaWNhdGlvbkZsYWdz
ID0gRHJhZ0FwcGxpY2F0aW9uTm9uZSk7CisgICAgV0VCQ09SRV9FWFBPUlQgRHJhZ0RhdGEoY29u
c3QgU3RyaW5nJiBkcmFnU3RvcmFnZU5hbWUsIGNvbnN0IEludFBvaW50JiBjbGllbnRQb3NpdGlv
biwgY29uc3QgSW50UG9pbnQmIGdsb2JhbFBvc2l0aW9uLCBEcmFnT3BlcmF0aW9uLCBEcmFnQXBw
bGljYXRpb25GbGFncyA9IERyYWdBcHBsaWNhdGlvbk5vbmUpOwogI2lmIFBMQVRGT1JNKFdJTikK
LSAgICBEcmFnRGF0YShjb25zdCBEcmFnRGF0YU1hcCYsIGNvbnN0IEludFBvaW50JiBjbGllbnRQ
b3NpdGlvbiwgY29uc3QgSW50UG9pbnQmIGdsb2JhbFBvc2l0aW9uLCBEcmFnT3BlcmF0aW9uIHNv
dXJjZU9wZXJhdGlvbk1hc2ssIERyYWdBcHBsaWNhdGlvbkZsYWdzID0gRHJhZ0FwcGxpY2F0aW9u
Tm9uZSk7CisgICAgV0VCQ09SRV9FWFBPUlQgRHJhZ0RhdGEoY29uc3QgRHJhZ0RhdGFNYXAmLCBj
b25zdCBJbnRQb2ludCYgY2xpZW50UG9zaXRpb24sIGNvbnN0IEludFBvaW50JiBnbG9iYWxQb3Np
dGlvbiwgRHJhZ09wZXJhdGlvbiBzb3VyY2VPcGVyYXRpb25NYXNrLCBEcmFnQXBwbGljYXRpb25G
bGFncyA9IERyYWdBcHBsaWNhdGlvbk5vbmUpOwogICAgIGNvbnN0IERyYWdEYXRhTWFwJiBkcmFn
RGF0YU1hcCgpOwogICAgIHZvaWQgZ2V0RHJhZ0ZpbGVEZXNjcmlwdG9yRGF0YShpbnQmIHNpemUs
IFN0cmluZyYgcGF0aG5hbWUpOwogICAgIHZvaWQgZ2V0RHJhZ0ZpbGVDb250ZW50RGF0YShpbnQg
c2l6ZSwgdm9pZCogZGF0YUJsb2IpOwpJbmRleDogU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vTG9j
YWxpemVkU3RyaW5ncy5oCj09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT0KLS0tIFNvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL0xv
Y2FsaXplZFN0cmluZ3MuaAkocmV2aXNpb24gMTcyNjU4KQorKysgU291cmNlL1dlYkNvcmUvcGxh
dGZvcm0vTG9jYWxpemVkU3RyaW5ncy5oCSh3b3JraW5nIGNvcHkpCkBAIC00OCw3ICs0OCw3IEBA
IG5hbWVzcGFjZSBXZWJDb3JlIHsKICNlbmRpZgogCiAjaWYgRU5BQkxFKENPTlRFWFRfTUVOVVMp
Ci0gICAgU3RyaW5nIGNvbnRleHRNZW51SXRlbVRhZ09wZW5MaW5rSW5OZXdXaW5kb3coKTsKKyAg
ICBXRUJDT1JFX0VYUE9SVCBTdHJpbmcgY29udGV4dE1lbnVJdGVtVGFnT3BlbkxpbmtJbk5ld1dp
bmRvdygpOwogICAgIFN0cmluZyBjb250ZXh0TWVudUl0ZW1UYWdEb3dubG9hZExpbmtUb0Rpc2so
KTsKICAgICBTdHJpbmcgY29udGV4dE1lbnVJdGVtVGFnQ29weUxpbmtUb0NsaXBib2FyZCgpOwog
ICAgIFN0cmluZyBjb250ZXh0TWVudUl0ZW1UYWdPcGVuSW1hZ2VJbk5ld1dpbmRvdygpOwpAQCAt
ODksNDIgKzg5LDQyIEBAIG5hbWVzcGFjZSBXZWJDb3JlIHsKICAgICBTdHJpbmcgY29udGV4dE1l
bnVJdGVtVGFnU2VhcmNoV2ViKCk7CiAgICAgU3RyaW5nIGNvbnRleHRNZW51SXRlbVRhZ0xvb2tV
cEluRGljdGlvbmFyeShjb25zdCBTdHJpbmcmIHNlbGVjdGVkU3RyaW5nKTsKICAgICBTdHJpbmcg
Y29udGV4dE1lbnVJdGVtVGFnT3BlbkxpbmsoKTsKLSAgICBTdHJpbmcgY29udGV4dE1lbnVJdGVt
VGFnSWdub3JlR3JhbW1hcigpOwotICAgIFN0cmluZyBjb250ZXh0TWVudUl0ZW1UYWdTcGVsbGlu
Z01lbnUoKTsKLSAgICBTdHJpbmcgY29udGV4dE1lbnVJdGVtVGFnU2hvd1NwZWxsaW5nUGFuZWwo
Ym9vbCBzaG93KTsKLSAgICBTdHJpbmcgY29udGV4dE1lbnVJdGVtVGFnQ2hlY2tTcGVsbGluZygp
OwotICAgIFN0cmluZyBjb250ZXh0TWVudUl0ZW1UYWdDaGVja1NwZWxsaW5nV2hpbGVUeXBpbmco
KTsKLSAgICBTdHJpbmcgY29udGV4dE1lbnVJdGVtVGFnQ2hlY2tHcmFtbWFyV2l0aFNwZWxsaW5n
KCk7Ci0gICAgU3RyaW5nIGNvbnRleHRNZW51SXRlbVRhZ0ZvbnRNZW51KCk7Ci0gICAgU3RyaW5n
IGNvbnRleHRNZW51SXRlbVRhZ0JvbGQoKTsKLSAgICBTdHJpbmcgY29udGV4dE1lbnVJdGVtVGFn
SXRhbGljKCk7Ci0gICAgU3RyaW5nIGNvbnRleHRNZW51SXRlbVRhZ1VuZGVybGluZSgpOwotICAg
IFN0cmluZyBjb250ZXh0TWVudUl0ZW1UYWdPdXRsaW5lKCk7Ci0gICAgU3RyaW5nIGNvbnRleHRN
ZW51SXRlbVRhZ1dyaXRpbmdEaXJlY3Rpb25NZW51KCk7CisgICAgV0VCQ09SRV9FWFBPUlQgU3Ry
aW5nIGNvbnRleHRNZW51SXRlbVRhZ0lnbm9yZUdyYW1tYXIoKTsKKyAgICBXRUJDT1JFX0VYUE9S
VCBTdHJpbmcgY29udGV4dE1lbnVJdGVtVGFnU3BlbGxpbmdNZW51KCk7CisgICAgV0VCQ09SRV9F
WFBPUlQgU3RyaW5nIGNvbnRleHRNZW51SXRlbVRhZ1Nob3dTcGVsbGluZ1BhbmVsKGJvb2wgc2hv
dyk7CisgICAgV0VCQ09SRV9FWFBPUlQgU3RyaW5nIGNvbnRleHRNZW51SXRlbVRhZ0NoZWNrU3Bl
bGxpbmcoKTsKKyAgICBXRUJDT1JFX0VYUE9SVCBTdHJpbmcgY29udGV4dE1lbnVJdGVtVGFnQ2hl
Y2tTcGVsbGluZ1doaWxlVHlwaW5nKCk7CisgICAgV0VCQ09SRV9FWFBPUlQgU3RyaW5nIGNvbnRl
eHRNZW51SXRlbVRhZ0NoZWNrR3JhbW1hcldpdGhTcGVsbGluZygpOworICAgIFdFQkNPUkVfRVhQ
T1JUIFN0cmluZyBjb250ZXh0TWVudUl0ZW1UYWdGb250TWVudSgpOworICAgIFdFQkNPUkVfRVhQ
T1JUIFN0cmluZyBjb250ZXh0TWVudUl0ZW1UYWdCb2xkKCk7CisgICAgV0VCQ09SRV9FWFBPUlQg
U3RyaW5nIGNvbnRleHRNZW51SXRlbVRhZ0l0YWxpYygpOworICAgIFdFQkNPUkVfRVhQT1JUIFN0
cmluZyBjb250ZXh0TWVudUl0ZW1UYWdVbmRlcmxpbmUoKTsKKyAgICBXRUJDT1JFX0VYUE9SVCBT
dHJpbmcgY29udGV4dE1lbnVJdGVtVGFnT3V0bGluZSgpOworICAgIFdFQkNPUkVfRVhQT1JUIFN0
cmluZyBjb250ZXh0TWVudUl0ZW1UYWdXcml0aW5nRGlyZWN0aW9uTWVudSgpOwogICAgIFN0cmlu
ZyBjb250ZXh0TWVudUl0ZW1UYWdUZXh0RGlyZWN0aW9uTWVudSgpOwotICAgIFN0cmluZyBjb250
ZXh0TWVudUl0ZW1UYWdEZWZhdWx0RGlyZWN0aW9uKCk7Ci0gICAgU3RyaW5nIGNvbnRleHRNZW51
SXRlbVRhZ0xlZnRUb1JpZ2h0KCk7Ci0gICAgU3RyaW5nIGNvbnRleHRNZW51SXRlbVRhZ1JpZ2h0
VG9MZWZ0KCk7CisgICAgV0VCQ09SRV9FWFBPUlQgU3RyaW5nIGNvbnRleHRNZW51SXRlbVRhZ0Rl
ZmF1bHREaXJlY3Rpb24oKTsKKyAgICBXRUJDT1JFX0VYUE9SVCBTdHJpbmcgY29udGV4dE1lbnVJ
dGVtVGFnTGVmdFRvUmlnaHQoKTsKKyAgICBXRUJDT1JFX0VYUE9SVCBTdHJpbmcgY29udGV4dE1l
bnVJdGVtVGFnUmlnaHRUb0xlZnQoKTsKICNpZiBQTEFURk9STShDT0NPQSkKICAgICBTdHJpbmcg
Y29udGV4dE1lbnVJdGVtVGFnU2VhcmNoSW5TcG90bGlnaHQoKTsKLSAgICBTdHJpbmcgY29udGV4
dE1lbnVJdGVtVGFnU2hvd0ZvbnRzKCk7Ci0gICAgU3RyaW5nIGNvbnRleHRNZW51SXRlbVRhZ1N0
eWxlcygpOwotICAgIFN0cmluZyBjb250ZXh0TWVudUl0ZW1UYWdTaG93Q29sb3JzKCk7Ci0gICAg
U3RyaW5nIGNvbnRleHRNZW51SXRlbVRhZ1NwZWVjaE1lbnUoKTsKLSAgICBTdHJpbmcgY29udGV4
dE1lbnVJdGVtVGFnU3RhcnRTcGVha2luZygpOwotICAgIFN0cmluZyBjb250ZXh0TWVudUl0ZW1U
YWdTdG9wU3BlYWtpbmcoKTsKLSAgICBTdHJpbmcgY29udGV4dE1lbnVJdGVtVGFnQ29ycmVjdFNw
ZWxsaW5nQXV0b21hdGljYWxseSgpOwotICAgIFN0cmluZyBjb250ZXh0TWVudUl0ZW1UYWdTdWJz
dGl0dXRpb25zTWVudSgpOwotICAgIFN0cmluZyBjb250ZXh0TWVudUl0ZW1UYWdTaG93U3Vic3Rp
dHV0aW9ucyhib29sIHNob3cpOwotICAgIFN0cmluZyBjb250ZXh0TWVudUl0ZW1UYWdTbWFydENv
cHlQYXN0ZSgpOwotICAgIFN0cmluZyBjb250ZXh0TWVudUl0ZW1UYWdTbWFydFF1b3RlcygpOwot
ICAgIFN0cmluZyBjb250ZXh0TWVudUl0ZW1UYWdTbWFydERhc2hlcygpOwotICAgIFN0cmluZyBj
b250ZXh0TWVudUl0ZW1UYWdTbWFydExpbmtzKCk7Ci0gICAgU3RyaW5nIGNvbnRleHRNZW51SXRl
bVRhZ1RleHRSZXBsYWNlbWVudCgpOwotICAgIFN0cmluZyBjb250ZXh0TWVudUl0ZW1UYWdUcmFu
c2Zvcm1hdGlvbnNNZW51KCk7Ci0gICAgU3RyaW5nIGNvbnRleHRNZW51SXRlbVRhZ01ha2VVcHBl
ckNhc2UoKTsKLSAgICBTdHJpbmcgY29udGV4dE1lbnVJdGVtVGFnTWFrZUxvd2VyQ2FzZSgpOwot
ICAgIFN0cmluZyBjb250ZXh0TWVudUl0ZW1UYWdDYXBpdGFsaXplKCk7CisgICAgV0VCQ09SRV9F
WFBPUlQgU3RyaW5nIGNvbnRleHRNZW51SXRlbVRhZ1Nob3dGb250cygpOworICAgIFdFQkNPUkVf
RVhQT1JUIFN0cmluZyBjb250ZXh0TWVudUl0ZW1UYWdTdHlsZXMoKTsKKyAgICBXRUJDT1JFX0VY
UE9SVCBTdHJpbmcgY29udGV4dE1lbnVJdGVtVGFnU2hvd0NvbG9ycygpOworICAgIFdFQkNPUkVf
RVhQT1JUIFN0cmluZyBjb250ZXh0TWVudUl0ZW1UYWdTcGVlY2hNZW51KCk7CisgICAgV0VCQ09S
RV9FWFBPUlQgU3RyaW5nIGNvbnRleHRNZW51SXRlbVRhZ1N0YXJ0U3BlYWtpbmcoKTsKKyAgICBX
RUJDT1JFX0VYUE9SVCBTdHJpbmcgY29udGV4dE1lbnVJdGVtVGFnU3RvcFNwZWFraW5nKCk7Cisg
ICAgV0VCQ09SRV9FWFBPUlQgU3RyaW5nIGNvbnRleHRNZW51SXRlbVRhZ0NvcnJlY3RTcGVsbGlu
Z0F1dG9tYXRpY2FsbHkoKTsKKyAgICBXRUJDT1JFX0VYUE9SVCBTdHJpbmcgY29udGV4dE1lbnVJ
dGVtVGFnU3Vic3RpdHV0aW9uc01lbnUoKTsKKyAgICBXRUJDT1JFX0VYUE9SVCBTdHJpbmcgY29u
dGV4dE1lbnVJdGVtVGFnU2hvd1N1YnN0aXR1dGlvbnMoYm9vbCBzaG93KTsKKyAgICBXRUJDT1JF
X0VYUE9SVCBTdHJpbmcgY29udGV4dE1lbnVJdGVtVGFnU21hcnRDb3B5UGFzdGUoKTsKKyAgICBX
RUJDT1JFX0VYUE9SVCBTdHJpbmcgY29udGV4dE1lbnVJdGVtVGFnU21hcnRRdW90ZXMoKTsKKyAg
ICBXRUJDT1JFX0VYUE9SVCBTdHJpbmcgY29udGV4dE1lbnVJdGVtVGFnU21hcnREYXNoZXMoKTsK
KyAgICBXRUJDT1JFX0VYUE9SVCBTdHJpbmcgY29udGV4dE1lbnVJdGVtVGFnU21hcnRMaW5rcygp
OworICAgIFdFQkNPUkVfRVhQT1JUIFN0cmluZyBjb250ZXh0TWVudUl0ZW1UYWdUZXh0UmVwbGFj
ZW1lbnQoKTsKKyAgICBXRUJDT1JFX0VYUE9SVCBTdHJpbmcgY29udGV4dE1lbnVJdGVtVGFnVHJh
bnNmb3JtYXRpb25zTWVudSgpOworICAgIFdFQkNPUkVfRVhQT1JUIFN0cmluZyBjb250ZXh0TWVu
dUl0ZW1UYWdNYWtlVXBwZXJDYXNlKCk7CisgICAgV0VCQ09SRV9FWFBPUlQgU3RyaW5nIGNvbnRl
eHRNZW51SXRlbVRhZ01ha2VMb3dlckNhc2UoKTsKKyAgICBXRUJDT1JFX0VYUE9SVCBTdHJpbmcg
Y29udGV4dE1lbnVJdGVtVGFnQ2FwaXRhbGl6ZSgpOwogICAgIFN0cmluZyBjb250ZXh0TWVudUl0
ZW1UYWdDaGFuZ2VCYWNrKGNvbnN0IFN0cmluZyYgcmVwbGFjZWRTdHJpbmcpOwogI2VuZGlmCiAg
ICAgU3RyaW5nIGNvbnRleHRNZW51SXRlbVRhZ09wZW5WaWRlb0luTmV3V2luZG93KCk7CkBAIC0x
NDIsNyArMTQyLDcgQEAgbmFtZXNwYWNlIFdlYkNvcmUgewogICAgIFN0cmluZyBjb250ZXh0TWVu
dUl0ZW1UYWdNZWRpYVBsYXkoKTsKICAgICBTdHJpbmcgY29udGV4dE1lbnVJdGVtVGFnTWVkaWFQ
YXVzZSgpOwogICAgIFN0cmluZyBjb250ZXh0TWVudUl0ZW1UYWdNZWRpYU11dGUoKTsKLSAgICBT
dHJpbmcgY29udGV4dE1lbnVJdGVtVGFnSW5zcGVjdEVsZW1lbnQoKTsKKyAgICBXRUJDT1JFX0VY
UE9SVCBTdHJpbmcgY29udGV4dE1lbnVJdGVtVGFnSW5zcGVjdEVsZW1lbnQoKTsKICNlbmRpZiAv
LyBFTkFCTEUoQ09OVEVYVF9NRU5VUykKIAogI2lmICFQTEFURk9STShJT1MpCkluZGV4OiBTb3Vy
Y2UvV2ViQ29yZS9wbGF0Zm9ybS9QbGF0Zm9ybUV4cG9ydE1hY3Jvcy5oCj09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT0KLS0t
IFNvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL1BsYXRmb3JtRXhwb3J0TWFjcm9zLmgJKHJldmlzaW9u
IDE3MjY1OCkKKysrIFNvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL1BsYXRmb3JtRXhwb3J0TWFjcm9z
LmgJKHdvcmtpbmcgY29weSkKQEAgLTQ2LDggKzQ2LDEzIEBACiAjZGVmaW5lIFdFQktJVF9FWFBP
UlREQVRBIFdURl9JTVBPUlQKICNlbmRpZgogCisvLyBGSVhNRTogVGhpcyBzaG91bGQgYmUgV1RG
X0VYUE9SVCBvbmNlIFdFQkNPUkVfRVhQT1JUIGlzIHVzZWQgaW5zdGVhZCBvZiBXZWJDb3JlLmV4
cC5pbi4KKyNkZWZpbmUgV0VCQ09SRV9FWFBPUlQgV1RGX0VYUE9SVAorCiAjZWxzZSAvLyAhVVNF
KEVYUE9SVF9NQUNST1MpCiAKKyNkZWZpbmUgV0VCQ09SRV9FWFBPUlQKKwogI2lmIE9TKFdJTkRP
V1MpICYmICFDT01QSUxFUihHQ0MpCiAKICNpZiBkZWZpbmVkKFdFQkNPUkVfSVNfTElOS0VEX0lO
X1NBTUVfQklOQVJZKQpJbmRleDogU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vYXVkaW8vQXVkaW9I
YXJkd2FyZUxpc3RlbmVyLmgKPT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PQotLS0gU291cmNlL1dlYkNvcmUvcGxhdGZvcm0v
YXVkaW8vQXVkaW9IYXJkd2FyZUxpc3RlbmVyLmgJKHJldmlzaW9uIDE3MjY1OCkKKysrIFNvdXJj
ZS9XZWJDb3JlL3BsYXRmb3JtL2F1ZGlvL0F1ZGlvSGFyZHdhcmVMaXN0ZW5lci5oCSh3b3JraW5n
IGNvcHkpCkBAIC00Nyw3ICs0Nyw3IEBAIHB1YmxpYzoKICAgICAgICAgdmlydHVhbCB2b2lkIGF1
ZGlvT3V0cHV0RGV2aWNlQ2hhbmdlZCgpID0gMDsKICAgICB9OwogCi0gICAgc3RhdGljIFBhc3NS
ZWZQdHI8QXVkaW9IYXJkd2FyZUxpc3RlbmVyPiBjcmVhdGUoQ2xpZW50Jik7CisgICAgV0VCQ09S
RV9FWFBPUlQgc3RhdGljIFBhc3NSZWZQdHI8QXVkaW9IYXJkd2FyZUxpc3RlbmVyPiBjcmVhdGUo
Q2xpZW50Jik7CiAgICAgdmlydHVhbCB+QXVkaW9IYXJkd2FyZUxpc3RlbmVyKCkgeyB9CiAgICAg
CiAgICAgQXVkaW9IYXJkd2FyZUFjdGl2aXR5VHlwZSBoYXJkd2FyZUFjdGl2aXR5KCkgY29uc3Qg
eyByZXR1cm4gbV9hY3Rpdml0eTsgfQpJbmRleDogU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vYXVk
aW8vQXVkaW9TZXNzaW9uLmgKPT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PQotLS0gU291cmNlL1dlYkNvcmUvcGxhdGZvcm0v
YXVkaW8vQXVkaW9TZXNzaW9uLmgJKHJldmlzaW9uIDE3MjY1OCkKKysrIFNvdXJjZS9XZWJDb3Jl
L3BsYXRmb3JtL2F1ZGlvL0F1ZGlvU2Vzc2lvbi5oCSh3b3JraW5nIGNvcHkpCkBAIC0zOSw3ICsz
OSw3IEBAIGNsYXNzIEF1ZGlvU2Vzc2lvblByaXZhdGU7CiBjbGFzcyBBdWRpb1Nlc3Npb24gewog
ICAgIFdURl9NQUtFX05PTkNPUFlBQkxFKEF1ZGlvU2Vzc2lvbik7CiBwdWJsaWM6Ci0gICAgc3Rh
dGljIEF1ZGlvU2Vzc2lvbiYgc2hhcmVkU2Vzc2lvbigpOworICAgIFdFQkNPUkVfRVhQT1JUIHN0
YXRpYyBBdWRpb1Nlc3Npb24mIHNoYXJlZFNlc3Npb24oKTsKIAogICAgIGVudW0gQ2F0ZWdvcnlU
eXBlIHsKICAgICAgICAgTm9uZSwKQEAgLTUwLDcgKzUwLDcgQEAgcHVibGljOgogICAgICAgICBQ
bGF5QW5kUmVjb3JkLAogICAgICAgICBBdWRpb1Byb2Nlc3NpbmcsCiAgICAgfTsKLSAgICB2b2lk
IHNldENhdGVnb3J5KENhdGVnb3J5VHlwZSk7CisgICAgV0VCQ09SRV9FWFBPUlQgdm9pZCBzZXRD
YXRlZ29yeShDYXRlZ29yeVR5cGUpOwogICAgIENhdGVnb3J5VHlwZSBjYXRlZ29yeSgpIGNvbnN0
OwogCiAgICAgdm9pZCBzZXRDYXRlZ29yeU92ZXJyaWRlKENhdGVnb3J5VHlwZSk7CkluZGV4OiBT
b3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9hdWRpby9pb3MvTWVkaWFTZXNzaW9uTWFuYWdlcklPUy5t
bQo9PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09Ci0tLSBTb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9hdWRpby9pb3MvTWVkaWFT
ZXNzaW9uTWFuYWdlcklPUy5tbQkocmV2aXNpb24gMTcyNjU4KQorKysgU291cmNlL1dlYkNvcmUv
cGxhdGZvcm0vYXVkaW8vaW9zL01lZGlhU2Vzc2lvbk1hbmFnZXJJT1MubW0JKHdvcmtpbmcgY29w
eSkKQEAgLTgyLDkgKzgyLDkgQEAgU09GVF9MSU5LX1BPSU5URVIoTWVkaWFQbGF5ZXIsIE1QVm9s
dW1lVgogI2RlZmluZSBNUE5vd1BsYXlpbmdJbmZvUHJvcGVydHlQbGF5YmFja1JhdGUgZ2V0TVBO
b3dQbGF5aW5nSW5mb1Byb3BlcnR5UGxheWJhY2tSYXRlKCkKICNkZWZpbmUgTVBWb2x1bWVWaWV3
V2lyZWxlc3NSb3V0ZXNBdmFpbGFibGVEaWRDaGFuZ2VOb3RpZmljYXRpb24gZ2V0TVBWb2x1bWVW
aWV3V2lyZWxlc3NSb3V0ZXNBdmFpbGFibGVEaWRDaGFuZ2VOb3RpZmljYXRpb24oKQogCi1OU1N0
cmluZyogV2ViVUlBcHBsaWNhdGlvbldpbGxSZXNpZ25BY3RpdmVOb3RpZmljYXRpb24gPSBAIldl
YlVJQXBwbGljYXRpb25XaWxsUmVzaWduQWN0aXZlTm90aWZpY2F0aW9uIjsKLU5TU3RyaW5nKiBX
ZWJVSUFwcGxpY2F0aW9uV2lsbEVudGVyRm9yZWdyb3VuZE5vdGlmaWNhdGlvbiA9IEAiV2ViVUlB
cHBsaWNhdGlvbldpbGxFbnRlckZvcmVncm91bmROb3RpZmljYXRpb24iOwotTlNTdHJpbmcqIFdl
YlVJQXBwbGljYXRpb25EaWRCZWNvbWVBY3RpdmVOb3RpZmljYXRpb24gPSBAIldlYlVJQXBwbGlj
YXRpb25EaWRCZWNvbWVBY3RpdmVOb3RpZmljYXRpb24iOworV0VCQ09SRV9FWFBPUlQgTlNTdHJp
bmcqIFdlYlVJQXBwbGljYXRpb25XaWxsUmVzaWduQWN0aXZlTm90aWZpY2F0aW9uID0gQCJXZWJV
SUFwcGxpY2F0aW9uV2lsbFJlc2lnbkFjdGl2ZU5vdGlmaWNhdGlvbiI7CitXRUJDT1JFX0VYUE9S
VCBOU1N0cmluZyogV2ViVUlBcHBsaWNhdGlvbldpbGxFbnRlckZvcmVncm91bmROb3RpZmljYXRp
b24gPSBAIldlYlVJQXBwbGljYXRpb25XaWxsRW50ZXJGb3JlZ3JvdW5kTm90aWZpY2F0aW9uIjsK
K1dFQkNPUkVfRVhQT1JUIE5TU3RyaW5nKiBXZWJVSUFwcGxpY2F0aW9uRGlkQmVjb21lQWN0aXZl
Tm90aWZpY2F0aW9uID0gQCJXZWJVSUFwcGxpY2F0aW9uRGlkQmVjb21lQWN0aXZlTm90aWZpY2F0
aW9uIjsKIAogdXNpbmcgbmFtZXNwYWNlIFdlYkNvcmU7CiAKSW5kZXg6IFNvdXJjZS9XZWJDb3Jl
L3BsYXRmb3JtL2dyYXBoaWNzL0JpdG1hcEltYWdlLmgKPT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PQotLS0gU291cmNlL1dl
YkNvcmUvcGxhdGZvcm0vZ3JhcGhpY3MvQml0bWFwSW1hZ2UuaAkocmV2aXNpb24gMTcyNjU4KQor
KysgU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vZ3JhcGhpY3MvQml0bWFwSW1hZ2UuaAkod29ya2lu
ZyBjb3B5KQpAQCAtMTU2LDcgKzE1Niw3IEBAIHB1YmxpYzoKICNlbmRpZgogCiAjaWYgVVNFKENH
KQotICAgIHZpcnR1YWwgQ0dJbWFnZVJlZiBnZXRDR0ltYWdlUmVmKCkgb3ZlcnJpZGU7CisgICAg
V0VCQ09SRV9FWFBPUlQgdmlydHVhbCBDR0ltYWdlUmVmIGdldENHSW1hZ2VSZWYoKSBvdmVycmlk
ZTsKICAgICB2aXJ0dWFsIENHSW1hZ2VSZWYgZ2V0Rmlyc3RDR0ltYWdlUmVmT2ZTaXplKGNvbnN0
IEludFNpemUmKSBvdmVycmlkZTsKICAgICB2aXJ0dWFsIFJldGFpblB0cjxDRkFycmF5UmVmPiBn
ZXRDR0ltYWdlQXJyYXkoKSBvdmVycmlkZTsKICNlbmRpZgpAQCAtMTk1LDggKzE5NSw4IEBAIHBy
b3RlY3RlZDoKICAgICAgIENlcnRhaW4gICAgIC8vIFRoZSByZXBldGl0aW9uIGNvdW50IGlzIGtu
b3duIHRvIGJlIGNvcnJlY3QuCiAgICAgfTsKIAotICAgIEJpdG1hcEltYWdlKFBhc3NOYXRpdmVJ
bWFnZVB0ciwgSW1hZ2VPYnNlcnZlciogPSAwKTsKLSAgICBCaXRtYXBJbWFnZShJbWFnZU9ic2Vy
dmVyKiA9IDApOworICAgIFdFQkNPUkVfRVhQT1JUIEJpdG1hcEltYWdlKFBhc3NOYXRpdmVJbWFn
ZVB0ciwgSW1hZ2VPYnNlcnZlciogPSAwKTsKKyAgICBXRUJDT1JFX0VYUE9SVCBCaXRtYXBJbWFn
ZShJbWFnZU9ic2VydmVyKiA9IDApOwogCiAjaWYgUExBVEZPUk0oV0lOKQogICAgIHZpcnR1YWwg
dm9pZCBkcmF3RnJhbWVNYXRjaGluZ1NvdXJjZVNpemUoR3JhcGhpY3NDb250ZXh0KiwgY29uc3Qg
RmxvYXRSZWN0JiBkc3RSZWN0LCBjb25zdCBJbnRTaXplJiBzcmNTaXplLCBDb2xvclNwYWNlIHN0
eWxlQ29sb3JTcGFjZSwgQ29tcG9zaXRlT3BlcmF0b3IpIG92ZXJyaWRlOwpJbmRleDogU291cmNl
L1dlYkNvcmUvcGxhdGZvcm0vZ3JhcGhpY3MvQ29sb3IuaAo9PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09Ci0tLSBTb3VyY2Uv
V2ViQ29yZS9wbGF0Zm9ybS9ncmFwaGljcy9Db2xvci5oCShyZXZpc2lvbiAxNzI2NTgpCisrKyBT
b3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9ncmFwaGljcy9Db2xvci5oCSh3b3JraW5nIGNvcHkpCkBA
IC03OCw3ICs3OCw3IEBAIHB1YmxpYzoKICAgICBDb2xvcihmbG9hdCByLCBmbG9hdCBnLCBmbG9h
dCBiLCBmbG9hdCBhKSA6IG1fY29sb3IobWFrZVJHQkEzMkZyb21GbG9hdHMociwgZywgYiwgYSkp
LCBtX3ZhbGlkKHRydWUpIHsgfQogICAgIC8vIENyZWF0ZXMgYSBuZXcgY29sb3IgZnJvbSB0aGUg
c3BlY2lmaWMgQ01ZSyBhbmQgYWxwaGEgdmFsdWVzLgogICAgIENvbG9yKGZsb2F0IGMsIGZsb2F0
IG0sIGZsb2F0IHksIGZsb2F0IGssIGZsb2F0IGEpIDogbV9jb2xvcihtYWtlUkdCQUZyb21DTVlL
QShjLCBtLCB5LCBrLCBhKSksIG1fdmFsaWQodHJ1ZSkgeyB9Ci0gICAgZXhwbGljaXQgQ29sb3Io
Y29uc3QgU3RyaW5nJik7CisgICAgV0VCQ09SRV9FWFBPUlQgZXhwbGljaXQgQ29sb3IoY29uc3Qg
U3RyaW5nJik7CiAgICAgZXhwbGljaXQgQ29sb3IoY29uc3QgY2hhciopOwogCiAgICAgc3RhdGlj
IENvbG9yIGNyZWF0ZVVuY2hlY2tlZChpbnQgciwgaW50IGcsIGludCBiKQpAQCAtOTQsNyArOTQs
NyBAQCBwdWJsaWM6CiAKICAgICAvLyBSZXR1cm5zIHRoZSBjb2xvciBzZXJpYWxpemVkIGFjY29y
ZGluZyB0byBIVE1MNQogICAgIC8vIC0gaHR0cDovL3d3dy53aGF0d2cub3JnL3NwZWNzL3dlYi1h
cHBzL2N1cnJlbnQtd29yay8jc2VyaWFsaXphdGlvbi1vZi1hLWNvbG9yCi0gICAgU3RyaW5nIHNl
cmlhbGl6ZWQoKSBjb25zdDsKKyAgICBXRUJDT1JFX0VYUE9SVCBTdHJpbmcgc2VyaWFsaXplZCgp
IGNvbnN0OwogCiAgICAgLy8gUmV0dXJucyB0aGUgY29sb3Igc2VyaWFsaXplZCBhcyBlaXRoZXIg
I1JSR0dCQiBvciAjUlJHR0JCQUEKICAgICAvLyBUaGUgbGF0dGVyIGZvcm1hdCBpcyBub3QgYSB2
YWxpZCBDU1MgY29sb3IsIGFuZCBzaG91bGQgb25seSBiZSBzZWVuIGluIERSVCBkdW1wcy4KQEAg
LTExNCw4ICsxMTQsOCBAQCBwdWJsaWM6CiAgICAgUkdCQTMyIHJnYigpIGNvbnN0IHsgcmV0dXJu
IG1fY29sb3I7IH0gLy8gUHJlc2VydmUgdGhlIGFscGhhLgogICAgIHZvaWQgc2V0UkdCKGludCBy
LCBpbnQgZywgaW50IGIpIHsgbV9jb2xvciA9IG1ha2VSR0IociwgZywgYik7IG1fdmFsaWQgPSB0
cnVlOyB9CiAgICAgdm9pZCBzZXRSR0IoUkdCQTMyIHJnYikgeyBtX2NvbG9yID0gcmdiOyBtX3Zh
bGlkID0gdHJ1ZTsgfQotICAgIHZvaWQgZ2V0UkdCQShmbG9hdCYgciwgZmxvYXQmIGcsIGZsb2F0
JiBiLCBmbG9hdCYgYSkgY29uc3Q7Ci0gICAgdm9pZCBnZXRSR0JBKGRvdWJsZSYgciwgZG91Ymxl
JiBnLCBkb3VibGUmIGIsIGRvdWJsZSYgYSkgY29uc3Q7CisgICAgV0VCQ09SRV9FWFBPUlQgdm9p
ZCBnZXRSR0JBKGZsb2F0JiByLCBmbG9hdCYgZywgZmxvYXQmIGIsIGZsb2F0JiBhKSBjb25zdDsK
KyAgICBXRUJDT1JFX0VYUE9SVCB2b2lkIGdldFJHQkEoZG91YmxlJiByLCBkb3VibGUmIGcsIGRv
dWJsZSYgYiwgZG91YmxlJiBhKSBjb25zdDsKICAgICB2b2lkIGdldEhTTChkb3VibGUmIGgsIGRv
dWJsZSYgcywgZG91YmxlJiBsKSBjb25zdDsKIAogICAgIENvbG9yIGxpZ2h0KCkgY29uc3Q7CkBA
IC0xMzcsNyArMTM3LDcgQEAgcHVibGljOgogI2VuZGlmCiAKICNpZiBVU0UoQ0cpCi0gICAgQ29s
b3IoQ0dDb2xvclJlZik7CisgICAgV0VCQ09SRV9FWFBPUlQgQ29sb3IoQ0dDb2xvclJlZik7CiAj
ZW5kaWYKIAogICAgIHN0YXRpYyBib29sIHBhcnNlSGV4Q29sb3IoY29uc3QgU3RyaW5nJiwgUkdC
QTMyJik7CkBAIC0xNDUsMTEgKzE0NSwxMSBAQCBwdWJsaWM6CiAgICAgc3RhdGljIGJvb2wgcGFy
c2VIZXhDb2xvcihjb25zdCBVQ2hhciosIHVuc2lnbmVkLCBSR0JBMzImKTsKIAogICAgIHN0YXRp
YyBjb25zdCBSR0JBMzIgYmxhY2sgPSAweEZGMDAwMDAwOwotICAgIHN0YXRpYyBjb25zdCBSR0JB
MzIgd2hpdGUgPSAweEZGRkZGRkZGOworICAgIFdFQkNPUkVfRVhQT1JUIHN0YXRpYyBjb25zdCBS
R0JBMzIgd2hpdGUgPSAweEZGRkZGRkZGOwogICAgIHN0YXRpYyBjb25zdCBSR0JBMzIgZGFya0dy
YXkgPSAweEZGODA4MDgwOwogICAgIHN0YXRpYyBjb25zdCBSR0JBMzIgZ3JheSA9IDB4RkZBMEEw
QTA7CiAgICAgc3RhdGljIGNvbnN0IFJHQkEzMiBsaWdodEdyYXkgPSAweEZGQzBDMEMwOwotICAg
IHN0YXRpYyBjb25zdCBSR0JBMzIgdHJhbnNwYXJlbnQgPSAweDAwMDAwMDAwOworICAgIFdFQkNP
UkVfRVhQT1JUIHN0YXRpYyBjb25zdCBSR0JBMzIgdHJhbnNwYXJlbnQgPSAweDAwMDAwMDAwOwog
ICAgIHN0YXRpYyBjb25zdCBSR0JBMzIgY3lhbiA9IDB4RkYwMEZGRkY7CiAKICNpZiBQTEFURk9S
TShJT1MpCkluZGV4OiBTb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9ncmFwaGljcy9EaXNwbGF5UmVm
cmVzaE1vbml0b3IuaAo9PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09Ci0tLSBTb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9ncmFw
aGljcy9EaXNwbGF5UmVmcmVzaE1vbml0b3IuaAkocmV2aXNpb24gMTcyNjU4KQorKysgU291cmNl
L1dlYkNvcmUvcGxhdGZvcm0vZ3JhcGhpY3MvRGlzcGxheVJlZnJlc2hNb25pdG9yLmgJKHdvcmtp
bmcgY29weSkKQEAgLTQyLDcgKzQyLDcgQEAgY2xhc3MgRGlzcGxheVJlZnJlc2hNb25pdG9yQ2xp
ZW50OwogY2xhc3MgRGlzcGxheVJlZnJlc2hNb25pdG9yIDogcHVibGljIFJlZkNvdW50ZWQ8RGlz
cGxheVJlZnJlc2hNb25pdG9yPiB7CiBwdWJsaWM6CiAgICAgc3RhdGljIFBhc3NSZWZQdHI8RGlz
cGxheVJlZnJlc2hNb25pdG9yPiBjcmVhdGUoRGlzcGxheVJlZnJlc2hNb25pdG9yQ2xpZW50Kik7
Ci0gICAgdmlydHVhbCB+RGlzcGxheVJlZnJlc2hNb25pdG9yKCk7CisgICAgV0VCQ09SRV9FWFBP
UlQgdmlydHVhbCB+RGlzcGxheVJlZnJlc2hNb25pdG9yKCk7CiAgICAgCiAgICAgLy8gUmV0dXJu
IHRydWUgaWYgY2FsbGJhY2sgcmVxdWVzdCB3YXMgc2NoZWR1bGVkLCBmYWxzZSBpZiBpdCBjb3Vs
ZG4ndCBiZQogICAgIC8vIChlLmcuLCBoYXJkd2FyZSByZWZyZXNoIGlzIG5vdCBhdmFpbGFibGUp
CkBAIC03NSw4ICs3NSw4IEBAIHB1YmxpYzoKICAgICBNdXRleCYgbXV0ZXgoKSB7IHJldHVybiBt
X211dGV4OyB9CiAKIHByb3RlY3RlZDoKLSAgICBleHBsaWNpdCBEaXNwbGF5UmVmcmVzaE1vbml0
b3IoUGxhdGZvcm1EaXNwbGF5SUQpOwotICAgIHN0YXRpYyB2b2lkIGhhbmRsZURpc3BsYXlSZWZy
ZXNoZWROb3RpZmljYXRpb25Pbk1haW5UaHJlYWQodm9pZCogZGF0YSk7CisgICAgV0VCQ09SRV9F
WFBPUlQgZXhwbGljaXQgRGlzcGxheVJlZnJlc2hNb25pdG9yKFBsYXRmb3JtRGlzcGxheUlEKTsK
KyAgICBXRUJDT1JFX0VYUE9SVCBzdGF0aWMgdm9pZCBoYW5kbGVEaXNwbGF5UmVmcmVzaGVkTm90
aWZpY2F0aW9uT25NYWluVGhyZWFkKHZvaWQqIGRhdGEpOwogCiBwcml2YXRlOgogICAgIHZvaWQg
ZGlzcGxheURpZFJlZnJlc2goKTsKSW5kZXg6IFNvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL2dyYXBo
aWNzL3RyYW5zZm9ybXMvQWZmaW5lVHJhbnNmb3JtLmgKPT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PQotLS0gU291cmNlL1dl
YkNvcmUvcGxhdGZvcm0vZ3JhcGhpY3MvdHJhbnNmb3Jtcy9BZmZpbmVUcmFuc2Zvcm0uaAkocmV2
aXNpb24gMTcyNjU4KQorKysgU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vZ3JhcGhpY3MvdHJhbnNm
b3Jtcy9BZmZpbmVUcmFuc2Zvcm0uaAkod29ya2luZyBjb3B5KQpAQCAtNTAsOCArNTAsOCBAQCBj
bGFzcyBUcmFuc2Zvcm1hdGlvbk1hdHJpeDsKIGNsYXNzIEFmZmluZVRyYW5zZm9ybSB7CiAgICAg
V1RGX01BS0VfRkFTVF9BTExPQ0FURUQ7CiBwdWJsaWM6Ci0gICAgQWZmaW5lVHJhbnNmb3JtKCk7
Ci0gICAgQWZmaW5lVHJhbnNmb3JtKGRvdWJsZSBhLCBkb3VibGUgYiwgZG91YmxlIGMsIGRvdWJs
ZSBkLCBkb3VibGUgZSwgZG91YmxlIGYpOworICAgIFdFQkNPUkVfRVhQT1JUIEFmZmluZVRyYW5z
Zm9ybSgpOworICAgIFdFQkNPUkVfRVhQT1JUIEFmZmluZVRyYW5zZm9ybShkb3VibGUgYSwgZG91
YmxlIGIsIGRvdWJsZSBjLCBkb3VibGUgZCwgZG91YmxlIGUsIGRvdWJsZSBmKTsKIAogI2lmIFVT
RShDRykKICAgICBBZmZpbmVUcmFuc2Zvcm0oY29uc3QgQ0dBZmZpbmVUcmFuc2Zvcm0mKTsKQEAg
LTYyLDkgKzYyLDkgQEAgcHVibGljOgogICAgIHZvaWQgbWFwKGRvdWJsZSB4LCBkb3VibGUgeSwg
ZG91YmxlJiB4MiwgZG91YmxlJiB5MikgY29uc3Q7CiAKICAgICAvLyBSb3VuZHMgdGhlIG1hcHBl
ZCBwb2ludCB0byB0aGUgbmVhcmVzdCBpbnRlZ2VyIHZhbHVlLgotICAgIEludFBvaW50IG1hcFBv
aW50KGNvbnN0IEludFBvaW50JikgY29uc3Q7CisgICAgV0VCQ09SRV9FWFBPUlQgSW50UG9pbnQg
bWFwUG9pbnQoY29uc3QgSW50UG9pbnQmKSBjb25zdDsKIAotICAgIEZsb2F0UG9pbnQgbWFwUG9p
bnQoY29uc3QgRmxvYXRQb2ludCYpIGNvbnN0OworICAgIFdFQkNPUkVfRVhQT1JUIEZsb2F0UG9p
bnQgbWFwUG9pbnQoY29uc3QgRmxvYXRQb2ludCYpIGNvbnN0OwogCiAgICAgSW50U2l6ZSBtYXBT
aXplKGNvbnN0IEludFNpemUmKSBjb25zdDsKIApAQCAtNzQsMTAgKzc0LDEwIEBAIHB1YmxpYzoK
ICAgICAvLyBib3ggY29tcHV0YXRpb25zIGJ1dCBtYXkgbm90IGJlIHdoYXQgaXMgd2FudGVkIGlu
IG90aGVyIGNvbnRleHRzLgogICAgIEludFJlY3QgbWFwUmVjdChjb25zdCBJbnRSZWN0JikgY29u
c3Q7CiAKLSAgICBGbG9hdFJlY3QgbWFwUmVjdChjb25zdCBGbG9hdFJlY3QmKSBjb25zdDsKKyAg
ICBXRUJDT1JFX0VYUE9SVCBGbG9hdFJlY3QgbWFwUmVjdChjb25zdCBGbG9hdFJlY3QmKSBjb25z
dDsKICAgICBGbG9hdFF1YWQgbWFwUXVhZChjb25zdCBGbG9hdFF1YWQmKSBjb25zdDsKIAotICAg
IGJvb2wgaXNJZGVudGl0eSgpIGNvbnN0OworICAgIFdFQkNPUkVfRVhQT1JUIGJvb2wgaXNJZGVu
dGl0eSgpIGNvbnN0OwogCiAgICAgZG91YmxlIGEoKSBjb25zdCB7IHJldHVybiBtX3RyYW5zZm9y
bVswXTsgfQogICAgIHZvaWQgc2V0QShkb3VibGUgYSkgeyBtX3RyYW5zZm9ybVswXSA9IGE7IH0K
QEAgLTk0LDI4ICs5NCwyOCBAQCBwdWJsaWM6CiAKICAgICB2b2lkIG1ha2VJZGVudGl0eSgpOwog
Ci0gICAgQWZmaW5lVHJhbnNmb3JtJiBtdWx0aXBseShjb25zdCBBZmZpbmVUcmFuc2Zvcm0mIG90
aGVyKTsKLSAgICBBZmZpbmVUcmFuc2Zvcm0mIHNjYWxlKGRvdWJsZSk7IAorICAgIFdFQkNPUkVf
RVhQT1JUIEFmZmluZVRyYW5zZm9ybSYgbXVsdGlwbHkoY29uc3QgQWZmaW5lVHJhbnNmb3JtJiBv
dGhlcik7CisgICAgV0VCQ09SRV9FWFBPUlQgQWZmaW5lVHJhbnNmb3JtJiBzY2FsZShkb3VibGUp
OwogICAgIEFmZmluZVRyYW5zZm9ybSYgc2NhbGUoZG91YmxlIHN4LCBkb3VibGUgc3kpOyAKICAg
ICBBZmZpbmVUcmFuc2Zvcm0mIHNjYWxlTm9uVW5pZm9ybShkb3VibGUgc3gsIGRvdWJsZSBzeSk7
CiAgICAgQWZmaW5lVHJhbnNmb3JtJiByb3RhdGUoZG91YmxlIGQpOwogICAgIEFmZmluZVRyYW5z
Zm9ybSYgcm90YXRlRnJvbVZlY3Rvcihkb3VibGUgeCwgZG91YmxlIHkpOwotICAgIEFmZmluZVRy
YW5zZm9ybSYgdHJhbnNsYXRlKGRvdWJsZSB0eCwgZG91YmxlIHR5KTsKKyAgICBXRUJDT1JFX0VY
UE9SVCBBZmZpbmVUcmFuc2Zvcm0mIHRyYW5zbGF0ZShkb3VibGUgdHgsIGRvdWJsZSB0eSk7CiAg
ICAgQWZmaW5lVHJhbnNmb3JtJiBzaGVhcihkb3VibGUgc3gsIGRvdWJsZSBzeSk7CiAgICAgQWZm
aW5lVHJhbnNmb3JtJiBmbGlwWCgpOwotICAgIEFmZmluZVRyYW5zZm9ybSYgZmxpcFkoKTsKKyAg
ICBXRUJDT1JFX0VYUE9SVCBBZmZpbmVUcmFuc2Zvcm0mIGZsaXBZKCk7CiAgICAgQWZmaW5lVHJh
bnNmb3JtJiBza2V3KGRvdWJsZSBhbmdsZVgsIGRvdWJsZSBhbmdsZVkpOwogICAgIEFmZmluZVRy
YW5zZm9ybSYgc2tld1goZG91YmxlIGFuZ2xlKTsKICAgICBBZmZpbmVUcmFuc2Zvcm0mIHNrZXdZ
KGRvdWJsZSBhbmdsZSk7CiAKICAgICAvLyBUaGVzZSBmdW5jdGlvbnMgZ2V0IHRoZSBsZW5ndGgg
b2YgYW4gYXhpcy1hbGlnbmVkIHVuaXQgdmVjdG9yCiAgICAgLy8gb25jZSBpdCBoYXMgYmVlbiBt
YXBwZWQgdGhyb3VnaCB0aGUgdHJhbnNmb3JtCi0gICAgZG91YmxlIHhTY2FsZSgpIGNvbnN0Owot
ICAgIGRvdWJsZSB5U2NhbGUoKSBjb25zdDsKKyAgICBXRUJDT1JFX0VYUE9SVCBkb3VibGUgeFNj
YWxlKCkgY29uc3Q7CisgICAgV0VCQ09SRV9FWFBPUlQgZG91YmxlIHlTY2FsZSgpIGNvbnN0Owog
CiAgICAgZG91YmxlIGRldCgpIGNvbnN0OwotICAgIGJvb2wgaXNJbnZlcnRpYmxlKCkgY29uc3Q7
Ci0gICAgQWZmaW5lVHJhbnNmb3JtIGludmVyc2UoKSBjb25zdDsKKyAgICBXRUJDT1JFX0VYUE9S
VCBib29sIGlzSW52ZXJ0aWJsZSgpIGNvbnN0OworICAgIFdFQkNPUkVfRVhQT1JUIEFmZmluZVRy
YW5zZm9ybSBpbnZlcnNlKCkgY29uc3Q7CiAKICAgICB2b2lkIGJsZW5kKGNvbnN0IEFmZmluZVRy
YW5zZm9ybSYgZnJvbSwgZG91YmxlIHByb2dyZXNzKTsKIApJbmRleDogU291cmNlL1dlYkNvcmUv
cGxhdGZvcm0vaW9zL1dlYkNvcmVTeXN0ZW1JbnRlcmZhY2VJT1MubW0KPT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PQotLS0g
U291cmNlL1dlYkNvcmUvcGxhdGZvcm0vaW9zL1dlYkNvcmVTeXN0ZW1JbnRlcmZhY2VJT1MubW0J
KHJldmlzaW9uIDE3MjY1OCkKKysrIFNvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL2lvcy9XZWJDb3Jl
U3lzdGVtSW50ZXJmYWNlSU9TLm1tCSh3b3JraW5nIGNvcHkpCkBAIC0yNiwyNCArMjYsMjQgQEAK
ICNpbXBvcnQgImNvbmZpZy5oIgogI2ltcG9ydCAiV2ViQ29yZVN5c3RlbUludGVyZmFjZS5oIgog
Ci12b2lkICgqd2tDQUxheWVyRW51bWVyYXRlUmVjdHNCZWluZ0RyYXduV2l0aEJsb2NrKShDQUxh
eWVyICosIENHQ29udGV4dFJlZiBjb250ZXh0LCB2b2lkICheYmxvY2spKENHUmVjdCByZWN0KSk7
Ci1CT09MICgqd2tDR0NvbnRleHRHZXRTaG91bGRTbW9vdGhGb250cykoQ0dDb250ZXh0UmVmKTsK
LUNHUGF0dGVyblJlZiAoKndrQ0dQYXR0ZXJuQ3JlYXRlV2l0aEltYWdlQW5kVHJhbnNmb3JtKShD
R0ltYWdlUmVmLCBDR0FmZmluZVRyYW5zZm9ybSwgaW50KTsKLXZvaWQgKCp3a0NHQ29udGV4dFJl
c2V0Q2xpcCkoQ0dDb250ZXh0UmVmKTsgCi1DRlN0cmluZ1JlZiAoKndrQ29weUNGTG9jYWxpemF0
aW9uUHJlZmVycmVkTmFtZSkoQ0ZTdHJpbmdSZWYpOwotdm9pZCAoKndrQ2xlYXJHbHlwaFZlY3Rv
cikodm9pZCogZ2x5cGhzKTsKLU9TU3RhdHVzICgqd2tDb252ZXJ0Q2hhclRvR2x5cGhzKSh2b2lk
KiBzdHlsZUdyb3VwLCBjb25zdCBVbmlDaGFyKiwgdW5zaWduZWQgbnVtQ2hhcmFjdGVycywgdm9p
ZCogZ2x5cGhzKTsKLU5TU3RyaW5nKiAoKndrR2V0TUlNRVR5cGVGb3JFeHRlbnNpb24pKE5TU3Ry
aW5nKik7Ci1OU0RhdGUgKigqd2tHZXROU1VSTFJlc3BvbnNlTGFzdE1vZGlmaWVkRGF0ZSkoTlNV
UkxSZXNwb25zZSAqcmVzcG9uc2UpOwotdm9pZCAoKndrU2V0QmFzZUNUTSkoQ0dDb250ZXh0UmVm
LCBDR0FmZmluZVRyYW5zZm9ybSk7Ci12b2lkICgqd2tTZXRQYXR0ZXJuUGhhc2VJblVzZXJTcGFj
ZSkoQ0dDb250ZXh0UmVmLCBDR1BvaW50IHBvaW50KTsKLUNHQWZmaW5lVHJhbnNmb3JtICgqd2tH
ZXRVc2VyVG9CYXNlQ1RNKShDR0NvbnRleHRSZWYpOwotYm9vbCAoKndrQ0dDb250ZXh0SXNQREZD
b250ZXh0KShDR0NvbnRleHRSZWYpOwotdm9pZCAoKndrU2V0VXBGb250Q2FjaGUpKCk7Ci12b2lk
ICgqd2tTaWduYWxDRlJlYWRTdHJlYW1FbmQpKENGUmVhZFN0cmVhbVJlZiBzdHJlYW0pOwotdm9p
ZCAoKndrU2lnbmFsQ0ZSZWFkU3RyZWFtSGFzQnl0ZXMpKENGUmVhZFN0cmVhbVJlZiBzdHJlYW0p
Owotdm9pZCAoKndrU2lnbmFsQ0ZSZWFkU3RyZWFtRXJyb3IpKENGUmVhZFN0cmVhbVJlZiBzdHJl
YW0sIENGU3RyZWFtRXJyb3IgKmVycm9yKTsKLUNGUmVhZFN0cmVhbVJlZiAoKndrQ3JlYXRlQ3Vz
dG9tQ0ZSZWFkU3RyZWFtKSh2b2lkICooKmZvcm1DcmVhdGUpKENGUmVhZFN0cmVhbVJlZiwgdm9p
ZCAqKSwgCitXRUJDT1JFX0VYUE9SVCB2b2lkICgqd2tDQUxheWVyRW51bWVyYXRlUmVjdHNCZWlu
Z0RyYXduV2l0aEJsb2NrKShDQUxheWVyICosIENHQ29udGV4dFJlZiBjb250ZXh0LCB2b2lkIChe
YmxvY2spKENHUmVjdCByZWN0KSk7CitXRUJDT1JFX0VYUE9SVCBCT09MICgqd2tDR0NvbnRleHRH
ZXRTaG91bGRTbW9vdGhGb250cykoQ0dDb250ZXh0UmVmKTsKK1dFQkNPUkVfRVhQT1JUIENHUGF0
dGVyblJlZiAoKndrQ0dQYXR0ZXJuQ3JlYXRlV2l0aEltYWdlQW5kVHJhbnNmb3JtKShDR0ltYWdl
UmVmLCBDR0FmZmluZVRyYW5zZm9ybSwgaW50KTsKK1dFQkNPUkVfRVhQT1JUIHZvaWQgKCp3a0NH
Q29udGV4dFJlc2V0Q2xpcCkoQ0dDb250ZXh0UmVmKTsKK1dFQkNPUkVfRVhQT1JUIENGU3RyaW5n
UmVmICgqd2tDb3B5Q0ZMb2NhbGl6YXRpb25QcmVmZXJyZWROYW1lKShDRlN0cmluZ1JlZik7CitX
RUJDT1JFX0VYUE9SVCB2b2lkICgqd2tDbGVhckdseXBoVmVjdG9yKSh2b2lkKiBnbHlwaHMpOwor
V0VCQ09SRV9FWFBPUlQgT1NTdGF0dXMgKCp3a0NvbnZlcnRDaGFyVG9HbHlwaHMpKHZvaWQqIHN0
eWxlR3JvdXAsIGNvbnN0IFVuaUNoYXIqLCB1bnNpZ25lZCBudW1DaGFyYWN0ZXJzLCB2b2lkKiBn
bHlwaHMpOworV0VCQ09SRV9FWFBPUlQgTlNTdHJpbmcqICgqd2tHZXRNSU1FVHlwZUZvckV4dGVu
c2lvbikoTlNTdHJpbmcqKTsKK1dFQkNPUkVfRVhQT1JUIE5TRGF0ZSAqKCp3a0dldE5TVVJMUmVz
cG9uc2VMYXN0TW9kaWZpZWREYXRlKShOU1VSTFJlc3BvbnNlICpyZXNwb25zZSk7CitXRUJDT1JF
X0VYUE9SVCB2b2lkICgqd2tTZXRCYXNlQ1RNKShDR0NvbnRleHRSZWYsIENHQWZmaW5lVHJhbnNm
b3JtKTsKK1dFQkNPUkVfRVhQT1JUIHZvaWQgKCp3a1NldFBhdHRlcm5QaGFzZUluVXNlclNwYWNl
KShDR0NvbnRleHRSZWYsIENHUG9pbnQgcG9pbnQpOworV0VCQ09SRV9FWFBPUlQgQ0dBZmZpbmVU
cmFuc2Zvcm0gKCp3a0dldFVzZXJUb0Jhc2VDVE0pKENHQ29udGV4dFJlZik7CitXRUJDT1JFX0VY
UE9SVCBib29sICgqd2tDR0NvbnRleHRJc1BERkNvbnRleHQpKENHQ29udGV4dFJlZik7CitXRUJD
T1JFX0VYUE9SVCB2b2lkICgqd2tTZXRVcEZvbnRDYWNoZSkoKTsKK1dFQkNPUkVfRVhQT1JUIHZv
aWQgKCp3a1NpZ25hbENGUmVhZFN0cmVhbUVuZCkoQ0ZSZWFkU3RyZWFtUmVmIHN0cmVhbSk7CitX
RUJDT1JFX0VYUE9SVCB2b2lkICgqd2tTaWduYWxDRlJlYWRTdHJlYW1IYXNCeXRlcykoQ0ZSZWFk
U3RyZWFtUmVmIHN0cmVhbSk7CitXRUJDT1JFX0VYUE9SVCB2b2lkICgqd2tTaWduYWxDRlJlYWRT
dHJlYW1FcnJvcikoQ0ZSZWFkU3RyZWFtUmVmIHN0cmVhbSwgQ0ZTdHJlYW1FcnJvciAqZXJyb3Ip
OworV0VCQ09SRV9FWFBPUlQgQ0ZSZWFkU3RyZWFtUmVmICgqd2tDcmVhdGVDdXN0b21DRlJlYWRT
dHJlYW0pKHZvaWQgKigqZm9ybUNyZWF0ZSkoQ0ZSZWFkU3RyZWFtUmVmLCB2b2lkICopLAogICAg
IHZvaWQgKCpmb3JtRmluYWxpemUpKENGUmVhZFN0cmVhbVJlZiwgdm9pZCAqKSwgCiAgICAgQm9v
bGVhbiAoKmZvcm1PcGVuKShDRlJlYWRTdHJlYW1SZWYsIENGU3RyZWFtRXJyb3IgKiwgQm9vbGVh
biAqLCB2b2lkICopLCAKICAgICBDRkluZGV4ICgqZm9ybVJlYWQpKENGUmVhZFN0cmVhbVJlZiwg
VUludDggKiwgQ0ZJbmRleCwgQ0ZTdHJlYW1FcnJvciAqLCBCb29sZWFuICosIHZvaWQgKiksIApA
QCAtNTIsMTA0ICs1MiwxMDQgQEAgQ0ZSZWFkU3RyZWFtUmVmICgqd2tDcmVhdGVDdXN0b21DRlJl
YWRTdAogICAgIHZvaWQgKCpmb3JtU2NoZWR1bGUpKENGUmVhZFN0cmVhbVJlZiwgQ0ZSdW5Mb29w
UmVmLCBDRlN0cmluZ1JlZiwgdm9pZCAqKSwgCiAgICAgdm9pZCAoKmZvcm1VbnNjaGVkdWxlKShD
RlJlYWRTdHJlYW1SZWYsIENGUnVuTG9vcFJlZiwgQ0ZTdHJpbmdSZWYsIHZvaWQgKiksCiAgICAg
dm9pZCAqY29udGV4dCk7Ci1OU1N0cmluZyogKCp3a0NvcHlOU1VSTFJlc3BvbnNlU3RhdHVzTGlu
ZSkoTlNVUkxSZXNwb25zZSopOwotdm9pZCAoKndrU2V0TlNVUkxDb25uZWN0aW9uRGVmZXJzQ2Fs
bGJhY2tzKShOU1VSTENvbm5lY3Rpb24gKiwgQk9PTCk7Ci12b2lkICgqd2tTZXROU1VSTFJlcXVl
c3RTaG91bGRDb250ZW50U25pZmYpKE5TTXV0YWJsZVVSTFJlcXVlc3QgKiwgQk9PTCk7Ci1pZCAo
KndrQ3JlYXRlTlNVUkxDb25uZWN0aW9uRGVsZWdhdGVQcm94eSkodm9pZCk7Ci11bnNpZ25lZCAo
KndrSW5pdGlhbGl6ZU1heGltdW1IVFRQQ29ubmVjdGlvbkNvdW50UGVySG9zdCkodW5zaWduZWQg
cHJlZmVycmVkQ29ubmVjdGlvbkNvdW50KTsKLWludCAoKndrR2V0SFRUUFJlcXVlc3RQcmlvcml0
eSkoQ0ZVUkxSZXF1ZXN0UmVmKTsKLXZvaWQgKCp3a1NldEhUVFBSZXF1ZXN0TWF4aW11bVByaW9y
aXR5KShpbnQgcHJpb3JpdHkpOwotdm9pZCAoKndrU2V0SFRUUFJlcXVlc3RQcmlvcml0eSkoQ0ZV
UkxSZXF1ZXN0UmVmLCBpbnQgcHJpb3JpdHkpOwotdm9pZCAoKndrU2V0SFRUUFJlcXVlc3RNaW5p
bXVtRmFzdExhbmVQcmlvcml0eSkoaW50IHByaW9yaXR5KTsKLXZvaWQgKCp3a0hUVFBSZXF1ZXN0
RW5hYmxlUGlwZWxpbmluZykoQ0ZVUkxSZXF1ZXN0UmVmKTsKLXZvaWQgKCp3a1NldENPTk5FQ1RQ
cm94eUZvclN0cmVhbSkoQ0ZSZWFkU3RyZWFtUmVmLCBDRlN0cmluZ1JlZiBwcm94eUhvc3QsIENG
TnVtYmVyUmVmIHByb3h5UG9ydCk7Ci12b2lkICgqd2tTZXRDT05ORUNUUHJveHlBdXRob3JpemF0
aW9uRm9yU3RyZWFtKShDRlJlYWRTdHJlYW1SZWYsIENGU3RyaW5nUmVmIHByb3h5QXV0aG9yaXph
dGlvblN0cmluZyk7Ci12b2lkICgqd2tTZXRDb29raWVTdG9yYWdlUHJpdmF0ZUJyb3dzaW5nRW5h
YmxlZCkoQk9PTCk7Ci1DRkhUVFBNZXNzYWdlUmVmICgqd2tDb3B5Q09OTkVDVFByb3h5UmVzcG9u
c2UpKENGUmVhZFN0cmVhbVJlZiwgQ0ZVUkxSZWYgcmVzcG9uc2VVUkwsIENGU3RyaW5nUmVmIHBy
b3h5SG9zdCwgQ0ZOdW1iZXJSZWYgcHJveHlQb3J0KTsKLWJvb2wgKCp3a0V4ZWN1dGFibGVXYXNM
aW5rZWRPbk9yQWZ0ZXJJT1NWZXJzaW9uKShpbnQpOwotaW50ICgqd2tHZXREZXZpY2VDbGFzcyko
dm9pZCk7Ci1DR1NpemUgKCp3a0dldFNjcmVlblNpemUpKHZvaWQpOwotQ0dTaXplICgqd2tHZXRB
dmFpbGFibGVTY3JlZW5TaXplKSh2b2lkKTsKLXZvaWQgKCp3a1NldExheWVyQ29udGVudHNTY2Fs
ZSkoQ0FMYXllciAqKTsKLWZsb2F0ICgqd2tHZXRTY3JlZW5TY2FsZUZhY3Rvcikodm9pZCk7Ci1i
b29sICgqd2tJc0dCMTgwMzBDb21wbGlhbmNlUmVxdWlyZWQpKHZvaWQpOwotdm9pZCAoKndrQ0dQ
YXRoQWRkUm91bmRlZFJlY3QpKENHTXV0YWJsZVBhdGhSZWYgcGF0aCwgY29uc3QgQ0dBZmZpbmVU
cmFuc2Zvcm0qIG1hdHJpeCwgQ0dSZWN0IHJlY3QsIENHRmxvYXQgY29ybmVyV2lkdGgsIENHRmxv
YXQgY29ybmVySGVpZ2h0KTsgCi12b2lkICgqd2tDRlVSTFJlcXVlc3RBbGxvd0FsbFBvc3RDYWNo
aW5nKShDRlVSTFJlcXVlc3RSZWYpOwotQ0ZBcnJheVJlZiAoKndrQ29weU5TVVJMUmVzcG9uc2VD
ZXJ0aWZpY2F0ZUNoYWluKShOU1VSTFJlc3BvbnNlKik7Ci1DRlN0cmluZ0VuY29kaW5nICgqd2tH
ZXRXZWJEZWZhdWx0Q0ZTdHJpbmdFbmNvZGluZykodm9pZCk7CitXRUJDT1JFX0VYUE9SVCBOU1N0
cmluZyogKCp3a0NvcHlOU1VSTFJlc3BvbnNlU3RhdHVzTGluZSkoTlNVUkxSZXNwb25zZSopOwor
V0VCQ09SRV9FWFBPUlQgdm9pZCAoKndrU2V0TlNVUkxDb25uZWN0aW9uRGVmZXJzQ2FsbGJhY2tz
KShOU1VSTENvbm5lY3Rpb24gKiwgQk9PTCk7CitXRUJDT1JFX0VYUE9SVCB2b2lkICgqd2tTZXRO
U1VSTFJlcXVlc3RTaG91bGRDb250ZW50U25pZmYpKE5TTXV0YWJsZVVSTFJlcXVlc3QgKiwgQk9P
TCk7CitXRUJDT1JFX0VYUE9SVCBpZCAoKndrQ3JlYXRlTlNVUkxDb25uZWN0aW9uRGVsZWdhdGVQ
cm94eSkodm9pZCk7CitXRUJDT1JFX0VYUE9SVCB1bnNpZ25lZCAoKndrSW5pdGlhbGl6ZU1heGlt
dW1IVFRQQ29ubmVjdGlvbkNvdW50UGVySG9zdCkodW5zaWduZWQgcHJlZmVycmVkQ29ubmVjdGlv
bkNvdW50KTsKK1dFQkNPUkVfRVhQT1JUIGludCAoKndrR2V0SFRUUFJlcXVlc3RQcmlvcml0eSko
Q0ZVUkxSZXF1ZXN0UmVmKTsKK1dFQkNPUkVfRVhQT1JUIHZvaWQgKCp3a1NldEhUVFBSZXF1ZXN0
TWF4aW11bVByaW9yaXR5KShpbnQgcHJpb3JpdHkpOworV0VCQ09SRV9FWFBPUlQgdm9pZCAoKndr
U2V0SFRUUFJlcXVlc3RQcmlvcml0eSkoQ0ZVUkxSZXF1ZXN0UmVmLCBpbnQgcHJpb3JpdHkpOwor
V0VCQ09SRV9FWFBPUlQgdm9pZCAoKndrU2V0SFRUUFJlcXVlc3RNaW5pbXVtRmFzdExhbmVQcmlv
cml0eSkoaW50IHByaW9yaXR5KTsKK1dFQkNPUkVfRVhQT1JUIHZvaWQgKCp3a0hUVFBSZXF1ZXN0
RW5hYmxlUGlwZWxpbmluZykoQ0ZVUkxSZXF1ZXN0UmVmKTsKK1dFQkNPUkVfRVhQT1JUIHZvaWQg
KCp3a1NldENPTk5FQ1RQcm94eUZvclN0cmVhbSkoQ0ZSZWFkU3RyZWFtUmVmLCBDRlN0cmluZ1Jl
ZiBwcm94eUhvc3QsIENGTnVtYmVyUmVmIHByb3h5UG9ydCk7CitXRUJDT1JFX0VYUE9SVCB2b2lk
ICgqd2tTZXRDT05ORUNUUHJveHlBdXRob3JpemF0aW9uRm9yU3RyZWFtKShDRlJlYWRTdHJlYW1S
ZWYsIENGU3RyaW5nUmVmIHByb3h5QXV0aG9yaXphdGlvblN0cmluZyk7CitXRUJDT1JFX0VYUE9S
VCB2b2lkICgqd2tTZXRDb29raWVTdG9yYWdlUHJpdmF0ZUJyb3dzaW5nRW5hYmxlZCkoQk9PTCk7
CitXRUJDT1JFX0VYUE9SVCBDRkhUVFBNZXNzYWdlUmVmICgqd2tDb3B5Q09OTkVDVFByb3h5UmVz
cG9uc2UpKENGUmVhZFN0cmVhbVJlZiwgQ0ZVUkxSZWYgcmVzcG9uc2VVUkwsIENGU3RyaW5nUmVm
IHByb3h5SG9zdCwgQ0ZOdW1iZXJSZWYgcHJveHlQb3J0KTsKK1dFQkNPUkVfRVhQT1JUIGJvb2wg
KCp3a0V4ZWN1dGFibGVXYXNMaW5rZWRPbk9yQWZ0ZXJJT1NWZXJzaW9uKShpbnQpOworV0VCQ09S
RV9FWFBPUlQgaW50ICgqd2tHZXREZXZpY2VDbGFzcykodm9pZCk7CitXRUJDT1JFX0VYUE9SVCBD
R1NpemUgKCp3a0dldFNjcmVlblNpemUpKHZvaWQpOworV0VCQ09SRV9FWFBPUlQgQ0dTaXplICgq
d2tHZXRBdmFpbGFibGVTY3JlZW5TaXplKSh2b2lkKTsKK1dFQkNPUkVfRVhQT1JUIHZvaWQgKCp3
a1NldExheWVyQ29udGVudHNTY2FsZSkoQ0FMYXllciAqKTsKK1dFQkNPUkVfRVhQT1JUIGZsb2F0
ICgqd2tHZXRTY3JlZW5TY2FsZUZhY3Rvcikodm9pZCk7CitXRUJDT1JFX0VYUE9SVCBib29sICgq
d2tJc0dCMTgwMzBDb21wbGlhbmNlUmVxdWlyZWQpKHZvaWQpOworV0VCQ09SRV9FWFBPUlQgdm9p
ZCAoKndrQ0dQYXRoQWRkUm91bmRlZFJlY3QpKENHTXV0YWJsZVBhdGhSZWYgcGF0aCwgY29uc3Qg
Q0dBZmZpbmVUcmFuc2Zvcm0qIG1hdHJpeCwgQ0dSZWN0IHJlY3QsIENHRmxvYXQgY29ybmVyV2lk
dGgsIENHRmxvYXQgY29ybmVySGVpZ2h0KTsKK1dFQkNPUkVfRVhQT1JUIHZvaWQgKCp3a0NGVVJM
UmVxdWVzdEFsbG93QWxsUG9zdENhY2hpbmcpKENGVVJMUmVxdWVzdFJlZik7CitXRUJDT1JFX0VY
UE9SVCBDRkFycmF5UmVmICgqd2tDb3B5TlNVUkxSZXNwb25zZUNlcnRpZmljYXRlQ2hhaW4pKE5T
VVJMUmVzcG9uc2UqKTsKK1dFQkNPUkVfRVhQT1JUIENGU3RyaW5nRW5jb2RpbmcgKCp3a0dldFdl
YkRlZmF1bHRDRlN0cmluZ0VuY29kaW5nKSh2b2lkKTsKIAogI2lmIFVTRShDRk5FVFdPUkspCi1D
RkhUVFBDb29raWVTdG9yYWdlUmVmICgqd2tHZXREZWZhdWx0SFRUUENvb2tpZVN0b3JhZ2UpKCk7
Ci1XS0NGVVJMQ3JlZGVudGlhbFJlZiAoKndrQ29weUNyZWRlbnRpYWxGcm9tQ0ZQZXJzaXN0ZW50
U3RvcmFnZSkoQ0ZVUkxQcm90ZWN0aW9uU3BhY2VSZWYgcHJvdGVjdGlvblNwYWNlKTsKLXZvaWQg
KCp3a1NldENGVVJMUmVxdWVzdFNob3VsZENvbnRlbnRTbmlmZikoQ0ZNdXRhYmxlVVJMUmVxdWVz
dFJlZiwgYm9vbCk7Ci12b2lkICgqd2tTZXRSZXF1ZXN0U3RvcmFnZVNlc3Npb24pKENGVVJMU3Rv
cmFnZVNlc3Npb25SZWYsIENGTXV0YWJsZVVSTFJlcXVlc3RSZWYpOworV0VCQ09SRV9FWFBPUlQg
Q0ZIVFRQQ29va2llU3RvcmFnZVJlZiAoKndrR2V0RGVmYXVsdEhUVFBDb29raWVTdG9yYWdlKSgp
OworV0VCQ09SRV9FWFBPUlQgV0tDRlVSTENyZWRlbnRpYWxSZWYgKCp3a0NvcHlDcmVkZW50aWFs
RnJvbUNGUGVyc2lzdGVudFN0b3JhZ2UpKENGVVJMUHJvdGVjdGlvblNwYWNlUmVmIHByb3RlY3Rp
b25TcGFjZSk7CitXRUJDT1JFX0VYUE9SVCB2b2lkICgqd2tTZXRDRlVSTFJlcXVlc3RTaG91bGRD
b250ZW50U25pZmYpKENGTXV0YWJsZVVSTFJlcXVlc3RSZWYsIGJvb2wpOworV0VCQ09SRV9FWFBP
UlQgdm9pZCAoKndrU2V0UmVxdWVzdFN0b3JhZ2VTZXNzaW9uKShDRlVSTFN0b3JhZ2VTZXNzaW9u
UmVmLCBDRk11dGFibGVVUkxSZXF1ZXN0UmVmKTsKICNlbmRpZgogCi1ib29sICgqd2tHZXRWZXJ0
aWNhbEdseXBoc0ZvckNoYXJhY3RlcnMpKENURm9udFJlZiwgY29uc3QgVW5pQ2hhcltdLCBDR0ds
eXBoW10sIHNpemVfdCk7Ci1DVExpbmVSZWYgKCp3a0NyZWF0ZUNUTGluZVdpdGhVbmlDaGFyUHJv
dmlkZXIpKGNvbnN0IFVuaUNoYXIqICgqcHJvdmlkZSkoQ0ZJbmRleCBzdHJpbmdJbmRleCwgQ0ZJ
bmRleCogY2hhckNvdW50LCBDRkRpY3Rpb25hcnlSZWYqIGF0dHJpYnV0ZXMsIHZvaWQqKSwgdm9p
ZCAoKmRpc3Bvc2UpKGNvbnN0IFVuaUNoYXIqIGNoYXJzLCB2b2lkKiksIHZvaWQqKTsKLWJvb2wg
KCp3a0NURm9udFRyYW5zZm9ybUdseXBocykoQ1RGb250UmVmIGZvbnQsIENHR2x5cGggZ2x5cGhz
W10sIENHU2l6ZSBhZHZhbmNlc1tdLCBDRkluZGV4IGNvdW50LCB3a0NURm9udFRyYW5zZm9ybU9w
dGlvbnMgb3B0aW9ucyk7CitXRUJDT1JFX0VYUE9SVCBib29sICgqd2tHZXRWZXJ0aWNhbEdseXBo
c0ZvckNoYXJhY3RlcnMpKENURm9udFJlZiwgY29uc3QgVW5pQ2hhcltdLCBDR0dseXBoW10sIHNp
emVfdCk7CitXRUJDT1JFX0VYUE9SVCBDVExpbmVSZWYgKCp3a0NyZWF0ZUNUTGluZVdpdGhVbmlD
aGFyUHJvdmlkZXIpKGNvbnN0IFVuaUNoYXIqICgqcHJvdmlkZSkoQ0ZJbmRleCBzdHJpbmdJbmRl
eCwgQ0ZJbmRleCogY2hhckNvdW50LCBDRkRpY3Rpb25hcnlSZWYqIGF0dHJpYnV0ZXMsIHZvaWQq
KSwgdm9pZCAoKmRpc3Bvc2UpKGNvbnN0IFVuaUNoYXIqIGNoYXJzLCB2b2lkKiksIHZvaWQqKTsK
K1dFQkNPUkVfRVhQT1JUIGJvb2wgKCp3a0NURm9udFRyYW5zZm9ybUdseXBocykoQ1RGb250UmVm
IGZvbnQsIENHR2x5cGggZ2x5cGhzW10sIENHU2l6ZSBhZHZhbmNlc1tdLCBDRkluZGV4IGNvdW50
LCB3a0NURm9udFRyYW5zZm9ybU9wdGlvbnMgb3B0aW9ucyk7CiAKLUNHU2l6ZSAoKndrQ1RSdW5H
ZXRJbml0aWFsQWR2YW5jZSkoQ1RSdW5SZWYpOworV0VCQ09SRV9FWFBPUlQgQ0dTaXplICgqd2tD
VFJ1bkdldEluaXRpYWxBZHZhbmNlKShDVFJ1blJlZik7CiAKLUNUVHlwZXNldHRlclJlZiAoKndr
Q3JlYXRlQ1RUeXBlc2V0dGVyV2l0aFVuaUNoYXJQcm92aWRlckFuZE9wdGlvbnMpKGNvbnN0IFVu
aUNoYXIqICgqcHJvdmlkZSkoQ0ZJbmRleCBzdHJpbmdJbmRleCwgQ0ZJbmRleCogY2hhckNvdW50
LCBDRkRpY3Rpb25hcnlSZWYqIGF0dHJpYnV0ZXMsIHZvaWQqKSwgdm9pZCAoKmRpc3Bvc2UpKGNv
bnN0IFVuaUNoYXIqIGNoYXJzLCB2b2lkKiksIHZvaWQqLCBDRkRpY3Rpb25hcnlSZWYgb3B0aW9u
cyk7CitXRUJDT1JFX0VYUE9SVCBDVFR5cGVzZXR0ZXJSZWYgKCp3a0NyZWF0ZUNUVHlwZXNldHRl
cldpdGhVbmlDaGFyUHJvdmlkZXJBbmRPcHRpb25zKShjb25zdCBVbmlDaGFyKiAoKnByb3ZpZGUp
KENGSW5kZXggc3RyaW5nSW5kZXgsIENGSW5kZXgqIGNoYXJDb3VudCwgQ0ZEaWN0aW9uYXJ5UmVm
KiBhdHRyaWJ1dGVzLCB2b2lkKiksIHZvaWQgKCpkaXNwb3NlKShjb25zdCBVbmlDaGFyKiBjaGFy
cywgdm9pZCopLCB2b2lkKiwgQ0ZEaWN0aW9uYXJ5UmVmIG9wdGlvbnMpOwogCiAjaWYgIVBMQVRG
T1JNKElPU19TSU1VTEFUT1IpCi1DR0NvbnRleHRSZWYgKCp3a0lPU3VyZmFjZUNvbnRleHRDcmVh
dGUpKElPU3VyZmFjZVJlZiBzdXJmYWNlLCB1bnNpZ25lZCB3aWR0aCwgdW5zaWduZWQgaGVpZ2h0
LCBDR0NvbG9yU3BhY2VSZWYgY29sb3JTcGFjZSk7Ci1DR0ltYWdlUmVmICgqd2tJT1N1cmZhY2VD
b250ZXh0Q3JlYXRlSW1hZ2UpKENHQ29udGV4dFJlZiBjb250ZXh0KTsKK1dFQkNPUkVfRVhQT1JU
IENHQ29udGV4dFJlZiAoKndrSU9TdXJmYWNlQ29udGV4dENyZWF0ZSkoSU9TdXJmYWNlUmVmIHN1
cmZhY2UsIHVuc2lnbmVkIHdpZHRoLCB1bnNpZ25lZCBoZWlnaHQsIENHQ29sb3JTcGFjZVJlZiBj
b2xvclNwYWNlKTsKK1dFQkNPUkVfRVhQT1JUIENHSW1hZ2VSZWYgKCp3a0lPU3VyZmFjZUNvbnRl
eHRDcmVhdGVJbWFnZSkoQ0dDb250ZXh0UmVmIGNvbnRleHQpOwogI2VuZGlmIC8vICFQTEFURk9S
TShJT1NfU0lNVUxBVE9SKQogCiAjaWYgUExBVEZPUk0oSU9TX1NJTVVMQVRPUikKLXZvaWQgKCp3
a1NldENyYXNoUmVwb3J0QXBwbGljYXRpb25TcGVjaWZpY0luZm9ybWF0aW9uKShDRlN0cmluZ1Jl
Zik7CitXRUJDT1JFX0VYUE9SVCB2b2lkICgqd2tTZXRDcmFzaFJlcG9ydEFwcGxpY2F0aW9uU3Bl
Y2lmaWNJbmZvcm1hdGlvbikoQ0ZTdHJpbmdSZWYpOwogI2VuZGlmCiAKLUNGVVJMU3RvcmFnZVNl
c3Npb25SZWYgKCp3a0NyZWF0ZVByaXZhdGVTdG9yYWdlU2Vzc2lvbikoQ0ZTdHJpbmdSZWYpOwot
TlNVUkxSZXF1ZXN0KiAoKndrQ29weVJlcXVlc3RXaXRoU3RvcmFnZVNlc3Npb24pKENGVVJMU3Rv
cmFnZVNlc3Npb25SZWYsIE5TVVJMUmVxdWVzdCopOwotQ0ZIVFRQQ29va2llU3RvcmFnZVJlZiAo
KndrQ29weUhUVFBDb29raWVTdG9yYWdlKShDRlVSTFN0b3JhZ2VTZXNzaW9uUmVmKTsKLXVuc2ln
bmVkICgqd2tHZXRIVFRQQ29va2llQWNjZXB0UG9saWN5KShDRkhUVFBDb29raWVTdG9yYWdlUmVm
KTsKLXZvaWQgKCp3a1NldEhUVFBDb29raWVBY2NlcHRQb2xpY3kpKENGSFRUUENvb2tpZVN0b3Jh
Z2VSZWYsIHVuc2lnbmVkKTsKLU5TQXJyYXkgKigqd2tIVFRQQ29va2llcykoQ0ZIVFRQQ29va2ll
U3RvcmFnZVJlZik7Ci1OU0FycmF5ICooKndrSFRUUENvb2tpZXNGb3JVUkwpKENGSFRUUENvb2tp
ZVN0b3JhZ2VSZWYsIE5TVVJMICosIE5TVVJMICopOwotdm9pZCAoKndrU2V0SFRUUENvb2tpZXNG
b3JVUkwpKENGSFRUUENvb2tpZVN0b3JhZ2VSZWYsIE5TQXJyYXkgKiwgTlNVUkwgKiwgTlNVUkwg
Kik7Ci12b2lkICgqd2tEZWxldGVBbGxIVFRQQ29va2llcykoQ0ZIVFRQQ29va2llU3RvcmFnZVJl
Zik7Ci12b2lkICgqd2tEZWxldGVIVFRQQ29va2llKShDRkhUVFBDb29raWVTdG9yYWdlUmVmLCBO
U0hUVFBDb29raWUgKik7Ci0KLUNGU3RyaW5nUmVmICgqd2tHZXRDRlVSTFJlc3BvbnNlTUlNRVR5
cGUpKENGVVJMUmVzcG9uc2VSZWYpOwotQ0ZVUkxSZWYgKCp3a0dldENGVVJMUmVzcG9uc2VVUkwp
KENGVVJMUmVzcG9uc2VSZWYpOwotQ0ZIVFRQTWVzc2FnZVJlZiAoKndrR2V0Q0ZVUkxSZXNwb25z
ZUhUVFBSZXNwb25zZSkoQ0ZVUkxSZXNwb25zZVJlZik7Ci1DRlN0cmluZ1JlZiAoKndrQ29weUNG
VVJMUmVzcG9uc2VTdWdnZXN0ZWRGaWxlbmFtZSkoQ0ZVUkxSZXNwb25zZVJlZik7Ci12b2lkICgq
d2tTZXRDRlVSTFJlc3BvbnNlTUlNRVR5cGUpKENGVVJMUmVzcG9uc2VSZWYsIENGU3RyaW5nUmVm
IG1pbWVUeXBlKTsKLQotdm9pZCgqd2tEZXN0cm95UmVuZGVyaW5nUmVzb3VyY2VzKSh2b2lkKTsK
LQotYm9vbCAoKndrQ2FwdGlvbkFwcGVhcmFuY2VIYXNVc2VyUHJlZmVyZW5jZXMpKHZvaWQpOwot
Ym9vbCAoKndrQ2FwdGlvbkFwcGVhcmFuY2VTaG93Q2FwdGlvbnNXaGVuQXZhaWxhYmxlKSh2b2lk
KTsKLUNHQ29sb3JSZWYoKndrQ2FwdGlvbkFwcGVhcmFuY2VDb3B5Rm9yZWdyb3VuZENvbG9yKSh2
b2lkKTsKLUNHQ29sb3JSZWYoKndrQ2FwdGlvbkFwcGVhcmFuY2VDb3B5QmFja2dyb3VuZENvbG9y
KSh2b2lkKTsKLUNHQ29sb3JSZWYoKndrQ2FwdGlvbkFwcGVhcmFuY2VDb3B5V2luZG93Q29sb3Ip
KHZvaWQpOwotYm9vbCgqd2tDYXB0aW9uQXBwZWFyYW5jZUdldEZvcmVncm91bmRPcGFjaXR5KShD
R0Zsb2F0Kik7Ci1ib29sKCp3a0NhcHRpb25BcHBlYXJhbmNlR2V0QmFja2dyb3VuZE9wYWNpdHkp
KENHRmxvYXQqKTsKLWJvb2woKndrQ2FwdGlvbkFwcGVhcmFuY2VHZXRXaW5kb3dPcGFjaXR5KShD
R0Zsb2F0Kik7Ci1DR0ZvbnRSZWYoKndrQ2FwdGlvbkFwcGVhcmFuY2VDb3B5Rm9udEZvclN0eWxl
KShpbnQpOwotYm9vbCgqd2tDYXB0aW9uQXBwZWFyYW5jZUdldFJlbGF0aXZlQ2hhcmFjdGVyU2l6
ZSkoQ0dGbG9hdCopOwotaW50KCp3a0NhcHRpb25BcHBlYXJhbmNlR2V0VGV4dEVkZ2VTdHlsZSko
dm9pZCk7Ci1DRlN0cmluZ1JlZigqd2tDYXB0aW9uQXBwZWFyYW5jZUdldFNldHRpbmdzQ2hhbmdl
ZE5vdGlmaWNhdGlvbikodm9pZCk7CitXRUJDT1JFX0VYUE9SVCBDRlVSTFN0b3JhZ2VTZXNzaW9u
UmVmICgqd2tDcmVhdGVQcml2YXRlU3RvcmFnZVNlc3Npb24pKENGU3RyaW5nUmVmKTsKK1dFQkNP
UkVfRVhQT1JUIE5TVVJMUmVxdWVzdCogKCp3a0NvcHlSZXF1ZXN0V2l0aFN0b3JhZ2VTZXNzaW9u
KShDRlVSTFN0b3JhZ2VTZXNzaW9uUmVmLCBOU1VSTFJlcXVlc3QqKTsKK1dFQkNPUkVfRVhQT1JU
IENGSFRUUENvb2tpZVN0b3JhZ2VSZWYgKCp3a0NvcHlIVFRQQ29va2llU3RvcmFnZSkoQ0ZVUkxT
dG9yYWdlU2Vzc2lvblJlZik7CitXRUJDT1JFX0VYUE9SVCB1bnNpZ25lZCAoKndrR2V0SFRUUENv
b2tpZUFjY2VwdFBvbGljeSkoQ0ZIVFRQQ29va2llU3RvcmFnZVJlZik7CitXRUJDT1JFX0VYUE9S
VCB2b2lkICgqd2tTZXRIVFRQQ29va2llQWNjZXB0UG9saWN5KShDRkhUVFBDb29raWVTdG9yYWdl
UmVmLCB1bnNpZ25lZCk7CitXRUJDT1JFX0VYUE9SVCBOU0FycmF5ICooKndrSFRUUENvb2tpZXMp
KENGSFRUUENvb2tpZVN0b3JhZ2VSZWYpOworV0VCQ09SRV9FWFBPUlQgTlNBcnJheSAqKCp3a0hU
VFBDb29raWVzRm9yVVJMKShDRkhUVFBDb29raWVTdG9yYWdlUmVmLCBOU1VSTCAqLCBOU1VSTCAq
KTsKK1dFQkNPUkVfRVhQT1JUIHZvaWQgKCp3a1NldEhUVFBDb29raWVzRm9yVVJMKShDRkhUVFBD
b29raWVTdG9yYWdlUmVmLCBOU0FycmF5ICosIE5TVVJMICosIE5TVVJMICopOworV0VCQ09SRV9F
WFBPUlQgdm9pZCAoKndrRGVsZXRlQWxsSFRUUENvb2tpZXMpKENGSFRUUENvb2tpZVN0b3JhZ2VS
ZWYpOworV0VCQ09SRV9FWFBPUlQgdm9pZCAoKndrRGVsZXRlSFRUUENvb2tpZSkoQ0ZIVFRQQ29v
a2llU3RvcmFnZVJlZiwgTlNIVFRQQ29va2llICopOworCitXRUJDT1JFX0VYUE9SVCBDRlN0cmlu
Z1JlZiAoKndrR2V0Q0ZVUkxSZXNwb25zZU1JTUVUeXBlKShDRlVSTFJlc3BvbnNlUmVmKTsKK1dF
QkNPUkVfRVhQT1JUIENGVVJMUmVmICgqd2tHZXRDRlVSTFJlc3BvbnNlVVJMKShDRlVSTFJlc3Bv
bnNlUmVmKTsKK1dFQkNPUkVfRVhQT1JUIENGSFRUUE1lc3NhZ2VSZWYgKCp3a0dldENGVVJMUmVz
cG9uc2VIVFRQUmVzcG9uc2UpKENGVVJMUmVzcG9uc2VSZWYpOworV0VCQ09SRV9FWFBPUlQgQ0ZT
dHJpbmdSZWYgKCp3a0NvcHlDRlVSTFJlc3BvbnNlU3VnZ2VzdGVkRmlsZW5hbWUpKENGVVJMUmVz
cG9uc2VSZWYpOworV0VCQ09SRV9FWFBPUlQgdm9pZCAoKndrU2V0Q0ZVUkxSZXNwb25zZU1JTUVU
eXBlKShDRlVSTFJlc3BvbnNlUmVmLCBDRlN0cmluZ1JlZiBtaW1lVHlwZSk7CisKK1dFQkNPUkVf
RVhQT1JUIHZvaWQoKndrRGVzdHJveVJlbmRlcmluZ1Jlc291cmNlcykodm9pZCk7CisKK1dFQkNP
UkVfRVhQT1JUIGJvb2wgKCp3a0NhcHRpb25BcHBlYXJhbmNlSGFzVXNlclByZWZlcmVuY2VzKSh2
b2lkKTsKK1dFQkNPUkVfRVhQT1JUIGJvb2wgKCp3a0NhcHRpb25BcHBlYXJhbmNlU2hvd0NhcHRp
b25zV2hlbkF2YWlsYWJsZSkodm9pZCk7CitXRUJDT1JFX0VYUE9SVCBDR0NvbG9yUmVmKCp3a0Nh
cHRpb25BcHBlYXJhbmNlQ29weUZvcmVncm91bmRDb2xvcikodm9pZCk7CitXRUJDT1JFX0VYUE9S
VCBDR0NvbG9yUmVmKCp3a0NhcHRpb25BcHBlYXJhbmNlQ29weUJhY2tncm91bmRDb2xvcikodm9p
ZCk7CitXRUJDT1JFX0VYUE9SVCBDR0NvbG9yUmVmKCp3a0NhcHRpb25BcHBlYXJhbmNlQ29weVdp
bmRvd0NvbG9yKSh2b2lkKTsKK1dFQkNPUkVfRVhQT1JUIGJvb2woKndrQ2FwdGlvbkFwcGVhcmFu
Y2VHZXRGb3JlZ3JvdW5kT3BhY2l0eSkoQ0dGbG9hdCopOworV0VCQ09SRV9FWFBPUlQgYm9vbCgq
d2tDYXB0aW9uQXBwZWFyYW5jZUdldEJhY2tncm91bmRPcGFjaXR5KShDR0Zsb2F0Kik7CitXRUJD
T1JFX0VYUE9SVCBib29sKCp3a0NhcHRpb25BcHBlYXJhbmNlR2V0V2luZG93T3BhY2l0eSkoQ0dG
bG9hdCopOworV0VCQ09SRV9FWFBPUlQgQ0dGb250UmVmKCp3a0NhcHRpb25BcHBlYXJhbmNlQ29w
eUZvbnRGb3JTdHlsZSkoaW50KTsKK1dFQkNPUkVfRVhQT1JUIGJvb2woKndrQ2FwdGlvbkFwcGVh
cmFuY2VHZXRSZWxhdGl2ZUNoYXJhY3RlclNpemUpKENHRmxvYXQqKTsKK1dFQkNPUkVfRVhQT1JU
IGludCgqd2tDYXB0aW9uQXBwZWFyYW5jZUdldFRleHRFZGdlU3R5bGUpKHZvaWQpOworV0VCQ09S
RV9FWFBPUlQgQ0ZTdHJpbmdSZWYoKndrQ2FwdGlvbkFwcGVhcmFuY2VHZXRTZXR0aW5nc0NoYW5n
ZWROb3RpZmljYXRpb24pKHZvaWQpOwogCiAjaWYgRU5BQkxFKFBVQkxJQ19TVUZGSVhfTElTVCkK
LWJvb2wgKCp3a0lzUHVibGljU3VmZml4KShOU1N0cmluZyAqaG9zdCk7CitXRUJDT1JFX0VYUE9S
VCBib29sICgqd2tJc1B1YmxpY1N1ZmZpeCkoTlNTdHJpbmcgKmhvc3QpOwogI2VuZGlmCiAKICNp
ZiBFTkFCTEUoQ0FDSEVfUEFSVElUSU9OSU5HKQotQ0ZTdHJpbmdSZWYgKCp3a0NhY2hlUGFydGl0
aW9uS2V5KSh2b2lkKTsKK1dFQkNPUkVfRVhQT1JUIENGU3RyaW5nUmVmICgqd2tDYWNoZVBhcnRp
dGlvbktleSkodm9pZCk7CiAjZW5kaWYKIAotQ0ZTdHJpbmdSZWYgKCp3a0dldFVzZXJBZ2VudCko
dm9pZCk7Ci1DRlN0cmluZ1JlZiAoKndrR2V0RGV2aWNlTmFtZSkodm9pZCk7Ci1DRlN0cmluZ1Jl
ZiAoKndrR2V0T1NOYW1lRm9yVXNlckFnZW50KSh2b2lkKTsKLUNGU3RyaW5nUmVmICgqd2tHZXRQ
bGF0Zm9ybU5hbWVGb3JOYXZpZ2F0b3IpKHZvaWQpOwotQ0ZTdHJpbmdSZWYgKCp3a0dldFZlbmRv
ck5hbWVGb3JOYXZpZ2F0b3IpKHZvaWQpOworV0VCQ09SRV9FWFBPUlQgQ0ZTdHJpbmdSZWYgKCp3
a0dldFVzZXJBZ2VudCkodm9pZCk7CitXRUJDT1JFX0VYUE9SVCBDRlN0cmluZ1JlZiAoKndrR2V0
RGV2aWNlTmFtZSkodm9pZCk7CitXRUJDT1JFX0VYUE9SVCBDRlN0cmluZ1JlZiAoKndrR2V0T1NO
YW1lRm9yVXNlckFnZW50KSh2b2lkKTsKK1dFQkNPUkVfRVhQT1JUIENGU3RyaW5nUmVmICgqd2tH
ZXRQbGF0Zm9ybU5hbWVGb3JOYXZpZ2F0b3IpKHZvaWQpOworV0VCQ09SRV9FWFBPUlQgQ0ZTdHJp
bmdSZWYgKCp3a0dldFZlbmRvck5hbWVGb3JOYXZpZ2F0b3IpKHZvaWQpOwogCi1pbnQgKCp3a0V4
ZXJuYWxEZXZpY2VUeXBlRm9yUGxheWVyKShBVlBsYXllciAqKTsKLU5TU3RyaW5nICooKndrRXhl
cm5hbERldmljZURpc3BsYXlOYW1lRm9yUGxheWVyKShBVlBsYXllciAqKTsKK1dFQkNPUkVfRVhQ
T1JUIGludCAoKndrRXhlcm5hbERldmljZVR5cGVGb3JQbGF5ZXIpKEFWUGxheWVyICopOworV0VC
Q09SRV9FWFBPUlQgTlNTdHJpbmcgKigqd2tFeGVybmFsRGV2aWNlRGlzcGxheU5hbWVGb3JQbGF5
ZXIpKEFWUGxheWVyICopOwogCi1ib29sICgqd2tRdWVyeURlY29kZXJBdmFpbGFiaWxpdHkpKHZv
aWQpOworV0VCQ09SRV9FWFBPUlQgYm9vbCAoKndrUXVlcnlEZWNvZGVyQXZhaWxhYmlsaXR5KSh2
b2lkKTsKIApJbmRleDogU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vaW9zL1dlYlZpZGVvRnVsbHNj
cmVlbk1vZGVsTWVkaWFFbGVtZW50LmgKPT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PQotLS0gU291cmNlL1dlYkNvcmUvcGxh
dGZvcm0vaW9zL1dlYlZpZGVvRnVsbHNjcmVlbk1vZGVsTWVkaWFFbGVtZW50LmgJKHJldmlzaW9u
IDE3MjY1OCkKKysrIFNvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL2lvcy9XZWJWaWRlb0Z1bGxzY3Jl
ZW5Nb2RlbE1lZGlhRWxlbWVudC5oCSh3b3JraW5nIGNvcHkpCkBAIC00NCwzMiArNDQsMzIgQEAg
Y2xhc3MgV2ViVmlkZW9GdWxsc2NyZWVuSW50ZXJmYWNlOwogCiBjbGFzcyBXZWJWaWRlb0Z1bGxz
Y3JlZW5Nb2RlbE1lZGlhRWxlbWVudCA6IHB1YmxpYyBXZWJWaWRlb0Z1bGxzY3JlZW5Nb2RlbCwg
cHVibGljIEV2ZW50TGlzdGVuZXIgewogcHVibGljOgotICAgIFdlYlZpZGVvRnVsbHNjcmVlbk1v
ZGVsTWVkaWFFbGVtZW50KCk7Ci0gICAgdmlydHVhbCB+V2ViVmlkZW9GdWxsc2NyZWVuTW9kZWxN
ZWRpYUVsZW1lbnQoKTsKKyAgICBXRUJDT1JFX0VYUE9SVCBXZWJWaWRlb0Z1bGxzY3JlZW5Nb2Rl
bE1lZGlhRWxlbWVudCgpOworICAgIFdFQkNPUkVfRVhQT1JUIHZpcnR1YWwgfldlYlZpZGVvRnVs
bHNjcmVlbk1vZGVsTWVkaWFFbGVtZW50KCk7CiAgICAgdm9pZCBzZXRXZWJWaWRlb0Z1bGxzY3Jl
ZW5JbnRlcmZhY2UoV2ViVmlkZW9GdWxsc2NyZWVuSW50ZXJmYWNlKiBpbnRlcmZhY2UpIHttX3Zp
ZGVvRnVsbHNjcmVlbkludGVyZmFjZSA9IGludGVyZmFjZTt9Ci0gICAgdm9pZCBzZXRNZWRpYUVs
ZW1lbnQoSFRNTE1lZGlhRWxlbWVudCopOwotICAgIHZvaWQgc2V0VmlkZW9GdWxsc2NyZWVuTGF5
ZXIoUGxhdGZvcm1MYXllciopOworICAgIFdFQkNPUkVfRVhQT1JUIHZvaWQgc2V0TWVkaWFFbGVt
ZW50KEhUTUxNZWRpYUVsZW1lbnQqKTsKKyAgICBXRUJDT1JFX0VYUE9SVCB2b2lkIHNldFZpZGVv
RnVsbHNjcmVlbkxheWVyKFBsYXRmb3JtTGF5ZXIqKTsKICAgICAKLSAgICB2aXJ0dWFsIHZvaWQg
aGFuZGxlRXZlbnQoV2ViQ29yZTo6U2NyaXB0RXhlY3V0aW9uQ29udGV4dCosIFdlYkNvcmU6OkV2
ZW50Kikgb3ZlcnJpZGU7CisgICAgV0VCQ09SRV9FWFBPUlQgdmlydHVhbCB2b2lkIGhhbmRsZUV2
ZW50KFdlYkNvcmU6OlNjcmlwdEV4ZWN1dGlvbkNvbnRleHQqLCBXZWJDb3JlOjpFdmVudCopIG92
ZXJyaWRlOwogICAgIHZvaWQgdXBkYXRlRm9yRXZlbnROYW1lKGNvbnN0IFdURjo6QXRvbWljU3Ry
aW5nJik7CiAgICAgYm9vbCBvcGVyYXRvcj09KGNvbnN0IEV2ZW50TGlzdGVuZXImIHJocykgb3Zl
cnJpZGUKICAgICAgICAge3JldHVybiBzdGF0aWNfY2FzdDxXZWJDb3JlOjpFdmVudExpc3RlbmVy
Kj4odGhpcykgPT0gJnJoczt9CiAKLSAgICB2aXJ0dWFsIHZvaWQgcGxheSgpIG92ZXJyaWRlOwot
ICAgIHZpcnR1YWwgdm9pZCBwYXVzZSgpIG92ZXJyaWRlOwotICAgIHZpcnR1YWwgdm9pZCB0b2dn
bGVQbGF5U3RhdGUoKSBvdmVycmlkZTsKLSAgICB2aXJ0dWFsIHZvaWQgYmVnaW5TY3J1YmJpbmco
KSBvdmVycmlkZTsKLSAgICB2aXJ0dWFsIHZvaWQgZW5kU2NydWJiaW5nKCkgb3ZlcnJpZGU7Ci0g
ICAgdmlydHVhbCB2b2lkIHNlZWtUb1RpbWUoZG91YmxlIHRpbWUpIG92ZXJyaWRlOwotICAgIHZp
cnR1YWwgdm9pZCBmYXN0U2Vlayhkb3VibGUgdGltZSkgb3ZlcnJpZGU7Ci0gICAgdmlydHVhbCB2
b2lkIGJlZ2luU2Nhbm5pbmdGb3J3YXJkKCkgb3ZlcnJpZGU7Ci0gICAgdmlydHVhbCB2b2lkIGJl
Z2luU2Nhbm5pbmdCYWNrd2FyZCgpIG92ZXJyaWRlOwotICAgIHZpcnR1YWwgdm9pZCBlbmRTY2Fu
bmluZygpIG92ZXJyaWRlOwotICAgIHZpcnR1YWwgdm9pZCByZXF1ZXN0RXhpdEZ1bGxzY3JlZW4o
KSBvdmVycmlkZTsKLSAgICB2aXJ0dWFsIHZvaWQgc2V0VmlkZW9MYXllckZyYW1lKEZsb2F0UmVj
dCkgb3ZlcnJpZGU7Ci0gICAgdmlydHVhbCB2b2lkIHNldFZpZGVvTGF5ZXJHcmF2aXR5KFdlYlZp
ZGVvRnVsbHNjcmVlbk1vZGVsOjpWaWRlb0dyYXZpdHkpIG92ZXJyaWRlOwotICAgIHZpcnR1YWwg
dm9pZCBzZWxlY3RBdWRpb01lZGlhT3B0aW9uKHVpbnQ2NF90IGluZGV4KSBvdmVycmlkZTsKLSAg
ICB2aXJ0dWFsIHZvaWQgc2VsZWN0TGVnaWJsZU1lZGlhT3B0aW9uKHVpbnQ2NF90IGluZGV4KSBv
dmVycmlkZTsKKyAgICBXRUJDT1JFX0VYUE9SVCB2aXJ0dWFsIHZvaWQgcGxheSgpIG92ZXJyaWRl
OworICAgIFdFQkNPUkVfRVhQT1JUIHZpcnR1YWwgdm9pZCBwYXVzZSgpIG92ZXJyaWRlOworICAg
IFdFQkNPUkVfRVhQT1JUIHZpcnR1YWwgdm9pZCB0b2dnbGVQbGF5U3RhdGUoKSBvdmVycmlkZTsK
KyAgICBXRUJDT1JFX0VYUE9SVCB2aXJ0dWFsIHZvaWQgYmVnaW5TY3J1YmJpbmcoKSBvdmVycmlk
ZTsKKyAgICBXRUJDT1JFX0VYUE9SVCB2aXJ0dWFsIHZvaWQgZW5kU2NydWJiaW5nKCkgb3ZlcnJp
ZGU7CisgICAgV0VCQ09SRV9FWFBPUlQgdmlydHVhbCB2b2lkIHNlZWtUb1RpbWUoZG91YmxlIHRp
bWUpIG92ZXJyaWRlOworICAgIFdFQkNPUkVfRVhQT1JUIHZpcnR1YWwgdm9pZCBmYXN0U2Vlayhk
b3VibGUgdGltZSkgb3ZlcnJpZGU7CisgICAgV0VCQ09SRV9FWFBPUlQgdmlydHVhbCB2b2lkIGJl
Z2luU2Nhbm5pbmdGb3J3YXJkKCkgb3ZlcnJpZGU7CisgICAgV0VCQ09SRV9FWFBPUlQgdmlydHVh
bCB2b2lkIGJlZ2luU2Nhbm5pbmdCYWNrd2FyZCgpIG92ZXJyaWRlOworICAgIFdFQkNPUkVfRVhQ
T1JUIHZpcnR1YWwgdm9pZCBlbmRTY2FubmluZygpIG92ZXJyaWRlOworICAgIFdFQkNPUkVfRVhQ
T1JUIHZpcnR1YWwgdm9pZCByZXF1ZXN0RXhpdEZ1bGxzY3JlZW4oKSBvdmVycmlkZTsKKyAgICBX
RUJDT1JFX0VYUE9SVCB2aXJ0dWFsIHZvaWQgc2V0VmlkZW9MYXllckZyYW1lKEZsb2F0UmVjdCkg
b3ZlcnJpZGU7CisgICAgV0VCQ09SRV9FWFBPUlQgdmlydHVhbCB2b2lkIHNldFZpZGVvTGF5ZXJH
cmF2aXR5KFdlYlZpZGVvRnVsbHNjcmVlbk1vZGVsOjpWaWRlb0dyYXZpdHkpIG92ZXJyaWRlOwor
ICAgIFdFQkNPUkVfRVhQT1JUIHZpcnR1YWwgdm9pZCBzZWxlY3RBdWRpb01lZGlhT3B0aW9uKHVp
bnQ2NF90IGluZGV4KSBvdmVycmlkZTsKKyAgICBXRUJDT1JFX0VYUE9SVCB2aXJ0dWFsIHZvaWQg
c2VsZWN0TGVnaWJsZU1lZGlhT3B0aW9uKHVpbnQ2NF90IGluZGV4KSBvdmVycmlkZTsKIAogcHJp
dmF0ZToKICAgICBzdGF0aWMgY29uc3QgVmVjdG9yPFdURjo6QXRvbWljU3RyaW5nPiYgb2JzZXJ2
ZWRFdmVudE5hbWVzKCk7CkluZGV4OiBTb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9pb3Mvd2FrL1dB
S1ZpZXcubW0KPT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PQotLS0gU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vaW9zL3dhay9X
QUtWaWV3Lm1tCShyZXZpc2lvbiAxNzI2NTgpCisrKyBTb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9p
b3Mvd2FrL1dBS1ZpZXcubW0JKHdvcmtpbmcgY29weSkKQEAgLTQwLDggKzQwLDggQEAKICNpbXBv
cnQgIldlYkV2ZW50LmgiCiAjaW1wb3J0IDx3dGYvQXNzZXJ0aW9ucy5oPgogCi1OU1N0cmluZyAq
V0FLVmlld0ZyYW1lU2l6ZURpZENoYW5nZU5vdGlmaWNhdGlvbiA9ICAgQCJXQUtWaWV3RnJhbWVT
aXplRGlkQ2hhbmdlTm90aWZpY2F0aW9uIjsKLU5TU3RyaW5nICpXQUtWaWV3RGlkU2Nyb2xsTm90
aWZpY2F0aW9uID0gICAgICAgICAgICBAIldBS1ZpZXdEaWRTY3JvbGxOb3RpZmljYXRpb24iOwor
V0VCQ09SRV9FWFBPUlQgTlNTdHJpbmcgKldBS1ZpZXdGcmFtZVNpemVEaWRDaGFuZ2VOb3RpZmlj
YXRpb24gPSAgIEAiV0FLVmlld0ZyYW1lU2l6ZURpZENoYW5nZU5vdGlmaWNhdGlvbiI7CitXRUJD
T1JFX0VYUE9SVCBOU1N0cmluZyAqV0FLVmlld0RpZFNjcm9sbE5vdGlmaWNhdGlvbiA9ICAgICAg
ICAgICAgQCJXQUtWaWV3RGlkU2Nyb2xsTm90aWZpY2F0aW9uIjsKIAogc3RhdGljIFdBS1ZpZXcg
Kmdsb2JhbEZvY3VzVmlldyA9IG5pbDsKIHN0YXRpYyBDR0ludGVycG9sYXRpb25RdWFsaXR5IHNJ
bnRlcnBvbGF0aW9uUXVhbGl0eTsKSW5kZXg6IFNvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL2lvcy93
YWsvV0tDb250ZW50T2JzZXJ2YXRpb24uaAo9PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09Ci0tLSBTb3VyY2UvV2ViQ29yZS9w
bGF0Zm9ybS9pb3Mvd2FrL1dLQ29udGVudE9ic2VydmF0aW9uLmgJKHJldmlzaW9uIDE3MjY1OCkK
KysrIFNvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL2lvcy93YWsvV0tDb250ZW50T2JzZXJ2YXRpb24u
aAkod29ya2luZyBjb3B5KQpAQCAtNDEsMTQgKzQxLDE0IEBAIHR5cGVkZWYgZW51bQogCiBib29s
IFdLT2JzZXJ2aW5nQ29udGVudENoYW5nZXModm9pZCk7CiAKLXZvaWQgV0tTdG9wT2JzZXJ2aW5n
Q29udGVudENoYW5nZXModm9pZCk7Ci12b2lkIFdLQmVnaW5PYnNlcnZpbmdDb250ZW50Q2hhbmdl
cyhib29sIGFsbG93c0ludGVkZXRlcm1pbmF0ZUNoYW5nZXMpOworV0VCQ09SRV9FWFBPUlQgdm9p
ZCBXS1N0b3BPYnNlcnZpbmdDb250ZW50Q2hhbmdlcyh2b2lkKTsKK1dFQkNPUkVfRVhQT1JUIHZv
aWQgV0tCZWdpbk9ic2VydmluZ0NvbnRlbnRDaGFuZ2VzKGJvb2wgYWxsb3dzSW50ZWRldGVybWlu
YXRlQ2hhbmdlcyk7CiAKIFdLQ29udGVudENoYW5nZSBXS09ic2VydmVkQ29udGVudENoYW5nZSh2
b2lkKTsKIHZvaWQgV0tTZXRPYnNlcnZlZENvbnRlbnRDaGFuZ2UoV0tDb250ZW50Q2hhbmdlIGFD
aGFuZ2UpOwogCi1pbnQgV2ViVGhyZWFkQ291bnRPZk9ic2VydmVkQ29udGVudE1vZGlmaWVycyh2
b2lkKTsKLXZvaWQgV2ViVGhyZWFkQ2xlYXJPYnNlcnZlZENvbnRlbnRNb2RpZmllcnModm9pZCk7
CitXRUJDT1JFX0VYUE9SVCBpbnQgV2ViVGhyZWFkQ291bnRPZk9ic2VydmVkQ29udGVudE1vZGlm
aWVycyh2b2lkKTsKK1dFQkNPUkVfRVhQT1JUIHZvaWQgV2ViVGhyZWFkQ2xlYXJPYnNlcnZlZENv
bnRlbnRNb2RpZmllcnModm9pZCk7CiAKIGJvb2wgV2ViVGhyZWFkQ29udGFpbnNPYnNlcnZlZENv
bnRlbnRNb2RpZmllcih2b2lkICogYUNvbnRlbnRNb2RpZmllcik7CiB2b2lkIFdlYlRocmVhZEFk
ZE9ic2VydmVkQ29udGVudE1vZGlmaWVyKHZvaWQgKiBhQ29udGVudE1vZGlmaWVyKTsKSW5kZXg6
IFNvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL2lvcy93YWsvV0tWaWV3LmgKPT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PQotLS0g
U291cmNlL1dlYkNvcmUvcGxhdGZvcm0vaW9zL3dhay9XS1ZpZXcuaAkocmV2aXNpb24gMTcyNjU4
KQorKysgU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vaW9zL3dhay9XS1ZpZXcuaAkod29ya2luZyBj
b3B5KQpAQCAtOTcsMzMgKzk3LDMzIEBAIHN0cnVjdCBfV0tWaWV3IHsKIAogZXh0ZXJuIFdLQ2xh
c3NJbmZvIFdLVmlld0NsYXNzSW5mbzsKIAotV0tWaWV3UmVmIFdLVmlld0NyZWF0ZVdpdGhGcmFt
ZSAoQ0dSZWN0IHJlY3QsIFdLVmlld0NvbnRleHQgKmNvbnRleHQpOworV0VCQ09SRV9FWFBPUlQg
V0tWaWV3UmVmIFdLVmlld0NyZWF0ZVdpdGhGcmFtZSAoQ0dSZWN0IHJlY3QsIFdLVmlld0NvbnRl
eHQgKmNvbnRleHQpOwogdm9pZCBXS1ZpZXdJbml0aWFsaXplIChXS1ZpZXdSZWYgdmlldywgQ0dS
ZWN0IHJlY3QsIFdLVmlld0NvbnRleHQgKmNvbnRleHQpOwogCiB2b2lkIFdLVmlld1NldFZpZXdD
b250ZXh0IChXS1ZpZXdSZWYgdmlldywgV0tWaWV3Q29udGV4dCAqY29udGV4dCk7CiB2b2lkIFdL
Vmlld0dldFZpZXdDb250ZXh0IChXS1ZpZXdSZWYgdmlldywgV0tWaWV3Q29udGV4dCAqY29udGV4
dCk7CiAKLUNHUmVjdCBXS1ZpZXdHZXRCb3VuZHMgKFdLVmlld1JlZiB2aWV3KTsKK1dFQkNPUkVf
RVhQT1JUIENHUmVjdCBXS1ZpZXdHZXRCb3VuZHMgKFdLVmlld1JlZiB2aWV3KTsKIAotdm9pZCBX
S1ZpZXdTZXRGcmFtZU9yaWdpbiAoV0tWaWV3UmVmIHZpZXcsIENHUG9pbnQgbmV3UG9pbnQpOwot
dm9pZCBXS1ZpZXdTZXRGcmFtZVNpemUgKFdLVmlld1JlZiB2aWV3LCBDR1NpemUgbmV3U2l6ZSk7
CitXRUJDT1JFX0VYUE9SVCB2b2lkIFdLVmlld1NldEZyYW1lT3JpZ2luIChXS1ZpZXdSZWYgdmll
dywgQ0dQb2ludCBuZXdQb2ludCk7CitXRUJDT1JFX0VYUE9SVCB2b2lkIFdLVmlld1NldEZyYW1l
U2l6ZSAoV0tWaWV3UmVmIHZpZXcsIENHU2l6ZSBuZXdTaXplKTsKIHZvaWQgV0tWaWV3U2V0Qm91
bmRzT3JpZ2luKFdLVmlld1JlZiB2aWV3LCBDR1BvaW50IG5ld09yaWdpbik7CiB2b2lkIFdLVmll
d1NldEJvdW5kc1NpemUgKFdLVmlld1JlZiB2aWV3LCBDR1NpemUgbmV3U2l6ZSk7CiAKLUNHUmVj
dCBXS1ZpZXdHZXRGcmFtZSAoV0tWaWV3UmVmIHZpZXcpOworV0VCQ09SRV9FWFBPUlQgQ0dSZWN0
IFdLVmlld0dldEZyYW1lIChXS1ZpZXdSZWYgdmlldyk7CiAKLXZvaWQgV0tWaWV3U2V0U2NhbGUg
KFdLVmlld1JlZiB2aWV3LCBmbG9hdCBzY2FsZSk7Ci1mbG9hdCBXS1ZpZXdHZXRTY2FsZSAoV0tW
aWV3UmVmIHZpZXcpOworV0VCQ09SRV9FWFBPUlQgdm9pZCBXS1ZpZXdTZXRTY2FsZSAoV0tWaWV3
UmVmIHZpZXcsIGZsb2F0IHNjYWxlKTsKK1dFQkNPUkVfRVhQT1JUIGZsb2F0IFdLVmlld0dldFNj
YWxlIChXS1ZpZXdSZWYgdmlldyk7CiBDR0FmZmluZVRyYW5zZm9ybSBfV0tWaWV3R2V0VHJhbnNm
b3JtKFdLVmlld1JlZiB2aWV3KTsKIAotV0FLV2luZG93ICpXS1ZpZXdHZXRXaW5kb3cgKFdLVmll
d1JlZiB2aWV3KTsKK1dFQkNPUkVfRVhQT1JUIFdBS1dpbmRvdyAqV0tWaWV3R2V0V2luZG93IChX
S1ZpZXdSZWYgdmlldyk7CiAKIENGQXJyYXlSZWYgV0tWaWV3R2V0U3Vidmlld3MgKFdLVmlld1Jl
ZiB2aWV3KTsKIAogV0tWaWV3UmVmIFdLVmlld0dldFN1cGVydmlldyAoV0tWaWV3UmVmIHZpZXcp
OwogCi12b2lkIFdLVmlld0FkZFN1YnZpZXcgKFdLVmlld1JlZiB2aWV3LCBXS1ZpZXdSZWYgc3Vi
dmlldyk7Ci12b2lkIFdLVmlld1JlbW92ZUZyb21TdXBlcnZpZXcgKFdLVmlld1JlZiB2aWV3KTsK
K1dFQkNPUkVfRVhQT1JUIHZvaWQgV0tWaWV3QWRkU3VidmlldyAoV0tWaWV3UmVmIHZpZXcsIFdL
Vmlld1JlZiBzdWJ2aWV3KTsKK1dFQkNPUkVfRVhQT1JUIHZvaWQgV0tWaWV3UmVtb3ZlRnJvbVN1
cGVydmlldyAoV0tWaWV3UmVmIHZpZXcpOwogCiBDR1BvaW50IFdLVmlld0NvbnZlcnRQb2ludFRv
U3VwZXJ2aWV3IChXS1ZpZXdSZWYgdmlldywgQ0dQb2ludCBhUG9pbnQpOwogQ0dQb2ludCBXS1Zp
ZXdDb252ZXJ0UG9pbnRGcm9tU3VwZXJ2aWV3IChXS1ZpZXdSZWYgdmlldywgQ0dQb2ludCBhUG9p
bnQpOwpAQCAtMTMyLDE4ICsxMzIsMTggQEAgQ0dQb2ludCBXS1ZpZXdDb252ZXJ0UG9pbnRGcm9t
QmFzZShXS1ZpZQogCiBDR1JlY3QgV0tWaWV3Q29udmVydFJlY3RUb1N1cGVydmlldyAoV0tWaWV3
UmVmIHZpZXcsIENHUmVjdCBhUmVjdCk7CiBDR1JlY3QgV0tWaWV3Q29udmVydFJlY3RGcm9tU3Vw
ZXJ2aWV3IChXS1ZpZXdSZWYgdmlldywgQ0dSZWN0IGFSZWN0KTsKLUNHUmVjdCBXS1ZpZXdDb252
ZXJ0UmVjdFRvQmFzZSAoV0tWaWV3UmVmIHZpZXcsIENHUmVjdCByKTsKLUNHUmVjdCBXS1ZpZXdD
b252ZXJ0UmVjdEZyb21CYXNlIChXS1ZpZXdSZWYgdmlldywgQ0dSZWN0IGFSZWN0KTsKK1dFQkNP
UkVfRVhQT1JUIENHUmVjdCBXS1ZpZXdDb252ZXJ0UmVjdFRvQmFzZSAoV0tWaWV3UmVmIHZpZXcs
IENHUmVjdCByKTsKK1dFQkNPUkVfRVhQT1JUIENHUmVjdCBXS1ZpZXdDb252ZXJ0UmVjdEZyb21C
YXNlIChXS1ZpZXdSZWYgdmlldywgQ0dSZWN0IGFSZWN0KTsKIAogQ0dSZWN0IFdLVmlld0dldFZp
c2libGVSZWN0IChXS1ZpZXdSZWYgdmlldyk7CiAKIFdLVmlld1JlZiBXS1ZpZXdGaXJzdENoaWxk
IChXS1ZpZXdSZWYgdmlldyk7CiBXS1ZpZXdSZWYgV0tWaWV3TmV4dFNpYmxpbmcgKFdLVmlld1Jl
ZiB2aWV3KTsKLVdLVmlld1JlZiBXS1ZpZXdUcmF2ZXJzZU5leHQgKFdLVmlld1JlZiB2aWV3KTsK
K1dFQkNPUkVfRVhQT1JUIFdLVmlld1JlZiBXS1ZpZXdUcmF2ZXJzZU5leHQgKFdLVmlld1JlZiB2
aWV3KTsKIAotYm9vbCBXS1ZpZXdBY2NlcHRzRmlyc3RSZXNwb25kZXIgKFdLVmlld1JlZiB2aWV3
KTsKLWJvb2wgV0tWaWV3QmVjb21lRmlyc3RSZXNwb25kZXIgKFdLVmlld1JlZiB2aWV3KTsKLWJv
b2wgV0tWaWV3UmVzaWduRmlyc3RSZXNwb25kZXIgKFdLVmlld1JlZiB2aWV3KTsKK1dFQkNPUkVf
RVhQT1JUIGJvb2wgV0tWaWV3QWNjZXB0c0ZpcnN0UmVzcG9uZGVyIChXS1ZpZXdSZWYgdmlldyk7
CitXRUJDT1JFX0VYUE9SVCBib29sIFdLVmlld0JlY29tZUZpcnN0UmVzcG9uZGVyIChXS1ZpZXdS
ZWYgdmlldyk7CitXRUJDT1JFX0VYUE9SVCBib29sIFdLVmlld1Jlc2lnbkZpcnN0UmVzcG9uZGVy
IChXS1ZpZXdSZWYgdmlldyk7CiAKIHVuc2lnbmVkIGludCBXS1ZpZXdHZXRBdXRvcmVzaXppbmdN
YXNrKFdLVmlld1JlZiB2aWV3KTsKIHZvaWQgV0tWaWV3U2V0QXV0b3Jlc2l6aW5nTWFzayAoV0tW
aWV3UmVmIHZpZXcsIHVuc2lnbmVkIGludCBtYXNrKTsKSW5kZXg6IFNvdXJjZS9XZWJDb3JlL3Bs
YXRmb3JtL2lvcy93YWsvV2ViQ29yZVRocmVhZC5oCj09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT0KLS0tIFNvdXJjZS9XZWJD
b3JlL3BsYXRmb3JtL2lvcy93YWsvV2ViQ29yZVRocmVhZC5oCShyZXZpc2lvbiAxNzI2NTgpCisr
KyBTb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9pb3Mvd2FrL1dlYkNvcmVUaHJlYWQuaAkod29ya2lu
ZyBjb3B5KQpAQCAtNTIsNDAgKzUyLDQwIEBAIGNsYXNzIE5TUnVuTG9vcDsKIHZvaWQgV2ViVGhy
ZWFkTG9jayh2b2lkKTsKICAgICAKIC8vIFRoaXMgaXMgYSBuby1vcCBmb3IgY29tcGF0aWJpbGl0
eSBvbmx5LiBJdCB3aWxsIGdvIGF3YXkuIFBsZWFzZSBkb24ndCB1c2UuCi12b2lkIFdlYlRocmVh
ZFVubG9jayh2b2lkKTsKK1dFQkNPUkVfRVhQT1JUIHZvaWQgV2ViVGhyZWFkVW5sb2NrKHZvaWQp
OwogICAgIAogLy8gUGxlYXNlIGRvbid0IHVzZSBhbnl0aGluZyBiZWxvdyB0aGlzIGxpbmUgdW5s
ZXNzIHlvdSBrbm93IHdoYXQgeW91IGFyZSBkb2luZy4gSWYgdW5zdXJlLCBhc2suCiAvLyAtLS0t
LS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0t
LS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0KLWJvb2wgV2ViVGhyZWFkSXNMb2NrZWQo
dm9pZCk7Ci1ib29sIFdlYlRocmVhZElzTG9ja2VkT3JEaXNhYmxlZCh2b2lkKTsKK1dFQkNPUkVf
RVhQT1JUIGJvb2wgV2ViVGhyZWFkSXNMb2NrZWQodm9pZCk7CitXRUJDT1JFX0VYUE9SVCBib29s
IFdlYlRocmVhZElzTG9ja2VkT3JEaXNhYmxlZCh2b2lkKTsKICAgICAKLXZvaWQgV2ViVGhyZWFk
TG9ja1B1c2hNb2RhbCh2b2lkKTsKLXZvaWQgV2ViVGhyZWFkTG9ja1BvcE1vZGFsKHZvaWQpOwor
V0VCQ09SRV9FWFBPUlQgdm9pZCBXZWJUaHJlYWRMb2NrUHVzaE1vZGFsKHZvaWQpOworV0VCQ09S
RV9FWFBPUlQgdm9pZCBXZWJUaHJlYWRMb2NrUG9wTW9kYWwodm9pZCk7CiAKLXZvaWQgV2ViVGhy
ZWFkRW5hYmxlKHZvaWQpOwotYm9vbCBXZWJUaHJlYWRJc0VuYWJsZWQodm9pZCk7Ci1ib29sIFdl
YlRocmVhZElzQ3VycmVudCh2b2lkKTsKLWJvb2wgV2ViVGhyZWFkTm90Q3VycmVudCh2b2lkKTsK
K1dFQkNPUkVfRVhQT1JUIHZvaWQgV2ViVGhyZWFkRW5hYmxlKHZvaWQpOworV0VCQ09SRV9FWFBP
UlQgYm9vbCBXZWJUaHJlYWRJc0VuYWJsZWQodm9pZCk7CitXRUJDT1JFX0VYUE9SVCBib29sIFdl
YlRocmVhZElzQ3VycmVudCh2b2lkKTsKK1dFQkNPUkVfRVhQT1JUIGJvb2wgV2ViVGhyZWFkTm90
Q3VycmVudCh2b2lkKTsKICAgICAKIC8vIFRoZXNlIGFyZSBmb3IgPHJkYXI6Ly9wcm9ibGVtLzY4
MTczNDE+IE1hbnkgYXBwcyBjcmFzaGluZyBjYWxsaW5nIC1bVUlGaWVsZEVkaXRvciB0ZXh0XSBp
biBzZWNvbmRhcnkgdGhyZWFkCiAvLyBEb24ndCB1c2UgdGhlbSB0byBzb2x2ZSBhbnkgcmFuZG9t
IHByb2JsZW1zIHlvdSBtaWdodCBoYXZlLgotdm9pZCBXZWJUaHJlYWRMb2NrRnJvbUFueVRocmVh
ZCgpOwotdm9pZCBXZWJUaHJlYWRMb2NrRnJvbUFueVRocmVhZE5vTG9nKCk7Ci12b2lkIFdlYlRo
cmVhZFVubG9ja0Zyb21BbnlUaHJlYWQoKTsKK1dFQkNPUkVfRVhQT1JUIHZvaWQgV2ViVGhyZWFk
TG9ja0Zyb21BbnlUaHJlYWQoKTsKK1dFQkNPUkVfRVhQT1JUIHZvaWQgV2ViVGhyZWFkTG9ja0Zy
b21BbnlUaHJlYWROb0xvZygpOworV0VCQ09SRV9FWFBPUlQgdm9pZCBXZWJUaHJlYWRVbmxvY2tG
cm9tQW55VGhyZWFkKCk7CiAKIC8vIFRoaXMgaXMgZm9yIDxyZGFyOi8vcHJvYmxlbS84MDA1MTky
PiBNYWlsIGVudGVyZWQgYSBzdGF0ZSB3aGVyZSBtZXNzYWdlIHN1YmplY3QgYW5kIGNvbnRlbnQg
aXNuJ3QgZGlzcGxheWVkLgogLy8gSXQgc2hvdWxkIG9ubHkgYmUgdXNlZCBmb3IgTW9iaWxlTWFp
bCB0byB3b3JrIGFyb3VuZCA8cmRhcjovL3Byb2JsZW0vODAwNTE5Mj4uCi12b2lkIFdlYlRocmVh
ZFVubG9ja0d1YXJkRm9yTWFpbCgpOworV0VCQ09SRV9FWFBPUlQgdm9pZCBXZWJUaHJlYWRVbmxv
Y2tHdWFyZEZvck1haWwoKTsKIAogc3RhdGljIGlubGluZSBib29sIFdlYlRocmVhZFNob3VsZFlp
ZWxkKHZvaWQpIHsgcmV0dXJuIHdlYlRocmVhZFNob3VsZFlpZWxkOyB9CiBzdGF0aWMgaW5saW5l
IHZvaWQgV2ViVGhyZWFkU2V0U2hvdWxkWWllbGQoKSB7IHdlYlRocmVhZFNob3VsZFlpZWxkID0g
dHJ1ZTsgfQogCi1DRlJ1bkxvb3BSZWYgV2ViVGhyZWFkUnVuTG9vcCh2b2lkKTsKK1dFQkNPUkVf
RVhQT1JUIENGUnVuTG9vcFJlZiBXZWJUaHJlYWRSdW5Mb29wKHZvaWQpOwogTlNSdW5Mb29wKiBX
ZWJUaHJlYWROU1J1bkxvb3Aodm9pZCk7CiBXZWJUaHJlYWRDb250ZXh0ICpXZWJUaHJlYWRDdXJy
ZW50Q29udGV4dCh2b2lkKTsKIGJvb2wgV2ViVGhyZWFkQ29udGV4dElzQ3VycmVudCh2b2lkKTsK
IAotdm9pZCBXZWJUaHJlYWRTZXREZWxlZ2F0ZVNvdXJjZVJ1bkxvb3BNb2RlKENGU3RyaW5nUmVm
IG1vZGUpOworV0VCQ09SRV9FWFBPUlQgdm9pZCBXZWJUaHJlYWRTZXREZWxlZ2F0ZVNvdXJjZVJ1
bkxvb3BNb2RlKENGU3RyaW5nUmVmIG1vZGUpOwogCiAjaWYgZGVmaW5lZChfX2NwbHVzcGx1cykK
IH0KSW5kZXg6IFNvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL2lvcy93YWsvV2ViQ29yZVRocmVhZE1l
c3NhZ2UuaAo9PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09Ci0tLSBTb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9pb3Mvd2FrL1dl
YkNvcmVUaHJlYWRNZXNzYWdlLmgJKHJldmlzaW9uIDE3MjY1OCkKKysrIFNvdXJjZS9XZWJDb3Jl
L3BsYXRmb3JtL2lvcy93YWsvV2ViQ29yZVRocmVhZE1lc3NhZ2UuaAkod29ya2luZyBjb3B5KQpA
QCAtNDYsMjQgKzQ2LDI0IEBAIGV4dGVybiAiQyIgewogQGVuZAogCiAvLyBSZWdpc3RlciBhIGNs
YXNzIGZvciBkZWFsbG9jYXRpb24gb24gdGhlIFdlYlRocmVhZAotdm9pZCBXZWJDb3JlT2JqQ0Rl
YWxsb2NPbldlYlRocmVhZChDbGFzcyBjbHMpOworV0VCQ09SRV9FWFBPUlQgdm9pZCBXZWJDb3Jl
T2JqQ0RlYWxsb2NPbldlYlRocmVhZChDbGFzcyBjbHMpOwogdm9pZCBXZWJDb3JlT2JqQ0RlYWxs
b2NXaXRoV2ViVGhyZWFkTG9jayhDbGFzcyBjbHMpOwogCiAvLyBBc3luY2hyb25vdXMgZnJvbSBt
YWluIHRocmVhZCB0byB3ZWIgdGhyZWFkLgotdm9pZCBXZWJUaHJlYWRBZG9wdEFuZFJlbGVhc2Uo
aWQgb2JqKTsKK1dFQkNPUkVfRVhQT1JUIHZvaWQgV2ViVGhyZWFkQWRvcHRBbmRSZWxlYXNlKGlk
IG9iaik7CiAKIC8vIFN5bmNocm9ub3VzIGZyb20gd2ViIHRocmVhZCB0byBtYWluIHRocmVhZCwg
b3IgbWFpbiB0aHJlYWQgdG8gbWFpbiB0aHJlYWQuCi12b2lkIFdlYlRocmVhZENhbGxEZWxlZ2F0
ZShOU0ludm9jYXRpb24gKmludm9jYXRpb24pOwotdm9pZCBXZWJUaHJlYWRSdW5Pbk1haW5UaHJl
YWQodm9pZCAoXikodm9pZCkpOworV0VCQ09SRV9FWFBPUlQgdm9pZCBXZWJUaHJlYWRDYWxsRGVs
ZWdhdGUoTlNJbnZvY2F0aW9uICppbnZvY2F0aW9uKTsKK1dFQkNPUkVfRVhQT1JUIHZvaWQgV2Vi
VGhyZWFkUnVuT25NYWluVGhyZWFkKHZvaWQgKF4pKHZvaWQpKTsKIAogLy8gQXN5bmNocm9ub3Vz
IGZyb20gd2ViIHRocmVhZCB0byBtYWluIHRocmVhZCwgYnV0IHN5bmNocm9ub3VzIHdoZW4gY2Fs
bGVkIG9uIHRoZSBtYWluIHRocmVhZC4KLXZvaWQgV2ViVGhyZWFkQ2FsbERlbGVnYXRlQXN5bmMo
TlNJbnZvY2F0aW9uICppbnZvY2F0aW9uKTsKK1dFQkNPUkVfRVhQT1JUIHZvaWQgV2ViVGhyZWFk
Q2FsbERlbGVnYXRlQXN5bmMoTlNJbnZvY2F0aW9uICppbnZvY2F0aW9uKTsKIAogLy8gQXN5bmNo
cm9ub3VzIGZyb20gd2ViIHRocmVhZCB0byBtYWluIHRocmVhZCwgYnV0IHN5bmNocm9ub3VzIHdo
ZW4gY2FsbGVkIG9uIHRoZSBtYWluIHRocmVhZC4KLXZvaWQgV2ViVGhyZWFkUG9zdE5vdGlmaWNh
dGlvbihOU1N0cmluZyAqbmFtZSwgaWQgb2JqZWN0LCBpZCB1c2VySW5mbyk7CitXRUJDT1JFX0VY
UE9SVCB2b2lkIFdlYlRocmVhZFBvc3ROb3RpZmljYXRpb24oTlNTdHJpbmcgKm5hbWUsIGlkIG9i
amVjdCwgaWQgdXNlckluZm8pOwogCiAvLyBDb252ZW5pZW5jZSBtZXRob2QgZm9yIG1ha2luZyBh
biBOU0ludm9jYXRpb24gb2JqZWN0Ci1OU0ludm9jYXRpb24gKldlYlRocmVhZE1ha2VOU0ludm9j
YXRpb24oaWQgdGFyZ2V0LCBTRUwgc2VsZWN0b3IpOworV0VCQ09SRV9FWFBPUlQgTlNJbnZvY2F0
aW9uICpXZWJUaHJlYWRNYWtlTlNJbnZvY2F0aW9uKGlkIHRhcmdldCwgU0VMIHNlbGVjdG9yKTsK
IAogI2lmIGRlZmluZWQoX19jcGx1c3BsdXMpCiB9CkluZGV4OiBTb3VyY2UvV2ViQ29yZS9wbGF0
Zm9ybS9tYWMvQmxvY2tFeGNlcHRpb25zLmgKPT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PQotLS0gU291cmNlL1dlYkNvcmUv
cGxhdGZvcm0vbWFjL0Jsb2NrRXhjZXB0aW9ucy5oCShyZXZpc2lvbiAxNzI2NTgpCisrKyBTb3Vy
Y2UvV2ViQ29yZS9wbGF0Zm9ybS9tYWMvQmxvY2tFeGNlcHRpb25zLmgJKHdvcmtpbmcgY29weSkK
QEAgLTI1LDcgKzI1LDcgQEAKIAogI2ltcG9ydCA8Rm91bmRhdGlvbi9OU0V4Y2VwdGlvbi5oPgog
Ci1OT19SRVRVUk5fRFVFX1RPX0FTU0VSVCB2b2lkIFJlcG9ydEJsb2NrZWRPYmpDRXhjZXB0aW9u
KE5TRXhjZXB0aW9uICopOworV0VCQ09SRV9FWFBPUlQgTk9fUkVUVVJOX0RVRV9UT19BU1NFUlQg
dm9pZCBSZXBvcnRCbG9ja2VkT2JqQ0V4Y2VwdGlvbihOU0V4Y2VwdGlvbiAqKTsKIAogI2RlZmlu
ZSBCRUdJTl9CTE9DS19PQkpDX0VYQ0VQVElPTlMgQHRyeSB7CiAjZGVmaW5lIEVORF9CTE9DS19P
QkpDX0VYQ0VQVElPTlMgfSBAY2F0Y2goTlNFeGNlcHRpb24gKmxvY2FsRXhjZXB0aW9uKSB7IFJl
cG9ydEJsb2NrZWRPYmpDRXhjZXB0aW9uKGxvY2FsRXhjZXB0aW9uKTsgfQpJbmRleDogU291cmNl
L1dlYkNvcmUvcGxhdGZvcm0vbWFjL1dlYkNvcmVTeXN0ZW1JbnRlcmZhY2UubW0KPT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PQotLS0gU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vbWFjL1dlYkNvcmVTeXN0ZW1JbnRlcmZhY2Uu
bW0JKHJldmlzaW9uIDE3MjY1OCkKKysrIFNvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL21hYy9XZWJD
b3JlU3lzdGVtSW50ZXJmYWNlLm1tCSh3b3JraW5nIGNvcHkpCkBAIC0yNyw3NyArMjcsNzcgQEAK
ICNpbXBvcnQgIldlYkNvcmVTeXN0ZW1JbnRlcmZhY2UuaCIKICNpbXBvcnQgPEZvdW5kYXRpb24v
Rm91bmRhdGlvbi5oPgogCi12b2lkICgqd2tBZHZhbmNlRGVmYXVsdEJ1dHRvblB1bHNlQW5pbWF0
aW9uKShOU0J1dHRvbkNlbGwgKik7Ci12b2lkICgqd2tDQUxheWVyRW51bWVyYXRlUmVjdHNCZWlu
Z0RyYXduV2l0aEJsb2NrKShDQUxheWVyICosIENHQ29udGV4dFJlZiBjb250ZXh0LCB2b2lkIChe
YmxvY2spKENHUmVjdCByZWN0KSk7Ci1CT09MICgqd2tDR0NvbnRleHRHZXRTaG91bGRTbW9vdGhG
b250cykoQ0dDb250ZXh0UmVmKTsKLXZvaWQgKCp3a0NHQ29udGV4dFJlc2V0Q2xpcCkoQ0dDb250
ZXh0UmVmKTsKK1dFQkNPUkVfRVhQT1JUIHZvaWQgKCp3a0FkdmFuY2VEZWZhdWx0QnV0dG9uUHVs
c2VBbmltYXRpb24pKE5TQnV0dG9uQ2VsbCAqKTsKK1dFQkNPUkVfRVhQT1JUIHZvaWQgKCp3a0NB
TGF5ZXJFbnVtZXJhdGVSZWN0c0JlaW5nRHJhd25XaXRoQmxvY2spKENBTGF5ZXIgKiwgQ0dDb250
ZXh0UmVmIGNvbnRleHQsIHZvaWQgKF5ibG9jaykoQ0dSZWN0IHJlY3QpKTsKK1dFQkNPUkVfRVhQ
T1JUIEJPT0wgKCp3a0NHQ29udGV4dEdldFNob3VsZFNtb290aEZvbnRzKShDR0NvbnRleHRSZWYp
OworV0VCQ09SRV9FWFBPUlQgdm9pZCAoKndrQ0dDb250ZXh0UmVzZXRDbGlwKShDR0NvbnRleHRS
ZWYpOwogI2lmIF9fTUFDX09TX1hfVkVSU0lPTl9NSU5fUkVRVUlSRUQgPj0gMTA4MAotYm9vbCAo
KndrQ0dDb250ZXh0RHJhd3NXaXRoQ29ycmVjdFNoYWRvd09mZnNldHMpKENHQ29udGV4dFJlZik7
CitXRUJDT1JFX0VYUE9SVCBib29sICgqd2tDR0NvbnRleHREcmF3c1dpdGhDb3JyZWN0U2hhZG93
T2Zmc2V0cykoQ0dDb250ZXh0UmVmKTsKICNlbmRpZgotQ0dQYXR0ZXJuUmVmICgqd2tDR1BhdHRl
cm5DcmVhdGVXaXRoSW1hZ2VBbmRUcmFuc2Zvcm0pKENHSW1hZ2VSZWYsIENHQWZmaW5lVHJhbnNm
b3JtLCBpbnQpOwotQ0ZTdHJpbmdSZWYgKCp3a0NvcHlDRkxvY2FsaXphdGlvblByZWZlcnJlZE5h
bWUpKENGU3RyaW5nUmVmKTsKLU5TU3RyaW5nKiAoKndrQ29weU5TVVJMUmVzcG9uc2VTdGF0dXNM
aW5lKShOU1VSTFJlc3BvbnNlKik7Ci1DRkFycmF5UmVmICgqd2tDb3B5TlNVUkxSZXNwb25zZUNl
cnRpZmljYXRlQ2hhaW4pKE5TVVJMUmVzcG9uc2UqKTsKLUNGU3RyaW5nRW5jb2RpbmcgKCp3a0dl
dFdlYkRlZmF1bHRDRlN0cmluZ0VuY29kaW5nKSh2b2lkKTsKLU5TU3RyaW5nKiAoKndrQ3JlYXRl
VVJMUGFzdGVib2FyZEZsYXZvclR5cGVOYW1lKSh2b2lkKTsKLU5TU3RyaW5nKiAoKndrQ3JlYXRl
VVJMTlBhc3RlYm9hcmRGbGF2b3JUeXBlTmFtZSkodm9pZCk7Ci12b2lkICgqd2tEcmF3QmV6ZWxl
ZFRleHRGaWVsZENlbGwpKE5TUmVjdCwgQk9PTCBlbmFibGVkKTsKLXZvaWQgKCp3a0RyYXdUZXh0
RmllbGRDZWxsRm9jdXNSaW5nKShOU1RleHRGaWVsZENlbGwqLCBOU1JlY3QpOwotdm9pZCAoKndr
RHJhd0NhcHNMb2NrSW5kaWNhdG9yKShDR0NvbnRleHRSZWYsIENHUmVjdCk7Ci12b2lkICgqd2tE
cmF3QmV6ZWxlZFRleHRBcmVhKShOU1JlY3QsIEJPT0wgZW5hYmxlZCk7Ci12b2lkICgqd2tEcmF3
Rm9jdXNSaW5nKShDR0NvbnRleHRSZWYsIENHQ29sb3JSZWYsIGludCk7Ci1ib29sICgqd2tEcmF3
Rm9jdXNSaW5nQXRUaW1lKShDR0NvbnRleHRSZWYsIE5TVGltZUludGVydmFsKTsKLWJvb2wgKCp3
a0RyYXdDZWxsRm9jdXNSaW5nV2l0aEZyYW1lQXRUaW1lKShOU0NlbGwqLCBOU1JlY3QsIE5TVmll
dyosIE5TVGltZUludGVydmFsKTsKLU5TRm9udCogKCp3a0dldEZvbnRJbkxhbmd1YWdlRm9yUmFu
Z2UpKE5TRm9udCosIE5TU3RyaW5nKiwgTlNSYW5nZSk7Ci1OU0ZvbnQqICgqd2tHZXRGb250SW5M
YW5ndWFnZUZvckNoYXJhY3RlcikoTlNGb250KiwgVW5pQ2hhcik7Ci1CT09MICgqd2tHZXRHbHlw
aFRyYW5zZm9ybWVkQWR2YW5jZXMpKENHRm9udFJlZiwgTlNGb250KiwgQ0dBZmZpbmVUcmFuc2Zv
cm0qLCBBVFNHbHlwaFJlZiosIENHU2l6ZSogYWR2YW5jZSk7Ci12b2lkICgqd2tEcmF3TWVkaWFT
bGlkZXJUcmFjaykoQ0dDb250ZXh0UmVmIGNvbnRleHQsIENHUmVjdCByZWN0LCBmbG9hdCB0aW1l
TG9hZGVkLCBmbG9hdCBjdXJyZW50VGltZSwKK1dFQkNPUkVfRVhQT1JUIENHUGF0dGVyblJlZiAo
KndrQ0dQYXR0ZXJuQ3JlYXRlV2l0aEltYWdlQW5kVHJhbnNmb3JtKShDR0ltYWdlUmVmLCBDR0Fm
ZmluZVRyYW5zZm9ybSwgaW50KTsKK1dFQkNPUkVfRVhQT1JUIENGU3RyaW5nUmVmICgqd2tDb3B5
Q0ZMb2NhbGl6YXRpb25QcmVmZXJyZWROYW1lKShDRlN0cmluZ1JlZik7CitXRUJDT1JFX0VYUE9S
VCBOU1N0cmluZyogKCp3a0NvcHlOU1VSTFJlc3BvbnNlU3RhdHVzTGluZSkoTlNVUkxSZXNwb25z
ZSopOworV0VCQ09SRV9FWFBPUlQgQ0ZBcnJheVJlZiAoKndrQ29weU5TVVJMUmVzcG9uc2VDZXJ0
aWZpY2F0ZUNoYWluKShOU1VSTFJlc3BvbnNlKik7CitXRUJDT1JFX0VYUE9SVCBDRlN0cmluZ0Vu
Y29kaW5nICgqd2tHZXRXZWJEZWZhdWx0Q0ZTdHJpbmdFbmNvZGluZykodm9pZCk7CitXRUJDT1JF
X0VYUE9SVCBOU1N0cmluZyogKCp3a0NyZWF0ZVVSTFBhc3RlYm9hcmRGbGF2b3JUeXBlTmFtZSko
dm9pZCk7CitXRUJDT1JFX0VYUE9SVCBOU1N0cmluZyogKCp3a0NyZWF0ZVVSTE5QYXN0ZWJvYXJk
Rmxhdm9yVHlwZU5hbWUpKHZvaWQpOworV0VCQ09SRV9FWFBPUlQgdm9pZCAoKndrRHJhd0JlemVs
ZWRUZXh0RmllbGRDZWxsKShOU1JlY3QsIEJPT0wgZW5hYmxlZCk7CitXRUJDT1JFX0VYUE9SVCB2
b2lkICgqd2tEcmF3VGV4dEZpZWxkQ2VsbEZvY3VzUmluZykoTlNUZXh0RmllbGRDZWxsKiwgTlNS
ZWN0KTsKK1dFQkNPUkVfRVhQT1JUIHZvaWQgKCp3a0RyYXdDYXBzTG9ja0luZGljYXRvcikoQ0dD
b250ZXh0UmVmLCBDR1JlY3QpOworV0VCQ09SRV9FWFBPUlQgdm9pZCAoKndrRHJhd0JlemVsZWRU
ZXh0QXJlYSkoTlNSZWN0LCBCT09MIGVuYWJsZWQpOworV0VCQ09SRV9FWFBPUlQgdm9pZCAoKndr
RHJhd0ZvY3VzUmluZykoQ0dDb250ZXh0UmVmLCBDR0NvbG9yUmVmLCBpbnQpOworV0VCQ09SRV9F
WFBPUlQgYm9vbCAoKndrRHJhd0ZvY3VzUmluZ0F0VGltZSkoQ0dDb250ZXh0UmVmLCBOU1RpbWVJ
bnRlcnZhbCk7CitXRUJDT1JFX0VYUE9SVCBib29sICgqd2tEcmF3Q2VsbEZvY3VzUmluZ1dpdGhG
cmFtZUF0VGltZSkoTlNDZWxsKiwgTlNSZWN0LCBOU1ZpZXcqLCBOU1RpbWVJbnRlcnZhbCk7CitX
RUJDT1JFX0VYUE9SVCBOU0ZvbnQqICgqd2tHZXRGb250SW5MYW5ndWFnZUZvclJhbmdlKShOU0Zv
bnQqLCBOU1N0cmluZyosIE5TUmFuZ2UpOworV0VCQ09SRV9FWFBPUlQgTlNGb250KiAoKndrR2V0
Rm9udEluTGFuZ3VhZ2VGb3JDaGFyYWN0ZXIpKE5TRm9udCosIFVuaUNoYXIpOworV0VCQ09SRV9F
WFBPUlQgQk9PTCAoKndrR2V0R2x5cGhUcmFuc2Zvcm1lZEFkdmFuY2VzKShDR0ZvbnRSZWYsIE5T
Rm9udCosIENHQWZmaW5lVHJhbnNmb3JtKiwgQVRTR2x5cGhSZWYqLCBDR1NpemUqIGFkdmFuY2Up
OworV0VCQ09SRV9FWFBPUlQgdm9pZCAoKndrRHJhd01lZGlhU2xpZGVyVHJhY2spKENHQ29udGV4
dFJlZiBjb250ZXh0LCBDR1JlY3QgcmVjdCwgZmxvYXQgdGltZUxvYWRlZCwgZmxvYXQgY3VycmVu
dFRpbWUsCiAgICAgZmxvYXQgZHVyYXRpb24sIHVuc2lnbmVkIHN0YXRlKTsKLUJPT0wgKCp3a0hp
dFRlc3RNZWRpYVVJUGFydCkoaW50IHBhcnQsIENHUmVjdCBib3VuZHMsIENHUG9pbnQgcG9pbnQp
Owotdm9pZCAoKndrRHJhd01lZGlhVUlQYXJ0KShpbnQgcGFydCwgQ0dDb250ZXh0UmVmIGNvbnRl
eHQsIENHUmVjdCByZWN0LCB1bnNpZ25lZCBzdGF0ZSk7Ci12b2lkICgqd2tNZWFzdXJlTWVkaWFV
SVBhcnQpKGludCBwYXJ0LCBDR1JlY3QgKmJvdW5kcywgQ0dTaXplICpuYXR1cmFsU2l6ZSk7Ci1O
U1ZpZXcgKigqd2tDcmVhdGVNZWRpYVVJQmFja2dyb3VuZFZpZXcpKHZvaWQpOwotTlNDb250cm9s
ICooKndrQ3JlYXRlTWVkaWFVSUNvbnRyb2wpKGludCk7Ci12b2lkICgqd2tXaW5kb3dTZXRBbHBo
YSkoTlNXaW5kb3cgKiwgZmxvYXQpOwotdm9pZCAoKndrV2luZG93U2V0U2NhbGVkRnJhbWUpKE5T
V2luZG93ICosIE5TUmVjdCwgTlNSZWN0KTsKLU5TU3RyaW5nKiAoKndrR2V0UHJlZmVycmVkRXh0
ZW5zaW9uRm9yTUlNRVR5cGUpKE5TU3RyaW5nKik7Ci1DRlN0cmluZ1JlZiAoKndrU2lnbmVkUHVi
bGljS2V5QW5kQ2hhbGxlbmdlU3RyaW5nKSh1bnNpZ25lZCBrZXlTaXplLCBDRlN0cmluZ1JlZiBj
aGFsbGVuZ2UsIENGU3RyaW5nUmVmIGtleURlc2NyaXB0aW9uKTsKLU5TQXJyYXkqICgqd2tHZXRF
eHRlbnNpb25zRm9yTUlNRVR5cGUpKE5TU3RyaW5nKik7Ci1OU1N0cmluZyogKCp3a0dldE1JTUVU
eXBlRm9yRXh0ZW5zaW9uKShOU1N0cmluZyopOwotTlNUaW1lSW50ZXJ2YWwgKCp3a0dldE5TVVJM
UmVzcG9uc2VDYWxjdWxhdGVkRXhwaXJhdGlvbikoTlNVUkxSZXNwb25zZSAqcmVzcG9uc2UpOwot
TlNEYXRlICooKndrR2V0TlNVUkxSZXNwb25zZUxhc3RNb2RpZmllZERhdGUpKE5TVVJMUmVzcG9u
c2UgKnJlc3BvbnNlKTsKLUJPT0wgKCp3a0dldE5TVVJMUmVzcG9uc2VNdXN0UmV2YWxpZGF0ZSko
TlNVUkxSZXNwb25zZSAqcmVzcG9uc2UpOwotdm9pZCAoKndrR2V0V2hlZWxFdmVudERlbHRhcyko
TlNFdmVudCosIGZsb2F0KiBkZWx0YVgsIGZsb2F0KiBkZWx0YVksIEJPT0wqIGNvbnRpbnVvdXMp
OwotVUludDggKCp3a0dldE5TRXZlbnRLZXlDaGFyKShOU0V2ZW50ICopOwotdm9pZCAoKndrUG9w
dXBNZW51KShOU01lbnUqLCBOU1BvaW50IGxvY2F0aW9uLCBmbG9hdCB3aWR0aCwgTlNWaWV3Kiwg
aW50IHNlbGVjdGVkSXRlbSwgTlNGb250KiwgTlNDb250cm9sU2l6ZSBjb250cm9sU2l6ZSwgYm9v
bCBoaWRlQXJyb3dzKTsKLXZvaWQgKCp3a1BvcHVwTWVudVdpdGhTaXplKShOU01lbnUqLCBOU1Bv
aW50IGxvY2F0aW9uLCBmbG9hdCB3aWR0aCwgTlNWaWV3KiwgaW50IHNlbGVjdGVkSXRlbSwgTlNG
b250KiwgTlNDb250cm9sU2l6ZSBjb250cm9sU2l6ZSk7Ci11bnNpZ25lZCAoKndrUVRJbmNsdWRl
T25seU1vZGVybk1lZGlhRmlsZVR5cGVzKSh2b2lkKTsKLWludCAoKndrUVRNb3ZpZURhdGFSYXRl
KShRVE1vdmllKik7Ci12b2lkICgqd2tRVE1vdmllRGlzYWJsZUNvbXBvbmVudCkodWludDMyX3Rb
NV0pOwotZmxvYXQgKCp3a1FUTW92aWVNYXhUaW1lTG9hZGVkKShRVE1vdmllKik7Ci1OU1N0cmlu
ZyAqKCp3a1FUTW92aWVNYXhUaW1lTG9hZGVkQ2hhbmdlTm90aWZpY2F0aW9uKSh2b2lkKTsKLWZs
b2F0ICgqd2tRVE1vdmllTWF4VGltZVNlZWthYmxlKShRVE1vdmllKik7Ci1pbnQgKCp3a1FUTW92
aWVHZXRUeXBlKShRVE1vdmllKik7Ci1CT09MICgqd2tRVE1vdmllSGFzQ2xvc2VkQ2FwdGlvbnMp
KFFUTW92aWUqKTsKLU5TVVJMICooKndrUVRNb3ZpZVJlc29sdmVkVVJMKShRVE1vdmllKik7Ci12
b2lkICgqd2tRVE1vdmllU2V0U2hvd0Nsb3NlZENhcHRpb25zKShRVE1vdmllKiwgQk9PTCk7Ci12
b2lkICgqd2tRVE1vdmllU2VsZWN0UHJlZmVycmVkQWx0ZXJuYXRlcykoUVRNb3ZpZSopOwotdm9p
ZCAoKndrUVRNb3ZpZVZpZXdTZXREcmF3U3luY2hyb25vdXNseSkoUVRNb3ZpZVZpZXcqLCBCT09M
KTsKLU5TQXJyYXkgKigqd2tRVEdldFNpdGVzSW5NZWRpYURvd25sb2FkQ2FjaGUpKCk7Ci12b2lk
ICgqd2tRVENsZWFyTWVkaWFEb3dubG9hZENhY2hlRm9yU2l0ZSkoTlNTdHJpbmcgKnNpdGUpOwot
dm9pZCAoKndrUVRDbGVhck1lZGlhRG93bmxvYWRDYWNoZSkoKTsKLQotdm9pZCAoKndrU2V0Q0dG
b250UmVuZGVyaW5nTW9kZSkoQ0dDb250ZXh0UmVmLCBOU0ZvbnQqLCBCT09MKTsKLXZvaWQgKCp3
a1NldERyYWdJbWFnZSkoTlNJbWFnZSosIE5TUG9pbnQgb2Zmc2V0KTsKLXZvaWQgKCp3a1NldEJh
c2VDVE0pKENHQ29udGV4dFJlZiwgQ0dBZmZpbmVUcmFuc2Zvcm0pOwotdm9pZCAoKndrU2V0UGF0
dGVyblBoYXNlSW5Vc2VyU3BhY2UpKENHQ29udGV4dFJlZiwgQ0dQb2ludCBwb2ludCk7Ci1DR0Fm
ZmluZVRyYW5zZm9ybSAoKndrR2V0VXNlclRvQmFzZUNUTSkoQ0dDb250ZXh0UmVmKTsKLWJvb2wg
KCp3a0NHQ29udGV4dElzUERGQ29udGV4dCkoQ0dDb250ZXh0UmVmKTsKLXZvaWQgKCp3a1NldFVw
Rm9udENhY2hlKSgpOwotdm9pZCAoKndrU2lnbmFsQ0ZSZWFkU3RyZWFtRW5kKShDRlJlYWRTdHJl
YW1SZWYgc3RyZWFtKTsKLXZvaWQgKCp3a1NpZ25hbENGUmVhZFN0cmVhbUhhc0J5dGVzKShDRlJl
YWRTdHJlYW1SZWYgc3RyZWFtKTsKLXZvaWQgKCp3a1NpZ25hbENGUmVhZFN0cmVhbUVycm9yKShD
RlJlYWRTdHJlYW1SZWYgc3RyZWFtLCBDRlN0cmVhbUVycm9yICplcnJvcik7Ci1DRlJlYWRTdHJl
YW1SZWYgKCp3a0NyZWF0ZUN1c3RvbUNGUmVhZFN0cmVhbSkodm9pZCAqKCpmb3JtQ3JlYXRlKShD
RlJlYWRTdHJlYW1SZWYsIHZvaWQgKiksIAorV0VCQ09SRV9FWFBPUlQgQk9PTCAoKndrSGl0VGVz
dE1lZGlhVUlQYXJ0KShpbnQgcGFydCwgQ0dSZWN0IGJvdW5kcywgQ0dQb2ludCBwb2ludCk7CitX
RUJDT1JFX0VYUE9SVCB2b2lkICgqd2tEcmF3TWVkaWFVSVBhcnQpKGludCBwYXJ0LCBDR0NvbnRl
eHRSZWYgY29udGV4dCwgQ0dSZWN0IHJlY3QsIHVuc2lnbmVkIHN0YXRlKTsKK1dFQkNPUkVfRVhQ
T1JUIHZvaWQgKCp3a01lYXN1cmVNZWRpYVVJUGFydCkoaW50IHBhcnQsIENHUmVjdCAqYm91bmRz
LCBDR1NpemUgKm5hdHVyYWxTaXplKTsKK1dFQkNPUkVfRVhQT1JUIE5TVmlldyAqKCp3a0NyZWF0
ZU1lZGlhVUlCYWNrZ3JvdW5kVmlldykodm9pZCk7CitXRUJDT1JFX0VYUE9SVCBOU0NvbnRyb2wg
Kigqd2tDcmVhdGVNZWRpYVVJQ29udHJvbCkoaW50KTsKK1dFQkNPUkVfRVhQT1JUIHZvaWQgKCp3
a1dpbmRvd1NldEFscGhhKShOU1dpbmRvdyAqLCBmbG9hdCk7CitXRUJDT1JFX0VYUE9SVCB2b2lk
ICgqd2tXaW5kb3dTZXRTY2FsZWRGcmFtZSkoTlNXaW5kb3cgKiwgTlNSZWN0LCBOU1JlY3QpOwor
V0VCQ09SRV9FWFBPUlQgTlNTdHJpbmcqICgqd2tHZXRQcmVmZXJyZWRFeHRlbnNpb25Gb3JNSU1F
VHlwZSkoTlNTdHJpbmcqKTsKK1dFQkNPUkVfRVhQT1JUIENGU3RyaW5nUmVmICgqd2tTaWduZWRQ
dWJsaWNLZXlBbmRDaGFsbGVuZ2VTdHJpbmcpKHVuc2lnbmVkIGtleVNpemUsIENGU3RyaW5nUmVm
IGNoYWxsZW5nZSwgQ0ZTdHJpbmdSZWYga2V5RGVzY3JpcHRpb24pOworV0VCQ09SRV9FWFBPUlQg
TlNBcnJheSogKCp3a0dldEV4dGVuc2lvbnNGb3JNSU1FVHlwZSkoTlNTdHJpbmcqKTsKK1dFQkNP
UkVfRVhQT1JUIE5TU3RyaW5nKiAoKndrR2V0TUlNRVR5cGVGb3JFeHRlbnNpb24pKE5TU3RyaW5n
Kik7CitXRUJDT1JFX0VYUE9SVCBOU1RpbWVJbnRlcnZhbCAoKndrR2V0TlNVUkxSZXNwb25zZUNh
bGN1bGF0ZWRFeHBpcmF0aW9uKShOU1VSTFJlc3BvbnNlICpyZXNwb25zZSk7CitXRUJDT1JFX0VY
UE9SVCBOU0RhdGUgKigqd2tHZXROU1VSTFJlc3BvbnNlTGFzdE1vZGlmaWVkRGF0ZSkoTlNVUkxS
ZXNwb25zZSAqcmVzcG9uc2UpOworV0VCQ09SRV9FWFBPUlQgQk9PTCAoKndrR2V0TlNVUkxSZXNw
b25zZU11c3RSZXZhbGlkYXRlKShOU1VSTFJlc3BvbnNlICpyZXNwb25zZSk7CitXRUJDT1JFX0VY
UE9SVCB2b2lkICgqd2tHZXRXaGVlbEV2ZW50RGVsdGFzKShOU0V2ZW50KiwgZmxvYXQqIGRlbHRh
WCwgZmxvYXQqIGRlbHRhWSwgQk9PTCogY29udGludW91cyk7CitXRUJDT1JFX0VYUE9SVCBVSW50
OCAoKndrR2V0TlNFdmVudEtleUNoYXIpKE5TRXZlbnQgKik7CitXRUJDT1JFX0VYUE9SVCB2b2lk
ICgqd2tQb3B1cE1lbnUpKE5TTWVudSosIE5TUG9pbnQgbG9jYXRpb24sIGZsb2F0IHdpZHRoLCBO
U1ZpZXcqLCBpbnQgc2VsZWN0ZWRJdGVtLCBOU0ZvbnQqLCBOU0NvbnRyb2xTaXplIGNvbnRyb2xT
aXplLCBib29sIGhpZGVBcnJvd3MpOworV0VCQ09SRV9FWFBPUlQgdm9pZCAoKndrUG9wdXBNZW51
V2l0aFNpemUpKE5TTWVudSosIE5TUG9pbnQgbG9jYXRpb24sIGZsb2F0IHdpZHRoLCBOU1ZpZXcq
LCBpbnQgc2VsZWN0ZWRJdGVtLCBOU0ZvbnQqLCBOU0NvbnRyb2xTaXplIGNvbnRyb2xTaXplKTsK
K1dFQkNPUkVfRVhQT1JUIHVuc2lnbmVkICgqd2tRVEluY2x1ZGVPbmx5TW9kZXJuTWVkaWFGaWxl
VHlwZXMpKHZvaWQpOworV0VCQ09SRV9FWFBPUlQgaW50ICgqd2tRVE1vdmllRGF0YVJhdGUpKFFU
TW92aWUqKTsKK1dFQkNPUkVfRVhQT1JUIHZvaWQgKCp3a1FUTW92aWVEaXNhYmxlQ29tcG9uZW50
KSh1aW50MzJfdFs1XSk7CitXRUJDT1JFX0VYUE9SVCBmbG9hdCAoKndrUVRNb3ZpZU1heFRpbWVM
b2FkZWQpKFFUTW92aWUqKTsKK1dFQkNPUkVfRVhQT1JUIE5TU3RyaW5nICooKndrUVRNb3ZpZU1h
eFRpbWVMb2FkZWRDaGFuZ2VOb3RpZmljYXRpb24pKHZvaWQpOworV0VCQ09SRV9FWFBPUlQgZmxv
YXQgKCp3a1FUTW92aWVNYXhUaW1lU2Vla2FibGUpKFFUTW92aWUqKTsKK1dFQkNPUkVfRVhQT1JU
IGludCAoKndrUVRNb3ZpZUdldFR5cGUpKFFUTW92aWUqKTsKK1dFQkNPUkVfRVhQT1JUIEJPT0wg
KCp3a1FUTW92aWVIYXNDbG9zZWRDYXB0aW9ucykoUVRNb3ZpZSopOworV0VCQ09SRV9FWFBPUlQg
TlNVUkwgKigqd2tRVE1vdmllUmVzb2x2ZWRVUkwpKFFUTW92aWUqKTsKK1dFQkNPUkVfRVhQT1JU
IHZvaWQgKCp3a1FUTW92aWVTZXRTaG93Q2xvc2VkQ2FwdGlvbnMpKFFUTW92aWUqLCBCT09MKTsK
K1dFQkNPUkVfRVhQT1JUIHZvaWQgKCp3a1FUTW92aWVTZWxlY3RQcmVmZXJyZWRBbHRlcm5hdGVz
KShRVE1vdmllKik7CitXRUJDT1JFX0VYUE9SVCB2b2lkICgqd2tRVE1vdmllVmlld1NldERyYXdT
eW5jaHJvbm91c2x5KShRVE1vdmllVmlldyosIEJPT0wpOworV0VCQ09SRV9FWFBPUlQgTlNBcnJh
eSAqKCp3a1FUR2V0U2l0ZXNJbk1lZGlhRG93bmxvYWRDYWNoZSkoKTsKK1dFQkNPUkVfRVhQT1JU
IHZvaWQgKCp3a1FUQ2xlYXJNZWRpYURvd25sb2FkQ2FjaGVGb3JTaXRlKShOU1N0cmluZyAqc2l0
ZSk7CitXRUJDT1JFX0VYUE9SVCB2b2lkICgqd2tRVENsZWFyTWVkaWFEb3dubG9hZENhY2hlKSgp
OworCitXRUJDT1JFX0VYUE9SVCB2b2lkICgqd2tTZXRDR0ZvbnRSZW5kZXJpbmdNb2RlKShDR0Nv
bnRleHRSZWYsIE5TRm9udCosIEJPT0wpOworV0VCQ09SRV9FWFBPUlQgdm9pZCAoKndrU2V0RHJh
Z0ltYWdlKShOU0ltYWdlKiwgTlNQb2ludCBvZmZzZXQpOworV0VCQ09SRV9FWFBPUlQgdm9pZCAo
KndrU2V0QmFzZUNUTSkoQ0dDb250ZXh0UmVmLCBDR0FmZmluZVRyYW5zZm9ybSk7CitXRUJDT1JF
X0VYUE9SVCB2b2lkICgqd2tTZXRQYXR0ZXJuUGhhc2VJblVzZXJTcGFjZSkoQ0dDb250ZXh0UmVm
LCBDR1BvaW50IHBvaW50KTsKK1dFQkNPUkVfRVhQT1JUIENHQWZmaW5lVHJhbnNmb3JtICgqd2tH
ZXRVc2VyVG9CYXNlQ1RNKShDR0NvbnRleHRSZWYpOworV0VCQ09SRV9FWFBPUlQgYm9vbCAoKndr
Q0dDb250ZXh0SXNQREZDb250ZXh0KShDR0NvbnRleHRSZWYpOworV0VCQ09SRV9FWFBPUlQgdm9p
ZCAoKndrU2V0VXBGb250Q2FjaGUpKCk7CitXRUJDT1JFX0VYUE9SVCB2b2lkICgqd2tTaWduYWxD
RlJlYWRTdHJlYW1FbmQpKENGUmVhZFN0cmVhbVJlZiBzdHJlYW0pOworV0VCQ09SRV9FWFBPUlQg
dm9pZCAoKndrU2lnbmFsQ0ZSZWFkU3RyZWFtSGFzQnl0ZXMpKENGUmVhZFN0cmVhbVJlZiBzdHJl
YW0pOworV0VCQ09SRV9FWFBPUlQgdm9pZCAoKndrU2lnbmFsQ0ZSZWFkU3RyZWFtRXJyb3IpKENG
UmVhZFN0cmVhbVJlZiBzdHJlYW0sIENGU3RyZWFtRXJyb3IgKmVycm9yKTsKK1dFQkNPUkVfRVhQ
T1JUIENGUmVhZFN0cmVhbVJlZiAoKndrQ3JlYXRlQ3VzdG9tQ0ZSZWFkU3RyZWFtKSh2b2lkICoo
KmZvcm1DcmVhdGUpKENGUmVhZFN0cmVhbVJlZiwgdm9pZCAqKSwKICAgICB2b2lkICgqZm9ybUZp
bmFsaXplKShDRlJlYWRTdHJlYW1SZWYsIHZvaWQgKiksIAogICAgIEJvb2xlYW4gKCpmb3JtT3Bl
bikoQ0ZSZWFkU3RyZWFtUmVmLCBDRlN0cmVhbUVycm9yICosIEJvb2xlYW4gKiwgdm9pZCAqKSwg
CiAgICAgQ0ZJbmRleCAoKmZvcm1SZWFkKShDRlJlYWRTdHJlYW1SZWYsIFVJbnQ4ICosIENGSW5k
ZXgsIENGU3RyZWFtRXJyb3IgKiwgQm9vbGVhbiAqLCB2b2lkICopLCAKQEAgLTEwNiwxMTQgKzEw
NiwxMTQgQEAgQ0ZSZWFkU3RyZWFtUmVmICgqd2tDcmVhdGVDdXN0b21DRlJlYWRTdAogICAgIHZv
aWQgKCpmb3JtU2NoZWR1bGUpKENGUmVhZFN0cmVhbVJlZiwgQ0ZSdW5Mb29wUmVmLCBDRlN0cmlu
Z1JlZiwgdm9pZCAqKSwgCiAgICAgdm9pZCAoKmZvcm1VbnNjaGVkdWxlKShDRlJlYWRTdHJlYW1S
ZWYsIENGUnVuTG9vcFJlZiwgQ0ZTdHJpbmdSZWYsIHZvaWQgKiksCiAgICAgdm9pZCAqY29udGV4
dCk7Ci12b2lkICgqd2tTZXROU1VSTENvbm5lY3Rpb25EZWZlcnNDYWxsYmFja3MpKE5TVVJMQ29u
bmVjdGlvbiAqLCBCT09MKTsKLXZvaWQgKCp3a1NldE5TVVJMUmVxdWVzdFNob3VsZENvbnRlbnRT
bmlmZikoTlNNdXRhYmxlVVJMUmVxdWVzdCAqLCBCT09MKTsKLXVuc2lnbmVkICgqd2tJbml0aWFs
aXplTWF4aW11bUhUVFBDb25uZWN0aW9uQ291bnRQZXJIb3N0KSh1bnNpZ25lZCBwcmVmZXJyZWRD
b25uZWN0aW9uQ291bnQpOwotaW50ICgqd2tHZXRIVFRQUmVxdWVzdFByaW9yaXR5KShDRlVSTFJl
cXVlc3RSZWYpOwotdm9pZCAoKndrU2V0SFRUUFJlcXVlc3RNYXhpbXVtUHJpb3JpdHkpKGludCBw
cmlvcml0eSk7Ci12b2lkICgqd2tTZXRIVFRQUmVxdWVzdFByaW9yaXR5KShDRlVSTFJlcXVlc3RS
ZWYsIGludCBwcmlvcml0eSk7Ci12b2lkICgqd2tTZXRIVFRQUmVxdWVzdE1pbmltdW1GYXN0TGFu
ZVByaW9yaXR5KShpbnQgcHJpb3JpdHkpOwotdm9pZCAoKndrSFRUUFJlcXVlc3RFbmFibGVQaXBl
bGluaW5nKShDRlVSTFJlcXVlc3RSZWYpOwotdm9pZCAoKndrU2V0Q09OTkVDVFByb3h5Rm9yU3Ry
ZWFtKShDRlJlYWRTdHJlYW1SZWYsIENGU3RyaW5nUmVmIHByb3h5SG9zdCwgQ0ZOdW1iZXJSZWYg
cHJveHlQb3J0KTsKLXZvaWQgKCp3a1NldENPTk5FQ1RQcm94eUF1dGhvcml6YXRpb25Gb3JTdHJl
YW0pKENGUmVhZFN0cmVhbVJlZiwgQ0ZTdHJpbmdSZWYgcHJveHlBdXRob3JpemF0aW9uU3RyaW5n
KTsKLUNGSFRUUE1lc3NhZ2VSZWYgKCp3a0NvcHlDT05ORUNUUHJveHlSZXNwb25zZSkoQ0ZSZWFk
U3RyZWFtUmVmLCBDRlVSTFJlZiByZXNwb25zZVVSTCwgQ0ZTdHJpbmdSZWYgcHJveHlIb3N0LCBD
Rk51bWJlclJlZiBwcm94eVBvcnQpOworV0VCQ09SRV9FWFBPUlQgdm9pZCAoKndrU2V0TlNVUkxD
b25uZWN0aW9uRGVmZXJzQ2FsbGJhY2tzKShOU1VSTENvbm5lY3Rpb24gKiwgQk9PTCk7CitXRUJD
T1JFX0VYUE9SVCB2b2lkICgqd2tTZXROU1VSTFJlcXVlc3RTaG91bGRDb250ZW50U25pZmYpKE5T
TXV0YWJsZVVSTFJlcXVlc3QgKiwgQk9PTCk7CitXRUJDT1JFX0VYUE9SVCB1bnNpZ25lZCAoKndr
SW5pdGlhbGl6ZU1heGltdW1IVFRQQ29ubmVjdGlvbkNvdW50UGVySG9zdCkodW5zaWduZWQgcHJl
ZmVycmVkQ29ubmVjdGlvbkNvdW50KTsKK1dFQkNPUkVfRVhQT1JUIGludCAoKndrR2V0SFRUUFJl
cXVlc3RQcmlvcml0eSkoQ0ZVUkxSZXF1ZXN0UmVmKTsKK1dFQkNPUkVfRVhQT1JUIHZvaWQgKCp3
a1NldEhUVFBSZXF1ZXN0TWF4aW11bVByaW9yaXR5KShpbnQgcHJpb3JpdHkpOworV0VCQ09SRV9F
WFBPUlQgdm9pZCAoKndrU2V0SFRUUFJlcXVlc3RQcmlvcml0eSkoQ0ZVUkxSZXF1ZXN0UmVmLCBp
bnQgcHJpb3JpdHkpOworV0VCQ09SRV9FWFBPUlQgdm9pZCAoKndrU2V0SFRUUFJlcXVlc3RNaW5p
bXVtRmFzdExhbmVQcmlvcml0eSkoaW50IHByaW9yaXR5KTsKK1dFQkNPUkVfRVhQT1JUIHZvaWQg
KCp3a0hUVFBSZXF1ZXN0RW5hYmxlUGlwZWxpbmluZykoQ0ZVUkxSZXF1ZXN0UmVmKTsKK1dFQkNP
UkVfRVhQT1JUIHZvaWQgKCp3a1NldENPTk5FQ1RQcm94eUZvclN0cmVhbSkoQ0ZSZWFkU3RyZWFt
UmVmLCBDRlN0cmluZ1JlZiBwcm94eUhvc3QsIENGTnVtYmVyUmVmIHByb3h5UG9ydCk7CitXRUJD
T1JFX0VYUE9SVCB2b2lkICgqd2tTZXRDT05ORUNUUHJveHlBdXRob3JpemF0aW9uRm9yU3RyZWFt
KShDRlJlYWRTdHJlYW1SZWYsIENGU3RyaW5nUmVmIHByb3h5QXV0aG9yaXphdGlvblN0cmluZyk7
CitXRUJDT1JFX0VYUE9SVCBDRkhUVFBNZXNzYWdlUmVmICgqd2tDb3B5Q09OTkVDVFByb3h5UmVz
cG9uc2UpKENGUmVhZFN0cmVhbVJlZiwgQ0ZVUkxSZWYgcmVzcG9uc2VVUkwsIENGU3RyaW5nUmVm
IHByb3h5SG9zdCwgQ0ZOdW1iZXJSZWYgcHJveHlQb3J0KTsKIAogI2lmIFVTRShDRk5FVFdPUksp
Ci1DRkhUVFBDb29raWVTdG9yYWdlUmVmICgqd2tHZXREZWZhdWx0SFRUUENvb2tpZVN0b3JhZ2Up
KCk7Ci1XS0NGVVJMQ3JlZGVudGlhbFJlZiAoKndrQ29weUNyZWRlbnRpYWxGcm9tQ0ZQZXJzaXN0
ZW50U3RvcmFnZSkoQ0ZVUkxQcm90ZWN0aW9uU3BhY2VSZWYgcHJvdGVjdGlvblNwYWNlKTsKLXZv
aWQgKCp3a1NldENGVVJMUmVxdWVzdFNob3VsZENvbnRlbnRTbmlmZikoQ0ZNdXRhYmxlVVJMUmVx
dWVzdFJlZiwgYm9vbCk7Ci12b2lkICgqd2tTZXRSZXF1ZXN0U3RvcmFnZVNlc3Npb24pKENGVVJM
U3RvcmFnZVNlc3Npb25SZWYsIENGTXV0YWJsZVVSTFJlcXVlc3RSZWYpOworV0VCQ09SRV9FWFBP
UlQgQ0ZIVFRQQ29va2llU3RvcmFnZVJlZiAoKndrR2V0RGVmYXVsdEhUVFBDb29raWVTdG9yYWdl
KSgpOworV0VCQ09SRV9FWFBPUlQgV0tDRlVSTENyZWRlbnRpYWxSZWYgKCp3a0NvcHlDcmVkZW50
aWFsRnJvbUNGUGVyc2lzdGVudFN0b3JhZ2UpKENGVVJMUHJvdGVjdGlvblNwYWNlUmVmIHByb3Rl
Y3Rpb25TcGFjZSk7CitXRUJDT1JFX0VYUE9SVCB2b2lkICgqd2tTZXRDRlVSTFJlcXVlc3RTaG91
bGRDb250ZW50U25pZmYpKENGTXV0YWJsZVVSTFJlcXVlc3RSZWYsIGJvb2wpOworV0VCQ09SRV9F
WFBPUlQgdm9pZCAoKndrU2V0UmVxdWVzdFN0b3JhZ2VTZXNzaW9uKShDRlVSTFN0b3JhZ2VTZXNz
aW9uUmVmLCBDRk11dGFibGVVUkxSZXF1ZXN0UmVmKTsKICNlbmRpZgogCi12b2lkICgqd2tHZXRH
bHlwaHNGb3JDaGFyYWN0ZXJzKShDR0ZvbnRSZWYsIGNvbnN0IFVuaUNoYXJbXSwgQ0dHbHlwaFtd
LCBzaXplX3QpOwotYm9vbCAoKndrR2V0VmVydGljYWxHbHlwaHNGb3JDaGFyYWN0ZXJzKShDVEZv
bnRSZWYsIGNvbnN0IFVuaUNoYXJbXSwgQ0dHbHlwaFtdLCBzaXplX3QpOworV0VCQ09SRV9FWFBP
UlQgdm9pZCAoKndrR2V0R2x5cGhzRm9yQ2hhcmFjdGVycykoQ0dGb250UmVmLCBjb25zdCBVbmlD
aGFyW10sIENHR2x5cGhbXSwgc2l6ZV90KTsKK1dFQkNPUkVfRVhQT1JUIGJvb2wgKCp3a0dldFZl
cnRpY2FsR2x5cGhzRm9yQ2hhcmFjdGVycykoQ1RGb250UmVmLCBjb25zdCBVbmlDaGFyW10sIENH
R2x5cGhbXSwgc2l6ZV90KTsKIAotdm9pZCogd2tHZXRIeXBoZW5hdGlvbkxvY2F0aW9uQmVmb3Jl
SW5kZXg7CitXRUJDT1JFX0VYUE9SVCB2b2lkKiB3a0dldEh5cGhlbmF0aW9uTG9jYXRpb25CZWZv
cmVJbmRleDsKIAotQ1RMaW5lUmVmICgqd2tDcmVhdGVDVExpbmVXaXRoVW5pQ2hhclByb3ZpZGVy
KShjb25zdCBVbmlDaGFyKiAoKnByb3ZpZGUpKENGSW5kZXggc3RyaW5nSW5kZXgsIENGSW5kZXgq
IGNoYXJDb3VudCwgQ0ZEaWN0aW9uYXJ5UmVmKiBhdHRyaWJ1dGVzLCB2b2lkKiksIHZvaWQgKCpk
aXNwb3NlKShjb25zdCBVbmlDaGFyKiBjaGFycywgdm9pZCopLCB2b2lkKik7CitXRUJDT1JFX0VY
UE9SVCBDVExpbmVSZWYgKCp3a0NyZWF0ZUNUTGluZVdpdGhVbmlDaGFyUHJvdmlkZXIpKGNvbnN0
IFVuaUNoYXIqICgqcHJvdmlkZSkoQ0ZJbmRleCBzdHJpbmdJbmRleCwgQ0ZJbmRleCogY2hhckNv
dW50LCBDRkRpY3Rpb25hcnlSZWYqIGF0dHJpYnV0ZXMsIHZvaWQqKSwgdm9pZCAoKmRpc3Bvc2Up
KGNvbnN0IFVuaUNoYXIqIGNoYXJzLCB2b2lkKiksIHZvaWQqKTsKICNpZiBfX01BQ19PU19YX1ZF
UlNJT05fTUlOX1JFUVVJUkVEID49IDEwOTAKLWJvb2wgKCp3a0NURm9udFRyYW5zZm9ybUdseXBo
cykoQ1RGb250UmVmIGZvbnQsIENHR2x5cGggZ2x5cGhzW10sIENHU2l6ZSBhZHZhbmNlc1tdLCBD
RkluZGV4IGNvdW50LCB3a0NURm9udFRyYW5zZm9ybU9wdGlvbnMgb3B0aW9ucyk7CitXRUJDT1JF
X0VYUE9SVCBib29sICgqd2tDVEZvbnRUcmFuc2Zvcm1HbHlwaHMpKENURm9udFJlZiBmb250LCBD
R0dseXBoIGdseXBoc1tdLCBDR1NpemUgYWR2YW5jZXNbXSwgQ0ZJbmRleCBjb3VudCwgd2tDVEZv
bnRUcmFuc2Zvcm1PcHRpb25zIG9wdGlvbnMpOwogI2VuZGlmCiAKLUNHU2l6ZSAoKndrQ1RSdW5H
ZXRJbml0aWFsQWR2YW5jZSkoQ1RSdW5SZWYpOworV0VCQ09SRV9FWFBPUlQgQ0dTaXplICgqd2tD
VFJ1bkdldEluaXRpYWxBZHZhbmNlKShDVFJ1blJlZik7CiAKLUNUVHlwZXNldHRlclJlZiAoKndr
Q3JlYXRlQ1RUeXBlc2V0dGVyV2l0aFVuaUNoYXJQcm92aWRlckFuZE9wdGlvbnMpKGNvbnN0IFVu
aUNoYXIqICgqcHJvdmlkZSkoQ0ZJbmRleCBzdHJpbmdJbmRleCwgQ0ZJbmRleCogY2hhckNvdW50
LCBDRkRpY3Rpb25hcnlSZWYqIGF0dHJpYnV0ZXMsIHZvaWQqKSwgdm9pZCAoKmRpc3Bvc2UpKGNv
bnN0IFVuaUNoYXIqIGNoYXJzLCB2b2lkKiksIHZvaWQqLCBDRkRpY3Rpb25hcnlSZWYgb3B0aW9u
cyk7CitXRUJDT1JFX0VYUE9SVCBDVFR5cGVzZXR0ZXJSZWYgKCp3a0NyZWF0ZUNUVHlwZXNldHRl
cldpdGhVbmlDaGFyUHJvdmlkZXJBbmRPcHRpb25zKShjb25zdCBVbmlDaGFyKiAoKnByb3ZpZGUp
KENGSW5kZXggc3RyaW5nSW5kZXgsIENGSW5kZXgqIGNoYXJDb3VudCwgQ0ZEaWN0aW9uYXJ5UmVm
KiBhdHRyaWJ1dGVzLCB2b2lkKiksIHZvaWQgKCpkaXNwb3NlKShjb25zdCBVbmlDaGFyKiBjaGFy
cywgdm9pZCopLCB2b2lkKiwgQ0ZEaWN0aW9uYXJ5UmVmIG9wdGlvbnMpOwogCi1DR0NvbnRleHRS
ZWYgKCp3a0lPU3VyZmFjZUNvbnRleHRDcmVhdGUpKElPU3VyZmFjZVJlZiBzdXJmYWNlLCB1bnNp
Z25lZCB3aWR0aCwgdW5zaWduZWQgaGVpZ2h0LCBDR0NvbG9yU3BhY2VSZWYgY29sb3JTcGFjZSk7
Ci1DR0ltYWdlUmVmICgqd2tJT1N1cmZhY2VDb250ZXh0Q3JlYXRlSW1hZ2UpKENHQ29udGV4dFJl
ZiBjb250ZXh0KTsKK1dFQkNPUkVfRVhQT1JUIENHQ29udGV4dFJlZiAoKndrSU9TdXJmYWNlQ29u
dGV4dENyZWF0ZSkoSU9TdXJmYWNlUmVmIHN1cmZhY2UsIHVuc2lnbmVkIHdpZHRoLCB1bnNpZ25l
ZCBoZWlnaHQsIENHQ29sb3JTcGFjZVJlZiBjb2xvclNwYWNlKTsKK1dFQkNPUkVfRVhQT1JUIENH
SW1hZ2VSZWYgKCp3a0lPU3VyZmFjZUNvbnRleHRDcmVhdGVJbWFnZSkoQ0dDb250ZXh0UmVmIGNv
bnRleHQpOwogCi1pbnQgKCp3a1JlY29tbWVuZGVkU2Nyb2xsZXJTdHlsZSkodm9pZCk7CitXRUJD
T1JFX0VYUE9SVCBpbnQgKCp3a1JlY29tbWVuZGVkU2Nyb2xsZXJTdHlsZSkodm9pZCk7CiAKLWJv
b2wgKCp3a0V4ZWN1dGFibGVXYXNMaW5rZWRPbk9yQmVmb3JlU25vd0xlb3BhcmQpKHZvaWQpOwor
V0VCQ09SRV9FWFBPUlQgYm9vbCAoKndrRXhlY3V0YWJsZVdhc0xpbmtlZE9uT3JCZWZvcmVTbm93
TGVvcGFyZCkodm9pZCk7CiAKLUNGU3RyaW5nUmVmICgqd2tDb3B5RGVmYXVsdFNlYXJjaFByb3Zp
ZGVyRGlzcGxheU5hbWUpKHZvaWQpOwotdm9pZCAoKndrU2V0Q3Jhc2hSZXBvcnRBcHBsaWNhdGlv
blNwZWNpZmljSW5mb3JtYXRpb24pKENGU3RyaW5nUmVmKTsKK1dFQkNPUkVfRVhQT1JUIENGU3Ry
aW5nUmVmICgqd2tDb3B5RGVmYXVsdFNlYXJjaFByb3ZpZGVyRGlzcGxheU5hbWUpKHZvaWQpOwor
V0VCQ09SRV9FWFBPUlQgdm9pZCAoKndrU2V0Q3Jhc2hSZXBvcnRBcHBsaWNhdGlvblNwZWNpZmlj
SW5mb3JtYXRpb24pKENGU3RyaW5nUmVmKTsKIAotTlNDdXJzb3IgKigqd2tDdXJzb3IpKGNvbnN0
IGNoYXIqKTsKK1dFQkNPUkVfRVhQT1JUIE5TQ3Vyc29yICooKndrQ3Vyc29yKShjb25zdCBjaGFy
Kik7CiAKLU5TQXJyYXkgKigqd2tTcGVlY2hTeW50aGVzaXNHZXRWb2ljZUlkZW50aWZpZXJzKSh2
b2lkKTsKLU5TU3RyaW5nICooKndrU3BlZWNoU3ludGhlc2lzR2V0RGVmYXVsdFZvaWNlSWRlbnRp
ZmllckZvckxvY2FsZSkoTlNMb2NhbGUgKik7CitXRUJDT1JFX0VYUE9SVCBOU0FycmF5ICooKndr
U3BlZWNoU3ludGhlc2lzR2V0Vm9pY2VJZGVudGlmaWVycykodm9pZCk7CitXRUJDT1JFX0VYUE9S
VCBOU1N0cmluZyAqKCp3a1NwZWVjaFN5bnRoZXNpc0dldERlZmF1bHRWb2ljZUlkZW50aWZpZXJG
b3JMb2NhbGUpKE5TTG9jYWxlICopOwogCi12b2lkICgqd2tVbnJlZ2lzdGVyVW5pcXVlSWRGb3JF
bGVtZW50KShpZCBlbGVtZW50KTsKLXZvaWQgKCp3a0FjY2Vzc2liaWxpdHlIYW5kbGVGb2N1c0No
YW5nZWQpKHZvaWQpOwotQ0ZUeXBlSUQgKCp3a0dldEFYVGV4dE1hcmtlclR5cGVJRCkodm9pZCk7
Ci1DRlR5cGVJRCAoKndrR2V0QVhUZXh0TWFya2VyUmFuZ2VUeXBlSUQpKHZvaWQpOwotQ0ZUeXBl
UmVmICgqd2tDcmVhdGVBWFRleHRNYXJrZXJSYW5nZSkoQ0ZUeXBlUmVmIHN0YXJ0LCBDRlR5cGVS
ZWYgZW5kKTsKLUNGVHlwZVJlZiAoKndrQ29weUFYVGV4dE1hcmtlclJhbmdlU3RhcnQpKENGVHlw
ZVJlZiByYW5nZSk7Ci1DRlR5cGVSZWYgKCp3a0NvcHlBWFRleHRNYXJrZXJSYW5nZUVuZCkoQ0ZU
eXBlUmVmIHJhbmdlKTsKLUNGVHlwZVJlZiAoKndrQ3JlYXRlQVhUZXh0TWFya2VyKShjb25zdCB2
b2lkICpieXRlcywgc2l6ZV90IGxlbik7Ci1CT09MICgqd2tHZXRCeXRlc0Zyb21BWFRleHRNYXJr
ZXIpKENGVHlwZVJlZiB0ZXh0TWFya2VyLCB2b2lkICpieXRlcywgc2l6ZV90IGxlbmd0aCk7Ci1B
WFVJRWxlbWVudFJlZiAoKndrQ3JlYXRlQVhVSUVsZW1lbnRSZWYpKGlkIGVsZW1lbnQpOworV0VC
Q09SRV9FWFBPUlQgdm9pZCAoKndrVW5yZWdpc3RlclVuaXF1ZUlkRm9yRWxlbWVudCkoaWQgZWxl
bWVudCk7CitXRUJDT1JFX0VYUE9SVCB2b2lkICgqd2tBY2Nlc3NpYmlsaXR5SGFuZGxlRm9jdXND
aGFuZ2VkKSh2b2lkKTsKK1dFQkNPUkVfRVhQT1JUIENGVHlwZUlEICgqd2tHZXRBWFRleHRNYXJr
ZXJUeXBlSUQpKHZvaWQpOworV0VCQ09SRV9FWFBPUlQgQ0ZUeXBlSUQgKCp3a0dldEFYVGV4dE1h
cmtlclJhbmdlVHlwZUlEKSh2b2lkKTsKK1dFQkNPUkVfRVhQT1JUIENGVHlwZVJlZiAoKndrQ3Jl
YXRlQVhUZXh0TWFya2VyUmFuZ2UpKENGVHlwZVJlZiBzdGFydCwgQ0ZUeXBlUmVmIGVuZCk7CitX
RUJDT1JFX0VYUE9SVCBDRlR5cGVSZWYgKCp3a0NvcHlBWFRleHRNYXJrZXJSYW5nZVN0YXJ0KShD
RlR5cGVSZWYgcmFuZ2UpOworV0VCQ09SRV9FWFBPUlQgQ0ZUeXBlUmVmICgqd2tDb3B5QVhUZXh0
TWFya2VyUmFuZ2VFbmQpKENGVHlwZVJlZiByYW5nZSk7CitXRUJDT1JFX0VYUE9SVCBDRlR5cGVS
ZWYgKCp3a0NyZWF0ZUFYVGV4dE1hcmtlcikoY29uc3Qgdm9pZCAqYnl0ZXMsIHNpemVfdCBsZW4p
OworV0VCQ09SRV9FWFBPUlQgQk9PTCAoKndrR2V0Qnl0ZXNGcm9tQVhUZXh0TWFya2VyKShDRlR5
cGVSZWYgdGV4dE1hcmtlciwgdm9pZCAqYnl0ZXMsIHNpemVfdCBsZW5ndGgpOworV0VCQ09SRV9F
WFBPUlQgQVhVSUVsZW1lbnRSZWYgKCp3a0NyZWF0ZUFYVUlFbGVtZW50UmVmKShpZCBlbGVtZW50
KTsKIAotQ0ZVUkxTdG9yYWdlU2Vzc2lvblJlZiAoKndrQ3JlYXRlUHJpdmF0ZVN0b3JhZ2VTZXNz
aW9uKShDRlN0cmluZ1JlZik7Ci1OU1VSTFJlcXVlc3QqICgqd2tDb3B5UmVxdWVzdFdpdGhTdG9y
YWdlU2Vzc2lvbikoQ0ZVUkxTdG9yYWdlU2Vzc2lvblJlZiwgTlNVUkxSZXF1ZXN0Kik7Ci1DRkhU
VFBDb29raWVTdG9yYWdlUmVmICgqd2tDb3B5SFRUUENvb2tpZVN0b3JhZ2UpKENGVVJMU3RvcmFn
ZVNlc3Npb25SZWYpOwotdW5zaWduZWQgKCp3a0dldEhUVFBDb29raWVBY2NlcHRQb2xpY3kpKENG
SFRUUENvb2tpZVN0b3JhZ2VSZWYpOwotdm9pZCAoKndrU2V0SFRUUENvb2tpZUFjY2VwdFBvbGlj
eSkoQ0ZIVFRQQ29va2llU3RvcmFnZVJlZiwgdW5zaWduZWQpOwotTlNBcnJheSAqKCp3a0hUVFBD
b29raWVzKShDRkhUVFBDb29raWVTdG9yYWdlUmVmKTsKLU5TQXJyYXkgKigqd2tIVFRQQ29va2ll
c0ZvclVSTCkoQ0ZIVFRQQ29va2llU3RvcmFnZVJlZiwgTlNVUkwgKiwgTlNVUkwgKik7Ci12b2lk
ICgqd2tTZXRIVFRQQ29va2llc0ZvclVSTCkoQ0ZIVFRQQ29va2llU3RvcmFnZVJlZiwgTlNBcnJh
eSAqLCBOU1VSTCAqLCBOU1VSTCAqKTsKLXZvaWQgKCp3a0RlbGV0ZUFsbEhUVFBDb29raWVzKShD
RkhUVFBDb29raWVTdG9yYWdlUmVmKTsKLXZvaWQgKCp3a0RlbGV0ZUhUVFBDb29raWUpKENGSFRU
UENvb2tpZVN0b3JhZ2VSZWYsIE5TSFRUUENvb2tpZSAqKTsKK1dFQkNPUkVfRVhQT1JUIENGVVJM
U3RvcmFnZVNlc3Npb25SZWYgKCp3a0NyZWF0ZVByaXZhdGVTdG9yYWdlU2Vzc2lvbikoQ0ZTdHJp
bmdSZWYpOworV0VCQ09SRV9FWFBPUlQgTlNVUkxSZXF1ZXN0KiAoKndrQ29weVJlcXVlc3RXaXRo
U3RvcmFnZVNlc3Npb24pKENGVVJMU3RvcmFnZVNlc3Npb25SZWYsIE5TVVJMUmVxdWVzdCopOwor
V0VCQ09SRV9FWFBPUlQgQ0ZIVFRQQ29va2llU3RvcmFnZVJlZiAoKndrQ29weUhUVFBDb29raWVT
dG9yYWdlKShDRlVSTFN0b3JhZ2VTZXNzaW9uUmVmKTsKK1dFQkNPUkVfRVhQT1JUIHVuc2lnbmVk
ICgqd2tHZXRIVFRQQ29va2llQWNjZXB0UG9saWN5KShDRkhUVFBDb29raWVTdG9yYWdlUmVmKTsK
K1dFQkNPUkVfRVhQT1JUIHZvaWQgKCp3a1NldEhUVFBDb29raWVBY2NlcHRQb2xpY3kpKENGSFRU
UENvb2tpZVN0b3JhZ2VSZWYsIHVuc2lnbmVkKTsKK1dFQkNPUkVfRVhQT1JUIE5TQXJyYXkgKigq
d2tIVFRQQ29va2llcykoQ0ZIVFRQQ29va2llU3RvcmFnZVJlZik7CitXRUJDT1JFX0VYUE9SVCBO
U0FycmF5ICooKndrSFRUUENvb2tpZXNGb3JVUkwpKENGSFRUUENvb2tpZVN0b3JhZ2VSZWYsIE5T
VVJMICosIE5TVVJMICopOworV0VCQ09SRV9FWFBPUlQgdm9pZCAoKndrU2V0SFRUUENvb2tpZXNG
b3JVUkwpKENGSFRUUENvb2tpZVN0b3JhZ2VSZWYsIE5TQXJyYXkgKiwgTlNVUkwgKiwgTlNVUkwg
Kik7CitXRUJDT1JFX0VYUE9SVCB2b2lkICgqd2tEZWxldGVBbGxIVFRQQ29va2llcykoQ0ZIVFRQ
Q29va2llU3RvcmFnZVJlZik7CitXRUJDT1JFX0VYUE9SVCB2b2lkICgqd2tEZWxldGVIVFRQQ29v
a2llKShDRkhUVFBDb29raWVTdG9yYWdlUmVmLCBOU0hUVFBDb29raWUgKik7CiAKLUNGU3RyaW5n
UmVmICgqd2tHZXRDRlVSTFJlc3BvbnNlTUlNRVR5cGUpKENGVVJMUmVzcG9uc2VSZWYpOwotQ0ZV
UkxSZWYgKCp3a0dldENGVVJMUmVzcG9uc2VVUkwpKENGVVJMUmVzcG9uc2VSZWYpOwotQ0ZIVFRQ
TWVzc2FnZVJlZiAoKndrR2V0Q0ZVUkxSZXNwb25zZUhUVFBSZXNwb25zZSkoQ0ZVUkxSZXNwb25z
ZVJlZik7Ci1DRlN0cmluZ1JlZiAoKndrQ29weUNGVVJMUmVzcG9uc2VTdWdnZXN0ZWRGaWxlbmFt
ZSkoQ0ZVUkxSZXNwb25zZVJlZik7Ci12b2lkICgqd2tTZXRDRlVSTFJlc3BvbnNlTUlNRVR5cGUp
KENGVVJMUmVzcG9uc2VSZWYsIENGU3RyaW5nUmVmIG1pbWVUeXBlKTsKLXZvaWQgKCp3a1NldE1l
dGFkYXRhVVJMKShOU1N0cmluZyAqdXJsU3RyaW5nLCBOU1N0cmluZyAqcmVmZXJyZXIsIE5TU3Ry
aW5nICpwYXRoKTsKK1dFQkNPUkVfRVhQT1JUIENGU3RyaW5nUmVmICgqd2tHZXRDRlVSTFJlc3Bv
bnNlTUlNRVR5cGUpKENGVVJMUmVzcG9uc2VSZWYpOworV0VCQ09SRV9FWFBPUlQgQ0ZVUkxSZWYg
KCp3a0dldENGVVJMUmVzcG9uc2VVUkwpKENGVVJMUmVzcG9uc2VSZWYpOworV0VCQ09SRV9FWFBP
UlQgQ0ZIVFRQTWVzc2FnZVJlZiAoKndrR2V0Q0ZVUkxSZXNwb25zZUhUVFBSZXNwb25zZSkoQ0ZV
UkxSZXNwb25zZVJlZik7CitXRUJDT1JFX0VYUE9SVCBDRlN0cmluZ1JlZiAoKndrQ29weUNGVVJM
UmVzcG9uc2VTdWdnZXN0ZWRGaWxlbmFtZSkoQ0ZVUkxSZXNwb25zZVJlZik7CitXRUJDT1JFX0VY
UE9SVCB2b2lkICgqd2tTZXRDRlVSTFJlc3BvbnNlTUlNRVR5cGUpKENGVVJMUmVzcG9uc2VSZWYs
IENGU3RyaW5nUmVmIG1pbWVUeXBlKTsKK1dFQkNPUkVfRVhQT1JUIHZvaWQgKCp3a1NldE1ldGFk
YXRhVVJMKShOU1N0cmluZyAqdXJsU3RyaW5nLCBOU1N0cmluZyAqcmVmZXJyZXIsIE5TU3RyaW5n
ICpwYXRoKTsKIAotdm9pZCgqd2tEZXN0cm95UmVuZGVyaW5nUmVzb3VyY2VzKSh2b2lkKTsKK1dF
QkNPUkVfRVhQT1JUIHZvaWQoKndrRGVzdHJveVJlbmRlcmluZ1Jlc291cmNlcykodm9pZCk7CiAK
LWRpc3BhdGNoX3NvdXJjZV90ICgqd2tDcmVhdGVWTVByZXNzdXJlRGlzcGF0Y2hPbk1haW5RdWV1
ZSkodm9pZCk7CitXRUJDT1JFX0VYUE9SVCBkaXNwYXRjaF9zb3VyY2VfdCAoKndrQ3JlYXRlVk1Q
cmVzc3VyZURpc3BhdGNoT25NYWluUXVldWUpKHZvaWQpOwogCiAjaWYgX19NQUNfT1NfWF9WRVJT
SU9OX01JTl9SRVFVSVJFRCA+PSAxMDkwCi1kaXNwYXRjaF9zb3VyY2VfdCAoKndrQ3JlYXRlTWVt
b3J5U3RhdHVzUHJlc3N1cmVDcml0aWNhbERpc3BhdGNoT25NYWluUXVldWUpKHZvaWQpOworV0VC
Q09SRV9FWFBPUlQgZGlzcGF0Y2hfc291cmNlX3QgKCp3a0NyZWF0ZU1lbW9yeVN0YXR1c1ByZXNz
dXJlQ3JpdGljYWxEaXNwYXRjaE9uTWFpblF1ZXVlKSh2b2lkKTsKICNlbmRpZgogCiAjaWYgX19N
QUNfT1NfWF9WRVJTSU9OX01JTl9SRVFVSVJFRCA+PSAxMDgwCi1ib29sICgqd2tFeGVjdXRhYmxl
V2FzTGlua2VkT25PckJlZm9yZUxpb24pKHZvaWQpOworV0VCQ09SRV9FWFBPUlQgYm9vbCAoKndr
RXhlY3V0YWJsZVdhc0xpbmtlZE9uT3JCZWZvcmVMaW9uKSh2b2lkKTsKICNlbmRpZgogCi12b2lk
ICgqd2tDR1BhdGhBZGRSb3VuZGVkUmVjdCkoQ0dNdXRhYmxlUGF0aFJlZiBwYXRoLCBjb25zdCBD
R0FmZmluZVRyYW5zZm9ybSogbWF0cml4LCBDR1JlY3QgcmVjdCwgQ0dGbG9hdCBjb3JuZXJXaWR0
aCwgQ0dGbG9hdCBjb3JuZXJIZWlnaHQpOworV0VCQ09SRV9FWFBPUlQgdm9pZCAoKndrQ0dQYXRo
QWRkUm91bmRlZFJlY3QpKENHTXV0YWJsZVBhdGhSZWYgcGF0aCwgY29uc3QgQ0dBZmZpbmVUcmFu
c2Zvcm0qIG1hdHJpeCwgQ0dSZWN0IHJlY3QsIENHRmxvYXQgY29ybmVyV2lkdGgsIENHRmxvYXQg
Y29ybmVySGVpZ2h0KTsKIAotdm9pZCAoKndrQ0ZVUkxSZXF1ZXN0QWxsb3dBbGxQb3N0Q2FjaGlu
ZykoQ0ZVUkxSZXF1ZXN0UmVmKTsKK1dFQkNPUkVfRVhQT1JUIHZvaWQgKCp3a0NGVVJMUmVxdWVz
dEFsbG93QWxsUG9zdENhY2hpbmcpKENGVVJMUmVxdWVzdFJlZik7CiAKICNpZiAhUExBVEZPUk0o
SU9TKSAmJiBfX01BQ19PU19YX1ZFUlNJT05fTUlOX1JFUVVJUkVEID49IDEwODAKLUNHRmxvYXQg
KCp3a05TRWxhc3RpY0RlbHRhRm9yVGltZURlbHRhKShDR0Zsb2F0IGluaXRpYWxQb3NpdGlvbiwg
Q0dGbG9hdCBpbml0aWFsVmVsb2NpdHksIENHRmxvYXQgZWxhcHNlZFRpbWUpOwotQ0dGbG9hdCAo
KndrTlNFbGFzdGljRGVsdGFGb3JSZWJvdW5kRGVsdGEpKENHRmxvYXQgZGVsdGEpOwotQ0dGbG9h
dCAoKndrTlNSZWJvdW5kRGVsdGFGb3JFbGFzdGljRGVsdGEpKENHRmxvYXQgZGVsdGEpOworV0VC
Q09SRV9FWFBPUlQgQ0dGbG9hdCAoKndrTlNFbGFzdGljRGVsdGFGb3JUaW1lRGVsdGEpKENHRmxv
YXQgaW5pdGlhbFBvc2l0aW9uLCBDR0Zsb2F0IGluaXRpYWxWZWxvY2l0eSwgQ0dGbG9hdCBlbGFw
c2VkVGltZSk7CitXRUJDT1JFX0VYUE9SVCBDR0Zsb2F0ICgqd2tOU0VsYXN0aWNEZWx0YUZvclJl
Ym91bmREZWx0YSkoQ0dGbG9hdCBkZWx0YSk7CitXRUJDT1JFX0VYUE9SVCBDR0Zsb2F0ICgqd2tO
U1JlYm91bmREZWx0YUZvckVsYXN0aWNEZWx0YSkoQ0dGbG9hdCBkZWx0YSk7CiAjZW5kaWYKIAog
I2lmIEVOQUJMRShQVUJMSUNfU1VGRklYX0xJU1QpCi1ib29sICgqd2tJc1B1YmxpY1N1ZmZpeCko
TlNTdHJpbmcgKmhvc3QpOworV0VCQ09SRV9FWFBPUlQgYm9vbCAoKndrSXNQdWJsaWNTdWZmaXgp
KE5TU3RyaW5nICpob3N0KTsKICNlbmRpZgogCiAjaWYgRU5BQkxFKENBQ0hFX1BBUlRJVElPTklO
RykKLUNGU3RyaW5nUmVmICgqd2tDYWNoZVBhcnRpdGlvbktleSkodm9pZCk7CitXRUJDT1JFX0VY
UE9SVCBDRlN0cmluZ1JlZiAoKndrQ2FjaGVQYXJ0aXRpb25LZXkpKHZvaWQpOwogI2VuZGlmCiAK
LWludCAoKndrRXhlcm5hbERldmljZVR5cGVGb3JQbGF5ZXIpKEFWUGxheWVyICopOwotTlNTdHJp
bmcgKigqd2tFeGVybmFsRGV2aWNlRGlzcGxheU5hbWVGb3JQbGF5ZXIpKEFWUGxheWVyICopOwor
V0VCQ09SRV9FWFBPUlQgaW50ICgqd2tFeGVybmFsRGV2aWNlVHlwZUZvclBsYXllcikoQVZQbGF5
ZXIgKik7CitXRUJDT1JFX0VYUE9SVCBOU1N0cmluZyAqKCp3a0V4ZXJuYWxEZXZpY2VEaXNwbGF5
TmFtZUZvclBsYXllcikoQVZQbGF5ZXIgKik7CiAKLWJvb2wgKCp3a1F1ZXJ5RGVjb2RlckF2YWls
YWJpbGl0eSkodm9pZCk7CitXRUJDT1JFX0VYUE9SVCBib29sICgqd2tRdWVyeURlY29kZXJBdmFp
bGFiaWxpdHkpKHZvaWQpOwpJbmRleDogU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vbW9jay9EZXZp
Y2VPcmllbnRhdGlvbkNsaWVudE1vY2suaAo9PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09Ci0tLSBTb3VyY2UvV2ViQ29yZS9w
bGF0Zm9ybS9tb2NrL0RldmljZU9yaWVudGF0aW9uQ2xpZW50TW9jay5oCShyZXZpc2lvbiAxNzI2
NTgpCisrKyBTb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9tb2NrL0RldmljZU9yaWVudGF0aW9uQ2xp
ZW50TW9jay5oCSh3b3JraW5nIGNvcHkpCkBAIC00Miw3ICs0Miw3IEBAIGNsYXNzIERldmljZU9y
aWVudGF0aW9uQ29udHJvbGxlcjsKIC8vIGNsaWVudCB3aGVuIHJ1bm5pbmcgRHVtcFJlbmRlclRy
ZWUuCiBjbGFzcyBEZXZpY2VPcmllbnRhdGlvbkNsaWVudE1vY2sgOiBwdWJsaWMgRGV2aWNlT3Jp
ZW50YXRpb25DbGllbnQgewogcHVibGljOgotICAgIERldmljZU9yaWVudGF0aW9uQ2xpZW50TW9j
aygpOworICAgIFdFQkNPUkVfRVhQT1JUIERldmljZU9yaWVudGF0aW9uQ2xpZW50TW9jaygpOwog
CiAgICAgLy8gRGV2aWNlT3JpZW50YXRpb25DbGllbnQKICAgICB2aXJ0dWFsIHZvaWQgc2V0Q29u
dHJvbGxlcihEZXZpY2VPcmllbnRhdGlvbkNvbnRyb2xsZXIqKSBvdmVycmlkZTsKQEAgLTUxLDcg
KzUxLDcgQEAgcHVibGljOgogICAgIHZpcnR1YWwgRGV2aWNlT3JpZW50YXRpb25EYXRhKiBsYXN0
T3JpZW50YXRpb24oKSBjb25zdCBvdmVycmlkZSB7IHJldHVybiBtX29yaWVudGF0aW9uLmdldCgp
OyB9CiAgICAgdmlydHVhbCB2b2lkIGRldmljZU9yaWVudGF0aW9uQ29udHJvbGxlckRlc3Ryb3ll
ZCgpIG92ZXJyaWRlIHsgfQogCi0gICAgdm9pZCBzZXRPcmllbnRhdGlvbihQYXNzUmVmUHRyPERl
dmljZU9yaWVudGF0aW9uRGF0YT4pOworICAgIFdFQkNPUkVfRVhQT1JUIHZvaWQgc2V0T3JpZW50
YXRpb24oUGFzc1JlZlB0cjxEZXZpY2VPcmllbnRhdGlvbkRhdGE+KTsKIAogcHJpdmF0ZToKICAg
ICB2b2lkIHRpbWVyRmlyZWQoVGltZXI8RGV2aWNlT3JpZW50YXRpb25DbGllbnRNb2NrPiYpOwpJ
bmRleDogU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vbmV0d29yay9BdXRoZW50aWNhdGlvbkNoYWxs
ZW5nZUJhc2UuaAo9PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09Ci0tLSBTb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9uZXR3b3Jr
L0F1dGhlbnRpY2F0aW9uQ2hhbGxlbmdlQmFzZS5oCShyZXZpc2lvbiAxNzI2NTgpCisrKyBTb3Vy
Y2UvV2ViQ29yZS9wbGF0Zm9ybS9uZXR3b3JrL0F1dGhlbnRpY2F0aW9uQ2hhbGxlbmdlQmFzZS5o
CSh3b3JraW5nIGNvcHkpCkBAIC0zNiwxOSArMzYsMTkgQEAgY2xhc3MgQXV0aGVudGljYXRpb25D
aGFsbGVuZ2U7CiAKIGNsYXNzIEF1dGhlbnRpY2F0aW9uQ2hhbGxlbmdlQmFzZSB7CiBwdWJsaWM6
Ci0gICAgQXV0aGVudGljYXRpb25DaGFsbGVuZ2VCYXNlKCk7CisgICAgV0VCQ09SRV9FWFBPUlQg
QXV0aGVudGljYXRpb25DaGFsbGVuZ2VCYXNlKCk7CiAgICAgQXV0aGVudGljYXRpb25DaGFsbGVu
Z2VCYXNlKGNvbnN0IFByb3RlY3Rpb25TcGFjZSYgcHJvdGVjdGlvblNwYWNlLCBjb25zdCBDcmVk
ZW50aWFsJiBwcm9wb3NlZENyZWRlbnRpYWwsIHVuc2lnbmVkIHByZXZpb3VzRmFpbHVyZUNvdW50
LCBjb25zdCBSZXNvdXJjZVJlc3BvbnNlJiByZXNwb25zZSwgY29uc3QgUmVzb3VyY2VFcnJvciYg
ZXJyb3IpOwogCi0gICAgdW5zaWduZWQgcHJldmlvdXNGYWlsdXJlQ291bnQoKSBjb25zdDsKLSAg
ICBjb25zdCBDcmVkZW50aWFsJiBwcm9wb3NlZENyZWRlbnRpYWwoKSBjb25zdDsKLSAgICBjb25z
dCBQcm90ZWN0aW9uU3BhY2UmIHByb3RlY3Rpb25TcGFjZSgpIGNvbnN0OwotICAgIGNvbnN0IFJl
c291cmNlUmVzcG9uc2UmIGZhaWx1cmVSZXNwb25zZSgpIGNvbnN0OwotICAgIGNvbnN0IFJlc291
cmNlRXJyb3ImIGVycm9yKCkgY29uc3Q7CisgICAgV0VCQ09SRV9FWFBPUlQgdW5zaWduZWQgcHJl
dmlvdXNGYWlsdXJlQ291bnQoKSBjb25zdDsKKyAgICBXRUJDT1JFX0VYUE9SVCBjb25zdCBDcmVk
ZW50aWFsJiBwcm9wb3NlZENyZWRlbnRpYWwoKSBjb25zdDsKKyAgICBXRUJDT1JFX0VYUE9SVCBj
b25zdCBQcm90ZWN0aW9uU3BhY2UmIHByb3RlY3Rpb25TcGFjZSgpIGNvbnN0OworICAgIFdFQkNP
UkVfRVhQT1JUIGNvbnN0IFJlc291cmNlUmVzcG9uc2UmIGZhaWx1cmVSZXNwb25zZSgpIGNvbnN0
OworICAgIFdFQkNPUkVfRVhQT1JUIGNvbnN0IFJlc291cmNlRXJyb3ImIGVycm9yKCkgY29uc3Q7
CiAgICAgCi0gICAgYm9vbCBpc051bGwoKSBjb25zdDsKLSAgICB2b2lkIG51bGxpZnkoKTsKKyAg
ICBXRUJDT1JFX0VYUE9SVCBib29sIGlzTnVsbCgpIGNvbnN0OworICAgIFdFQkNPUkVfRVhQT1JU
IHZvaWQgbnVsbGlmeSgpOwogICAgIAotICAgIHN0YXRpYyBib29sIGNvbXBhcmUoY29uc3QgQXV0
aGVudGljYXRpb25DaGFsbGVuZ2UmIGEsIGNvbnN0IEF1dGhlbnRpY2F0aW9uQ2hhbGxlbmdlJiBi
KTsKKyAgICBXRUJDT1JFX0VYUE9SVCBzdGF0aWMgYm9vbCBjb21wYXJlKGNvbnN0IEF1dGhlbnRp
Y2F0aW9uQ2hhbGxlbmdlJiBhLCBjb25zdCBBdXRoZW50aWNhdGlvbkNoYWxsZW5nZSYgYik7CiAK
IHByb3RlY3RlZDoKICAgICAvLyBUaGUgQXV0aGVudGljYXRpb25DaGFsbGVuZ2Ugc3ViY2xhc3Mg
bWF5ICJzaGFkb3ciIHRoaXMgbWV0aG9kIHRvIGNvbXBhcmUgcGxhdGZvcm0gc3BlY2lmaWMgZmll
bGRzCkluZGV4OiBTb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9uZXR3b3JrL0Jsb2JEYXRhLmgKPT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PQotLS0gU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vbmV0d29yay9CbG9iRGF0YS5oCShy
ZXZpc2lvbiAxNzI2NTgpCisrKyBTb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9uZXR3b3JrL0Jsb2JE
YXRhLmgJKHdvcmtpbmcgY29weSkKQEAgLTY3LDcgKzY3LDcgQEAgcHJpdmF0ZToKIH07CiAKIHN0
cnVjdCBCbG9iRGF0YUl0ZW0gewotICAgIHN0YXRpYyBjb25zdCBsb25nIGxvbmcgdG9FbmRPZkZp
bGU7CisgICAgV0VCQ09SRV9FWFBPUlQgc3RhdGljIGNvbnN0IGxvbmcgbG9uZyB0b0VuZE9mRmls
ZTsKIAogICAgIGVudW0gewogICAgICAgICBEYXRhLApAQCAtMTI0LDcgKzEyNCw3IEBAIHB1Ymxp
YzoKICAgICB9CiAKICAgICBjb25zdCBTdHJpbmcmIGNvbnRlbnRUeXBlKCkgY29uc3QgeyByZXR1
cm4gbV9jb250ZW50VHlwZTsgfQotICAgIHZvaWQgc2V0Q29udGVudFR5cGUoY29uc3QgU3RyaW5n
Jik7CisgICAgV0VCQ09SRV9FWFBPUlQgdm9pZCBzZXRDb250ZW50VHlwZShjb25zdCBTdHJpbmcm
KTsKIAogICAgIGNvbnN0IEJsb2JEYXRhSXRlbUxpc3QmIGl0ZW1zKCkgY29uc3QgeyByZXR1cm4g
bV9pdGVtczsgfQogICAgIHZvaWQgc3dhcEl0ZW1zKEJsb2JEYXRhSXRlbUxpc3QmKTsKSW5kZXg6
IFNvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL25ldHdvcmsvQmxvYkRhdGFGaWxlUmVmZXJlbmNlLmgK
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PQotLS0gU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vbmV0d29yay9CbG9iRGF0YUZp
bGVSZWZlcmVuY2UuaAkocmV2aXNpb24gMTcyNjU4KQorKysgU291cmNlL1dlYkNvcmUvcGxhdGZv
cm0vbmV0d29yay9CbG9iRGF0YUZpbGVSZWZlcmVuY2UuaAkod29ya2luZyBjb3B5KQpAQCAtMzks
MTEgKzM5LDExIEBAIHB1YmxpYzoKICAgICAgICAgcmV0dXJuIGFkb3B0UmVmKG5ldyBCbG9iRGF0
YUZpbGVSZWZlcmVuY2UocGF0aCkpOwogICAgIH0KIAotICAgIHZpcnR1YWwgfkJsb2JEYXRhRmls
ZVJlZmVyZW5jZSgpOworICAgIFdFQkNPUkVfRVhQT1JUIHZpcnR1YWwgfkJsb2JEYXRhRmlsZVJl
ZmVyZW5jZSgpOwogCiAgICAgdm9pZCBzdGFydFRyYWNraW5nTW9kaWZpY2F0aW9ucygpOwogCi0g
ICAgY29uc3QgU3RyaW5nJiBwYXRoKCk7CisgICAgV0VCQ09SRV9FWFBPUlQgY29uc3QgU3RyaW5n
JiBwYXRoKCk7CiAgICAgdW5zaWduZWQgbG9uZyBsb25nIHNpemUoKTsKICAgICBkb3VibGUgZXhw
ZWN0ZWRNb2RpZmljYXRpb25UaW1lKCk7CiAKQEAgLTUxLDcgKzUxLDcgQEAgcHVibGljOgogICAg
IHZpcnR1YWwgdm9pZCByZXZva2VGaWxlQWNjZXNzKCk7CiAKIHByb3RlY3RlZDoKLSAgICBCbG9i
RGF0YUZpbGVSZWZlcmVuY2UoY29uc3QgU3RyaW5nJiBwYXRoKTsKKyAgICBXRUJDT1JFX0VYUE9S
VCBCbG9iRGF0YUZpbGVSZWZlcmVuY2UoY29uc3QgU3RyaW5nJiBwYXRoKTsKIAogcHJpdmF0ZToK
ICNpZiBFTkFCTEUoRklMRV9SRVBMQUNFTUVOVCkKSW5kZXg6IFNvdXJjZS9XZWJDb3JlL3BsYXRm
b3JtL25ldHdvcmsvQmxvYlJlZ2lzdHJ5LmgKPT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PQotLS0gU291cmNlL1dlYkNvcmUv
cGxhdGZvcm0vbmV0d29yay9CbG9iUmVnaXN0cnkuaAkocmV2aXNpb24gMTcyNjU4KQorKysgU291
cmNlL1dlYkNvcmUvcGxhdGZvcm0vbmV0d29yay9CbG9iUmVnaXN0cnkuaAkod29ya2luZyBjb3B5
KQpAQCAtNjYsNyArNjYsNyBAQCBwdWJsaWM6CiAgICAgdmlydHVhbCBib29sIGlzQmxvYlJlZ2lz
dHJ5SW1wbCgpIGNvbnN0IHsgcmV0dXJuIGZhbHNlOyB9CiAKIHByb3RlY3RlZDoKLSAgICB2aXJ0
dWFsIH5CbG9iUmVnaXN0cnkoKTsKKyAgICBXRUJDT1JFX0VYUE9SVCB2aXJ0dWFsIH5CbG9iUmVn
aXN0cnkoKTsKIH07CiAKIH0gLy8gbmFtZXNwYWNlIFdlYkNvcmUKSW5kZXg6IFNvdXJjZS9XZWJD
b3JlL3BsYXRmb3JtL25ldHdvcmsvQmxvYlJlZ2lzdHJ5SW1wbC5oCj09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT0KLS0tIFNv
dXJjZS9XZWJDb3JlL3BsYXRmb3JtL25ldHdvcmsvQmxvYlJlZ2lzdHJ5SW1wbC5oCShyZXZpc2lv
biAxNzI2NTgpCisrKyBTb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9uZXR3b3JrL0Jsb2JSZWdpc3Ry
eUltcGwuaAkod29ya2luZyBjb3B5KQpAQCAtNTAsNyArNTAsNyBAQCBjbGFzcyBCbG9iUmVnaXN0
cnlJbXBsIGZpbmFsIDogcHVibGljIEJsCiBwdWJsaWM6CiAgICAgdmlydHVhbCB+QmxvYlJlZ2lz
dHJ5SW1wbCgpOwogCi0gICAgQmxvYkRhdGEqIGdldEJsb2JEYXRhRnJvbVVSTChjb25zdCBVUkwm
KSBjb25zdDsKKyAgICBXRUJDT1JFX0VYUE9SVCBCbG9iRGF0YSogZ2V0QmxvYkRhdGFGcm9tVVJM
KGNvbnN0IFVSTCYpIGNvbnN0OwogCiAgICAgUGFzc1JlZlB0cjxSZXNvdXJjZUhhbmRsZT4gY3Jl
YXRlUmVzb3VyY2VIYW5kbGUoY29uc3QgUmVzb3VyY2VSZXF1ZXN0JiwgUmVzb3VyY2VIYW5kbGVD
bGllbnQqKTsKIApJbmRleDogU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vbmV0d29yay9DcmVkZW50
aWFsQmFzZS5oCj09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT0KLS0tIFNvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL25ldHdvcmsv
Q3JlZGVudGlhbEJhc2UuaAkocmV2aXNpb24gMTcyNjU4KQorKysgU291cmNlL1dlYkNvcmUvcGxh
dGZvcm0vbmV0d29yay9DcmVkZW50aWFsQmFzZS5oCSh3b3JraW5nIGNvcHkpCkBAIC00MywxOCAr
NDMsMTggQEAgY2xhc3MgQ3JlZGVudGlhbEJhc2UgewogcHVibGljOgogICAgIGJvb2wgaXNFbXB0
eSgpIGNvbnN0OwogICAgIAotICAgIGNvbnN0IFN0cmluZyYgdXNlcigpIGNvbnN0OwotICAgIGNv
bnN0IFN0cmluZyYgcGFzc3dvcmQoKSBjb25zdDsKLSAgICBib29sIGhhc1Bhc3N3b3JkKCkgY29u
c3Q7Ci0gICAgQ3JlZGVudGlhbFBlcnNpc3RlbmNlIHBlcnNpc3RlbmNlKCkgY29uc3Q7CisgICAg
V0VCQ09SRV9FWFBPUlQgY29uc3QgU3RyaW5nJiB1c2VyKCkgY29uc3Q7CisgICAgV0VCQ09SRV9F
WFBPUlQgY29uc3QgU3RyaW5nJiBwYXNzd29yZCgpIGNvbnN0OworICAgIFdFQkNPUkVfRVhQT1JU
IGJvb2wgaGFzUGFzc3dvcmQoKSBjb25zdDsKKyAgICBXRUJDT1JFX0VYUE9SVCBDcmVkZW50aWFs
UGVyc2lzdGVuY2UgcGVyc2lzdGVuY2UoKSBjb25zdDsKIAogICAgIGJvb2wgZW5jb2RpbmdSZXF1
aXJlc1BsYXRmb3JtRGF0YSgpIGNvbnN0IHsgcmV0dXJuIGZhbHNlOyB9CiAKICAgICBzdGF0aWMg
Ym9vbCBjb21wYXJlKGNvbnN0IENyZWRlbnRpYWwmLCBjb25zdCBDcmVkZW50aWFsJik7CiAKIHBy
b3RlY3RlZDoKLSAgICBDcmVkZW50aWFsQmFzZSgpOwotICAgIENyZWRlbnRpYWxCYXNlKGNvbnN0
IFN0cmluZyYgdXNlciwgY29uc3QgU3RyaW5nJiBwYXNzd29yZCwgQ3JlZGVudGlhbFBlcnNpc3Rl
bmNlKTsKKyAgICBXRUJDT1JFX0VYUE9SVCBDcmVkZW50aWFsQmFzZSgpOworICAgIFdFQkNPUkVf
RVhQT1JUIENyZWRlbnRpYWxCYXNlKGNvbnN0IFN0cmluZyYgdXNlciwgY29uc3QgU3RyaW5nJiBw
YXNzd29yZCwgQ3JlZGVudGlhbFBlcnNpc3RlbmNlKTsKICAgICBDcmVkZW50aWFsQmFzZShjb25z
dCBDcmVkZW50aWFsJiBvcmlnaW5hbCwgQ3JlZGVudGlhbFBlcnNpc3RlbmNlKTsKIAogICAgIHN0
YXRpYyBib29sIHBsYXRmb3JtQ29tcGFyZShjb25zdCBDcmVkZW50aWFsJiwgY29uc3QgQ3JlZGVu
dGlhbCYpIHsgcmV0dXJuIHRydWU7IH0KSW5kZXg6IFNvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL25l
dHdvcmsvQ3JlZGVudGlhbFN0b3JhZ2UuaAo9PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09Ci0tLSBTb3VyY2UvV2ViQ29yZS9w
bGF0Zm9ybS9uZXR3b3JrL0NyZWRlbnRpYWxTdG9yYWdlLmgJKHJldmlzaW9uIDE3MjY1OCkKKysr
IFNvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL25ldHdvcmsvQ3JlZGVudGlhbFN0b3JhZ2UuaAkod29y
a2luZyBjb3B5KQpAQCAtNDAsMTcgKzQwLDE3IEBAIHB1YmxpYzoKICAgICBzdGF0aWMgdm9pZCBy
ZW1vdmUoY29uc3QgUHJvdGVjdGlvblNwYWNlJik7CiAKICAgICAvLyBPUyBwZXJzaXN0ZW50IHN0
b3JhZ2UuCi0gICAgc3RhdGljIENyZWRlbnRpYWwgZ2V0RnJvbVBlcnNpc3RlbnRTdG9yYWdlKGNv
bnN0IFByb3RlY3Rpb25TcGFjZSYpOworICAgIFdFQkNPUkVfRVhQT1JUIHN0YXRpYyBDcmVkZW50
aWFsIGdldEZyb21QZXJzaXN0ZW50U3RvcmFnZShjb25zdCBQcm90ZWN0aW9uU3BhY2UmKTsKIAog
I2lmIFBMQVRGT1JNKElPUykKICAgICBzdGF0aWMgdm9pZCBzYXZlVG9QZXJzaXN0ZW50U3RvcmFn
ZShjb25zdCBQcm90ZWN0aW9uU3BhY2UmLCBjb25zdCBDcmVkZW50aWFsJik7Ci0gICAgc3RhdGlj
IHZvaWQgY2xlYXJDcmVkZW50aWFscygpOworICAgIFdFQkNPUkVfRVhQT1JUIHN0YXRpYyB2b2lk
IGNsZWFyQ3JlZGVudGlhbHMoKTsKICNlbmRpZgogCiAgICAgLy8gVGhlc2UgbWV0aG9kcyB3b3Jr
IGZvciBhdXRoZW50aWNhdGlvbiBzY2hlbWVzIHRoYXQgc3VwcG9ydCBzZW5kaW5nIGNyZWRlbnRp
YWxzIHdpdGhvdXQgd2FpdGluZyBmb3IgYSByZXF1ZXN0LiBFLmcuLCBmb3IgSFRUUCBCYXNpYyBh
dXRoZW50aWNhdGlvbiBzY2hlbWUKICAgICAvLyBhIGNsaWVudCBzaG91bGQgYXNzdW1lIHRoYXQg
YWxsIHBhdGhzIGF0IG9yIGRlZXBlciB0aGFuIHRoZSBkZXB0aCBvZiBhIGtub3duIHByb3RlY3Rl
ZCByZXNvdXJjZSBzaGFyZSBhcmUgd2l0aGluIHRoZSBzYW1lIHByb3RlY3Rpb24gc3BhY2UuCiAg
ICAgc3RhdGljIGJvb2wgc2V0KGNvbnN0IENyZWRlbnRpYWwmLCBjb25zdCBVUkwmKTsgLy8gUmV0
dXJucyB0cnVlIGlmIHRoZSBVUkwgY29ycmVzcG9uZHMgdG8gYSBrbm93biBwcm90ZWN0aW9uIHNw
YWNlLCBzbyBjcmVkZW50aWFscyBjb3VsZCBiZSB1cGRhdGVkLgotICAgIHN0YXRpYyBDcmVkZW50
aWFsIGdldChjb25zdCBVUkwmKTsKKyAgICBXRUJDT1JFX0VYUE9SVCBzdGF0aWMgQ3JlZGVudGlh
bCBnZXQoY29uc3QgVVJMJik7CiAKICAgICBzdGF0aWMgdm9pZCBzZXRQcml2YXRlTW9kZShib29s
KTsKIH07CkluZGV4OiBTb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9uZXR3b3JrL1BsYXRmb3JtQ29v
a2llSmFyLmgKPT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PQotLS0gU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vbmV0d29yay9Q
bGF0Zm9ybUNvb2tpZUphci5oCShyZXZpc2lvbiAxNzI2NTgpCisrKyBTb3VyY2UvV2ViQ29yZS9w
bGF0Zm9ybS9uZXR3b3JrL1BsYXRmb3JtQ29va2llSmFyLmgJKHdvcmtpbmcgY29weSkKQEAgLTM5
LDcgKzM5LDcgQEAgc3RydWN0IENvb2tpZTsKIAogLy8gRklYTUU6IFRoZXNlIHNob3VsZCBwcm9i
YWJseSBiZSBOZXR3b3JrU3RvcmFnZVNlc3Npb24gbWVtYmVyIGZ1bmN0aW9ucy4KIAotU3RyaW5n
IGNvb2tpZXNGb3JET00oY29uc3QgTmV0d29ya1N0b3JhZ2VTZXNzaW9uJiwgY29uc3QgVVJMJiBm
aXJzdFBhcnR5LCBjb25zdCBVUkwmKTsKK1dFQkNPUkVfRVhQT1JUIFN0cmluZyBjb29raWVzRm9y
RE9NKGNvbnN0IE5ldHdvcmtTdG9yYWdlU2Vzc2lvbiYsIGNvbnN0IFVSTCYgZmlyc3RQYXJ0eSwg
Y29uc3QgVVJMJik7CiB2b2lkIHNldENvb2tpZXNGcm9tRE9NKGNvbnN0IE5ldHdvcmtTdG9yYWdl
U2Vzc2lvbiYsIGNvbnN0IFVSTCYgZmlyc3RQYXJ0eSwgY29uc3QgVVJMJiwgY29uc3QgU3RyaW5n
Jik7CiBib29sIGNvb2tpZXNFbmFibGVkKGNvbnN0IE5ldHdvcmtTdG9yYWdlU2Vzc2lvbiYsIGNv
bnN0IFVSTCYgZmlyc3RQYXJ0eSwgY29uc3QgVVJMJik7CiBTdHJpbmcgY29va2llUmVxdWVzdEhl
YWRlckZpZWxkVmFsdWUoY29uc3QgTmV0d29ya1N0b3JhZ2VTZXNzaW9uJiwgY29uc3QgVVJMJiBm
aXJzdFBhcnR5LCBjb25zdCBVUkwmKTsKSW5kZXg6IFNvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL25l
dHdvcmsvY2YvQXV0aGVudGljYXRpb25DaGFsbGVuZ2UuaAo9PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09Ci0tLSBTb3VyY2Uv
V2ViQ29yZS9wbGF0Zm9ybS9uZXR3b3JrL2NmL0F1dGhlbnRpY2F0aW9uQ2hhbGxlbmdlLmgJKHJl
dmlzaW9uIDE3MjY1OCkKKysrIFNvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL25ldHdvcmsvY2YvQXV0
aGVudGljYXRpb25DaGFsbGVuZ2UuaAkod29ya2luZyBjb3B5KQpAQCAtNDksNyArNDksNyBAQCBu
YW1lc3BhY2UgV2ViQ29yZSB7CiBjbGFzcyBBdXRoZW50aWNhdGlvbkNoYWxsZW5nZSA6IHB1Ymxp
YyBBdXRoZW50aWNhdGlvbkNoYWxsZW5nZUJhc2UgewogcHVibGljOgogICAgIEF1dGhlbnRpY2F0
aW9uQ2hhbGxlbmdlKCkge30KLSAgICBBdXRoZW50aWNhdGlvbkNoYWxsZW5nZShjb25zdCBQcm90
ZWN0aW9uU3BhY2UmLCBjb25zdCBDcmVkZW50aWFsJiBwcm9wb3NlZENyZWRlbnRpYWwsIHVuc2ln
bmVkIHByZXZpb3VzRmFpbHVyZUNvdW50LCBjb25zdCBSZXNvdXJjZVJlc3BvbnNlJiwgY29uc3Qg
UmVzb3VyY2VFcnJvciYpOworICAgIFdFQkNPUkVfRVhQT1JUIEF1dGhlbnRpY2F0aW9uQ2hhbGxl
bmdlKGNvbnN0IFByb3RlY3Rpb25TcGFjZSYsIGNvbnN0IENyZWRlbnRpYWwmIHByb3Bvc2VkQ3Jl
ZGVudGlhbCwgdW5zaWduZWQgcHJldmlvdXNGYWlsdXJlQ291bnQsIGNvbnN0IFJlc291cmNlUmVz
cG9uc2UmLCBjb25zdCBSZXNvdXJjZUVycm9yJik7CiAjaWYgVVNFKENGTkVUV09SSykKICAgICBB
dXRoZW50aWNhdGlvbkNoYWxsZW5nZShDRlVSTEF1dGhDaGFsbGVuZ2VSZWYsIEF1dGhlbnRpY2F0
aW9uQ2xpZW50Kik7CiAKQEAgLTYxLDggKzYxLDggQEAgcHVibGljOgogICAgIE5TVVJMQXV0aGVu
dGljYXRpb25DaGFsbGVuZ2UgKm5zVVJMQXV0aGVudGljYXRpb25DaGFsbGVuZ2UoKSBjb25zdCB7
IHJldHVybiBtX25zQ2hhbGxlbmdlLmdldCgpOyB9CiAjZW5kaWYKIAotICAgIHZvaWQgc2V0QXV0
aGVudGljYXRpb25DbGllbnQoQXV0aGVudGljYXRpb25DbGllbnQqKTsgLy8gQ2hhbmdlcyBzZW5k
ZXIgdG8gb25lIHRoYXQgaW52b2tlcyBjbGllbnQgbWV0aG9kcy4KLSAgICBBdXRoZW50aWNhdGlv
bkNsaWVudCogYXV0aGVudGljYXRpb25DbGllbnQoKSBjb25zdDsKKyAgICBXRUJDT1JFX0VYUE9S
VCB2b2lkIHNldEF1dGhlbnRpY2F0aW9uQ2xpZW50KEF1dGhlbnRpY2F0aW9uQ2xpZW50Kik7IC8v
IENoYW5nZXMgc2VuZGVyIHRvIG9uZSB0aGF0IGludm9rZXMgY2xpZW50IG1ldGhvZHMuCisgICAg
V0VCQ09SRV9FWFBPUlQgQXV0aGVudGljYXRpb25DbGllbnQqIGF1dGhlbnRpY2F0aW9uQ2xpZW50
KCkgY29uc3Q7CiAKIHByaXZhdGU6CiAgICAgZnJpZW5kIGNsYXNzIEF1dGhlbnRpY2F0aW9uQ2hh
bGxlbmdlQmFzZTsKSW5kZXg6IFNvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL25ldHdvcmsvY29jb2Ev
Q3JlZGVudGlhbENvY29hLmgKPT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PQotLS0gU291cmNlL1dlYkNvcmUvcGxhdGZvcm0v
bmV0d29yay9jb2NvYS9DcmVkZW50aWFsQ29jb2EuaAkocmV2aXNpb24gMTcyNjU4KQorKysgU291
cmNlL1dlYkNvcmUvcGxhdGZvcm0vbmV0d29yay9jb2NvYS9DcmVkZW50aWFsQ29jb2EuaAkod29y
a2luZyBjb3B5KQpAQCAtNTUsMjEgKzU1LDIxIEBAIHB1YmxpYzoKICNpZiBVU0UoQ0ZORVRXT1JL
KQogICAgIGV4cGxpY2l0IENyZWRlbnRpYWwoQ0ZVUkxDcmVkZW50aWFsUmVmKTsKICNlbmRpZgot
ICAgIGV4cGxpY2l0IENyZWRlbnRpYWwoTlNVUkxDcmVkZW50aWFsICopOworICAgIFdFQkNPUkVf
RVhQT1JUIGV4cGxpY2l0IENyZWRlbnRpYWwoTlNVUkxDcmVkZW50aWFsICopOwogCi0gICAgYm9v
bCBpc0VtcHR5KCkgY29uc3Q7CisgICAgV0VCQ09SRV9FWFBPUlQgYm9vbCBpc0VtcHR5KCkgY29u
c3Q7CiAKICAgICBib29sIGVuY29kaW5nUmVxdWlyZXNQbGF0Zm9ybURhdGEoKSBjb25zdCB7IHJl
dHVybiBtX25zQ3JlZGVudGlhbCAmJiBlbmNvZGluZ1JlcXVpcmVzUGxhdGZvcm1EYXRhKG1fbnND
cmVkZW50aWFsLmdldCgpKTsgfQogCiAjaWYgVVNFKENGTkVUV09SSykKICAgICBDRlVSTENyZWRl
bnRpYWxSZWYgY2ZDcmVkZW50aWFsKCkgY29uc3Q7CiAjZW5kaWYKLSAgICBOU1VSTENyZWRlbnRp
YWwgKm5zQ3JlZGVudGlhbCgpIGNvbnN0OworICAgIFdFQkNPUkVfRVhQT1JUIE5TVVJMQ3JlZGVu
dGlhbCAqbnNDcmVkZW50aWFsKCkgY29uc3Q7CiAKICAgICBzdGF0aWMgYm9vbCBwbGF0Zm9ybUNv
bXBhcmUoY29uc3QgQ3JlZGVudGlhbCYsIGNvbnN0IENyZWRlbnRpYWwmKTsKIAogcHJpdmF0ZToK
LSAgICBzdGF0aWMgYm9vbCBlbmNvZGluZ1JlcXVpcmVzUGxhdGZvcm1EYXRhKE5TVVJMQ3JlZGVu
dGlhbCAqKTsKKyAgICBXRUJDT1JFX0VYUE9SVCBzdGF0aWMgYm9vbCBlbmNvZGluZ1JlcXVpcmVz
UGxhdGZvcm1EYXRhKE5TVVJMQ3JlZGVudGlhbCAqKTsKIAogICAgIG11dGFibGUgUmV0YWluUHRy
PE5TVVJMQ3JlZGVudGlhbD4gbV9uc0NyZWRlbnRpYWw7CiB9OwpJbmRleDogU291cmNlL1dlYkNv
cmUvcGxhdGZvcm0vbmV0d29yay9tYWMvQ2VydGlmaWNhdGVJbmZvLmgKPT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PQotLS0g
U291cmNlL1dlYkNvcmUvcGxhdGZvcm0vbmV0d29yay9tYWMvQ2VydGlmaWNhdGVJbmZvLmgJKHJl
dmlzaW9uIDE3MjY1OCkKKysrIFNvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL25ldHdvcmsvbWFjL0Nl
cnRpZmljYXRlSW5mby5oCSh3b3JraW5nIGNvcHkpCkBAIC0zMyw5ICszMyw5IEBAIG5hbWVzcGFj
ZSBXZWJDb3JlIHsKIAogY2xhc3MgQ2VydGlmaWNhdGVJbmZvIHsKIHB1YmxpYzoKLSAgICBDZXJ0
aWZpY2F0ZUluZm8oKTsKLSAgICBleHBsaWNpdCBDZXJ0aWZpY2F0ZUluZm8oY29uc3QgUmVzb3Vy
Y2VSZXNwb25zZSYpOwotICAgIGV4cGxpY2l0IENlcnRpZmljYXRlSW5mbyhDRkFycmF5UmVmIGNl
cnRpZmljYXRlQ2hhaW4pOworICAgIFdFQkNPUkVfRVhQT1JUIENlcnRpZmljYXRlSW5mbygpOwor
ICAgIFdFQkNPUkVfRVhQT1JUIGV4cGxpY2l0IENlcnRpZmljYXRlSW5mbyhjb25zdCBSZXNvdXJj
ZVJlc3BvbnNlJik7CisgICAgV0VCQ09SRV9FWFBPUlQgZXhwbGljaXQgQ2VydGlmaWNhdGVJbmZv
KENGQXJyYXlSZWYgY2VydGlmaWNhdGVDaGFpbik7CiAKICAgICB2b2lkIHNldENlcnRpZmljYXRl
Q2hhaW4oQ0ZBcnJheVJlZiBjZXJ0aWZpY2F0ZUNoYWluKSB7IG1fY2VydGlmaWNhdGVDaGFpbiA9
IGNlcnRpZmljYXRlQ2hhaW47IH0KICAgICBDRkFycmF5UmVmIGNlcnRpZmljYXRlQ2hhaW4oKSBj
b25zdCB7IHJldHVybiBtX2NlcnRpZmljYXRlQ2hhaW4uZ2V0KCk7IH0KSW5kZXg6IFNvdXJjZS9X
ZWJDb3JlL3BsYXRmb3JtL3NxbC9TUUxpdGVEYXRhYmFzZS5oCj09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT0KLS0tIFNvdXJj
ZS9XZWJDb3JlL3BsYXRmb3JtL3NxbC9TUUxpdGVEYXRhYmFzZS5oCShyZXZpc2lvbiAxNzI2NTgp
CisrKyBTb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9zcWwvU1FMaXRlRGF0YWJhc2UuaAkod29ya2lu
ZyBjb3B5KQpAQCAtNTcsMjEgKzU3LDIxIEBAIGNsYXNzIFNRTGl0ZURhdGFiYXNlIHsKICAgICBX
VEZfTUFLRV9OT05DT1BZQUJMRShTUUxpdGVEYXRhYmFzZSk7CiAgICAgZnJpZW5kIGNsYXNzIFNR
TGl0ZVRyYW5zYWN0aW9uOwogcHVibGljOgotICAgIFNRTGl0ZURhdGFiYXNlKCk7Ci0gICAgflNR
TGl0ZURhdGFiYXNlKCk7CisgICAgV0VCQ09SRV9FWFBPUlQgU1FMaXRlRGF0YWJhc2UoKTsKKyAg
ICBXRUJDT1JFX0VYUE9SVCB+U1FMaXRlRGF0YWJhc2UoKTsKIAotICAgIGJvb2wgb3Blbihjb25z
dCBTdHJpbmcmIGZpbGVuYW1lLCBib29sIGZvcldlYlNRTERhdGFiYXNlID0gZmFsc2UpOworICAg
IFdFQkNPUkVfRVhQT1JUIGJvb2wgb3Blbihjb25zdCBTdHJpbmcmIGZpbGVuYW1lLCBib29sIGZv
cldlYlNRTERhdGFiYXNlID0gZmFsc2UpOwogICAgIGJvb2wgaXNPcGVuKCkgY29uc3QgeyByZXR1
cm4gbV9kYjsgfQotICAgIHZvaWQgY2xvc2UoKTsKKyAgICBXRUJDT1JFX0VYUE9SVCB2b2lkIGNs
b3NlKCk7CiAgICAgdm9pZCBpbnRlcnJ1cHQoKTsKICAgICBib29sIGlzSW50ZXJydXB0ZWQoKTsK
IAogICAgIHZvaWQgdXBkYXRlTGFzdENoYW5nZXNDb3VudCgpOwogCi0gICAgYm9vbCBleGVjdXRl
Q29tbWFuZChjb25zdCBTdHJpbmcmKTsKKyAgICBXRUJDT1JFX0VYUE9SVCBib29sIGV4ZWN1dGVD
b21tYW5kKGNvbnN0IFN0cmluZyYpOwogICAgIGJvb2wgcmV0dXJuc0F0TGVhc3RPbmVSZXN1bHQo
Y29uc3QgU3RyaW5nJik7CiAgICAgCi0gICAgYm9vbCB0YWJsZUV4aXN0cyhjb25zdCBTdHJpbmcm
KTsKKyAgICBXRUJDT1JFX0VYUE9SVCBib29sIHRhYmxlRXhpc3RzKGNvbnN0IFN0cmluZyYpOwog
ICAgIHZvaWQgY2xlYXJBbGxUYWJsZXMoKTsKICAgICBpbnQgcnVuVmFjdXVtQ29tbWFuZCgpOwog
ICAgIGludCBydW5JbmNyZW1lbnRhbFZhY3V1bUNvbW1hbmQoKTsKQEAgLTEwNCw4ICsxMDQsOCBA
QCBwdWJsaWM6CiAgICAgZW51bSBTeW5jaHJvbm91c1ByYWdtYSB7IFN5bmNPZmYgPSAwLCBTeW5j
Tm9ybWFsID0gMSwgU3luY0Z1bGwgPSAyIH07CiAgICAgdm9pZCBzZXRTeW5jaHJvbm91cyhTeW5j
aHJvbm91c1ByYWdtYSk7CiAgICAgCi0gICAgaW50IGxhc3RFcnJvcigpOwotICAgIGNvbnN0IGNo
YXIqIGxhc3RFcnJvck1zZygpOworICAgIFdFQkNPUkVfRVhQT1JUIGludCBsYXN0RXJyb3IoKTsK
KyAgICBXRUJDT1JFX0VYUE9SVCBjb25zdCBjaGFyKiBsYXN0RXJyb3JNc2coKTsKICAgICAKICAg
ICBzcWxpdGUzKiBzcWxpdGUzSGFuZGxlKCkgY29uc3QgewogI2lmICFQTEFURk9STShJT1MpCkBA
IC0xMzEsMTUgKzEzMSwxNSBAQCBwdWJsaWM6CiAgICAgZW51bSBBdXRvVmFjdXVtUHJhZ21hIHsg
QXV0b1ZhY3V1bU5vbmUgPSAwLCBBdXRvVmFjdXVtRnVsbCA9IDEsIEF1dG9WYWN1dW1JbmNyZW1l
bnRhbCA9IDIgfTsKICAgICBib29sIHR1cm5PbkluY3JlbWVudGFsQXV0b1ZhY3V1bSgpOwogCi0g
ICAgdm9pZCBzZXRDb2xsYXRpb25GdW5jdGlvbihjb25zdCBTdHJpbmcmIGNvbGxhdGlvbk5hbWUs
IHN0ZDo6ZnVuY3Rpb248aW50KGludCwgY29uc3Qgdm9pZCosIGludCwgY29uc3Qgdm9pZCopPik7
CisgICAgV0VCQ09SRV9FWFBPUlQgdm9pZCBzZXRDb2xsYXRpb25GdW5jdGlvbihjb25zdCBTdHJp
bmcmIGNvbGxhdGlvbk5hbWUsIHN0ZDo6ZnVuY3Rpb248aW50KGludCwgY29uc3Qgdm9pZCosIGlu
dCwgY29uc3Qgdm9pZCopPik7CiAgICAgdm9pZCByZW1vdmVDb2xsYXRpb25GdW5jdGlvbihjb25z
dCBTdHJpbmcmIGNvbGxhdGlvbk5hbWUpOwogCiAgICAgLy8gU2V0IHRoaXMgZmxhZyB0byBhbGxv
dyBhY2Nlc3MgZnJvbSBtdWx0aXBsZSB0aHJlYWRzLiAgTm90IGFsbCBtdWx0aS10aHJlYWRlZCBh
Y2Nlc3NlcyBhcmUgc2FmZSEKICAgICAvLyBTZWUgaHR0cDovL3d3dy5zcWxpdGUub3JnL2N2c3Ry
YWMvd2lraT9wPU11bHRpVGhyZWFkaW5nIGZvciBtb3JlIGluZm8uCiAjaWZuZGVmIE5ERUJVRwot
ICAgIHZvaWQgZGlzYWJsZVRocmVhZGluZ0NoZWNrcygpOworICAgIFdFQkNPUkVfRVhQT1JUIHZv
aWQgZGlzYWJsZVRocmVhZGluZ0NoZWNrcygpOwogI2Vsc2UKLSAgICB2b2lkIGRpc2FibGVUaHJl
YWRpbmdDaGVja3MoKSB7fQorICAgIFdFQkNPUkVfRVhQT1JUIHZvaWQgZGlzYWJsZVRocmVhZGlu
Z0NoZWNrcygpIHt9CiAjZW5kaWYKIAogcHJpdmF0ZToKSW5kZXg6IFNvdXJjZS9XZWJDb3JlL3Bs
YXRmb3JtL3NxbC9TUUxpdGVEYXRhYmFzZVRyYWNrZXIuaAo9PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09Ci0tLSBTb3VyY2Uv
V2ViQ29yZS9wbGF0Zm9ybS9zcWwvU1FMaXRlRGF0YWJhc2VUcmFja2VyLmgJKHJldmlzaW9uIDE3
MjY1OCkKKysrIFNvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL3NxbC9TUUxpdGVEYXRhYmFzZVRyYWNr
ZXIuaAkod29ya2luZyBjb3B5KQpAQCAtMzUsNyArMzUsNyBAQCBuYW1lc3BhY2UgU1FMaXRlRGF0
YWJhc2VUcmFja2VyIHsKIHZvaWQgZGVjcmVtZW50VHJhbnNhY3Rpb25JblByb2dyZXNzQ291bnQo
KTsKIHZvaWQgaW5jcmVtZW50VHJhbnNhY3Rpb25JblByb2dyZXNzQ291bnQoKTsKIAotdm9pZCBz
ZXRDbGllbnQoU1FMaXRlRGF0YWJhc2VUcmFja2VyQ2xpZW50Kik7CitXRUJDT1JFX0VYUE9SVCB2
b2lkIHNldENsaWVudChTUUxpdGVEYXRhYmFzZVRyYWNrZXJDbGllbnQqKTsKIAogI2lmICFBU1NF
UlRfRElTQUJMRUQKIGJvb2wgaGFzVHJhbnNhY3Rpb25JblByb2dyZXNzKCk7CkluZGV4OiBTb3Vy
Y2UvV2ViQ29yZS9wbGF0Zm9ybS9zcWwvU1FMaXRlU3RhdGVtZW50LmgKPT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PQotLS0g
U291cmNlL1dlYkNvcmUvcGxhdGZvcm0vc3FsL1NRTGl0ZVN0YXRlbWVudC5oCShyZXZpc2lvbiAx
NzI2NTgpCisrKyBTb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9zcWwvU1FMaXRlU3RhdGVtZW50LmgJ
KHdvcmtpbmcgY29weSkKQEAgLTM3LDIzICszNywyMyBAQCBjbGFzcyBTUUxWYWx1ZTsKIGNsYXNz
IFNRTGl0ZVN0YXRlbWVudCB7CiAgICAgV1RGX01BS0VfTk9OQ09QWUFCTEUoU1FMaXRlU3RhdGVt
ZW50KTsgV1RGX01BS0VfRkFTVF9BTExPQ0FURUQ7CiBwdWJsaWM6Ci0gICAgU1FMaXRlU3RhdGVt
ZW50KFNRTGl0ZURhdGFiYXNlJiwgY29uc3QgU3RyaW5nJik7Ci0gICAgflNRTGl0ZVN0YXRlbWVu
dCgpOworICAgIFdFQkNPUkVfRVhQT1JUIFNRTGl0ZVN0YXRlbWVudChTUUxpdGVEYXRhYmFzZSYs
IGNvbnN0IFN0cmluZyYpOworICAgIFdFQkNPUkVfRVhQT1JUIH5TUUxpdGVTdGF0ZW1lbnQoKTsK
ICAgICAKLSAgICBpbnQgcHJlcGFyZSgpOwotICAgIGludCBiaW5kQmxvYihpbnQgaW5kZXgsIGNv
bnN0IHZvaWQqIGJsb2IsIGludCBzaXplKTsKLSAgICBpbnQgYmluZEJsb2IoaW50IGluZGV4LCBj
b25zdCBTdHJpbmcmKTsKLSAgICBpbnQgYmluZFRleHQoaW50IGluZGV4LCBjb25zdCBTdHJpbmcm
KTsKLSAgICBpbnQgYmluZEludChpbnQgaW5kZXgsIGludCk7Ci0gICAgaW50IGJpbmRJbnQ2NChp
bnQgaW5kZXgsIGludDY0X3QpOwotICAgIGludCBiaW5kRG91YmxlKGludCBpbmRleCwgZG91Ymxl
KTsKLSAgICBpbnQgYmluZE51bGwoaW50IGluZGV4KTsKLSAgICBpbnQgYmluZFZhbHVlKGludCBp
bmRleCwgY29uc3QgU1FMVmFsdWUmKTsKLSAgICB1bnNpZ25lZCBiaW5kUGFyYW1ldGVyQ291bnQo
KSBjb25zdDsKKyAgICBXRUJDT1JFX0VYUE9SVCBpbnQgcHJlcGFyZSgpOworICAgIFdFQkNPUkVf
RVhQT1JUIGludCBiaW5kQmxvYihpbnQgaW5kZXgsIGNvbnN0IHZvaWQqIGJsb2IsIGludCBzaXpl
KTsKKyAgICBXRUJDT1JFX0VYUE9SVCBpbnQgYmluZEJsb2IoaW50IGluZGV4LCBjb25zdCBTdHJp
bmcmKTsKKyAgICBXRUJDT1JFX0VYUE9SVCBpbnQgYmluZFRleHQoaW50IGluZGV4LCBjb25zdCBT
dHJpbmcmKTsKKyAgICBXRUJDT1JFX0VYUE9SVCBpbnQgYmluZEludChpbnQgaW5kZXgsIGludCk7
CisgICAgV0VCQ09SRV9FWFBPUlQgaW50IGJpbmRJbnQ2NChpbnQgaW5kZXgsIGludDY0X3QpOwor
ICAgIFdFQkNPUkVfRVhQT1JUIGludCBiaW5kRG91YmxlKGludCBpbmRleCwgZG91YmxlKTsKKyAg
ICBXRUJDT1JFX0VYUE9SVCBpbnQgYmluZE51bGwoaW50IGluZGV4KTsKKyAgICBXRUJDT1JFX0VY
UE9SVCBpbnQgYmluZFZhbHVlKGludCBpbmRleCwgY29uc3QgU1FMVmFsdWUmKTsKKyAgICBXRUJD
T1JFX0VYUE9SVCB1bnNpZ25lZCBiaW5kUGFyYW1ldGVyQ291bnQoKSBjb25zdDsKIAotICAgIGlu
dCBzdGVwKCk7CisgICAgV0VCQ09SRV9FWFBPUlQgaW50IHN0ZXAoKTsKICAgICBpbnQgZmluYWxp
emUoKTsKLSAgICBpbnQgcmVzZXQoKTsKKyAgICBXRUJDT1JFX0VYUE9SVCBpbnQgcmVzZXQoKTsK
ICAgICAKICAgICBpbnQgcHJlcGFyZUFuZFN0ZXAoKSB7IGlmIChpbnQgZXJyb3IgPSBwcmVwYXJl
KCkpIHJldHVybiBlcnJvcjsgcmV0dXJuIHN0ZXAoKTsgfQogICAgIApAQCAtNzMsOCArNzMsOCBA
QCBwdWJsaWM6CiAgICAgLy8gcmV0dXJuZWQgaW4gdGhlIGxhc3Qgc3RlcCgpCiAgICAgaW50IGNv
bHVtbkNvdW50KCk7CiAgICAgCi0gICAgYm9vbCBpc0NvbHVtbk51bGwoaW50IGNvbCk7Ci0gICAg
Ym9vbCBpc0NvbHVtbkRlY2xhcmVkQXNCbG9iKGludCBjb2wpOworICAgIFdFQkNPUkVfRVhQT1JU
IGJvb2wgaXNDb2x1bW5OdWxsKGludCBjb2wpOworICAgIFdFQkNPUkVfRVhQT1JUIGJvb2wgaXND
b2x1bW5EZWNsYXJlZEFzQmxvYihpbnQgY29sKTsKICAgICBTdHJpbmcgZ2V0Q29sdW1uTmFtZShp
bnQgY29sKTsKICAgICBTUUxWYWx1ZSBnZXRDb2x1bW5WYWx1ZShpbnQgY29sKTsKICAgICBTdHJp
bmcgZ2V0Q29sdW1uVGV4dChpbnQgY29sKTsKSW5kZXg6IFNvdXJjZS9XZWJDb3JlL3BsYXRmb3Jt
L3NxbC9TUUxpdGVUcmFuc2FjdGlvbi5oCj09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT0KLS0tIFNvdXJjZS9XZWJDb3JlL3Bs
YXRmb3JtL3NxbC9TUUxpdGVUcmFuc2FjdGlvbi5oCShyZXZpc2lvbiAxNzI2NTgpCisrKyBTb3Vy
Y2UvV2ViQ29yZS9wbGF0Zm9ybS9zcWwvU1FMaXRlVHJhbnNhY3Rpb24uaAkod29ya2luZyBjb3B5
KQpAQCAtMzYsMTIgKzM2LDEyIEBAIGNsYXNzIFNRTGl0ZURhdGFiYXNlOwogY2xhc3MgU1FMaXRl
VHJhbnNhY3Rpb24gewogICAgIFdURl9NQUtFX05PTkNPUFlBQkxFKFNRTGl0ZVRyYW5zYWN0aW9u
KTsgV1RGX01BS0VfRkFTVF9BTExPQ0FURUQ7CiBwdWJsaWM6Ci0gICAgU1FMaXRlVHJhbnNhY3Rp
b24oU1FMaXRlRGF0YWJhc2UmIGRiLCBib29sIHJlYWRPbmx5ID0gZmFsc2UpOwotICAgIH5TUUxp
dGVUcmFuc2FjdGlvbigpOworICAgIFdFQkNPUkVfRVhQT1JUIFNRTGl0ZVRyYW5zYWN0aW9uKFNR
TGl0ZURhdGFiYXNlJiBkYiwgYm9vbCByZWFkT25seSA9IGZhbHNlKTsKKyAgICBXRUJDT1JFX0VY
UE9SVCB+U1FMaXRlVHJhbnNhY3Rpb24oKTsKICAgICAKLSAgICB2b2lkIGJlZ2luKCk7Ci0gICAg
dm9pZCBjb21taXQoKTsKLSAgICB2b2lkIHJvbGxiYWNrKCk7CisgICAgV0VCQ09SRV9FWFBPUlQg
dm9pZCBiZWdpbigpOworICAgIFdFQkNPUkVfRVhQT1JUIHZvaWQgY29tbWl0KCk7CisgICAgV0VC
Q09SRV9FWFBPUlQgdm9pZCByb2xsYmFjaygpOwogICAgIHZvaWQgc3RvcCgpOwogICAgIAogICAg
IGJvb2wgaW5Qcm9ncmVzcygpIGNvbnN0IHsgcmV0dXJuIG1faW5Qcm9ncmVzczsgfQpJbmRleDog
U291cmNlL1dlYkNvcmUvcGxhdGZvcm0vdGV4dC9CaWRpQ29udGV4dC5oCj09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT0KLS0t
IFNvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL3RleHQvQmlkaUNvbnRleHQuaAkocmV2aXNpb24gMTcy
NjU4KQorKysgU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vdGV4dC9CaWRpQ29udGV4dC5oCSh3b3Jr
aW5nIGNvcHkpCkBAIC0zOCw3ICszOCw3IEBAIGVudW0gQmlkaUVtYmVkZGluZ1NvdXJjZSB7CiAv
LyBVc2VkIHRvIGtlZXAgdHJhY2sgb2YgZXhwbGljaXQgZW1iZWRkaW5ncy4KIGNsYXNzIEJpZGlD
b250ZXh0IDogcHVibGljIFJlZkNvdW50ZWQ8QmlkaUNvbnRleHQ+IHsKIHB1YmxpYzoKLSAgICBz
dGF0aWMgUGFzc1JlZlB0cjxCaWRpQ29udGV4dD4gY3JlYXRlKHVuc2lnbmVkIGNoYXIgbGV2ZWws
IFVDaGFyRGlyZWN0aW9uLCBib29sIG92ZXJyaWRlID0gZmFsc2UsIEJpZGlFbWJlZGRpbmdTb3Vy
Y2UgPSBGcm9tU3R5bGVPckRPTSwgQmlkaUNvbnRleHQqIHBhcmVudCA9IDApOworICAgIFdFQkNP
UkVfRVhQT1JUIHN0YXRpYyBQYXNzUmVmUHRyPEJpZGlDb250ZXh0PiBjcmVhdGUodW5zaWduZWQg
Y2hhciBsZXZlbCwgVUNoYXJEaXJlY3Rpb24sIGJvb2wgb3ZlcnJpZGUgPSBmYWxzZSwgQmlkaUVt
YmVkZGluZ1NvdXJjZSA9IEZyb21TdHlsZU9yRE9NLCBCaWRpQ29udGV4dCogcGFyZW50ID0gMCk7
CiAKICAgICBCaWRpQ29udGV4dCogcGFyZW50KCkgY29uc3QgeyByZXR1cm4gbV9wYXJlbnQuZ2V0
KCk7IH0KICAgICB1bnNpZ25lZCBjaGFyIGxldmVsKCkgY29uc3QgeyByZXR1cm4gbV9sZXZlbDsg
fQpAQCAtNDYsNyArNDYsNyBAQCBwdWJsaWM6CiAgICAgYm9vbCBvdmVycmlkZSgpIGNvbnN0IHsg
cmV0dXJuIG1fb3ZlcnJpZGU7IH0KICAgICBCaWRpRW1iZWRkaW5nU291cmNlIHNvdXJjZSgpIGNv
bnN0IHsgcmV0dXJuIHN0YXRpY19jYXN0PEJpZGlFbWJlZGRpbmdTb3VyY2U+KG1fc291cmNlKTsg
fQogCi0gICAgUGFzc1JlZlB0cjxCaWRpQ29udGV4dD4gY29weVN0YWNrUmVtb3ZpbmdVbmljb2Rl
RW1iZWRkaW5nQ29udGV4dHMoKTsKKyAgICBXRUJDT1JFX0VYUE9SVCBQYXNzUmVmUHRyPEJpZGlD
b250ZXh0PiBjb3B5U3RhY2tSZW1vdmluZ1VuaWNvZGVFbWJlZGRpbmdDb250ZXh0cygpOwogcHJp
dmF0ZToKICAgICBCaWRpQ29udGV4dCh1bnNpZ25lZCBjaGFyIGxldmVsLCBVQ2hhckRpcmVjdGlv
biBkaXJlY3Rpb24sIGJvb2wgb3ZlcnJpZGUsIEJpZGlFbWJlZGRpbmdTb3VyY2Ugc291cmNlLCBC
aWRpQ29udGV4dCogcGFyZW50KQogICAgICAgICA6IG1fbGV2ZWwobGV2ZWwpCg==
</data>

          </attachment>
          <attachment
              isobsolete="0"
              ispatch="1"
              isprivate="0"
          >
            <attachid>236895</attachid>
            <date>2014-08-20 13:57:19 -0700</date>
            <delta_ts>2014-08-20 14:57:59 -0700</delta_ts>
            <desc>Patch</desc>
            <filename>bug-136108-20140820135710.patch</filename>
            <type>text/plain</type>
            <size>204645</size>
            <attacher name="Alex Christensen">achristensen</attacher>
            
              <data encoding="base64">SW5kZXg6IFNvdXJjZS9XZWJDb3JlL0NoYW5nZUxvZwo9PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09Ci0tLSBTb3VyY2UvV2Vi
Q29yZS9DaGFuZ2VMb2cJKHJldmlzaW9uIDE3MjgwOCkKKysrIFNvdXJjZS9XZWJDb3JlL0NoYW5n
ZUxvZwkod29ya2luZyBjb3B5KQpAQCAtMSwzICsxLDEyMCBAQAorMjAxNC0wOC0yMCAgQWxleCBD
aHJpc3RlbnNlbiAgPGFjaHJpc3RlbnNlbkB3ZWJraXQub3JnPgorCisgICAgICAgIEludHJvZHVj
aW5nIFdFQkNPUkVfRVhQT1JUIG1hY3JvLgorICAgICAgICBodHRwczovL2J1Z3Mud2Via2l0Lm9y
Zy9zaG93X2J1Zy5jZ2k/aWQ9MTM2MTA4CisKKyAgICAgICAgUmV2aWV3ZWQgYnkgTk9CT0RZIChP
T1BTISkuCisKKyAgICAgICAgVGhpcyBzaG91bGQgZXZlbnR1YWxseSByZXBsYWNlIFdlYkNvcmUu
ZXhwLmluLgorCisgICAgICAgICogcGxhdGZvcm0vUGxhdGZvcm1FeHBvcnRNYWNyb3MuaDoKKyAg
ICAgICAgRGVmaW5lIFdFQkNPUkVfRVhQT1JUIHRvIG5vdGhpbmcgdG8gbm90IGNhdXNlIHByb2Js
ZW1zIHdoaWxlIEknbSB3b3JraW5nIG9uIGl0LgorICAgICAgICAqIE1vZHVsZXMvZW5jcnlwdGVk
bWVkaWEvQ0RNLmg6CisgICAgICAgICogTW9kdWxlcy9zcGVlY2gvRE9NV2luZG93U3BlZWNoU3lu
dGhlc2lzLmg6CisgICAgICAgICogTW9kdWxlcy93ZWJkYXRhYmFzZS9EYXRhYmFzZU1hbmFnZXIu
aDoKKyAgICAgICAgKiBNb2R1bGVzL3dlYmRhdGFiYXNlL0RhdGFiYXNlVHJhY2tlci5oOgorICAg
ICAgICAqIGFjY2Vzc2liaWxpdHkvQVhPYmplY3RDYWNoZS5oOgorICAgICAgICAqIGJpbmRpbmdz
L2pzL0RPTVdyYXBwZXJXb3JsZC5oOgorICAgICAgICAqIGJyaWRnZS9qc2MvQnJpZGdlSlNDLmg6
CisgICAgICAgICogYnJpZGdlL3J1bnRpbWVfbWV0aG9kLmg6CisgICAgICAgICogYnJpZGdlL3J1
bnRpbWVfb2JqZWN0Lmg6CisgICAgICAgICogYnJpZGdlL3J1bnRpbWVfcm9vdC5oOgorICAgICAg
ICAqIGNzcy9DU1NDb21wdXRlZFN0eWxlRGVjbGFyYXRpb24uaDoKKyAgICAgICAgKiBjc3MvQ1NT
UGFyc2VyTW9kZS5oOgorICAgICAgICAqIGNzcy9DU1NWYWx1ZS5oOgorICAgICAgICAqIGNzcy9E
T01XaW5kb3dDU1MuaDoKKyAgICAgICAgKiBjc3MvU3R5bGVTaGVldENvbnRlbnRzLmg6CisgICAg
ICAgICogZG9tL0NoYXJhY3RlckRhdGEuaDoKKyAgICAgICAgKiBkb20vQ2xpZW50UmVjdC5oOgor
ICAgICAgICAqIGRvbS9DbGllbnRSZWN0TGlzdC5oOgorICAgICAgICAqIGRvbS9Db250YWluZXJO
b2RlLmg6CisgICAgICAgICogZG9tL0NvbnRleHREZXN0cnVjdGlvbk9ic2VydmVyLmg6CisgICAg
ICAgICogZG9tL0RPTUltcGxlbWVudGF0aW9uLmg6CisgICAgICAgICogZG9tL0RhdGFUcmFuc2Zl
ci5oOgorICAgICAgICAqIGRvbS9EZXZpY2VNb3Rpb25EYXRhLmg6CisgICAgICAgICogZG9tL0Rl
dmljZU9yaWVudGF0aW9uRGF0YS5oOgorICAgICAgICAqIGRvbS9Eb2N1bWVudC5oOgorICAgICAg
ICAoV2ViQ29yZTo6RG9jdW1lbnQ6OnNldEFubm90YXRlZFJlZ2lvbnNEaXJ0eSk6CisgICAgICAg
ICogZG9tL0RvY3VtZW50TWFya2VyLmg6CisgICAgICAgICogZG9tL0RvY3VtZW50TWFya2VyQ29u
dHJvbGxlci5oOgorICAgICAgICAqIGRvbS9Eb2N1bWVudFN0eWxlU2hlZXRDb2xsZWN0aW9uLmg6
CisgICAgICAgICogZG9tL0VsZW1lbnQuaDoKKyAgICAgICAgKiBkb20vRXZlbnQuaDoKKyAgICAg
ICAgKFdlYkNvcmU6OkV2ZW50OjpjcmVhdGUpOgorICAgICAgICAqIGRvbS9FdmVudExpc3RlbmVy
TWFwLmg6CisgICAgICAgICogZWRpdGluZy9EaWN0YXRpb25BbHRlcm5hdGl2ZS5oOgorICAgICAg
ICAqIGVkaXRpbmcvRWRpdENvbW1hbmQuaDoKKyAgICAgICAgKiBlZGl0aW5nL0VkaXRpbmdTdHls
ZS5oOgorICAgICAgICAqIGVkaXRpbmcvRWRpdG9yLmg6CisgICAgICAgICogZWRpdGluZy9tYWMv
QWx0ZXJuYXRpdmVUZXh0VUlDb250cm9sbGVyLmg6CisgICAgICAgICogaGlzdG9yeS9CYWNrRm9y
d2FyZENvbnRyb2xsZXIuaDoKKyAgICAgICAgKiBoaXN0b3J5L0JhY2tGb3J3YXJkTGlzdC5oOgor
ICAgICAgICAqIGhpc3RvcnkvQ2FjaGVkRnJhbWUuaDoKKyAgICAgICAgKiBsb2FkZXIvQ29va2ll
SmFyLmg6CisgICAgICAgICogbG9hZGVyL0Nyb3NzT3JpZ2luUHJlZmxpZ2h0UmVzdWx0Q2FjaGUu
aDoKKyAgICAgICAgKiBsb2FkZXIvRG9jdW1lbnRMb2FkZXIuaDoKKyAgICAgICAgKiBsb2FkZXIv
RG9jdW1lbnRXcml0ZXIuaDoKKyAgICAgICAgKiBsb2FkZXIvYXBwY2FjaGUvQXBwbGljYXRpb25D
YWNoZS5oOgorICAgICAgICAqIGxvYWRlci9hcHBjYWNoZS9BcHBsaWNhdGlvbkNhY2hlSG9zdC5o
OgorICAgICAgICAqIGxvYWRlci9hcHBjYWNoZS9BcHBsaWNhdGlvbkNhY2hlU3RvcmFnZS5oOgor
ICAgICAgICAqIGxvYWRlci9hcmNoaXZlL0FyY2hpdmVSZXNvdXJjZS5oOgorICAgICAgICAqIGxv
YWRlci9jYWNoZS9DYWNoZWRJbWFnZS5oOgorICAgICAgICAqIGxvYWRlci9jYWNoZS9DYWNoZWRS
ZXNvdXJjZS5oOgorICAgICAgICAqIGxvYWRlci9jYWNoZS9DYWNoZWRSZXNvdXJjZUhhbmRsZS5o
OgorICAgICAgICAqIGxvYWRlci9jYWNoZS9DYWNoZWRSZXNvdXJjZUxvYWRlci5oOgorICAgICAg
ICAqIHBhZ2UvQ2hyb21lLmg6CisgICAgICAgICogcGFnZS9Db250ZXh0TWVudUNvbnRyb2xsZXIu
aDoKKyAgICAgICAgKiBwYWdlL0RPTVdpbmRvdy5oOgorICAgICAgICAqIHBhZ2UvRE9NV2luZG93
RXh0ZW5zaW9uLmg6CisgICAgICAgICogcGFnZS9EcmFnQ29udHJvbGxlci5oOgorICAgICAgICAq
IHBhZ2UvRXZlbnRIYW5kbGVyLmg6CisgICAgICAgICogcGFnZS9hbmltYXRpb24vQW5pbWF0aW9u
Q29udHJvbGxlci5oOgorICAgICAgICAqIHBhZ2Uvc2Nyb2xsaW5nL0FzeW5jU2Nyb2xsaW5nQ29v
cmRpbmF0b3IuaDoKKyAgICAgICAgKiBwbGF0Zm9ybS9DYWxjdWxhdGlvblZhbHVlLmg6CisgICAg
ICAgICogcGxhdGZvcm0vQ29udGVudEZpbHRlci5oOgorICAgICAgICAqIHBsYXRmb3JtL0NvbnRl
eHRNZW51Lmg6CisgICAgICAgICogcGxhdGZvcm0vQ29udGV4dE1lbnVJdGVtLmg6CisgICAgICAg
ICogcGxhdGZvcm0vQ3Jvc3NUaHJlYWRDb3BpZXIuaDoKKyAgICAgICAgKiBwbGF0Zm9ybS9DdXJz
b3IuaDoKKyAgICAgICAgKiBwbGF0Zm9ybS9EYXRhYmFzZVN0cmF0ZWd5Lmg6CisgICAgICAgICog
cGxhdGZvcm0vRGlzcGxheVNsZWVwRGlzYWJsZXIuaDoKKyAgICAgICAgKiBwbGF0Zm9ybS9EcmFn
RGF0YS5oOgorICAgICAgICAqIHBsYXRmb3JtL0xvY2FsaXplZFN0cmluZ3MuaDoKKyAgICAgICAg
KiBwbGF0Zm9ybS9hdWRpby9BdWRpb0hhcmR3YXJlTGlzdGVuZXIuaDoKKyAgICAgICAgKiBwbGF0
Zm9ybS9hdWRpby9BdWRpb1Nlc3Npb24uaDoKKyAgICAgICAgKiBwbGF0Zm9ybS9hdWRpby9pb3Mv
TWVkaWFTZXNzaW9uTWFuYWdlcklPUy5tbToKKyAgICAgICAgKiBwbGF0Zm9ybS9ncmFwaGljcy9C
aXRtYXBJbWFnZS5oOgorICAgICAgICAqIHBsYXRmb3JtL2dyYXBoaWNzL0NvbG9yLmg6CisgICAg
ICAgICogcGxhdGZvcm0vZ3JhcGhpY3MvRGlzcGxheVJlZnJlc2hNb25pdG9yLmg6CisgICAgICAg
ICogcGxhdGZvcm0vZ3JhcGhpY3MvdHJhbnNmb3Jtcy9BZmZpbmVUcmFuc2Zvcm0uaDoKKyAgICAg
ICAgKiBwbGF0Zm9ybS9pb3MvV2ViQ29yZVN5c3RlbUludGVyZmFjZUlPUy5tbToKKyAgICAgICAg
KiBwbGF0Zm9ybS9pb3MvV2ViVmlkZW9GdWxsc2NyZWVuTW9kZWxNZWRpYUVsZW1lbnQuaDoKKyAg
ICAgICAgKiBwbGF0Zm9ybS9pb3Mvd2FrL1dBS1ZpZXcubW06CisgICAgICAgICogcGxhdGZvcm0v
aW9zL3dhay9XS0NvbnRlbnRPYnNlcnZhdGlvbi5oOgorICAgICAgICAqIHBsYXRmb3JtL2lvcy93
YWsvV0tWaWV3Lmg6CisgICAgICAgICogcGxhdGZvcm0vaW9zL3dhay9XZWJDb3JlVGhyZWFkLmg6
CisgICAgICAgICogcGxhdGZvcm0vaW9zL3dhay9XZWJDb3JlVGhyZWFkTWVzc2FnZS5oOgorICAg
ICAgICAqIHBsYXRmb3JtL21hYy9CbG9ja0V4Y2VwdGlvbnMuaDoKKyAgICAgICAgKiBwbGF0Zm9y
bS9tb2NrL0RldmljZU9yaWVudGF0aW9uQ2xpZW50TW9jay5oOgorICAgICAgICAqIHBsYXRmb3Jt
L25ldHdvcmsvQXV0aGVudGljYXRpb25DaGFsbGVuZ2VCYXNlLmg6CisgICAgICAgICogcGxhdGZv
cm0vbmV0d29yay9CbG9iRGF0YS5oOgorICAgICAgICAqIHBsYXRmb3JtL25ldHdvcmsvQmxvYkRh
dGFGaWxlUmVmZXJlbmNlLmg6CisgICAgICAgICogcGxhdGZvcm0vbmV0d29yay9CbG9iUmVnaXN0
cnkuaDoKKyAgICAgICAgKiBwbGF0Zm9ybS9uZXR3b3JrL0Jsb2JSZWdpc3RyeUltcGwuaDoKKyAg
ICAgICAgKiBwbGF0Zm9ybS9uZXR3b3JrL0NyZWRlbnRpYWxCYXNlLmg6CisgICAgICAgICogcGxh
dGZvcm0vbmV0d29yay9DcmVkZW50aWFsU3RvcmFnZS5oOgorICAgICAgICAqIHBsYXRmb3JtL25l
dHdvcmsvUGxhdGZvcm1Db29raWVKYXIuaDoKKyAgICAgICAgKiBwbGF0Zm9ybS9uZXR3b3JrL2Nm
L0F1dGhlbnRpY2F0aW9uQ2hhbGxlbmdlLmg6CisgICAgICAgICogcGxhdGZvcm0vbmV0d29yay9j
b2NvYS9DcmVkZW50aWFsQ29jb2EuaDoKKyAgICAgICAgKiBwbGF0Zm9ybS9uZXR3b3JrL21hYy9D
ZXJ0aWZpY2F0ZUluZm8uaDoKKyAgICAgICAgKiBwbGF0Zm9ybS9zcWwvU1FMaXRlRGF0YWJhc2Uu
aDoKKyAgICAgICAgKFdlYkNvcmU6OlNRTGl0ZURhdGFiYXNlOjpkaXNhYmxlVGhyZWFkaW5nQ2hl
Y2tzKToKKyAgICAgICAgKiBwbGF0Zm9ybS9zcWwvU1FMaXRlRGF0YWJhc2VUcmFja2VyLmg6Cisg
ICAgICAgICogcGxhdGZvcm0vc3FsL1NRTGl0ZVN0YXRlbWVudC5oOgorICAgICAgICAqIHBsYXRm
b3JtL3NxbC9TUUxpdGVUcmFuc2FjdGlvbi5oOgorICAgICAgICAqIHBsYXRmb3JtL3RleHQvQmlk
aUNvbnRleHQuaDoKKyAgICAgICAgQWRkZWQgV0VCQ09SRV9FWFBPUlQgbWFjcm9zLgorCiAyMDE0
LTA4LTIwICBFcmljIENhcmxzb24gIDxlcmljLmNhcmxzb25AYXBwbGUuY29tPgogCiAgICAgICAg
IFtNU0VdIGFkZCBhZGRpdGlvbmFsIFNvdXJjZUJ1ZmZlciBhbmQgTWVkaWFTb3VyY2UgbG9nZ2lu
ZwpJbmRleDogU291cmNlL1dlYkNvcmUvTW9kdWxlcy9lbmNyeXB0ZWRtZWRpYS9DRE0uaAo9PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09Ci0tLSBTb3VyY2UvV2ViQ29yZS9Nb2R1bGVzL2VuY3J5cHRlZG1lZGlhL0NETS5oCShy
ZXZpc2lvbiAxNzI4MDgpCisrKyBTb3VyY2UvV2ViQ29yZS9Nb2R1bGVzL2VuY3J5cHRlZG1lZGlh
L0NETS5oCSh3b3JraW5nIGNvcHkpCkBAIC01OSw3ICs1OSw3IEBAIHB1YmxpYzoKICAgICBzdGF0
aWMgYm9vbCBzdXBwb3J0c0tleVN5c3RlbShjb25zdCBTdHJpbmcmKTsKICAgICBzdGF0aWMgYm9v
bCBrZXlTeXN0ZW1TdXBwb3J0c01pbWVUeXBlKGNvbnN0IFN0cmluZyYga2V5U3lzdGVtLCBjb25z
dCBTdHJpbmcmIG1pbWVUeXBlKTsKICAgICBzdGF0aWMgc3RkOjp1bmlxdWVfcHRyPENETT4gY3Jl
YXRlKGNvbnN0IFN0cmluZyYga2V5U3lzdGVtKTsKLSAgICBzdGF0aWMgdm9pZCByZWdpc3RlckNE
TUZhY3RvcnkoQ3JlYXRlQ0RNLCBDRE1TdXBwb3J0c0tleVN5c3RlbSwgQ0RNU3VwcG9ydHNLZXlT
eXN0ZW1BbmRNaW1lVHlwZSk7CisgICAgV0VCQ09SRV9FWFBPUlQgc3RhdGljIHZvaWQgcmVnaXN0
ZXJDRE1GYWN0b3J5KENyZWF0ZUNETSwgQ0RNU3VwcG9ydHNLZXlTeXN0ZW0sIENETVN1cHBvcnRz
S2V5U3lzdGVtQW5kTWltZVR5cGUpOwogICAgIH5DRE0oKTsKIAogICAgIGJvb2wgc3VwcG9ydHNN
SU1FVHlwZShjb25zdCBTdHJpbmcmKSBjb25zdDsKSW5kZXg6IFNvdXJjZS9XZWJDb3JlL01vZHVs
ZXMvc3BlZWNoL0RPTVdpbmRvd1NwZWVjaFN5bnRoZXNpcy5oCj09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT0KLS0tIFNvdXJj
ZS9XZWJDb3JlL01vZHVsZXMvc3BlZWNoL0RPTVdpbmRvd1NwZWVjaFN5bnRoZXNpcy5oCShyZXZp
c2lvbiAxNzI4MDgpCisrKyBTb3VyY2UvV2ViQ29yZS9Nb2R1bGVzL3NwZWVjaC9ET01XaW5kb3dT
cGVlY2hTeW50aGVzaXMuaAkod29ya2luZyBjb3B5KQpAQCAtNDEsNyArNDEsNyBAQCBwdWJsaWM6
CiAgICAgZXhwbGljaXQgRE9NV2luZG93U3BlZWNoU3ludGhlc2lzKERPTVdpbmRvdyopOwogICAg
IHZpcnR1YWwgfkRPTVdpbmRvd1NwZWVjaFN5bnRoZXNpcygpOwogICAgIAotICAgIHN0YXRpYyBT
cGVlY2hTeW50aGVzaXMqIHNwZWVjaFN5bnRoZXNpcyhET01XaW5kb3cqKTsKKyAgICBXRUJDT1JF
X0VYUE9SVCBzdGF0aWMgU3BlZWNoU3ludGhlc2lzKiBzcGVlY2hTeW50aGVzaXMoRE9NV2luZG93
Kik7CiAgICAgc3RhdGljIERPTVdpbmRvd1NwZWVjaFN5bnRoZXNpcyogZnJvbShET01XaW5kb3cq
KTsKICAgICAKIHByaXZhdGU6CkluZGV4OiBTb3VyY2UvV2ViQ29yZS9Nb2R1bGVzL3dlYmRhdGFi
YXNlL0RhdGFiYXNlTWFuYWdlci5oCj09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT0KLS0tIFNvdXJjZS9XZWJDb3JlL01vZHVs
ZXMvd2ViZGF0YWJhc2UvRGF0YWJhc2VNYW5hZ2VyLmgJKHJldmlzaW9uIDE3MjgwOCkKKysrIFNv
dXJjZS9XZWJDb3JlL01vZHVsZXMvd2ViZGF0YWJhc2UvRGF0YWJhc2VNYW5hZ2VyLmgJKHdvcmtp
bmcgY29weSkKQEAgLTU0LDE1ICs1NCwxNSBAQCBjbGFzcyBTY3JpcHRFeGVjdXRpb25Db250ZXh0
OwogY2xhc3MgRGF0YWJhc2VNYW5hZ2VyIHsKICAgICBXVEZfTUFLRV9OT05DT1BZQUJMRShEYXRh
YmFzZU1hbmFnZXIpOyBXVEZfTUFLRV9GQVNUX0FMTE9DQVRFRDsKIHB1YmxpYzoKLSAgICBzdGF0
aWMgRGF0YWJhc2VNYW5hZ2VyJiBtYW5hZ2VyKCk7CisgICAgV0VCQ09SRV9FWFBPUlQgc3RhdGlj
IERhdGFiYXNlTWFuYWdlciYgbWFuYWdlcigpOwogCi0gICAgdm9pZCBpbml0aWFsaXplKGNvbnN0
IFN0cmluZyYgZGF0YWJhc2VQYXRoKTsKLSAgICB2b2lkIHNldENsaWVudChEYXRhYmFzZU1hbmFn
ZXJDbGllbnQqKTsKKyAgICBXRUJDT1JFX0VYUE9SVCB2b2lkIGluaXRpYWxpemUoY29uc3QgU3Ry
aW5nJiBkYXRhYmFzZVBhdGgpOworICAgIFdFQkNPUkVfRVhQT1JUIHZvaWQgc2V0Q2xpZW50KERh
dGFiYXNlTWFuYWdlckNsaWVudCopOwogICAgIFN0cmluZyBkYXRhYmFzZURpcmVjdG9yeVBhdGgo
KSBjb25zdDsKICAgICB2b2lkIHNldERhdGFiYXNlRGlyZWN0b3J5UGF0aChjb25zdCBTdHJpbmcm
KTsKIAogICAgIGJvb2wgaXNBdmFpbGFibGUoKTsKLSAgICB2b2lkIHNldElzQXZhaWxhYmxlKGJv
b2wpOworICAgIFdFQkNPUkVfRVhQT1JUIHZvaWQgc2V0SXNBdmFpbGFibGUoYm9vbCk7CiAKICAg
ICAvLyBUaGlzIGdldHMgYSBEYXRhYmFzZUNvbnRleHQgZm9yIHRoZSBzcGVjaWZpZWQgU2NyaXB0
RXhlY3V0aW9uQ29udGV4dC4KICAgICAvLyBJZiBvbmUgZG9lc24ndCBhbHJlYWR5IGV4aXN0LCBp
dCB3aWxsIGNyZWF0ZSBhIG5ldyBvbmUuCkBAIC04NiwyNCArODYsMjQgQEAgcHVibGljOgogICAg
IFBhc3NSZWZQdHI8RGF0YWJhc2U+IG9wZW5EYXRhYmFzZShTY3JpcHRFeGVjdXRpb25Db250ZXh0
KiwgY29uc3QgU3RyaW5nJiBuYW1lLCBjb25zdCBTdHJpbmcmIGV4cGVjdGVkVmVyc2lvbiwgY29u
c3QgU3RyaW5nJiBkaXNwbGF5TmFtZSwgdW5zaWduZWQgbG9uZyBlc3RpbWF0ZWRTaXplLCBQYXNz
UmVmUHRyPERhdGFiYXNlQ2FsbGJhY2s+LCBEYXRhYmFzZUVycm9yJik7CiAgICAgUGFzc1JlZlB0
cjxEYXRhYmFzZVN5bmM+IG9wZW5EYXRhYmFzZVN5bmMoU2NyaXB0RXhlY3V0aW9uQ29udGV4dCos
IGNvbnN0IFN0cmluZyYgbmFtZSwgY29uc3QgU3RyaW5nJiBleHBlY3RlZFZlcnNpb24sIGNvbnN0
IFN0cmluZyYgZGlzcGxheU5hbWUsIHVuc2lnbmVkIGxvbmcgZXN0aW1hdGVkU2l6ZSwgUGFzc1Jl
ZlB0cjxEYXRhYmFzZUNhbGxiYWNrPiwgRGF0YWJhc2VFcnJvciYpOwogCi0gICAgYm9vbCBoYXNP
cGVuRGF0YWJhc2VzKFNjcmlwdEV4ZWN1dGlvbkNvbnRleHQqKTsKKyAgICBXRUJDT1JFX0VYUE9S
VCBib29sIGhhc09wZW5EYXRhYmFzZXMoU2NyaXB0RXhlY3V0aW9uQ29udGV4dCopOwogICAgIHZv
aWQgc3RvcERhdGFiYXNlcyhTY3JpcHRFeGVjdXRpb25Db250ZXh0KiwgRGF0YWJhc2VUYXNrU3lu
Y2hyb25pemVyKik7CiAKICAgICBTdHJpbmcgZnVsbFBhdGhGb3JEYXRhYmFzZShTZWN1cml0eU9y
aWdpbiosIGNvbnN0IFN0cmluZyYgbmFtZSwgYm9vbCBjcmVhdGVJZkRvZXNOb3RFeGlzdCA9IHRy
dWUpOwogCiAgICAgYm9vbCBoYXNFbnRyeUZvck9yaWdpbihTZWN1cml0eU9yaWdpbiopOwotICAg
IHZvaWQgb3JpZ2lucyhWZWN0b3I8UmVmUHRyPFNlY3VyaXR5T3JpZ2luPj4mIHJlc3VsdCk7Ci0g
ICAgYm9vbCBkYXRhYmFzZU5hbWVzRm9yT3JpZ2luKFNlY3VyaXR5T3JpZ2luKiwgVmVjdG9yPFN0
cmluZz4mIHJlc3VsdCk7Ci0gICAgRGF0YWJhc2VEZXRhaWxzIGRldGFpbHNGb3JOYW1lQW5kT3Jp
Z2luKGNvbnN0IFN0cmluZyYsIFNlY3VyaXR5T3JpZ2luKik7Ci0KLSAgICB1bnNpZ25lZCBsb25n
IGxvbmcgdXNhZ2VGb3JPcmlnaW4oU2VjdXJpdHlPcmlnaW4qKTsKLSAgICB1bnNpZ25lZCBsb25n
IGxvbmcgcXVvdGFGb3JPcmlnaW4oU2VjdXJpdHlPcmlnaW4qKTsKLQotICAgIHZvaWQgc2V0UXVv
dGEoU2VjdXJpdHlPcmlnaW4qLCB1bnNpZ25lZCBsb25nIGxvbmcpOwotCi0gICAgdm9pZCBkZWxl
dGVBbGxEYXRhYmFzZXMoKTsKLSAgICBib29sIGRlbGV0ZU9yaWdpbihTZWN1cml0eU9yaWdpbiop
OwotICAgIGJvb2wgZGVsZXRlRGF0YWJhc2UoU2VjdXJpdHlPcmlnaW4qLCBjb25zdCBTdHJpbmcm
IG5hbWUpOworICAgIFdFQkNPUkVfRVhQT1JUIHZvaWQgb3JpZ2lucyhWZWN0b3I8UmVmUHRyPFNl
Y3VyaXR5T3JpZ2luPj4mIHJlc3VsdCk7CisgICAgV0VCQ09SRV9FWFBPUlQgYm9vbCBkYXRhYmFz
ZU5hbWVzRm9yT3JpZ2luKFNlY3VyaXR5T3JpZ2luKiwgVmVjdG9yPFN0cmluZz4mIHJlc3VsdCk7
CisgICAgV0VCQ09SRV9FWFBPUlQgRGF0YWJhc2VEZXRhaWxzIGRldGFpbHNGb3JOYW1lQW5kT3Jp
Z2luKGNvbnN0IFN0cmluZyYsIFNlY3VyaXR5T3JpZ2luKik7CisKKyAgICBXRUJDT1JFX0VYUE9S
VCB1bnNpZ25lZCBsb25nIGxvbmcgdXNhZ2VGb3JPcmlnaW4oU2VjdXJpdHlPcmlnaW4qKTsKKyAg
ICBXRUJDT1JFX0VYUE9SVCB1bnNpZ25lZCBsb25nIGxvbmcgcXVvdGFGb3JPcmlnaW4oU2VjdXJp
dHlPcmlnaW4qKTsKKworICAgIFdFQkNPUkVfRVhQT1JUIHZvaWQgc2V0UXVvdGEoU2VjdXJpdHlP
cmlnaW4qLCB1bnNpZ25lZCBsb25nIGxvbmcpOworCisgICAgV0VCQ09SRV9FWFBPUlQgdm9pZCBk
ZWxldGVBbGxEYXRhYmFzZXMoKTsKKyAgICBXRUJDT1JFX0VYUE9SVCBib29sIGRlbGV0ZU9yaWdp
bihTZWN1cml0eU9yaWdpbiopOworICAgIFdFQkNPUkVfRVhQT1JUIGJvb2wgZGVsZXRlRGF0YWJh
c2UoU2VjdXJpdHlPcmlnaW4qLCBjb25zdCBTdHJpbmcmIG5hbWUpOwogCiAgICAgdm9pZCBpbnRl
cnJ1cHRBbGxEYXRhYmFzZXNGb3JDb250ZXh0KFNjcmlwdEV4ZWN1dGlvbkNvbnRleHQqKTsKIApJ
bmRleDogU291cmNlL1dlYkNvcmUvTW9kdWxlcy93ZWJkYXRhYmFzZS9EYXRhYmFzZVRyYWNrZXIu
aAo9PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09Ci0tLSBTb3VyY2UvV2ViQ29yZS9Nb2R1bGVzL3dlYmRhdGFiYXNlL0RhdGFi
YXNlVHJhY2tlci5oCShyZXZpc2lvbiAxNzI4MDgpCisrKyBTb3VyY2UvV2ViQ29yZS9Nb2R1bGVz
L3dlYmRhdGFiYXNlL0RhdGFiYXNlVHJhY2tlci5oCSh3b3JraW5nIGNvcHkpCkBAIC01Myw3ICs1
Myw3IEBAIGNsYXNzIERhdGFiYXNlVHJhY2tlciB7CiBwdWJsaWM6CiAgICAgc3RhdGljIHZvaWQg
aW5pdGlhbGl6ZVRyYWNrZXIoY29uc3QgU3RyaW5nJiBkYXRhYmFzZVBhdGgpOwogCi0gICAgc3Rh
dGljIERhdGFiYXNlVHJhY2tlciYgdHJhY2tlcigpOworICAgIFdFQkNPUkVfRVhQT1JUIHN0YXRp
YyBEYXRhYmFzZVRyYWNrZXImIHRyYWNrZXIoKTsKICAgICAvLyBUaGlzIHNpbmdsZXRvbiB3aWxs
IHBvdGVudGlhbGx5IGJlIHVzZWQgZnJvbSBtdWx0aXBsZSB3b3JrZXIgdGhyZWFkcyBhbmQgdGhl
IHBhZ2UncyBjb250ZXh0IHRocmVhZCBzaW11bHRhbmVvdXNseS4gIFRvIGtlZXAgdGhpcyBzYWZl
LCBpdCdzCiAgICAgLy8gY3VycmVudGx5IHVzaW5nIDQgbG9ja3MuICBJbiBvcmRlciB0byBhdm9p
ZCBkZWFkbG9jayB3aGVuIHRha2luZyBtdWx0aXBsZSBsb2NrcywgeW91IG11c3QgdGFrZSB0aGVt
IGluIHRoZSBjb3JyZWN0IG9yZGVyOgogICAgIC8vIG1fZGF0YWJhc2VHdWFyZCBiZWZvcmUgcXVv
dGFNYW5hZ2VyIGlmIGJvdGggbG9ja3MgYXJlIG5lZWRlZC4KQEAgLTk5LDE4ICs5OSwxOCBAQCBw
dWJsaWM6CiAgICAgYm9vbCBkZWxldGVEYXRhYmFzZShTZWN1cml0eU9yaWdpbiosIGNvbnN0IFN0
cmluZyYgbmFtZSk7CiAKICNpZiBQTEFURk9STShJT1MpCi0gICAgdm9pZCByZW1vdmVEZWxldGVk
T3BlbmVkRGF0YWJhc2VzKCk7Ci0gICAgc3RhdGljIGJvb2wgZGVsZXRlRGF0YWJhc2VGaWxlSWZF
bXB0eShjb25zdCBTdHJpbmcmKTsKKyAgICBXRUJDT1JFX0VYUE9SVCB2b2lkIHJlbW92ZURlbGV0
ZWRPcGVuZWREYXRhYmFzZXMoKTsKKyAgICBXRUJDT1JFX0VYUE9SVCBzdGF0aWMgYm9vbCBkZWxl
dGVEYXRhYmFzZUZpbGVJZkVtcHR5KGNvbnN0IFN0cmluZyYpOwogCiAgICAgLy8gTW9iaWxlU2Fm
YXJpIHdpbGwgZ3JhYiB0aGlzIG11dGV4IG9uIHRoZSBtYWluIHRocmVhZCBiZWZvcmUgZGlzcGF0
Y2hpbmcgdGhlIHRhc2sgdG8gCiAgICAgLy8gY2xlYW4gdXAgemVybyBieXRlIGRhdGFiYXNlIGZp
bGVzLiAgQW55IG9wZXJhdGlvbnMgdG8gb3BlbiBuZXcgZGF0YWJhc2Ugd2lsbCBoYXZlIHRvCiAg
ICAgLy8gd2FpdCBmb3IgdGhhdCB0YXNrIHRvIGZpbmlzaCBieSB3YWl0aW5nIG9uIHRoaXMgbXV0
ZXguCiAgICAgc3RhdGljIE11dGV4JiBvcGVuRGF0YWJhc2VNdXRleCgpOwogICAgIAotICAgIHN0
YXRpYyB2b2lkIGVtcHR5RGF0YWJhc2VGaWxlc1JlbW92YWxUYXNrV2lsbEJlU2NoZWR1bGVkKCk7
Ci0gICAgc3RhdGljIHZvaWQgZW1wdHlEYXRhYmFzZUZpbGVzUmVtb3ZhbFRhc2tEaWRGaW5pc2go
KTsKKyAgICBXRUJDT1JFX0VYUE9SVCBzdGF0aWMgdm9pZCBlbXB0eURhdGFiYXNlRmlsZXNSZW1v
dmFsVGFza1dpbGxCZVNjaGVkdWxlZCgpOworICAgIFdFQkNPUkVfRVhQT1JUIHN0YXRpYyB2b2lk
IGVtcHR5RGF0YWJhc2VGaWxlc1JlbW92YWxUYXNrRGlkRmluaXNoKCk7CiAgICAgCi0gICAgdm9p
ZCBzZXREYXRhYmFzZXNQYXVzZWQoYm9vbCk7CisgICAgV0VCQ09SRV9FWFBPUlQgdm9pZCBzZXRE
YXRhYmFzZXNQYXVzZWQoYm9vbCk7CiAjZW5kaWYKICAgICAKICAgICB2b2lkIHNldENsaWVudChE
YXRhYmFzZU1hbmFnZXJDbGllbnQqKTsKSW5kZXg6IFNvdXJjZS9XZWJDb3JlL2FjY2Vzc2liaWxp
dHkvQVhPYmplY3RDYWNoZS5oCj09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT0KLS0tIFNvdXJjZS9XZWJDb3JlL2FjY2Vzc2li
aWxpdHkvQVhPYmplY3RDYWNoZS5oCShyZXZpc2lvbiAxNzI4MDgpCisrKyBTb3VyY2UvV2ViQ29y
ZS9hY2Nlc3NpYmlsaXR5L0FYT2JqZWN0Q2FjaGUuaAkod29ya2luZyBjb3B5KQpAQCAtNzcsMTIg
Kzc3LDEyIEBAIHB1YmxpYzoKICAgICBleHBsaWNpdCBBWE9iamVjdENhY2hlKERvY3VtZW50Jik7
CiAgICAgfkFYT2JqZWN0Q2FjaGUoKTsKIAotICAgIHN0YXRpYyBBY2Nlc3NpYmlsaXR5T2JqZWN0
KiBmb2N1c2VkVUlFbGVtZW50Rm9yUGFnZShjb25zdCBQYWdlKik7CisgICAgV0VCQ09SRV9FWFBP
UlQgc3RhdGljIEFjY2Vzc2liaWxpdHlPYmplY3QqIGZvY3VzZWRVSUVsZW1lbnRGb3JQYWdlKGNv
bnN0IFBhZ2UqKTsKIAogICAgIC8vIFJldHVybnMgdGhlIHJvb3Qgb2JqZWN0IGZvciB0aGUgZW50
aXJlIGRvY3VtZW50LgotICAgIEFjY2Vzc2liaWxpdHlPYmplY3QqIHJvb3RPYmplY3QoKTsKKyAg
ICBXRUJDT1JFX0VYUE9SVCBBY2Nlc3NpYmlsaXR5T2JqZWN0KiByb290T2JqZWN0KCk7CiAgICAg
Ly8gUmV0dXJucyB0aGUgcm9vdCBvYmplY3QgZm9yIGEgc3BlY2lmaWMgZnJhbWUuCi0gICAgQWNj
ZXNzaWJpbGl0eU9iamVjdCogcm9vdE9iamVjdEZvckZyYW1lKEZyYW1lKik7CisgICAgV0VCQ09S
RV9FWFBPUlQgQWNjZXNzaWJpbGl0eU9iamVjdCogcm9vdE9iamVjdEZvckZyYW1lKEZyYW1lKik7
CiAgICAgCiAgICAgLy8gRm9yIEFYIG9iamVjdHMgd2l0aCBlbGVtZW50cyB0aGF0IGJhY2sgdGhl
bS4KICAgICBBY2Nlc3NpYmlsaXR5T2JqZWN0KiBnZXRPckNyZWF0ZShSZW5kZXJPYmplY3QqKTsK
QEAgLTEyNywxMSArMTI3LDExIEBAIHB1YmxpYzoKICAgICB2b2lkIHJlY29tcHV0ZUlzSWdub3Jl
ZChSZW5kZXJPYmplY3QqIHJlbmRlcmVyKTsKIAogI2lmIEhBVkUoQUNDRVNTSUJJTElUWSkKLSAg
ICBzdGF0aWMgdm9pZCBlbmFibGVBY2Nlc3NpYmlsaXR5KCk7Ci0gICAgc3RhdGljIHZvaWQgZGlz
YWJsZUFjY2Vzc2liaWxpdHkoKTsKKyAgICBXRUJDT1JFX0VYUE9SVCBzdGF0aWMgdm9pZCBlbmFi
bGVBY2Nlc3NpYmlsaXR5KCk7CisgICAgV0VCQ09SRV9FWFBPUlQgc3RhdGljIHZvaWQgZGlzYWJs
ZUFjY2Vzc2liaWxpdHkoKTsKIAogICAgIC8vIEVuaGFuY2VkIHVzZXIgaW50ZXJmYWNlIGFjY2Vz
c2liaWxpdHkgY2FuIGJlIHRvZ2dsZWQgYnkgdGhlIGFzc2lzdGl2ZSB0ZWNobm9sb2d5LgotICAg
IHN0YXRpYyB2b2lkIHNldEVuaGFuY2VkVXNlckludGVyZmFjZUFjY2Vzc2liaWxpdHkoYm9vbCBm
bGFnKTsKKyAgICBXRUJDT1JFX0VYUE9SVCBzdGF0aWMgdm9pZCBzZXRFbmhhbmNlZFVzZXJJbnRl
cmZhY2VBY2Nlc3NpYmlsaXR5KGJvb2wgZmxhZyk7CiAgICAgCiAgICAgc3RhdGljIGJvb2wgYWNj
ZXNzaWJpbGl0eUVuYWJsZWQoKSB7IHJldHVybiBnQWNjZXNzaWJpbGl0eUVuYWJsZWQ7IH0KICAg
ICBzdGF0aWMgYm9vbCBhY2Nlc3NpYmlsaXR5RW5oYW5jZWRVc2VySW50ZXJmYWNlRW5hYmxlZCgp
IHsgcmV0dXJuIGdBY2Nlc3NpYmlsaXR5RW5oYW5jZWRVc2VySW50ZXJmYWNlRW5hYmxlZDsgfQpA
QCAtMjM2LDggKzIzNiw4IEBAIHByaXZhdGU6CiAgICAgSGFzaE1hcDxOb2RlKiwgQVhJRD4gbV9u
b2RlT2JqZWN0TWFwcGluZzsKICAgICBIYXNoU2V0PE5vZGUqPiBtX3RleHRNYXJrZXJOb2RlczsK
ICAgICBzdGQ6OnVuaXF1ZV9wdHI8QVhDb21wdXRlZE9iamVjdEF0dHJpYnV0ZUNhY2hlPiBtX2Nv
bXB1dGVkT2JqZWN0QXR0cmlidXRlQ2FjaGU7Ci0gICAgc3RhdGljIGJvb2wgZ0FjY2Vzc2liaWxp
dHlFbmFibGVkOwotICAgIHN0YXRpYyBib29sIGdBY2Nlc3NpYmlsaXR5RW5oYW5jZWRVc2VySW50
ZXJmYWNlRW5hYmxlZDsKKyAgICBXRUJDT1JFX0VYUE9SVCBzdGF0aWMgYm9vbCBnQWNjZXNzaWJp
bGl0eUVuYWJsZWQ7CisgICAgV0VCQ09SRV9FWFBPUlQgc3RhdGljIGJvb2wgZ0FjY2Vzc2liaWxp
dHlFbmhhbmNlZFVzZXJJbnRlcmZhY2VFbmFibGVkOwogICAgIAogICAgIEhhc2hTZXQ8QVhJRD4g
bV9pZHNJblVzZTsKICAgICAKSW5kZXg6IFNvdXJjZS9XZWJDb3JlL2JpbmRpbmdzL2pzL0RPTVdy
YXBwZXJXb3JsZC5oCj09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT0KLS0tIFNvdXJjZS9XZWJDb3JlL2JpbmRpbmdzL2pzL0RP
TVdyYXBwZXJXb3JsZC5oCShyZXZpc2lvbiAxNzI4MDgpCisrKyBTb3VyY2UvV2ViQ29yZS9iaW5k
aW5ncy9qcy9ET01XcmFwcGVyV29ybGQuaAkod29ya2luZyBjb3B5KQpAQCAtMzksMTAgKzM5LDEw
IEBAIHB1YmxpYzoKICAgICB7CiAgICAgICAgIHJldHVybiBhZG9wdFJlZihuZXcgRE9NV3JhcHBl
cldvcmxkKHZtLCBpc05vcm1hbCkpOwogICAgIH0KLSAgICB+RE9NV3JhcHBlcldvcmxkKCk7Cisg
ICAgV0VCQ09SRV9FWFBPUlQgfkRPTVdyYXBwZXJXb3JsZCgpOwogCiAgICAgLy8gRnJlZSBhcyBt
dWNoIG1lbW9yeSBoZWxkIG9udG8gYnkgdGhpcyB3b3JsZCBhcyBwb3NzaWJsZS4KLSAgICB2b2lk
IGNsZWFyV3JhcHBlcnMoKTsKKyAgICBXRUJDT1JFX0VYUE9SVCB2b2lkIGNsZWFyV3JhcHBlcnMo
KTsKIAogICAgIHZvaWQgZGlkQ3JlYXRlV2luZG93U2hlbGwoU2NyaXB0Q29udHJvbGxlciogc2Ny
aXB0Q29udHJvbGxlcikgeyBtX3NjcmlwdENvbnRyb2xsZXJzV2l0aFdpbmRvd1NoZWxscy5hZGQo
c2NyaXB0Q29udHJvbGxlcik7IH0KICAgICB2b2lkIGRpZERlc3Ryb3lXaW5kb3dTaGVsbChTY3Jp
cHRDb250cm9sbGVyKiBzY3JpcHRDb250cm9sbGVyKSB7IG1fc2NyaXB0Q29udHJvbGxlcnNXaXRo
V2luZG93U2hlbGxzLnJlbW92ZShzY3JpcHRDb250cm9sbGVyKTsgfQpJbmRleDogU291cmNlL1dl
YkNvcmUvYnJpZGdlL3J1bnRpbWVfbWV0aG9kLmgKPT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PQotLS0gU291cmNlL1dlYkNv
cmUvYnJpZGdlL3J1bnRpbWVfbWV0aG9kLmgJKHJldmlzaW9uIDE3MjgwOCkKKysrIFNvdXJjZS9X
ZWJDb3JlL2JyaWRnZS9ydW50aW1lX21ldGhvZC5oCSh3b3JraW5nIGNvcHkpCkBAIC01OSwxMiAr
NTksMTIgQEAgcHVibGljOgogICAgIH0KIAogcHJvdGVjdGVkOgotICAgIFJ1bnRpbWVNZXRob2Qo
SlNHbG9iYWxPYmplY3QqLCBTdHJ1Y3R1cmUqLCBCaW5kaW5nczo6TWV0aG9kKik7Ci0gICAgdm9p
ZCBmaW5pc2hDcmVhdGlvbihWTSYsIGNvbnN0IFN0cmluZyYpOworICAgIFdFQkNPUkVfRVhQT1JU
IFJ1bnRpbWVNZXRob2QoSlNHbG9iYWxPYmplY3QqLCBTdHJ1Y3R1cmUqLCBCaW5kaW5nczo6TWV0
aG9kKik7CisgICAgV0VCQ09SRV9FWFBPUlQgdm9pZCBmaW5pc2hDcmVhdGlvbihWTSYsIGNvbnN0
IFN0cmluZyYpOwogICAgIHN0YXRpYyBjb25zdCB1bnNpZ25lZCBTdHJ1Y3R1cmVGbGFncyA9IE92
ZXJyaWRlc0dldE93blByb3BlcnR5U2xvdCB8IEludGVybmFsRnVuY3Rpb246OlN0cnVjdHVyZUZs
YWdzOwotICAgIHN0YXRpYyBDYWxsVHlwZSBnZXRDYWxsRGF0YShKU0NlbGwqLCBDYWxsRGF0YSYp
OworICAgIFdFQkNPUkVfRVhQT1JUIHN0YXRpYyBDYWxsVHlwZSBnZXRDYWxsRGF0YShKU0NlbGwq
LCBDYWxsRGF0YSYpOwogCi0gICAgc3RhdGljIGJvb2wgZ2V0T3duUHJvcGVydHlTbG90KEpTT2Jq
ZWN0KiwgRXhlY1N0YXRlKiwgUHJvcGVydHlOYW1lLCBQcm9wZXJ0eVNsb3QmKTsKKyAgICBXRUJD
T1JFX0VYUE9SVCBzdGF0aWMgYm9vbCBnZXRPd25Qcm9wZXJ0eVNsb3QoSlNPYmplY3QqLCBFeGVj
U3RhdGUqLCBQcm9wZXJ0eU5hbWUsIFByb3BlcnR5U2xvdCYpOwogCiBwcml2YXRlOgogICAgIHN0
YXRpYyBFbmNvZGVkSlNWYWx1ZSBsZW5ndGhHZXR0ZXIoRXhlY1N0YXRlKiwgSlNPYmplY3QqLCBF
bmNvZGVkSlNWYWx1ZSwgUHJvcGVydHlOYW1lKTsKSW5kZXg6IFNvdXJjZS9XZWJDb3JlL2JyaWRn
ZS9ydW50aW1lX29iamVjdC5oCj09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT0KLS0tIFNvdXJjZS9XZWJDb3JlL2JyaWRnZS9y
dW50aW1lX29iamVjdC5oCShyZXZpc2lvbiAxNzI4MDgpCisrKyBTb3VyY2UvV2ViQ29yZS9icmlk
Z2UvcnVudGltZV9vYmplY3QuaAkod29ya2luZyBjb3B5KQpAQCAtNDMsMTYgKzQzLDE2IEBAIHB1
YmxpYzoKICAgICAgICAgcmV0dXJuIG9iamVjdDsKICAgICB9CiAKLSAgICBzdGF0aWMgdm9pZCBk
ZXN0cm95KEpTQ2VsbCopOworICAgIFdFQkNPUkVfRVhQT1JUIHN0YXRpYyB2b2lkIGRlc3Ryb3ko
SlNDZWxsKik7CiAKLSAgICBzdGF0aWMgYm9vbCBnZXRPd25Qcm9wZXJ0eVNsb3QoSlNPYmplY3Qq
LCBFeGVjU3RhdGUqLCBQcm9wZXJ0eU5hbWUsIFByb3BlcnR5U2xvdCYpOwotICAgIHN0YXRpYyB2
b2lkIHB1dChKU0NlbGwqLCBFeGVjU3RhdGUqLCBQcm9wZXJ0eU5hbWUsIEpTVmFsdWUsIFB1dFBy
b3BlcnR5U2xvdCYpOwotICAgIHN0YXRpYyBib29sIGRlbGV0ZVByb3BlcnR5KEpTQ2VsbCosIEV4
ZWNTdGF0ZSosIFByb3BlcnR5TmFtZSk7Ci0gICAgc3RhdGljIEpTVmFsdWUgZGVmYXVsdFZhbHVl
KGNvbnN0IEpTT2JqZWN0KiwgRXhlY1N0YXRlKiwgUHJlZmVycmVkUHJpbWl0aXZlVHlwZSk7Ci0g
ICAgc3RhdGljIENhbGxUeXBlIGdldENhbGxEYXRhKEpTQ2VsbCosIENhbGxEYXRhJik7Ci0gICAg
c3RhdGljIENvbnN0cnVjdFR5cGUgZ2V0Q29uc3RydWN0RGF0YShKU0NlbGwqLCBDb25zdHJ1Y3RE
YXRhJik7CisgICAgV0VCQ09SRV9FWFBPUlQgc3RhdGljIGJvb2wgZ2V0T3duUHJvcGVydHlTbG90
KEpTT2JqZWN0KiwgRXhlY1N0YXRlKiwgUHJvcGVydHlOYW1lLCBQcm9wZXJ0eVNsb3QmKTsKKyAg
ICBXRUJDT1JFX0VYUE9SVCBzdGF0aWMgdm9pZCBwdXQoSlNDZWxsKiwgRXhlY1N0YXRlKiwgUHJv
cGVydHlOYW1lLCBKU1ZhbHVlLCBQdXRQcm9wZXJ0eVNsb3QmKTsKKyAgICBXRUJDT1JFX0VYUE9S
VCBzdGF0aWMgYm9vbCBkZWxldGVQcm9wZXJ0eShKU0NlbGwqLCBFeGVjU3RhdGUqLCBQcm9wZXJ0
eU5hbWUpOworICAgIFdFQkNPUkVfRVhQT1JUIHN0YXRpYyBKU1ZhbHVlIGRlZmF1bHRWYWx1ZShj
b25zdCBKU09iamVjdCosIEV4ZWNTdGF0ZSosIFByZWZlcnJlZFByaW1pdGl2ZVR5cGUpOworICAg
IFdFQkNPUkVfRVhQT1JUIHN0YXRpYyBDYWxsVHlwZSBnZXRDYWxsRGF0YShKU0NlbGwqLCBDYWxs
RGF0YSYpOworICAgIFdFQkNPUkVfRVhQT1JUIHN0YXRpYyBDb25zdHJ1Y3RUeXBlIGdldENvbnN0
cnVjdERhdGEoSlNDZWxsKiwgQ29uc3RydWN0RGF0YSYpOwogCi0gICAgc3RhdGljIHZvaWQgZ2V0
T3duUHJvcGVydHlOYW1lcyhKU09iamVjdCosIEV4ZWNTdGF0ZSosIFByb3BlcnR5TmFtZUFycmF5
JiwgRW51bWVyYXRpb25Nb2RlKTsKKyAgICBXRUJDT1JFX0VYUE9SVCBzdGF0aWMgdm9pZCBnZXRP
d25Qcm9wZXJ0eU5hbWVzKEpTT2JqZWN0KiwgRXhlY1N0YXRlKiwgUHJvcGVydHlOYW1lQXJyYXkm
LCBFbnVtZXJhdGlvbk1vZGUpOwogCiAgICAgdm9pZCBpbnZhbGlkYXRlKCk7CiAKQEAgLTczLDgg
KzczLDggQEAgcHVibGljOgogICAgIH0KIAogcHJvdGVjdGVkOgotICAgIFJ1bnRpbWVPYmplY3Qo
Vk0mLCBTdHJ1Y3R1cmUqLCBQYXNzUmVmUHRyPEluc3RhbmNlPik7Ci0gICAgdm9pZCBmaW5pc2hD
cmVhdGlvbihWTSYpOworICAgIFdFQkNPUkVfRVhQT1JUIFJ1bnRpbWVPYmplY3QoVk0mLCBTdHJ1
Y3R1cmUqLCBQYXNzUmVmUHRyPEluc3RhbmNlPik7CisgICAgV0VCQ09SRV9FWFBPUlQgdm9pZCBm
aW5pc2hDcmVhdGlvbihWTSYpOwogICAgIHN0YXRpYyBjb25zdCB1bnNpZ25lZCBTdHJ1Y3R1cmVG
bGFncyA9IE92ZXJyaWRlc0dldE93blByb3BlcnR5U2xvdCB8IE92ZXJyaWRlc0dldFByb3BlcnR5
TmFtZXMgfCBCYXNlOjpTdHJ1Y3R1cmVGbGFnczsKIAogcHJpdmF0ZToKSW5kZXg6IFNvdXJjZS9X
ZWJDb3JlL2JyaWRnZS9ydW50aW1lX3Jvb3QuaAo9PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09Ci0tLSBTb3VyY2UvV2ViQ29y
ZS9icmlkZ2UvcnVudGltZV9yb290LmgJKHJldmlzaW9uIDE3MjgwOCkKKysrIFNvdXJjZS9XZWJD
b3JlL2JyaWRnZS9ydW50aW1lX3Jvb3QuaAkod29ya2luZyBjb3B5KQpAQCAtNTUsNyArNTUsNyBA
QCBjbGFzcyBSb290T2JqZWN0IDogcHVibGljIFJlZkNvdW50ZWQ8Um9vCiAgICAgZnJpZW5kIGNs
YXNzIEphdmFKU09iamVjdDsKIAogcHVibGljOgotICAgIHZpcnR1YWwgflJvb3RPYmplY3QoKTsK
KyAgICBXRUJDT1JFX0VYUE9SVCB2aXJ0dWFsIH5Sb290T2JqZWN0KCk7CiAgICAgCiAgICAgc3Rh
dGljIFBhc3NSZWZQdHI8Um9vdE9iamVjdD4gY3JlYXRlKGNvbnN0IHZvaWQqIG5hdGl2ZUhhbmRs
ZSwgSlNHbG9iYWxPYmplY3QqKTsKIApAQCAtNjcsNyArNjcsNyBAQCBwdWJsaWM6CiAgICAgYm9v
bCBnY0lzUHJvdGVjdGVkKEpTT2JqZWN0Kik7CiAKICAgICBjb25zdCB2b2lkKiBuYXRpdmVIYW5k
bGUoKSBjb25zdDsKLSAgICBKU0dsb2JhbE9iamVjdCogZ2xvYmFsT2JqZWN0KCkgY29uc3Q7Cisg
ICAgV0VCQ09SRV9FWFBPUlQgSlNHbG9iYWxPYmplY3QqIGdsb2JhbE9iamVjdCgpIGNvbnN0Owog
ICAgIHZvaWQgdXBkYXRlR2xvYmFsT2JqZWN0KEpTR2xvYmFsT2JqZWN0Kik7CiAKICAgICB2b2lk
IGFkZFJ1bnRpbWVPYmplY3QoVk0mLCBSdW50aW1lT2JqZWN0Kik7CkluZGV4OiBTb3VyY2UvV2Vi
Q29yZS9icmlkZ2UvanNjL0JyaWRnZUpTQy5oCj09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT0KLS0tIFNvdXJjZS9XZWJDb3Jl
L2JyaWRnZS9qc2MvQnJpZGdlSlNDLmgJKHJldmlzaW9uIDE3MjgwOCkKKysrIFNvdXJjZS9XZWJD
b3JlL2JyaWRnZS9qc2MvQnJpZGdlSlNDLmgJKHdvcmtpbmcgY29weSkKQEAgLTcwLDcgKzcwLDcg
QEAgcHVibGljOgogCiBjbGFzcyBJbnN0YW5jZSA6IHB1YmxpYyBSZWZDb3VudGVkPEluc3RhbmNl
PiB7CiBwdWJsaWM6Ci0gICAgSW5zdGFuY2UoUGFzc1JlZlB0cjxSb290T2JqZWN0Pik7CisgICAg
V0VCQ09SRV9FWFBPUlQgSW5zdGFuY2UoUGFzc1JlZlB0cjxSb290T2JqZWN0Pik7CiAKICAgICAv
LyBUaGVzZSBmdW5jdGlvbnMgYXJlIGNhbGxlZCBiZWZvcmUgYW5kIGFmdGVyIHRoZSBtYWluIGVu
dHJ5IHBvaW50cyBpbnRvCiAgICAgLy8gdGhlIG5hdGl2ZSBpbXBsZW1lbnRhdGlvbnMuICBUaGV5
IGNhbiBiZSB1c2VkIHRvIGVzdGFibGlzaCBhbmQgY2xlYW51cApAQCAtNzksNyArNzksNyBAQCBw
dWJsaWM6CiAgICAgdm9pZCBlbmQoKTsKIAogICAgIHZpcnR1YWwgQ2xhc3MqIGdldENsYXNzKCkg
Y29uc3QgPSAwOwotICAgIEpTT2JqZWN0KiBjcmVhdGVSdW50aW1lT2JqZWN0KEV4ZWNTdGF0ZSop
OworICAgIFdFQkNPUkVfRVhQT1JUIEpTT2JqZWN0KiBjcmVhdGVSdW50aW1lT2JqZWN0KEV4ZWNT
dGF0ZSopOwogICAgIHZvaWQgd2lsbEludmFsaWRhdGVSdW50aW1lT2JqZWN0KCk7CiAKICAgICAv
LyBSZXR1cm5zIGZhbHNlIGlmIHRoZSB2YWx1ZSB3YXMgbm90IHNldCBzdWNjZXNzZnVsbHkuCkBA
IC0xMDIsNyArMTAyLDcgQEAgcHVibGljOgogCiAgICAgUm9vdE9iamVjdCogcm9vdE9iamVjdCgp
IGNvbnN0OwogCi0gICAgdmlydHVhbCB+SW5zdGFuY2UoKTsKKyAgICBXRUJDT1JFX0VYUE9SVCB2
aXJ0dWFsIH5JbnN0YW5jZSgpOwogCiAgICAgdmlydHVhbCBib29sIGdldE93blByb3BlcnR5U2xv
dChKU09iamVjdCosIEV4ZWNTdGF0ZSosIFByb3BlcnR5TmFtZSwgUHJvcGVydHlTbG90JikgeyBy
ZXR1cm4gZmFsc2U7IH0KICAgICB2aXJ0dWFsIHZvaWQgcHV0KEpTT2JqZWN0KiwgRXhlY1N0YXRl
KiwgUHJvcGVydHlOYW1lLCBKU1ZhbHVlLCBQdXRQcm9wZXJ0eVNsb3QmKSB7IH0KQEAgLTExMCw3
ICsxMTAsNyBAQCBwdWJsaWM6CiBwcm90ZWN0ZWQ6CiAgICAgdmlydHVhbCB2b2lkIHZpcnR1YWxC
ZWdpbigpIHsgfQogICAgIHZpcnR1YWwgdm9pZCB2aXJ0dWFsRW5kKCkgeyB9Ci0gICAgdmlydHVh
bCBSdW50aW1lT2JqZWN0KiBuZXdSdW50aW1lT2JqZWN0KEV4ZWNTdGF0ZSopOworICAgIFdFQkNP
UkVfRVhQT1JUIHZpcnR1YWwgUnVudGltZU9iamVjdCogbmV3UnVudGltZU9iamVjdChFeGVjU3Rh
dGUqKTsKIAogICAgIFJlZlB0cjxSb290T2JqZWN0PiBtX3Jvb3RPYmplY3Q7CiAKSW5kZXg6IFNv
dXJjZS9XZWJDb3JlL2Nzcy9DU1NDb21wdXRlZFN0eWxlRGVjbGFyYXRpb24uaAo9PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
Ci0tLSBTb3VyY2UvV2ViQ29yZS9jc3MvQ1NTQ29tcHV0ZWRTdHlsZURlY2xhcmF0aW9uLmgJKHJl
dmlzaW9uIDE3MjgwOCkKKysrIFNvdXJjZS9XZWJDb3JlL2Nzcy9DU1NDb21wdXRlZFN0eWxlRGVj
bGFyYXRpb24uaAkod29ya2luZyBjb3B5KQpAQCAtOTksNyArOTksNyBAQCBwdWJsaWM6CiAgICAg
U3RyaW5nIGdldFByb3BlcnR5VmFsdWUoQ1NTUHJvcGVydHlJRCkgY29uc3Q7CiAKIHByaXZhdGU6
Ci0gICAgQ1NTQ29tcHV0ZWRTdHlsZURlY2xhcmF0aW9uKFBhc3NSZWZQdHI8Tm9kZT4sIGJvb2wg
YWxsb3dWaXNpdGVkU3R5bGUsIGNvbnN0IFN0cmluZyYpOworICAgIFdFQkNPUkVfRVhQT1JUIENT
U0NvbXB1dGVkU3R5bGVEZWNsYXJhdGlvbihQYXNzUmVmUHRyPE5vZGU+LCBib29sIGFsbG93Vmlz
aXRlZFN0eWxlLCBjb25zdCBTdHJpbmcmKTsKIAogICAgIC8vIENTU09NIGZ1bmN0aW9ucy4gRG9u
J3QgbWFrZSB0aGVzZSBwdWJsaWMuCiAgICAgdmlydHVhbCBDU1NSdWxlKiBwYXJlbnRSdWxlKCkg
Y29uc3Qgb3ZlcnJpZGU7CkluZGV4OiBTb3VyY2UvV2ViQ29yZS9jc3MvQ1NTUGFyc2VyTW9kZS5o
Cj09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT0KLS0tIFNvdXJjZS9XZWJDb3JlL2Nzcy9DU1NQYXJzZXJNb2RlLmgJKHJldmlz
aW9uIDE3MjgwOCkKKysrIFNvdXJjZS9XZWJDb3JlL2Nzcy9DU1NQYXJzZXJNb2RlLmgJKHdvcmtp
bmcgY29weSkKQEAgLTU4LDcgKzU4LDcgQEAgc3RydWN0IENTU1BhcnNlckNvbnRleHQgewogICAg
IFdURl9NQUtFX0ZBU1RfQUxMT0NBVEVEOwogcHVibGljOgogICAgIENTU1BhcnNlckNvbnRleHQo
Q1NTUGFyc2VyTW9kZSwgY29uc3QgVVJMJiBiYXNlVVJMID0gVVJMKCkpOwotICAgIENTU1BhcnNl
ckNvbnRleHQoRG9jdW1lbnQmLCBjb25zdCBVUkwmIGJhc2VVUkwgPSBVUkwoKSwgY29uc3QgU3Ry
aW5nJiBjaGFyc2V0ID0gZW1wdHlTdHJpbmcoKSk7CisgICAgV0VCQ09SRV9FWFBPUlQgQ1NTUGFy
c2VyQ29udGV4dChEb2N1bWVudCYsIGNvbnN0IFVSTCYgYmFzZVVSTCA9IFVSTCgpLCBjb25zdCBT
dHJpbmcmIGNoYXJzZXQgPSBlbXB0eVN0cmluZygpKTsKIAogICAgIFVSTCBiYXNlVVJMOwogICAg
IFN0cmluZyBjaGFyc2V0OwpJbmRleDogU291cmNlL1dlYkNvcmUvY3NzL0NTU1ZhbHVlLmgKPT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PQotLS0gU291cmNlL1dlYkNvcmUvY3NzL0NTU1ZhbHVlLmgJKHJldmlzaW9uIDE3Mjgw
OCkKKysrIFNvdXJjZS9XZWJDb3JlL2Nzcy9DU1NWYWx1ZS5oCSh3b3JraW5nIGNvcHkpCkBAIC0y
MDcsNyArMjA3LDcgQEAgcHJvdGVjdGVkOgogICAgIH5DU1NWYWx1ZSgpIHsgfQogCiBwcml2YXRl
OgotICAgIHZvaWQgZGVzdHJveSgpOworICAgIFdFQkNPUkVfRVhQT1JUIHZvaWQgZGVzdHJveSgp
OwogCiBwcm90ZWN0ZWQ6CiAgICAgdW5zaWduZWQgbV9pc0NTU09NU2FmZSA6IDE7CkluZGV4OiBT
b3VyY2UvV2ViQ29yZS9jc3MvRE9NV2luZG93Q1NTLmgKPT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PQotLS0gU291cmNlL1dl
YkNvcmUvY3NzL0RPTVdpbmRvd0NTUy5oCShyZXZpc2lvbiAxNzI4MDgpCisrKyBTb3VyY2UvV2Vi
Q29yZS9jc3MvRE9NV2luZG93Q1NTLmgJKHdvcmtpbmcgY29weSkKQEAgLTQwLDcgKzQwLDcgQEAg
bmFtZXNwYWNlIFdlYkNvcmUgewogCiBjbGFzcyBET01XaW5kb3dDU1MgOiBwdWJsaWMgUmVmQ291
bnRlZDxET01XaW5kb3dDU1M+IHsKIHB1YmxpYzoKLSAgICBzdGF0aWMgUGFzc1JlZlB0cjxET01X
aW5kb3dDU1M+IGNyZWF0ZSgpOworICAgIFdFQkNPUkVfRVhQT1JUIHN0YXRpYyBQYXNzUmVmUHRy
PERPTVdpbmRvd0NTUz4gY3JlYXRlKCk7CiAKICAgICBib29sIHN1cHBvcnRzKGNvbnN0IFN0cmlu
ZyYgcHJvcGVydHksIGNvbnN0IFN0cmluZyYgdmFsdWUpIGNvbnN0OwogICAgIGJvb2wgc3VwcG9y
dHMoY29uc3QgU3RyaW5nJiBjb25kaXRpb25UZXh0KSBjb25zdDsKSW5kZXg6IFNvdXJjZS9XZWJD
b3JlL2Nzcy9TdHlsZVNoZWV0Q29udGVudHMuaAo9PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09Ci0tLSBTb3VyY2UvV2ViQ29y
ZS9jc3MvU3R5bGVTaGVldENvbnRlbnRzLmgJKHJldmlzaW9uIDE3MjgwOCkKKysrIFNvdXJjZS9X
ZWJDb3JlL2Nzcy9TdHlsZVNoZWV0Q29udGVudHMuaAkod29ya2luZyBjb3B5KQpAQCAtMTM5LDcg
KzEzOSw3IEBAIHB1YmxpYzoKICAgICB2b2lkIHNocmlua1RvRml0KCk7CiAKIHByaXZhdGU6Ci0g
ICAgU3R5bGVTaGVldENvbnRlbnRzKFN0eWxlUnVsZUltcG9ydCogb3duZXJSdWxlLCBjb25zdCBT
dHJpbmcmIG9yaWdpbmFsVVJMLCBjb25zdCBDU1NQYXJzZXJDb250ZXh0Jik7CisgICAgV0VCQ09S
RV9FWFBPUlQgU3R5bGVTaGVldENvbnRlbnRzKFN0eWxlUnVsZUltcG9ydCogb3duZXJSdWxlLCBj
b25zdCBTdHJpbmcmIG9yaWdpbmFsVVJMLCBjb25zdCBDU1NQYXJzZXJDb250ZXh0Jik7CiAgICAg
U3R5bGVTaGVldENvbnRlbnRzKGNvbnN0IFN0eWxlU2hlZXRDb250ZW50cyYpOwogCiAgICAgdm9p
ZCBjbGVhckNoYXJzZXRSdWxlKCk7CkluZGV4OiBTb3VyY2UvV2ViQ29yZS9kb20vQ2hhcmFjdGVy
RGF0YS5oCj09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT0KLS0tIFNvdXJjZS9XZWJDb3JlL2RvbS9DaGFyYWN0ZXJEYXRhLmgJ
KHJldmlzaW9uIDE3MjgwOCkKKysrIFNvdXJjZS9XZWJDb3JlL2RvbS9DaGFyYWN0ZXJEYXRhLmgJ
KHdvcmtpbmcgY29weSkKQEAgLTMzLDcgKzMzLDcgQEAgcHVibGljOgogICAgIFN0cmluZyBkYXRh
KCkgY29uc3QgeyByZXR1cm4gbV9kYXRhOyB9CiAgICAgc3RhdGljIHB0cmRpZmZfdCBkYXRhTWVt
b3J5T2Zmc2V0KCkgeyByZXR1cm4gT0JKRUNUX09GRlNFVE9GKENoYXJhY3RlckRhdGEsIG1fZGF0
YSk7IH0KIAotICAgIHZvaWQgc2V0RGF0YShjb25zdCBTdHJpbmcmLCBFeGNlcHRpb25Db2RlJik7
CisgICAgV0VCQ09SRV9FWFBPUlQgdm9pZCBzZXREYXRhKGNvbnN0IFN0cmluZyYsIEV4Y2VwdGlv
bkNvZGUmKTsKICAgICB1bnNpZ25lZCBsZW5ndGgoKSBjb25zdCB7IHJldHVybiBtX2RhdGEubGVu
Z3RoKCk7IH0KICAgICBTdHJpbmcgc3Vic3RyaW5nRGF0YSh1bnNpZ25lZCBvZmZzZXQsIHVuc2ln
bmVkIGNvdW50LCBFeGNlcHRpb25Db2RlJik7CiAgICAgdm9pZCBhcHBlbmREYXRhKGNvbnN0IFN0
cmluZyYsIEV4Y2VwdGlvbkNvZGUmKTsKSW5kZXg6IFNvdXJjZS9XZWJDb3JlL2RvbS9DbGllbnRS
ZWN0LmgKPT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PQotLS0gU291cmNlL1dlYkNvcmUvZG9tL0NsaWVudFJlY3QuaAkocmV2
aXNpb24gMTcyODA4KQorKysgU291cmNlL1dlYkNvcmUvZG9tL0NsaWVudFJlY3QuaAkod29ya2lu
ZyBjb3B5KQpAQCAtNTAsOSArNTAsOSBAQCBuYW1lc3BhY2UgV2ViQ29yZSB7CiAgICAgICAgIGZs
b2F0IGhlaWdodCgpIGNvbnN0IHsgcmV0dXJuIG1fcmVjdC5oZWlnaHQoKTsgfQogCiAgICAgcHJp
dmF0ZToKLSAgICAgICAgQ2xpZW50UmVjdCgpOwotICAgICAgICBleHBsaWNpdCBDbGllbnRSZWN0
KGNvbnN0IEludFJlY3QmKTsKLSAgICAgICAgZXhwbGljaXQgQ2xpZW50UmVjdChjb25zdCBGbG9h
dFJlY3QmKTsKKyAgICAgICAgV0VCQ09SRV9FWFBPUlQgQ2xpZW50UmVjdCgpOworICAgICAgICBX
RUJDT1JFX0VYUE9SVCBleHBsaWNpdCBDbGllbnRSZWN0KGNvbnN0IEludFJlY3QmKTsKKyAgICAg
ICAgV0VCQ09SRV9FWFBPUlQgZXhwbGljaXQgQ2xpZW50UmVjdChjb25zdCBGbG9hdFJlY3QmKTsK
IAogICAgICAgICBGbG9hdFJlY3QgbV9yZWN0OwogICAgIH07IApJbmRleDogU291cmNlL1dlYkNv
cmUvZG9tL0NsaWVudFJlY3RMaXN0LmgKPT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PQotLS0gU291cmNlL1dlYkNvcmUvZG9t
L0NsaWVudFJlY3RMaXN0LmgJKHJldmlzaW9uIDE3MjgwOCkKKysrIFNvdXJjZS9XZWJDb3JlL2Rv
bS9DbGllbnRSZWN0TGlzdC5oCSh3b3JraW5nIGNvcHkpCkBAIC00MCwxNCArNDAsMTQgQEAgbmFt
ZXNwYWNlIFdlYkNvcmUgewogICAgIHB1YmxpYzoKICAgICAgICAgc3RhdGljIFBhc3NSZWZQdHI8
Q2xpZW50UmVjdExpc3Q+IGNyZWF0ZSgpIHsgcmV0dXJuIGFkb3B0UmVmKG5ldyBDbGllbnRSZWN0
TGlzdCk7IH0KICAgICAgICAgc3RhdGljIFBhc3NSZWZQdHI8Q2xpZW50UmVjdExpc3Q+IGNyZWF0
ZShjb25zdCBWZWN0b3I8RmxvYXRRdWFkPiYgcXVhZHMpIHsgcmV0dXJuIGFkb3B0UmVmKG5ldyBD
bGllbnRSZWN0TGlzdChxdWFkcykpOyB9Ci0gICAgICAgIH5DbGllbnRSZWN0TGlzdCgpOworICAg
ICAgICBXRUJDT1JFX0VYUE9SVCB+Q2xpZW50UmVjdExpc3QoKTsKIAogICAgICAgICB1bnNpZ25l
ZCBsZW5ndGgoKSBjb25zdDsKICAgICAgICAgQ2xpZW50UmVjdCogaXRlbSh1bnNpZ25lZCBpbmRl
eCk7CiAKICAgICBwcml2YXRlOgotICAgICAgICBDbGllbnRSZWN0TGlzdCgpOwotICAgICAgICBl
eHBsaWNpdCBDbGllbnRSZWN0TGlzdChjb25zdCBWZWN0b3I8RmxvYXRRdWFkPiYpOworICAgICAg
ICBXRUJDT1JFX0VYUE9SVCBDbGllbnRSZWN0TGlzdCgpOworICAgICAgICBXRUJDT1JFX0VYUE9S
VCBleHBsaWNpdCBDbGllbnRSZWN0TGlzdChjb25zdCBWZWN0b3I8RmxvYXRRdWFkPiYpOwogCiAg
ICAgICAgIFZlY3RvcjxSZWZQdHI8Q2xpZW50UmVjdD4+IG1fbGlzdDsKICAgICB9OyAKSW5kZXg6
IFNvdXJjZS9XZWJDb3JlL2RvbS9Db250YWluZXJOb2RlLmgKPT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PQotLS0gU291cmNl
L1dlYkNvcmUvZG9tL0NvbnRhaW5lck5vZGUuaAkocmV2aXNpb24gMTcyODA4KQorKysgU291cmNl
L1dlYkNvcmUvZG9tL0NvbnRhaW5lck5vZGUuaAkod29ya2luZyBjb3B5KQpAQCAtODgsMTMgKzg4
LDEzIEBAIHB1YmxpYzoKICAgICBOb2RlKiBsYXN0Q2hpbGQoKSBjb25zdCB7IHJldHVybiBtX2xh
c3RDaGlsZDsgfQogICAgIGJvb2wgaGFzQ2hpbGROb2RlcygpIGNvbnN0IHsgcmV0dXJuIG1fZmly
c3RDaGlsZDsgfQogCi0gICAgdW5zaWduZWQgY2hpbGROb2RlQ291bnQoKSBjb25zdDsKLSAgICBO
b2RlKiBjaGlsZE5vZGUodW5zaWduZWQgaW5kZXgpIGNvbnN0OworICAgIFdFQkNPUkVfRVhQT1JU
IHVuc2lnbmVkIGNoaWxkTm9kZUNvdW50KCkgY29uc3Q7CisgICAgV0VCQ09SRV9FWFBPUlQgTm9k
ZSogY2hpbGROb2RlKHVuc2lnbmVkIGluZGV4KSBjb25zdDsKIAogICAgIGJvb2wgaW5zZXJ0QmVm
b3JlKFBhc3NSZWZQdHI8Tm9kZT4gbmV3Q2hpbGQsIE5vZGUqIHJlZkNoaWxkLCBFeGNlcHRpb25D
b2RlJiA9IEFTU0VSVF9OT19FWENFUFRJT04pOwogICAgIGJvb2wgcmVwbGFjZUNoaWxkKFBhc3NS
ZWZQdHI8Tm9kZT4gbmV3Q2hpbGQsIE5vZGUqIG9sZENoaWxkLCBFeGNlcHRpb25Db2RlJiA9IEFT
U0VSVF9OT19FWENFUFRJT04pOwotICAgIGJvb2wgcmVtb3ZlQ2hpbGQoTm9kZSogY2hpbGQsIEV4
Y2VwdGlvbkNvZGUmID0gQVNTRVJUX05PX0VYQ0VQVElPTik7Ci0gICAgYm9vbCBhcHBlbmRDaGls
ZChQYXNzUmVmUHRyPE5vZGU+IG5ld0NoaWxkLCBFeGNlcHRpb25Db2RlJiA9IEFTU0VSVF9OT19F
WENFUFRJT04pOworICAgIFdFQkNPUkVfRVhQT1JUIGJvb2wgcmVtb3ZlQ2hpbGQoTm9kZSogY2hp
bGQsIEV4Y2VwdGlvbkNvZGUmID0gQVNTRVJUX05PX0VYQ0VQVElPTik7CisgICAgV0VCQ09SRV9F
WFBPUlQgYm9vbCBhcHBlbmRDaGlsZChQYXNzUmVmUHRyPE5vZGU+IG5ld0NoaWxkLCBFeGNlcHRp
b25Db2RlJiA9IEFTU0VSVF9OT19FWENFUFRJT04pOwogCiAgICAgLy8gVGhlc2UgbWV0aG9kcyBh
cmUgb25seSB1c2VkIGR1cmluZyBwYXJzaW5nLgogICAgIC8vIFRoZXkgZG9uJ3Qgc2VuZCBET00g
bXV0YXRpb24gZXZlbnRzIG9yIGhhbmRsZSByZXBhcmVudGluZy4KSW5kZXg6IFNvdXJjZS9XZWJD
b3JlL2RvbS9Db250ZXh0RGVzdHJ1Y3Rpb25PYnNlcnZlci5oCj09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT0KLS0tIFNvdXJj
ZS9XZWJDb3JlL2RvbS9Db250ZXh0RGVzdHJ1Y3Rpb25PYnNlcnZlci5oCShyZXZpc2lvbiAxNzI4
MDgpCisrKyBTb3VyY2UvV2ViQ29yZS9kb20vQ29udGV4dERlc3RydWN0aW9uT2JzZXJ2ZXIuaAko
d29ya2luZyBjb3B5KQpAQCAtMzMsMTMgKzMzLDEzIEBAIGNsYXNzIFNjcmlwdEV4ZWN1dGlvbkNv
bnRleHQ7CiAKIGNsYXNzIENvbnRleHREZXN0cnVjdGlvbk9ic2VydmVyIHsKIHB1YmxpYzoKLSAg
ICBleHBsaWNpdCBDb250ZXh0RGVzdHJ1Y3Rpb25PYnNlcnZlcihTY3JpcHRFeGVjdXRpb25Db250
ZXh0Kik7Ci0gICAgdmlydHVhbCB2b2lkIGNvbnRleHREZXN0cm95ZWQoKTsKKyAgICBXRUJDT1JF
X0VYUE9SVCBleHBsaWNpdCBDb250ZXh0RGVzdHJ1Y3Rpb25PYnNlcnZlcihTY3JpcHRFeGVjdXRp
b25Db250ZXh0Kik7CisgICAgV0VCQ09SRV9FWFBPUlQgdmlydHVhbCB2b2lkIGNvbnRleHREZXN0
cm95ZWQoKTsKIAogICAgIFNjcmlwdEV4ZWN1dGlvbkNvbnRleHQqIHNjcmlwdEV4ZWN1dGlvbkNv
bnRleHQoKSBjb25zdCB7IHJldHVybiBtX3NjcmlwdEV4ZWN1dGlvbkNvbnRleHQ7IH0KIAogcHJv
dGVjdGVkOgotICAgIHZpcnR1YWwgfkNvbnRleHREZXN0cnVjdGlvbk9ic2VydmVyKCk7CisgICAg
V0VCQ09SRV9FWFBPUlQgdmlydHVhbCB+Q29udGV4dERlc3RydWN0aW9uT2JzZXJ2ZXIoKTsKICAg
ICB2b2lkIG9ic2VydmVDb250ZXh0KFNjcmlwdEV4ZWN1dGlvbkNvbnRleHQqKTsKIAogICAgIFNj
cmlwdEV4ZWN1dGlvbkNvbnRleHQqIG1fc2NyaXB0RXhlY3V0aW9uQ29udGV4dDsKSW5kZXg6IFNv
dXJjZS9XZWJDb3JlL2RvbS9ET01JbXBsZW1lbnRhdGlvbi5oCj09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT0KLS0tIFNvdXJj
ZS9XZWJDb3JlL2RvbS9ET01JbXBsZW1lbnRhdGlvbi5oCShyZXZpc2lvbiAxNzI4MDgpCisrKyBT
b3VyY2UvV2ViQ29yZS9kb20vRE9NSW1wbGVtZW50YXRpb24uaAkod29ya2luZyBjb3B5KQpAQCAt
NjgsOCArNjgsOCBAQCBwdWJsaWM6CiAgICAgLy8gT3RoZXIgbWV0aG9kcyAobm90IHBhcnQgb2Yg
RE9NKQogICAgIHN0YXRpYyBQYXNzUmVmUHRyPERvY3VtZW50PiBjcmVhdGVEb2N1bWVudChjb25z
dCBTdHJpbmcmIE1JTUVUeXBlLCBGcmFtZSosIGNvbnN0IFVSTCYpOwogCi0gICAgc3RhdGljIGJv
b2wgaXNYTUxNSU1FVHlwZShjb25zdCBTdHJpbmcmIE1JTUVUeXBlKTsKLSAgICBzdGF0aWMgYm9v
bCBpc1RleHRNSU1FVHlwZShjb25zdCBTdHJpbmcmIE1JTUVUeXBlKTsKKyAgICBXRUJDT1JFX0VY
UE9SVCBzdGF0aWMgYm9vbCBpc1hNTE1JTUVUeXBlKGNvbnN0IFN0cmluZyYgTUlNRVR5cGUpOwor
ICAgIFdFQkNPUkVfRVhQT1JUIHN0YXRpYyBib29sIGlzVGV4dE1JTUVUeXBlKGNvbnN0IFN0cmlu
ZyYgTUlNRVR5cGUpOwogCiBwcml2YXRlOgogICAgIERvY3VtZW50JiBtX2RvY3VtZW50OwpJbmRl
eDogU291cmNlL1dlYkNvcmUvZG9tL0RhdGFUcmFuc2Zlci5oCj09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT0KLS0tIFNvdXJj
ZS9XZWJDb3JlL2RvbS9EYXRhVHJhbnNmZXIuaAkocmV2aXNpb24gMTcyODA4KQorKysgU291cmNl
L1dlYkNvcmUvZG9tL0RhdGFUcmFuc2Zlci5oCSh3b3JraW5nIGNvcHkpCkBAIC00Niw3ICs0Niw3
IEBAIG5hbWVzcGFjZSBXZWJDb3JlIHsKICAgICBwdWJsaWM6CiAgICAgICAgIHN0YXRpYyBQYXNz
UmVmUHRyPERhdGFUcmFuc2Zlcj4gY3JlYXRlRm9yQ29weUFuZFBhc3RlKERhdGFUcmFuc2ZlckFj
Y2Vzc1BvbGljeSk7CiAKLSAgICAgICAgfkRhdGFUcmFuc2ZlcigpOworICAgICAgICBXRUJDT1JF
X0VYUE9SVCB+RGF0YVRyYW5zZmVyKCk7CiAKICAgICAgICAgU3RyaW5nIGRyb3BFZmZlY3QoKSBj
b25zdDsKICAgICAgICAgdm9pZCBzZXREcm9wRWZmZWN0KGNvbnN0IFN0cmluZyYpOwpJbmRleDog
U291cmNlL1dlYkNvcmUvZG9tL0RldmljZU1vdGlvbkRhdGEuaAo9PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09Ci0tLSBTb3Vy
Y2UvV2ViQ29yZS9kb20vRGV2aWNlTW90aW9uRGF0YS5oCShyZXZpc2lvbiAxNzI4MDgpCisrKyBT
b3VyY2UvV2ViQ29yZS9kb20vRGV2aWNlTW90aW9uRGF0YS5oCSh3b3JraW5nIGNvcHkpCkBAIC0z
Niw3ICszNiw3IEBAIGNsYXNzIERldmljZU1vdGlvbkRhdGEgOiBwdWJsaWMgUmVmQ291bnQKIHB1
YmxpYzoKICAgICBjbGFzcyBBY2NlbGVyYXRpb24gOiBwdWJsaWMgUmVmQ291bnRlZDxEZXZpY2VN
b3Rpb25EYXRhOjpBY2NlbGVyYXRpb24+IHsKICAgICBwdWJsaWM6Ci0gICAgICAgIHN0YXRpYyBQ
YXNzUmVmUHRyPEFjY2VsZXJhdGlvbj4gY3JlYXRlKGJvb2wgY2FuUHJvdmlkZVgsIGRvdWJsZSB4
LCBib29sIGNhblByb3ZpZGVZLCBkb3VibGUgeSwgYm9vbCBjYW5Qcm92aWRlWiwgZG91YmxlIHop
OworICAgICAgICBXRUJDT1JFX0VYUE9SVCBzdGF0aWMgUGFzc1JlZlB0cjxBY2NlbGVyYXRpb24+
IGNyZWF0ZShib29sIGNhblByb3ZpZGVYLCBkb3VibGUgeCwgYm9vbCBjYW5Qcm92aWRlWSwgZG91
YmxlIHksIGJvb2wgY2FuUHJvdmlkZVosIGRvdWJsZSB6KTsKIAogICAgICAgICBib29sIGNhblBy
b3ZpZGVYKCkgY29uc3QgeyByZXR1cm4gbV9jYW5Qcm92aWRlWDsgfQogICAgICAgICBib29sIGNh
blByb3ZpZGVZKCkgY29uc3QgeyByZXR1cm4gbV9jYW5Qcm92aWRlWTsgfQpAQCAtNjAsNyArNjAs
NyBAQCBwdWJsaWM6CiAKICAgICBjbGFzcyBSb3RhdGlvblJhdGUgOiBwdWJsaWMgUmVmQ291bnRl
ZDxEZXZpY2VNb3Rpb25EYXRhOjpSb3RhdGlvblJhdGU+IHsKICAgICBwdWJsaWM6Ci0gICAgICAg
IHN0YXRpYyBQYXNzUmVmUHRyPFJvdGF0aW9uUmF0ZT4gY3JlYXRlKGJvb2wgY2FuUHJvdmlkZUFs
cGhhLCBkb3VibGUgYWxwaGEsIGJvb2wgY2FuUHJvdmlkZUJldGEsICBkb3VibGUgYmV0YSwgYm9v
bCBjYW5Qcm92aWRlR2FtbWEsIGRvdWJsZSBnYW1tYSk7CisgICAgICAgIFdFQkNPUkVfRVhQT1JU
IHN0YXRpYyBQYXNzUmVmUHRyPFJvdGF0aW9uUmF0ZT4gY3JlYXRlKGJvb2wgY2FuUHJvdmlkZUFs
cGhhLCBkb3VibGUgYWxwaGEsIGJvb2wgY2FuUHJvdmlkZUJldGEsICBkb3VibGUgYmV0YSwgYm9v
bCBjYW5Qcm92aWRlR2FtbWEsIGRvdWJsZSBnYW1tYSk7CiAKICAgICAgICAgYm9vbCBjYW5Qcm92
aWRlQWxwaGEoKSBjb25zdCB7IHJldHVybiBtX2NhblByb3ZpZGVBbHBoYTsgfQogICAgICAgICBi
b29sIGNhblByb3ZpZGVCZXRhKCkgY29uc3QgeyByZXR1cm4gbV9jYW5Qcm92aWRlQmV0YTsgfQpA
QCAtODIsNyArODIsNyBAQCBwdWJsaWM6CiAgICAgICAgIGJvb2wgbV9jYW5Qcm92aWRlR2FtbWE7
CiAgICAgfTsKIAotICAgIHN0YXRpYyBQYXNzUmVmUHRyPERldmljZU1vdGlvbkRhdGE+IGNyZWF0
ZSgpOworICAgIFdFQkNPUkVfRVhQT1JUIHN0YXRpYyBQYXNzUmVmUHRyPERldmljZU1vdGlvbkRh
dGE+IGNyZWF0ZSgpOwogICAgIHN0YXRpYyBQYXNzUmVmUHRyPERldmljZU1vdGlvbkRhdGE+IGNy
ZWF0ZShQYXNzUmVmUHRyPEFjY2VsZXJhdGlvbj4gYWNjZWxlcmF0aW9uLCBQYXNzUmVmUHRyPEFj
Y2VsZXJhdGlvbj4gYWNjZWxlcmF0aW9uSW5jbHVkaW5nR3Jhdml0eSwKICAgICAgICAgICAgICAg
ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgUGFzc1JlZlB0cjxSb3RhdGlvblJhdGU+
IHJvdGF0aW9uUmF0ZSwgYm9vbCBjYW5Qcm92aWRlSW50ZXJ2YWwsIGRvdWJsZSBpbnRlcnZhbCk7
CiAKSW5kZXg6IFNvdXJjZS9XZWJDb3JlL2RvbS9EZXZpY2VPcmllbnRhdGlvbkRhdGEuaAo9PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09Ci0tLSBTb3VyY2UvV2ViQ29yZS9kb20vRGV2aWNlT3JpZW50YXRpb25EYXRhLmgJKHJl
dmlzaW9uIDE3MjgwOCkKKysrIFNvdXJjZS9XZWJDb3JlL2RvbS9EZXZpY2VPcmllbnRhdGlvbkRh
dGEuaAkod29ya2luZyBjb3B5KQpAQCAtMzUsOSArMzUsOSBAQCBjbGFzcyBEZXZpY2VPcmllbnRh
dGlvbkRhdGEgOiBwdWJsaWMgUmVmCiBwdWJsaWM6CiAgICAgc3RhdGljIFBhc3NSZWZQdHI8RGV2
aWNlT3JpZW50YXRpb25EYXRhPiBjcmVhdGUoKTsKICNpZiBQTEFURk9STShJT1MpCi0gICAgc3Rh
dGljIFBhc3NSZWZQdHI8RGV2aWNlT3JpZW50YXRpb25EYXRhPiBjcmVhdGUoYm9vbCBjYW5Qcm92
aWRlQWxwaGEsIGRvdWJsZSBhbHBoYSwgYm9vbCBjYW5Qcm92aWRlQmV0YSwgZG91YmxlIGJldGEs
IGJvb2wgY2FuUHJvdmlkZUdhbW1hLCBkb3VibGUgZ2FtbWEsIGJvb2wgY2FuUHJvdmlkZUNvbXBh
c3NIZWFkaW5nLCBkb3VibGUgY29tcGFzc0hlYWRpbmcsIGJvb2wgY2FuUHJvdmlkZUNvbXBhc3NB
Y2N1cmFjeSwgZG91YmxlIGNvbXBhc3NBY2N1cmFjeSk7CisgICAgV0VCQ09SRV9FWFBPUlQgc3Rh
dGljIFBhc3NSZWZQdHI8RGV2aWNlT3JpZW50YXRpb25EYXRhPiBjcmVhdGUoYm9vbCBjYW5Qcm92
aWRlQWxwaGEsIGRvdWJsZSBhbHBoYSwgYm9vbCBjYW5Qcm92aWRlQmV0YSwgZG91YmxlIGJldGEs
IGJvb2wgY2FuUHJvdmlkZUdhbW1hLCBkb3VibGUgZ2FtbWEsIGJvb2wgY2FuUHJvdmlkZUNvbXBh
c3NIZWFkaW5nLCBkb3VibGUgY29tcGFzc0hlYWRpbmcsIGJvb2wgY2FuUHJvdmlkZUNvbXBhc3NB
Y2N1cmFjeSwgZG91YmxlIGNvbXBhc3NBY2N1cmFjeSk7CiAjZWxzZQotICAgIHN0YXRpYyBQYXNz
UmVmUHRyPERldmljZU9yaWVudGF0aW9uRGF0YT4gY3JlYXRlKGJvb2wgY2FuUHJvdmlkZUFscGhh
LCBkb3VibGUgYWxwaGEsIGJvb2wgY2FuUHJvdmlkZUJldGEsIGRvdWJsZSBiZXRhLCBib29sIGNh
blByb3ZpZGVHYW1tYSwgZG91YmxlIGdhbW1hLCBib29sIGNhblByb3ZpZGVBYnNvbHV0ZSA9IGZh
bHNlLCBib29sIGFic29sdXRlID0gZmFsc2UpOworICAgIFdFQkNPUkVfRVhQT1JUIHN0YXRpYyBQ
YXNzUmVmUHRyPERldmljZU9yaWVudGF0aW9uRGF0YT4gY3JlYXRlKGJvb2wgY2FuUHJvdmlkZUFs
cGhhLCBkb3VibGUgYWxwaGEsIGJvb2wgY2FuUHJvdmlkZUJldGEsIGRvdWJsZSBiZXRhLCBib29s
IGNhblByb3ZpZGVHYW1tYSwgZG91YmxlIGdhbW1hLCBib29sIGNhblByb3ZpZGVBYnNvbHV0ZSA9
IGZhbHNlLCBib29sIGFic29sdXRlID0gZmFsc2UpOwogI2VuZGlmCiAKICAgICBkb3VibGUgYWxw
aGEoKSBjb25zdDsKSW5kZXg6IFNvdXJjZS9XZWJDb3JlL2RvbS9Eb2N1bWVudC5oCj09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT0KLS0tIFNvdXJjZS9XZWJDb3JlL2RvbS9Eb2N1bWVudC5oCShyZXZpc2lvbiAxNzI4MDgpCisr
KyBTb3VyY2UvV2ViQ29yZS9kb20vRG9jdW1lbnQuaAkod29ya2luZyBjb3B5KQpAQCAtMjk5LDcg
KzI5OSw3IEBAIHB1YmxpYzoKIAogICAgIHZvaWQgcmVtb3ZlZExhc3RSZWYoKTsKIAotICAgIHN0
YXRpYyBIYXNoU2V0PERvY3VtZW50Kj4mIGFsbERvY3VtZW50cygpOworICAgIFdFQkNPUkVfRVhQ
T1JUIHN0YXRpYyBIYXNoU2V0PERvY3VtZW50Kj4mIGFsbERvY3VtZW50cygpOwogCiAgICAgTWVk
aWFRdWVyeU1hdGNoZXImIG1lZGlhUXVlcnlNYXRjaGVyKCk7CiAKQEAgLTQyMSw4ICs0MjEsOCBA
QCBwdWJsaWM6CiAgICAgYm9vbCBoYXNNYW5pZmVzdCgpIGNvbnN0OwogICAgIAogICAgIHZpcnR1
YWwgUGFzc1JlZlB0cjxFbGVtZW50PiBjcmVhdGVFbGVtZW50KGNvbnN0IEF0b21pY1N0cmluZyYg
dGFnTmFtZSwgRXhjZXB0aW9uQ29kZSYpOwotICAgIFBhc3NSZWZQdHI8RG9jdW1lbnRGcmFnbWVu
dD4gY3JlYXRlRG9jdW1lbnRGcmFnbWVudCgpOwotICAgIFBhc3NSZWZQdHI8VGV4dD4gY3JlYXRl
VGV4dE5vZGUoY29uc3QgU3RyaW5nJiBkYXRhKTsKKyAgICBXRUJDT1JFX0VYUE9SVCBQYXNzUmVm
UHRyPERvY3VtZW50RnJhZ21lbnQ+IGNyZWF0ZURvY3VtZW50RnJhZ21lbnQoKTsKKyAgICBXRUJD
T1JFX0VYUE9SVCBQYXNzUmVmUHRyPFRleHQ+IGNyZWF0ZVRleHROb2RlKGNvbnN0IFN0cmluZyYg
ZGF0YSk7CiAgICAgUGFzc1JlZlB0cjxDb21tZW50PiBjcmVhdGVDb21tZW50KGNvbnN0IFN0cmlu
ZyYgZGF0YSk7CiAgICAgUGFzc1JlZlB0cjxDREFUQVNlY3Rpb24+IGNyZWF0ZUNEQVRBU2VjdGlv
bihjb25zdCBTdHJpbmcmIGRhdGEsIEV4Y2VwdGlvbkNvZGUmKTsKICAgICBQYXNzUmVmUHRyPFBy
b2Nlc3NpbmdJbnN0cnVjdGlvbj4gY3JlYXRlUHJvY2Vzc2luZ0luc3RydWN0aW9uKGNvbnN0IFN0
cmluZyYgdGFyZ2V0LCBjb25zdCBTdHJpbmcmIGRhdGEsIEV4Y2VwdGlvbkNvZGUmKTsKQEAgLTQz
MSw3ICs0MzEsNyBAQCBwdWJsaWM6CiAgICAgUGFzc1JlZlB0cjxFbnRpdHlSZWZlcmVuY2U+IGNy
ZWF0ZUVudGl0eVJlZmVyZW5jZShjb25zdCBTdHJpbmcmIG5hbWUsIEV4Y2VwdGlvbkNvZGUmKTsK
ICAgICBQYXNzUmVmUHRyPE5vZGU+IGltcG9ydE5vZGUoTm9kZSogaW1wb3J0ZWROb2RlLCBFeGNl
cHRpb25Db2RlJiBlYykgeyByZXR1cm4gaW1wb3J0Tm9kZShpbXBvcnRlZE5vZGUsIHRydWUsIGVj
KTsgfQogICAgIFBhc3NSZWZQdHI8Tm9kZT4gaW1wb3J0Tm9kZShOb2RlKiBpbXBvcnRlZE5vZGUs
IGJvb2wgZGVlcCwgRXhjZXB0aW9uQ29kZSYpOwotICAgIFBhc3NSZWZQdHI8RWxlbWVudD4gY3Jl
YXRlRWxlbWVudE5TKGNvbnN0IFN0cmluZyYgbmFtZXNwYWNlVVJJLCBjb25zdCBTdHJpbmcmIHF1
YWxpZmllZE5hbWUsIEV4Y2VwdGlvbkNvZGUmKTsKKyAgICBXRUJDT1JFX0VYUE9SVCBQYXNzUmVm
UHRyPEVsZW1lbnQ+IGNyZWF0ZUVsZW1lbnROUyhjb25zdCBTdHJpbmcmIG5hbWVzcGFjZVVSSSwg
Y29uc3QgU3RyaW5nJiBxdWFsaWZpZWROYW1lLCBFeGNlcHRpb25Db2RlJik7CiAgICAgUGFzc1Jl
ZlB0cjxFbGVtZW50PiBjcmVhdGVFbGVtZW50KGNvbnN0IFF1YWxpZmllZE5hbWUmLCBib29sIGNy
ZWF0ZWRCeVBhcnNlcik7CiAKICAgICBib29sIGNzc1JlZ2lvbnNFbmFibGVkKCkgY29uc3Q7CkBA
IC01NTgsNyArNTU4LDcgQEAgcHVibGljOgogICAgICAqIGNvbnN0cnVjdGVkIGZyb20gdGhlc2Ug
d2hpY2ggaXMgdXNlZCB0byBjcmVhdGUgdGhlIGEgbmV3IHN0eWxlIHNlbGVjdG9yIHdoaWNoIGNv
bGxhdGVzIGFsbCBvZiB0aGUgc3R5bGVzaGVldHMKICAgICAgKiBmb3VuZCBhbmQgaXMgdXNlZCB0
byBjYWxjdWxhdGUgdGhlIGRlcml2ZWQgc3R5bGVzIGZvciBhbGwgcmVuZGVyaW5nIG9iamVjdHMu
CiAgICAgICovCi0gICAgdm9pZCBzdHlsZVJlc29sdmVyQ2hhbmdlZChTdHlsZVJlc29sdmVyVXBk
YXRlRmxhZyk7CisgICAgV0VCQ09SRV9FWFBPUlQgdm9pZCBzdHlsZVJlc29sdmVyQ2hhbmdlZChT
dHlsZVJlc29sdmVyVXBkYXRlRmxhZyk7CiAKICAgICB2b2lkIHNjaGVkdWxlT3B0aW1pemVkU3R5
bGVTaGVldFVwZGF0ZSgpOwogCkBAIC01NjgsMTQgKzU2OCwxNCBAQCBwdWJsaWM6CiAgICAgVmVj
dG9yPFN0cmluZz4gZm9ybUVsZW1lbnRzU3RhdGUoKSBjb25zdDsKICAgICB2b2lkIHNldFN0YXRl
Rm9yTmV3Rm9ybUVsZW1lbnRzKGNvbnN0IFZlY3RvcjxTdHJpbmc+Jik7CiAKLSAgICBGcmFtZVZp
ZXcqIHZpZXcoKSBjb25zdDsgLy8gY2FuIGJlIE5VTEwKKyAgICBXRUJDT1JFX0VYUE9SVCBGcmFt
ZVZpZXcqIHZpZXcoKSBjb25zdDsgLy8gY2FuIGJlIE5VTEwKICAgICBGcmFtZSogZnJhbWUoKSBj
b25zdCB7IHJldHVybiBtX2ZyYW1lOyB9IC8vIGNhbiBiZSBOVUxMCi0gICAgUGFnZSogcGFnZSgp
IGNvbnN0OyAvLyBjYW4gYmUgTlVMTAotICAgIFNldHRpbmdzKiBzZXR0aW5ncygpIGNvbnN0OyAv
LyBjYW4gYmUgTlVMTAorICAgIFdFQkNPUkVfRVhQT1JUIFBhZ2UqIHBhZ2UoKSBjb25zdDsgLy8g
Y2FuIGJlIE5VTEwKKyAgICBXRUJDT1JFX0VYUE9SVCBTZXR0aW5ncyogc2V0dGluZ3MoKSBjb25z
dDsgLy8gY2FuIGJlIE5VTEwKIAogICAgIGZsb2F0IGRldmljZVNjYWxlRmFjdG9yKCkgY29uc3Q7
CiAKLSAgICBQYXNzUmVmUHRyPFJhbmdlPiBjcmVhdGVSYW5nZSgpOworICAgIFdFQkNPUkVfRVhQ
T1JUIFBhc3NSZWZQdHI8UmFuZ2U+IGNyZWF0ZVJhbmdlKCk7CiAKICAgICBQYXNzUmVmUHRyPE5v
ZGVJdGVyYXRvcj4gY3JlYXRlTm9kZUl0ZXJhdG9yKE5vZGUqIHJvb3QsIHVuc2lnbmVkIHdoYXRU
b1Nob3csCiAgICAgICAgIFBhc3NSZWZQdHI8Tm9kZUZpbHRlcj4sIGJvb2wgZXhwYW5kRW50aXR5
UmVmZXJlbmNlcywgRXhjZXB0aW9uQ29kZSYpOwpAQCAtNTg4LDI0ICs1ODgsMjQgQEAgcHVibGlj
OgogICAgIFBhc3NSZWZQdHI8VGV4dD4gY3JlYXRlRWRpdGluZ1RleHROb2RlKGNvbnN0IFN0cmlu
ZyYpOwogCiAgICAgdm9pZCByZWNhbGNTdHlsZShTdHlsZTo6Q2hhbmdlID0gU3R5bGU6Ok5vQ2hh
bmdlKTsKLSAgICB2b2lkIHVwZGF0ZVN0eWxlSWZOZWVkZWQoKTsKKyAgICBXRUJDT1JFX0VYUE9S
VCB2b2lkIHVwZGF0ZVN0eWxlSWZOZWVkZWQoKTsKICAgICBib29sIHVwZGF0ZVN0eWxlSWZOZWVk
ZWRGb3JOb2RlKGNvbnN0IE5vZGUmKTsKLSAgICB2b2lkIHVwZGF0ZUxheW91dCgpOworICAgIFdF
QkNPUkVfRVhQT1JUIHZvaWQgdXBkYXRlTGF5b3V0KCk7CiAgICAgZW51bSBSdW5Qb3N0TGF5b3V0
VGFza3MgewogICAgICAgICBSdW5Qb3N0TGF5b3V0VGFza3NBc3luY2hyb25vdXNseSwKICAgICAg
ICAgUnVuUG9zdExheW91dFRhc2tzU3luY2hyb25vdXNseSwKICAgICB9OwotICAgIHZvaWQgdXBk
YXRlTGF5b3V0SWdub3JlUGVuZGluZ1N0eWxlc2hlZXRzKFJ1blBvc3RMYXlvdXRUYXNrcyA9IFJ1
blBvc3RMYXlvdXRUYXNrc0FzeW5jaHJvbm91c2x5KTsKKyAgICBXRUJDT1JFX0VYUE9SVCB2b2lk
IHVwZGF0ZUxheW91dElnbm9yZVBlbmRpbmdTdHlsZXNoZWV0cyhSdW5Qb3N0TGF5b3V0VGFza3Mg
PSBSdW5Qb3N0TGF5b3V0VGFza3NBc3luY2hyb25vdXNseSk7CiAgICAgUGFzc1JlZjxSZW5kZXJT
dHlsZT4gc3R5bGVGb3JFbGVtZW50SWdub3JpbmdQZW5kaW5nU3R5bGVzaGVldHMoRWxlbWVudCop
OwogCiAgICAgLy8gUmV0dXJucyB0cnVlIGlmIHBhZ2UgYm94IChtYXJnaW4gYm94ZXMgYW5kIHBh
Z2UgYm9yZGVycykgaXMgdmlzaWJsZS4KLSAgICBib29sIGlzUGFnZUJveFZpc2libGUoaW50IHBh
Z2VJbmRleCk7CisgICAgV0VCQ09SRV9FWFBPUlQgYm9vbCBpc1BhZ2VCb3hWaXNpYmxlKGludCBw
YWdlSW5kZXgpOwogCiAgICAgLy8gUmV0dXJucyB0aGUgcHJlZmVycmVkIHBhZ2Ugc2l6ZSBhbmQg
bWFyZ2lucyBpbiBwaXhlbHMsIGFzc3VtaW5nIDk2CiAgICAgLy8gcGl4ZWxzIHBlciBpbmNoLiBw
YWdlU2l6ZSwgbWFyZ2luVG9wLCBtYXJnaW5SaWdodCwgbWFyZ2luQm90dG9tLAogICAgIC8vIG1h
cmdpbkxlZnQgbXVzdCBiZSBpbml0aWFsaXplZCB0byB0aGUgZGVmYXVsdCB2YWx1ZXMgdGhhdCBh
cmUgdXNlZCBpZgogICAgIC8vIGF1dG8gaXMgc3BlY2lmaWVkLgotICAgIHZvaWQgcGFnZVNpemVB
bmRNYXJnaW5zSW5QaXhlbHMoaW50IHBhZ2VJbmRleCwgSW50U2l6ZSYgcGFnZVNpemUsIGludCYg
bWFyZ2luVG9wLCBpbnQmIG1hcmdpblJpZ2h0LCBpbnQmIG1hcmdpbkJvdHRvbSwgaW50JiBtYXJn
aW5MZWZ0KTsKKyAgICBXRUJDT1JFX0VYUE9SVCB2b2lkIHBhZ2VTaXplQW5kTWFyZ2luc0luUGl4
ZWxzKGludCBwYWdlSW5kZXgsIEludFNpemUmIHBhZ2VTaXplLCBpbnQmIG1hcmdpblRvcCwgaW50
JiBtYXJnaW5SaWdodCwgaW50JiBtYXJnaW5Cb3R0b20sIGludCYgbWFyZ2luTGVmdCk7CiAKICAg
ICBDYWNoZWRSZXNvdXJjZUxvYWRlciogY2FjaGVkUmVzb3VyY2VMb2FkZXIoKSB7IHJldHVybiBt
X2NhY2hlZFJlc291cmNlTG9hZGVyLmdldCgpOyB9CiAKQEAgLTYyNSwxNCArNjI1LDE0IEBAIHB1
YmxpYzoKICAgICBib29sIGhhc0xpdmluZ1JlbmRlclRyZWUoKSBjb25zdCB7IHJldHVybiByZW5k
ZXJWaWV3KCkgJiYgIXJlbmRlclRyZWVCZWluZ0Rlc3Ryb3llZCgpOyB9CiAKICAgICBBWE9iamVj
dENhY2hlKiBleGlzdGluZ0FYT2JqZWN0Q2FjaGUoKSBjb25zdDsKLSAgICBBWE9iamVjdENhY2hl
KiBheE9iamVjdENhY2hlKCkgY29uc3Q7CisgICAgV0VCQ09SRV9FWFBPUlQgQVhPYmplY3RDYWNo
ZSogYXhPYmplY3RDYWNoZSgpIGNvbnN0OwogICAgIHZvaWQgY2xlYXJBWE9iamVjdENhY2hlKCk7
CiAKICAgICAvLyB0byBnZXQgdmlzdWFsbHkgb3JkZXJlZCBoZWJyZXcgYW5kIGFyYWJpYyBwYWdl
cyByaWdodAogICAgIHZvaWQgc2V0VmlzdWFsbHlPcmRlcmVkKCk7CiAgICAgYm9vbCB2aXN1YWxs
eU9yZGVyZWQoKSBjb25zdCB7IHJldHVybiBtX3Zpc3VhbGx5T3JkZXJlZDsgfQogICAgIAotICAg
IERvY3VtZW50TG9hZGVyKiBsb2FkZXIoKSBjb25zdDsKKyAgICBXRUJDT1JFX0VYUE9SVCBEb2N1
bWVudExvYWRlciogbG9hZGVyKCkgY29uc3Q7CiAKICAgICB2b2lkIG9wZW4oRG9jdW1lbnQqIG93
bmVyRG9jdW1lbnQgPSAwKTsKICAgICB2b2lkIGltcGxpY2l0T3BlbigpOwpAQCAtNjY2LDcgKzY2
Niw3IEBAIHB1YmxpYzoKICAgICBjb25zdCBTdHJpbmcmIGJhc2VUYXJnZXQoKSBjb25zdCB7IHJl
dHVybiBtX2Jhc2VUYXJnZXQ7IH0KICAgICB2b2lkIHByb2Nlc3NCYXNlRWxlbWVudCgpOwogCi0g
ICAgdmlydHVhbCBVUkwgY29tcGxldGVVUkwoY29uc3QgU3RyaW5nJikgY29uc3Qgb3ZlcnJpZGUg
ZmluYWw7CisgICAgV0VCQ09SRV9FWFBPUlQgdmlydHVhbCBVUkwgY29tcGxldGVVUkwoY29uc3Qg
U3RyaW5nJikgY29uc3Qgb3ZlcnJpZGUgZmluYWw7CiAgICAgVVJMIGNvbXBsZXRlVVJMKGNvbnN0
IFN0cmluZyYsIGNvbnN0IFVSTCYgYmFzZVVSTE92ZXJyaWRlKSBjb25zdDsKIAogICAgIHZpcnR1
YWwgU3RyaW5nIHVzZXJBZ2VudChjb25zdCBVUkwmKSBjb25zdCBvdmVycmlkZTsKQEAgLTczOCw3
ICs3MzgsNyBAQCBwdWJsaWM6CiAgICAgU3RyaW5nIHNlbGVjdGVkU3R5bGVzaGVldFNldCgpIGNv
bnN0OwogICAgIHZvaWQgc2V0U2VsZWN0ZWRTdHlsZXNoZWV0U2V0KGNvbnN0IFN0cmluZyYpOwog
Ci0gICAgYm9vbCBzZXRGb2N1c2VkRWxlbWVudChQYXNzUmVmUHRyPEVsZW1lbnQ+LCBGb2N1c0Rp
cmVjdGlvbiA9IEZvY3VzRGlyZWN0aW9uTm9uZSk7CisgICAgV0VCQ09SRV9FWFBPUlQgYm9vbCBz
ZXRGb2N1c2VkRWxlbWVudChQYXNzUmVmUHRyPEVsZW1lbnQ+LCBGb2N1c0RpcmVjdGlvbiA9IEZv
Y3VzRGlyZWN0aW9uTm9uZSk7CiAgICAgRWxlbWVudCogZm9jdXNlZEVsZW1lbnQoKSBjb25zdCB7
IHJldHVybiBtX2ZvY3VzZWRFbGVtZW50LmdldCgpOyB9CiAgICAgVXNlckFjdGlvbkVsZW1lbnRT
ZXQmIHVzZXJBY3Rpb25FbGVtZW50cygpICB7IHJldHVybiBtX3VzZXJBY3Rpb25FbGVtZW50czsg
fQogICAgIGNvbnN0IFVzZXJBY3Rpb25FbGVtZW50U2V0JiB1c2VyQWN0aW9uRWxlbWVudHMoKSBj
b25zdCB7IHJldHVybiBtX3VzZXJBY3Rpb25FbGVtZW50czsgfQpAQCAtNzU5LDcgKzc1OSw3IEBA
IHB1YmxpYzoKICAgICBFbGVtZW50KiBjc3NUYXJnZXQoKSBjb25zdCB7IHJldHVybiBtX2Nzc1Rh
cmdldDsgfQogICAgIHN0YXRpYyBwdHJkaWZmX3QgY3NzVGFyZ2V0TWVtb3J5T2Zmc2V0KCkgeyBy
ZXR1cm4gT0JKRUNUX09GRlNFVE9GKERvY3VtZW50LCBtX2Nzc1RhcmdldCk7IH0KIAotICAgIHZv
aWQgc2NoZWR1bGVGb3JjZWRTdHlsZVJlY2FsYygpOworICAgIFdFQkNPUkVfRVhQT1JUIHZvaWQg
c2NoZWR1bGVGb3JjZWRTdHlsZVJlY2FsYygpOwogICAgIHZvaWQgc2NoZWR1bGVTdHlsZVJlY2Fs
YygpOwogICAgIHZvaWQgdW5zY2hlZHVsZVN0eWxlUmVjYWxjKCk7CiAgICAgYm9vbCBoYXNQZW5k
aW5nU3R5bGVSZWNhbGMoKSBjb25zdDsKQEAgLTgwNiw3ICs4MDYsNyBAQCBwdWJsaWM6CiAgICAg
dm9pZCBzZXRXaW5kb3dBdHRyaWJ1dGVFdmVudExpc3RlbmVyKGNvbnN0IEF0b21pY1N0cmluZyYg
ZXZlbnRUeXBlLCBjb25zdCBRdWFsaWZpZWROYW1lJiBhdHRyaWJ1dGVOYW1lLCBjb25zdCBBdG9t
aWNTdHJpbmcmIHZhbHVlKTsKICAgICB2b2lkIHNldFdpbmRvd0F0dHJpYnV0ZUV2ZW50TGlzdGVu
ZXIoY29uc3QgQXRvbWljU3RyaW5nJiBldmVudFR5cGUsIFBhc3NSZWZQdHI8RXZlbnRMaXN0ZW5l
cj4pOwogICAgIEV2ZW50TGlzdGVuZXIqIGdldFdpbmRvd0F0dHJpYnV0ZUV2ZW50TGlzdGVuZXIo
Y29uc3QgQXRvbWljU3RyaW5nJiBldmVudFR5cGUpOwotICAgIHZvaWQgZGlzcGF0Y2hXaW5kb3dF
dmVudChQYXNzUmVmUHRyPEV2ZW50PiwgUGFzc1JlZlB0cjxFdmVudFRhcmdldD4gPSAwKTsKKyAg
ICBXRUJDT1JFX0VYUE9SVCB2b2lkIGRpc3BhdGNoV2luZG93RXZlbnQoUGFzc1JlZlB0cjxFdmVu
dD4sIFBhc3NSZWZQdHI8RXZlbnRUYXJnZXQ+ID0gMCk7CiAgICAgdm9pZCBkaXNwYXRjaFdpbmRv
d0xvYWRFdmVudCgpOwogCiAgICAgUGFzc1JlZlB0cjxFdmVudD4gY3JlYXRlRXZlbnQoY29uc3Qg
U3RyaW5nJiBldmVudFR5cGUsIEV4Y2VwdGlvbkNvZGUmKTsKQEAgLTg4Miw3ICs4ODIsNyBAQCBw
dWJsaWM6CiAKICAgICBTdHJpbmcgb3JpZ2luKCkgY29uc3Q7CiAKLSAgICBTdHJpbmcgZG9tYWlu
KCkgY29uc3Q7CisgICAgV0VCQ09SRV9FWFBPUlQgU3RyaW5nIGRvbWFpbigpIGNvbnN0OwogICAg
IHZvaWQgc2V0RG9tYWluKGNvbnN0IFN0cmluZyYgbmV3RG9tYWluLCBFeGNlcHRpb25Db2RlJik7
CiAKICAgICBTdHJpbmcgbGFzdE1vZGlmaWVkKCkgY29uc3Q7CkBAIC05MjcsMTAgKzkyNywxMCBA
QCBwdWJsaWM6CiAgICAgc3RhdGljIGJvb2wgaGFzVmFsaWROYW1lc3BhY2VGb3JFbGVtZW50cyhj
b25zdCBRdWFsaWZpZWROYW1lJik7CiAgICAgc3RhdGljIGJvb2wgaGFzVmFsaWROYW1lc3BhY2VG
b3JBdHRyaWJ1dGVzKGNvbnN0IFF1YWxpZmllZE5hbWUmKTsKIAotICAgIEhUTUxFbGVtZW50KiBi
b2R5KCkgY29uc3Q7CisgICAgV0VCQ09SRV9FWFBPUlQgSFRNTEVsZW1lbnQqIGJvZHkoKSBjb25z
dDsKICAgICB2b2lkIHNldEJvZHkoUGFzc1JlZlB0cjxIVE1MRWxlbWVudD4sIEV4Y2VwdGlvbkNv
ZGUmKTsKIAotICAgIEhUTUxIZWFkRWxlbWVudCogaGVhZCgpOworICAgIFdFQkNPUkVfRVhQT1JU
IEhUTUxIZWFkRWxlbWVudCogaGVhZCgpOwogCiAgICAgRG9jdW1lbnRNYXJrZXJDb250cm9sbGVy
JiBtYXJrZXJzKCkgY29uc3QgeyByZXR1cm4gKm1fbWFya2VyczsgfQogCkBAIC05OTIsNyArOTky
LDcgQEAgcHVibGljOgogICAgIGJvb2wgaGFzTm9kZXNXaXRoUGxhY2Vob2xkZXJTdHlsZSgpIGNv
bnN0IHsgcmV0dXJuIG1faGFzTm9kZXNXaXRoUGxhY2Vob2xkZXJTdHlsZTsgfQogICAgIHZvaWQg
c2V0SGFzTm9kZXNXaXRoUGxhY2Vob2xkZXJTdHlsZSgpIHsgbV9oYXNOb2Rlc1dpdGhQbGFjZWhv
bGRlclN0eWxlID0gdHJ1ZTsgfQogCi0gICAgY29uc3QgVmVjdG9yPEljb25VUkw+JiBzaG9ydGN1
dEljb25VUkxzKCk7CisgICAgV0VCQ09SRV9FWFBPUlQgY29uc3QgVmVjdG9yPEljb25VUkw+JiBz
aG9ydGN1dEljb25VUkxzKCk7CiAgICAgY29uc3QgVmVjdG9yPEljb25VUkw+JiBpY29uVVJMcyhp
bnQgaWNvblR5cGVzTWFzayk7CiAgICAgdm9pZCBhZGRJY29uVVJMKGNvbnN0IFN0cmluZyYgdXJs
LCBjb25zdCBTdHJpbmcmIG1pbWVUeXBlLCBjb25zdCBTdHJpbmcmIHNpemUsIEljb25UeXBlKTsK
IApAQCAtMTA1MiwxMyArMTA1MiwxMyBAQCBwdWJsaWM6CiAgICAgdm9pZCByZWdpc3RlckZvclZp
c2liaWxpdHlTdGF0ZUNoYW5nZWRDYWxsYmFja3MoRWxlbWVudCopOwogICAgIHZvaWQgdW5yZWdp
c3RlckZvclZpc2liaWxpdHlTdGF0ZUNoYW5nZWRDYWxsYmFja3MoRWxlbWVudCopOwogCi0gICAg
dm9pZCBzZXRTaG91bGRDcmVhdGVSZW5kZXJlcnMoYm9vbCk7CisgICAgV0VCQ09SRV9FWFBPUlQg
dm9pZCBzZXRTaG91bGRDcmVhdGVSZW5kZXJlcnMoYm9vbCk7CiAgICAgYm9vbCBzaG91bGRDcmVh
dGVSZW5kZXJlcnMoKTsKIAogICAgIHZvaWQgc2V0RGVjb2RlcihQYXNzUmVmUHRyPFRleHRSZXNv
dXJjZURlY29kZXI+KTsKICAgICBUZXh0UmVzb3VyY2VEZWNvZGVyKiBkZWNvZGVyKCkgY29uc3Qg
eyByZXR1cm4gbV9kZWNvZGVyLmdldCgpOyB9CiAKLSAgICBTdHJpbmcgZGlzcGxheVN0cmluZ01v
ZGlmaWVkQnlFbmNvZGluZyhjb25zdCBTdHJpbmcmKSBjb25zdDsKKyAgICBXRUJDT1JFX0VYUE9S
VCBTdHJpbmcgZGlzcGxheVN0cmluZ01vZGlmaWVkQnlFbmNvZGluZyhjb25zdCBTdHJpbmcmKSBj
b25zdDsKICAgICBQYXNzUmVmUHRyPFN0cmluZ0ltcGw+IGRpc3BsYXlTdHJpbmdNb2RpZmllZEJ5
RW5jb2RpbmcoUGFzc1JlZlB0cjxTdHJpbmdJbXBsPikgY29uc3Q7CiAgICAgdm9pZCBkaXNwbGF5
QnVmZmVyTW9kaWZpZWRCeUVuY29kaW5nKExDaGFyKiBidWZmZXIsIHVuc2lnbmVkIGxlbikgY29u
c3QKICAgICB7CkBAIC0xMDc0LDcgKzEwNzQsNyBAQCBwdWJsaWM6CiAgICAgYm9vbCBmcmFtZUVs
ZW1lbnRzU2hvdWxkSWdub3JlU2Nyb2xsaW5nKCkgY29uc3QgeyByZXR1cm4gbV9mcmFtZUVsZW1l
bnRzU2hvdWxkSWdub3JlU2Nyb2xsaW5nOyB9CiAKICNpZiBFTkFCTEUoREFTSEJPQVJEX1NVUFBP
UlQpCi0gICAgdm9pZCBzZXRBbm5vdGF0ZWRSZWdpb25zRGlydHkoYm9vbCBmKSB7IG1fYW5ub3Rh
dGVkUmVnaW9uc0RpcnR5ID0gZjsgfQorICAgIFdFQkNPUkVfRVhQT1JUIHZvaWQgc2V0QW5ub3Rh
dGVkUmVnaW9uc0RpcnR5KGJvb2wgZikgeyBtX2Fubm90YXRlZFJlZ2lvbnNEaXJ0eSA9IGY7IH0K
ICAgICBib29sIGFubm90YXRlZFJlZ2lvbnNEaXJ0eSgpIGNvbnN0IHsgcmV0dXJuIG1fYW5ub3Rh
dGVkUmVnaW9uc0RpcnR5OyB9CiAgICAgYm9vbCBoYXNBbm5vdGF0ZWRSZWdpb25zICgpIGNvbnN0
IHsgcmV0dXJuIG1faGFzQW5ub3RhdGVkUmVnaW9uczsgfQogICAgIHZvaWQgc2V0SGFzQW5ub3Rh
dGVkUmVnaW9ucyhib29sIGYpIHsgbV9oYXNBbm5vdGF0ZWRSZWdpb25zID0gZjsgfQpAQCAtMTA4
NCw4ICsxMDg0LDggQEAgcHVibGljOgogCiAgICAgdmlydHVhbCB2b2lkIHJlbW92ZUFsbEV2ZW50
TGlzdGVuZXJzKCkgb3ZlcnJpZGU7CiAKLSAgICBjb25zdCBTVkdEb2N1bWVudEV4dGVuc2lvbnMq
IHN2Z0V4dGVuc2lvbnMoKTsKLSAgICBTVkdEb2N1bWVudEV4dGVuc2lvbnMqIGFjY2Vzc1NWR0V4
dGVuc2lvbnMoKTsKKyAgICBXRUJDT1JFX0VYUE9SVCBjb25zdCBTVkdEb2N1bWVudEV4dGVuc2lv
bnMqIHN2Z0V4dGVuc2lvbnMoKTsKKyAgICBXRUJDT1JFX0VYUE9SVCBTVkdEb2N1bWVudEV4dGVu
c2lvbnMqIGFjY2Vzc1NWR0V4dGVuc2lvbnMoKTsKIAogICAgIHZvaWQgaW5pdFNlY3VyaXR5Q29u
dGV4dCgpOwogICAgIHZvaWQgaW5pdENvbnRlbnRTZWN1cml0eVBvbGljeSgpOwpAQCAtMTExMCw4
ICsxMTEwLDggQEAgcHVibGljOgogICAgIHZvaWQgZW5xdWV1ZVBvcHN0YXRlRXZlbnQoUGFzc1Jl
ZlB0cjxTZXJpYWxpemVkU2NyaXB0VmFsdWU+IHN0YXRlT2JqZWN0KTsKICAgICB2aXJ0dWFsIERv
Y3VtZW50RXZlbnRRdWV1ZSYgZXZlbnRRdWV1ZSgpIGNvbnN0IG92ZXJyaWRlIHsgcmV0dXJuIG1f
ZXZlbnRRdWV1ZTsgfQogCi0gICAgdm9pZCBhZGRNZWRpYUNhblN0YXJ0TGlzdGVuZXIoTWVkaWFD
YW5TdGFydExpc3RlbmVyKik7Ci0gICAgdm9pZCByZW1vdmVNZWRpYUNhblN0YXJ0TGlzdGVuZXIo
TWVkaWFDYW5TdGFydExpc3RlbmVyKik7CisgICAgV0VCQ09SRV9FWFBPUlQgdm9pZCBhZGRNZWRp
YUNhblN0YXJ0TGlzdGVuZXIoTWVkaWFDYW5TdGFydExpc3RlbmVyKik7CisgICAgV0VCQ09SRV9F
WFBPUlQgdm9pZCByZW1vdmVNZWRpYUNhblN0YXJ0TGlzdGVuZXIoTWVkaWFDYW5TdGFydExpc3Rl
bmVyKik7CiAgICAgTWVkaWFDYW5TdGFydExpc3RlbmVyKiB0YWtlQW55TWVkaWFDYW5TdGFydExp
c3RlbmVyKCk7CiAKICNpZiBFTkFCTEUoRlVMTFNDUkVFTl9BUEkpCkBAIC0xMTI1LDEyICsxMTI1
LDEyIEBAIHB1YmxpYzoKICAgICB9OwogCiAgICAgdm9pZCByZXF1ZXN0RnVsbFNjcmVlbkZvckVs
ZW1lbnQoRWxlbWVudCosIHVuc2lnbmVkIHNob3J0IGZsYWdzLCBGdWxsU2NyZWVuQ2hlY2tUeXBl
KTsKLSAgICB2b2lkIHdlYmtpdENhbmNlbEZ1bGxTY3JlZW4oKTsKKyAgICBXRUJDT1JFX0VYUE9S
VCB2b2lkIHdlYmtpdENhbmNlbEZ1bGxTY3JlZW4oKTsKICAgICAKLSAgICB2b2lkIHdlYmtpdFdp
bGxFbnRlckZ1bGxTY3JlZW5Gb3JFbGVtZW50KEVsZW1lbnQqKTsKLSAgICB2b2lkIHdlYmtpdERp
ZEVudGVyRnVsbFNjcmVlbkZvckVsZW1lbnQoRWxlbWVudCopOwotICAgIHZvaWQgd2Via2l0V2ls
bEV4aXRGdWxsU2NyZWVuRm9yRWxlbWVudChFbGVtZW50Kik7Ci0gICAgdm9pZCB3ZWJraXREaWRF
eGl0RnVsbFNjcmVlbkZvckVsZW1lbnQoRWxlbWVudCopOworICAgIFdFQkNPUkVfRVhQT1JUIHZv
aWQgd2Via2l0V2lsbEVudGVyRnVsbFNjcmVlbkZvckVsZW1lbnQoRWxlbWVudCopOworICAgIFdF
QkNPUkVfRVhQT1JUIHZvaWQgd2Via2l0RGlkRW50ZXJGdWxsU2NyZWVuRm9yRWxlbWVudChFbGVt
ZW50Kik7CisgICAgV0VCQ09SRV9FWFBPUlQgdm9pZCB3ZWJraXRXaWxsRXhpdEZ1bGxTY3JlZW5G
b3JFbGVtZW50KEVsZW1lbnQqKTsKKyAgICBXRUJDT1JFX0VYUE9SVCB2b2lkIHdlYmtpdERpZEV4
aXRGdWxsU2NyZWVuRm9yRWxlbWVudChFbGVtZW50Kik7CiAgICAgCiAgICAgdm9pZCBzZXRGdWxs
U2NyZWVuUmVuZGVyZXIoUmVuZGVyRnVsbFNjcmVlbiopOwogICAgIFJlbmRlckZ1bGxTY3JlZW4q
IGZ1bGxTY3JlZW5SZW5kZXJlcigpIGNvbnN0IHsgcmV0dXJuIG1fZnVsbFNjcmVlblJlbmRlcmVy
OyB9CkBAIC0xMTQxLDcgKzExNDEsNyBAQCBwdWJsaWM6CiAgICAgdm9pZCBmdWxsU2NyZWVuRWxl
bWVudFJlbW92ZWQoKTsKICAgICB2b2lkIHJlbW92ZUZ1bGxTY3JlZW5FbGVtZW50T2ZTdWJ0cmVl
KE5vZGUqLCBib29sIGFtb25nQ2hpbGRyZW5Pbmx5ID0gZmFsc2UpOwogICAgIGJvb2wgaXNBbmlt
YXRpbmdGdWxsU2NyZWVuKCkgY29uc3Q7Ci0gICAgdm9pZCBzZXRBbmltYXRpbmdGdWxsU2NyZWVu
KGJvb2wpOworICAgIFdFQkNPUkVfRVhQT1JUIHZvaWQgc2V0QW5pbWF0aW5nRnVsbFNjcmVlbihi
b29sKTsKIAogICAgIC8vIFczQyBBUEkKICAgICBib29sIHdlYmtpdEZ1bGxzY3JlZW5FbmFibGVk
KCkgY29uc3Q7CkBAIC0xMTkwLDggKzExOTAsOCBAQCBwdWJsaWM6CiAgICAgdm9pZCBpbml0RE5T
UHJlZmV0Y2goKTsKIAogICAgIHVuc2lnbmVkIHdoZWVsRXZlbnRIYW5kbGVyQ291bnQoKSBjb25z
dCB7IHJldHVybiBtX3doZWVsRXZlbnRIYW5kbGVyQ291bnQ7IH0KLSAgICB2b2lkIGRpZEFkZFdo
ZWVsRXZlbnRIYW5kbGVyKCk7Ci0gICAgdm9pZCBkaWRSZW1vdmVXaGVlbEV2ZW50SGFuZGxlcigp
OworICAgIFdFQkNPUkVfRVhQT1JUIHZvaWQgZGlkQWRkV2hlZWxFdmVudEhhbmRsZXIoKTsKKyAg
ICBXRUJDT1JFX0VYUE9SVCB2b2lkIGRpZFJlbW92ZVdoZWVsRXZlbnRIYW5kbGVyKCk7CiAKICAg
ICBkb3VibGUgbGFzdEhhbmRsZWRVc2VyR2VzdHVyZVRpbWVzdGFtcCgpIGNvbnN0IHsgcmV0dXJu
IG1fbGFzdEhhbmRsZWRVc2VyR2VzdHVyZVRpbWVzdGFtcDsgfQogICAgIHZvaWQgcmVzZXRMYXN0
SGFuZGxlZFVzZXJHZXN0dXJlVGltZXN0YW1wKCk7CkBAIC0xNjIzLDggKzE2MjMsOCBAQCBwdWJs
aWM6CiAgICAgLy8gICAgICBkb2N1bWVudCBpZiBpdCBoYXMgdGhlIGFwcHJvcHJpYXRlIG1ldGEg
dGFnLgogICAgIC8vICAgIC0gaXNUZWxlcGhvbmVOdW1iZXJQYXJzaW5nRW5hYmxlZCgpID09IGlz
VGVsZXBob25lTnVtYmVyUGFyc2luZ0FsbG93ZWQoKSAmJiBwYWdlKCktPnNldHRpbmdzKCktPmlz
VGVsZXBob25lTnVtYmVyUGFyc2luZ0VuYWJsZWQoKQogCi0gICAgYm9vbCBpc1RlbGVwaG9uZU51
bWJlclBhcnNpbmdBbGxvd2VkKCkgY29uc3Q7Ci0gICAgYm9vbCBpc1RlbGVwaG9uZU51bWJlclBh
cnNpbmdFbmFibGVkKCkgY29uc3Q7CisgICAgV0VCQ09SRV9FWFBPUlQgYm9vbCBpc1RlbGVwaG9u
ZU51bWJlclBhcnNpbmdBbGxvd2VkKCkgY29uc3Q7CisgICAgV0VCQ09SRV9FWFBPUlQgYm9vbCBp
c1RlbGVwaG9uZU51bWJlclBhcnNpbmdFbmFibGVkKCkgY29uc3Q7CiAKIHByaXZhdGU6CiAgICAg
ZnJpZW5kIHZvaWQgc2V0UGFyc2VyRmVhdHVyZShjb25zdCBTdHJpbmcmIGtleSwgY29uc3QgU3Ry
aW5nJiB2YWx1ZSwgRG9jdW1lbnQqLCB2b2lkKiB1c2VyRGF0YSk7CkluZGV4OiBTb3VyY2UvV2Vi
Q29yZS9kb20vRG9jdW1lbnRNYXJrZXIuaAo9PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09Ci0tLSBTb3VyY2UvV2ViQ29yZS9k
b20vRG9jdW1lbnRNYXJrZXIuaAkocmV2aXNpb24gMTcyODA4KQorKysgU291cmNlL1dlYkNvcmUv
ZG9tL0RvY3VtZW50TWFya2VyLmgJKHdvcmtpbmcgY29weSkKQEAgLTEyNiw3ICsxMjYsNyBAQCBw
dWJsaWM6CiAgICAgdW5zaWduZWQgc3RhcnRPZmZzZXQoKSBjb25zdCB7IHJldHVybiBtX3N0YXJ0
T2Zmc2V0OyB9CiAgICAgdW5zaWduZWQgZW5kT2Zmc2V0KCkgY29uc3QgeyByZXR1cm4gbV9lbmRP
ZmZzZXQ7IH0KIAotICAgIGNvbnN0IFN0cmluZyYgZGVzY3JpcHRpb24oKSBjb25zdDsKKyAgICBX
RUJDT1JFX0VYUE9SVCBjb25zdCBTdHJpbmcmIGRlc2NyaXB0aW9uKCkgY29uc3Q7CiAgICAgYm9v
bCBhY3RpdmVNYXRjaCgpIGNvbnN0OwogICAgIERvY3VtZW50TWFya2VyRGV0YWlscyogZGV0YWls
cygpIGNvbnN0OwogCkluZGV4OiBTb3VyY2UvV2ViQ29yZS9kb20vRG9jdW1lbnRNYXJrZXJDb250
cm9sbGVyLmgKPT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PQotLS0gU291cmNlL1dlYkNvcmUvZG9tL0RvY3VtZW50TWFya2Vy
Q29udHJvbGxlci5oCShyZXZpc2lvbiAxNzI4MDgpCisrKyBTb3VyY2UvV2ViQ29yZS9kb20vRG9j
dW1lbnRNYXJrZXJDb250cm9sbGVyLmgJKHdvcmtpbmcgY29weSkKQEAgLTUzLDcgKzUzLDcgQEAg
cHVibGljOgogICAgIHZvaWQgYWRkTWFya2VyKFJhbmdlKiwgRG9jdW1lbnRNYXJrZXI6Ok1hcmtl
clR5cGUsIGNvbnN0IFN0cmluZyYgZGVzY3JpcHRpb24pOwogICAgIHZvaWQgYWRkTWFya2VyVG9O
b2RlKE5vZGUqLCB1bnNpZ25lZCBzdGFydE9mZnNldCwgdW5zaWduZWQgbGVuZ3RoLCBEb2N1bWVu
dE1hcmtlcjo6TWFya2VyVHlwZSk7CiAgICAgdm9pZCBhZGRNYXJrZXJUb05vZGUoTm9kZSosIHVu
c2lnbmVkIHN0YXJ0T2Zmc2V0LCB1bnNpZ25lZCBsZW5ndGgsIERvY3VtZW50TWFya2VyOjpNYXJr
ZXJUeXBlLCBQYXNzUmVmUHRyPERvY3VtZW50TWFya2VyRGV0YWlscz4pOwotICAgIHZvaWQgYWRk
VGV4dE1hdGNoTWFya2VyKGNvbnN0IFJhbmdlKiwgYm9vbCBhY3RpdmVNYXRjaCk7CisgICAgV0VC
Q09SRV9FWFBPUlQgdm9pZCBhZGRUZXh0TWF0Y2hNYXJrZXIoY29uc3QgUmFuZ2UqLCBib29sIGFj
dGl2ZU1hdGNoKTsKICNpZiBQTEFURk9STShJT1MpCiAgICAgdm9pZCBhZGRNYXJrZXIoUmFuZ2Uq
LCBEb2N1bWVudE1hcmtlcjo6TWFya2VyVHlwZSwgU3RyaW5nIGRlc2NyaXB0aW9uLCBjb25zdCBW
ZWN0b3I8U3RyaW5nPiYgaW50ZXJwcmV0YXRpb25zLCBjb25zdCBSZXRhaW5QdHI8aWQ+JiBtZXRh
ZGF0YSk7CiAgICAgdm9pZCBhZGREaWN0YXRpb25QaHJhc2VXaXRoQWx0ZXJuYXRpdmVzTWFya2Vy
KFJhbmdlKiwgY29uc3QgVmVjdG9yPFN0cmluZz4mIGludGVycHJldGF0aW9ucyk7CkBAIC03NSw3
ICs3NSw3IEBAIHB1YmxpYzoKICAgICB2b2lkIHJlbW92ZU1hcmtlcnMoUmFuZ2UqLCBEb2N1bWVu
dE1hcmtlcjo6TWFya2VyVHlwZXMgPSBEb2N1bWVudE1hcmtlcjo6QWxsTWFya2VycygpLCBSZW1v
dmVQYXJ0aWFsbHlPdmVybGFwcGluZ01hcmtlck9yTm90ID0gRG9Ob3RSZW1vdmVQYXJ0aWFsbHlP
dmVybGFwcGluZ01hcmtlcik7CiAgICAgdm9pZCByZW1vdmVNYXJrZXJzKE5vZGUqLCB1bnNpZ25l
ZCBzdGFydE9mZnNldCwgaW50IGxlbmd0aCwgRG9jdW1lbnRNYXJrZXI6Ok1hcmtlclR5cGVzID0g
RG9jdW1lbnRNYXJrZXI6OkFsbE1hcmtlcnMoKSwgIFJlbW92ZVBhcnRpYWxseU92ZXJsYXBwaW5n
TWFya2VyT3JOb3QgPSBEb05vdFJlbW92ZVBhcnRpYWxseU92ZXJsYXBwaW5nTWFya2VyKTsKIAot
ICAgIHZvaWQgcmVtb3ZlTWFya2VycyhEb2N1bWVudE1hcmtlcjo6TWFya2VyVHlwZXMgPSBEb2N1
bWVudE1hcmtlcjo6QWxsTWFya2VycygpKTsKKyAgICBXRUJDT1JFX0VYUE9SVCB2b2lkIHJlbW92
ZU1hcmtlcnMoRG9jdW1lbnRNYXJrZXI6Ok1hcmtlclR5cGVzID0gRG9jdW1lbnRNYXJrZXI6OkFs
bE1hcmtlcnMoKSk7CiAgICAgdm9pZCByZW1vdmVNYXJrZXJzKE5vZGUqLCBEb2N1bWVudE1hcmtl
cjo6TWFya2VyVHlwZXMgPSBEb2N1bWVudE1hcmtlcjo6QWxsTWFya2VycygpKTsKICAgICB2b2lk
IHJlcGFpbnRNYXJrZXJzKERvY3VtZW50TWFya2VyOjpNYXJrZXJUeXBlcyA9IERvY3VtZW50TWFy
a2VyOjpBbGxNYXJrZXJzKCkpOwogICAgIHZvaWQgaW52YWxpZGF0ZVJlbmRlcmVkUmVjdHNGb3JN
YXJrZXJzSW5SZWN0KGNvbnN0IExheW91dFJlY3QmKTsKQEAgLTg0LDkgKzg0LDkgQEAgcHVibGlj
OgogICAgIHZvaWQgc2V0TWFya2Vyc0FjdGl2ZShOb2RlKiwgdW5zaWduZWQgc3RhcnRPZmZzZXQs
IHVuc2lnbmVkIGVuZE9mZnNldCwgYm9vbCk7CiAKICAgICBEb2N1bWVudE1hcmtlciogbWFya2Vy
Q29udGFpbmluZ1BvaW50KGNvbnN0IExheW91dFBvaW50JiwgRG9jdW1lbnRNYXJrZXI6Ok1hcmtl
clR5cGUpOwotICAgIFZlY3RvcjxEb2N1bWVudE1hcmtlcio+IG1hcmtlcnNGb3IoTm9kZSosIERv
Y3VtZW50TWFya2VyOjpNYXJrZXJUeXBlcyA9IERvY3VtZW50TWFya2VyOjpBbGxNYXJrZXJzKCkp
OwotICAgIFZlY3RvcjxEb2N1bWVudE1hcmtlcio+IG1hcmtlcnNJblJhbmdlKFJhbmdlKiwgRG9j
dW1lbnRNYXJrZXI6Ok1hcmtlclR5cGVzKTsKLSAgICBWZWN0b3I8SW50UmVjdD4gcmVuZGVyZWRS
ZWN0c0Zvck1hcmtlcnMoRG9jdW1lbnRNYXJrZXI6Ok1hcmtlclR5cGUpOworICAgIFdFQkNPUkVf
RVhQT1JUIFZlY3RvcjxEb2N1bWVudE1hcmtlcio+IG1hcmtlcnNGb3IoTm9kZSosIERvY3VtZW50
TWFya2VyOjpNYXJrZXJUeXBlcyA9IERvY3VtZW50TWFya2VyOjpBbGxNYXJrZXJzKCkpOworICAg
IFdFQkNPUkVfRVhQT1JUIFZlY3RvcjxEb2N1bWVudE1hcmtlcio+IG1hcmtlcnNJblJhbmdlKFJh
bmdlKiwgRG9jdW1lbnRNYXJrZXI6Ok1hcmtlclR5cGVzKTsKKyAgICBXRUJDT1JFX0VYUE9SVCBW
ZWN0b3I8SW50UmVjdD4gcmVuZGVyZWRSZWN0c0Zvck1hcmtlcnMoRG9jdW1lbnRNYXJrZXI6Ok1h
cmtlclR5cGUpOwogICAgIHZvaWQgY2xlYXJEZXNjcmlwdGlvbk9uTWFya2Vyc0ludGVyc2VjdGlu
Z1JhbmdlKFJhbmdlKiwgRG9jdW1lbnRNYXJrZXI6Ok1hcmtlclR5cGVzKTsKIAogI2lmbmRlZiBO
REVCVUcKSW5kZXg6IFNvdXJjZS9XZWJDb3JlL2RvbS9Eb2N1bWVudFN0eWxlU2hlZXRDb2xsZWN0
aW9uLmgKPT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PQotLS0gU291cmNlL1dlYkNvcmUvZG9tL0RvY3VtZW50U3R5bGVTaGVl
dENvbGxlY3Rpb24uaAkocmV2aXNpb24gMTcyODA4KQorKysgU291cmNlL1dlYkNvcmUvZG9tL0Rv
Y3VtZW50U3R5bGVTaGVldENvbGxlY3Rpb24uaAkod29ya2luZyBjb3B5KQpAQCAtNjcsOCArNjcs
OCBAQCBwdWJsaWM6CiAgICAgdm9pZCBpbnZhbGlkYXRlSW5qZWN0ZWRTdHlsZVNoZWV0Q2FjaGUo
KTsKICAgICB2b2lkIHVwZGF0ZUluamVjdGVkU3R5bGVTaGVldENhY2hlKCkgY29uc3Q7CiAKLSAg
ICB2b2lkIGFkZEF1dGhvclNoZWV0KFBhc3NSZWY8U3R5bGVTaGVldENvbnRlbnRzPiBhdXRob3JT
aGVldCk7Ci0gICAgdm9pZCBhZGRVc2VyU2hlZXQoUGFzc1JlZjxTdHlsZVNoZWV0Q29udGVudHM+
IHVzZXJTaGVldCk7CisgICAgV0VCQ09SRV9FWFBPUlQgdm9pZCBhZGRBdXRob3JTaGVldChQYXNz
UmVmPFN0eWxlU2hlZXRDb250ZW50cz4gYXV0aG9yU2hlZXQpOworICAgIFdFQkNPUkVfRVhQT1JU
IHZvaWQgYWRkVXNlclNoZWV0KFBhc3NSZWY8U3R5bGVTaGVldENvbnRlbnRzPiB1c2VyU2hlZXQp
OwogCiAgICAgZW51bSBVcGRhdGVGbGFnIHsgTm9VcGRhdGUgPSAwLCBPcHRpbWl6ZWRVcGRhdGUs
IEZ1bGxVcGRhdGUgfTsKIApJbmRleDogU291cmNlL1dlYkNvcmUvZG9tL0VsZW1lbnQuaAo9PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09Ci0tLSBTb3VyY2UvV2ViQ29yZS9kb20vRWxlbWVudC5oCShyZXZpc2lvbiAxNzI4MDgp
CisrKyBTb3VyY2UvV2ViQ29yZS9kb20vRWxlbWVudC5oCSh3b3JraW5nIGNvcHkpCkBAIC0xNDIs
OSArMTQyLDkgQEAgcHVibGljOgogICAgIERFRklORV9BVFRSSUJVVEVfRVZFTlRfTElTVEVORVIo
d2Via2l0ZnVsbHNjcmVlbmVycm9yKTsKICNlbmRpZgogCi0gICAgYm9vbCBoYXNBdHRyaWJ1dGUo
Y29uc3QgUXVhbGlmaWVkTmFtZSYpIGNvbnN0OwotICAgIGNvbnN0IEF0b21pY1N0cmluZyYgZ2V0
QXR0cmlidXRlKGNvbnN0IFF1YWxpZmllZE5hbWUmKSBjb25zdDsKLSAgICB2b2lkIHNldEF0dHJp
YnV0ZShjb25zdCBRdWFsaWZpZWROYW1lJiwgY29uc3QgQXRvbWljU3RyaW5nJiB2YWx1ZSk7Cisg
ICAgV0VCQ09SRV9FWFBPUlQgYm9vbCBoYXNBdHRyaWJ1dGUoY29uc3QgUXVhbGlmaWVkTmFtZSYp
IGNvbnN0OworICAgIFdFQkNPUkVfRVhQT1JUIGNvbnN0IEF0b21pY1N0cmluZyYgZ2V0QXR0cmli
dXRlKGNvbnN0IFF1YWxpZmllZE5hbWUmKSBjb25zdDsKKyAgICBXRUJDT1JFX0VYUE9SVCB2b2lk
IHNldEF0dHJpYnV0ZShjb25zdCBRdWFsaWZpZWROYW1lJiwgY29uc3QgQXRvbWljU3RyaW5nJiB2
YWx1ZSk7CiAgICAgdm9pZCBzZXRBdHRyaWJ1dGVXaXRob3V0U3luY2hyb25pemF0aW9uKGNvbnN0
IFF1YWxpZmllZE5hbWUmLCBjb25zdCBBdG9taWNTdHJpbmcmIHZhbHVlKTsKICAgICB2b2lkIHNl
dFN5bmNocm9uaXplZExhenlBdHRyaWJ1dGUoY29uc3QgUXVhbGlmaWVkTmFtZSYsIGNvbnN0IEF0
b21pY1N0cmluZyYgdmFsdWUpOwogICAgIGJvb2wgcmVtb3ZlQXR0cmlidXRlKGNvbnN0IFF1YWxp
ZmllZE5hbWUmKTsKQEAgLTE2MCw3ICsxNjAsNyBAQCBwdWJsaWM6CiAgICAgYm9vbCBmYXN0SGFz
QXR0cmlidXRlKGNvbnN0IFF1YWxpZmllZE5hbWUmKSBjb25zdDsKICAgICBjb25zdCBBdG9taWNT
dHJpbmcmIGZhc3RHZXRBdHRyaWJ1dGUoY29uc3QgUXVhbGlmaWVkTmFtZSYpIGNvbnN0OwogI2lm
bmRlZiBOREVCVUcKLSAgICBib29sIGZhc3RBdHRyaWJ1dGVMb29rdXBBbGxvd2VkKGNvbnN0IFF1
YWxpZmllZE5hbWUmKSBjb25zdDsKKyAgICBXRUJDT1JFX0VYUE9SVCBib29sIGZhc3RBdHRyaWJ1
dGVMb29rdXBBbGxvd2VkKGNvbnN0IFF1YWxpZmllZE5hbWUmKSBjb25zdDsKICNlbmRpZgogCiAj
aWZkZWYgRFVNUF9OT0RFX1NUQVRJU1RJQ1MKQEAgLTE3NCwxMCArMTc0LDEwIEBAIHB1YmxpYzoK
ICAgICBib29sIGhhc0F0dHJpYnV0ZShjb25zdCBBdG9taWNTdHJpbmcmIG5hbWUpIGNvbnN0Owog
ICAgIGJvb2wgaGFzQXR0cmlidXRlTlMoY29uc3QgQXRvbWljU3RyaW5nJiBuYW1lc3BhY2VVUkks
IGNvbnN0IEF0b21pY1N0cmluZyYgbG9jYWxOYW1lKSBjb25zdDsKIAotICAgIGNvbnN0IEF0b21p
Y1N0cmluZyYgZ2V0QXR0cmlidXRlKGNvbnN0IEF0b21pY1N0cmluZyYgbmFtZSkgY29uc3Q7Cisg
ICAgV0VCQ09SRV9FWFBPUlQgY29uc3QgQXRvbWljU3RyaW5nJiBnZXRBdHRyaWJ1dGUoY29uc3Qg
QXRvbWljU3RyaW5nJiBuYW1lKSBjb25zdDsKICAgICBjb25zdCBBdG9taWNTdHJpbmcmIGdldEF0
dHJpYnV0ZU5TKGNvbnN0IEF0b21pY1N0cmluZyYgbmFtZXNwYWNlVVJJLCBjb25zdCBBdG9taWNT
dHJpbmcmIGxvY2FsTmFtZSkgY29uc3Q7CiAKLSAgICB2b2lkIHNldEF0dHJpYnV0ZShjb25zdCBB
dG9taWNTdHJpbmcmIG5hbWUsIGNvbnN0IEF0b21pY1N0cmluZyYgdmFsdWUsIEV4Y2VwdGlvbkNv
ZGUmKTsKKyAgICBXRUJDT1JFX0VYUE9SVCB2b2lkIHNldEF0dHJpYnV0ZShjb25zdCBBdG9taWNT
dHJpbmcmIG5hbWUsIGNvbnN0IEF0b21pY1N0cmluZyYgdmFsdWUsIEV4Y2VwdGlvbkNvZGUmKTsK
ICAgICBzdGF0aWMgYm9vbCBwYXJzZUF0dHJpYnV0ZU5hbWUoUXVhbGlmaWVkTmFtZSYsIGNvbnN0
IEF0b21pY1N0cmluZyYgbmFtZXNwYWNlVVJJLCBjb25zdCBBdG9taWNTdHJpbmcmIHF1YWxpZmll
ZE5hbWUsIEV4Y2VwdGlvbkNvZGUmKTsKICAgICB2b2lkIHNldEF0dHJpYnV0ZU5TKGNvbnN0IEF0
b21pY1N0cmluZyYgbmFtZXNwYWNlVVJJLCBjb25zdCBBdG9taWNTdHJpbmcmIHF1YWxpZmllZE5h
bWUsIGNvbnN0IEF0b21pY1N0cmluZyYgdmFsdWUsIEV4Y2VwdGlvbkNvZGUmKTsKIApAQCAtMjI3
LDE1ICsyMjcsMTUgQEAgcHVibGljOgogICAgIHZpcnR1YWwgaW50IHNjcm9sbFdpZHRoKCk7CiAg
ICAgdmlydHVhbCBpbnQgc2Nyb2xsSGVpZ2h0KCk7CiAKLSAgICBJbnRSZWN0IGJvdW5kc0luUm9v
dFZpZXdTcGFjZSgpOworICAgIFdFQkNPUkVfRVhQT1JUIEludFJlY3QgYm91bmRzSW5Sb290Vmll
d1NwYWNlKCk7CiAKICAgICBQYXNzUmVmUHRyPENsaWVudFJlY3RMaXN0PiBnZXRDbGllbnRSZWN0
cygpOwogICAgIFBhc3NSZWZQdHI8Q2xpZW50UmVjdD4gZ2V0Qm91bmRpbmdDbGllbnRSZWN0KCk7
CiAgICAgCiAgICAgLy8gUmV0dXJucyB0aGUgYWJzb2x1dGUgYm91bmRpbmcgYm94IHRyYW5zbGF0
ZWQgaW50byBjbGllbnQgY29vcmRpbmF0ZXMuCi0gICAgSW50UmVjdCBjbGllbnRSZWN0KCkgY29u
c3Q7CisgICAgV0VCQ09SRV9FWFBPUlQgSW50UmVjdCBjbGllbnRSZWN0KCkgY29uc3Q7CiAgICAg
Ly8gUmV0dXJucyB0aGUgYWJzb2x1dGUgYm91bmRpbmcgYm94IHRyYW5zbGF0ZWQgaW50byBzY3Jl
ZW4gY29vcmRpbmF0ZXMuCi0gICAgSW50UmVjdCBzY3JlZW5SZWN0KCkgY29uc3Q7CisgICAgV0VC
Q09SRV9FWFBPUlQgSW50UmVjdCBzY3JlZW5SZWN0KCkgY29uc3Q7CiAKICAgICBib29sIHJlbW92
ZUF0dHJpYnV0ZShjb25zdCBBdG9taWNTdHJpbmcmIG5hbWUpOwogICAgIGJvb2wgcmVtb3ZlQXR0
cmlidXRlTlMoY29uc3QgQXRvbWljU3RyaW5nJiBuYW1lc3BhY2VVUkksIGNvbnN0IEF0b21pY1N0
cmluZyYgbG9jYWxOYW1lKTsKQEAgLTMyNCw4ICszMjQsOCBAQCBwdWJsaWM6CiAgICAgdmlydHVh
bCBib29sIHJlbmRlcmVySXNOZWVkZWQoY29uc3QgUmVuZGVyU3R5bGUmKTsKICAgICB2b2lkIGRp
ZEFmZmVjdFNlbGVjdG9yKEFmZmVjdGVkU2VsZWN0b3JNYXNrKTsKIAotICAgIFNoYWRvd1Jvb3Qq
IHNoYWRvd1Jvb3QoKSBjb25zdDsKLSAgICBQYXNzUmVmUHRyPFNoYWRvd1Jvb3Q+IGNyZWF0ZVNo
YWRvd1Jvb3QoRXhjZXB0aW9uQ29kZSYpOworICAgIFdFQkNPUkVfRVhQT1JUIFNoYWRvd1Jvb3Qq
IHNoYWRvd1Jvb3QoKSBjb25zdDsKKyAgICBXRUJDT1JFX0VYUE9SVCBQYXNzUmVmUHRyPFNoYWRv
d1Jvb3Q+IGNyZWF0ZVNoYWRvd1Jvb3QoRXhjZXB0aW9uQ29kZSYpOwogCiAgICAgU2hhZG93Um9v
dCogdXNlckFnZW50U2hhZG93Um9vdCgpIGNvbnN0OwogICAgIFNoYWRvd1Jvb3QmIGVuc3VyZVVz
ZXJBZ2VudFNoYWRvd1Jvb3QoKTsKQEAgLTM5Nyw3ICszOTcsNyBAQCBwdWJsaWM6CiAgICAgdmly
dHVhbCBTdHJpbmcgY29tcGxldGVVUkxzSW5BdHRyaWJ1dGVWYWx1ZShjb25zdCBVUkwmIGJhc2Us
IGNvbnN0IEF0dHJpYnV0ZSYpIGNvbnN0OwogICAgIHZpcnR1YWwgYm9vbCBpc0hUTUxDb250ZW50
QXR0cmlidXRlKGNvbnN0IEF0dHJpYnV0ZSYpIGNvbnN0IHsgcmV0dXJuIGZhbHNlOyB9CiAKLSAg
ICBVUkwgZ2V0VVJMQXR0cmlidXRlKGNvbnN0IFF1YWxpZmllZE5hbWUmKSBjb25zdDsKKyAgICBX
RUJDT1JFX0VYUE9SVCBVUkwgZ2V0VVJMQXR0cmlidXRlKGNvbnN0IFF1YWxpZmllZE5hbWUmKSBj
b25zdDsKICAgICBVUkwgZ2V0Tm9uRW1wdHlVUkxBdHRyaWJ1dGUoY29uc3QgUXVhbGlmaWVkTmFt
ZSYpIGNvbnN0OwogCiAgICAgdmlydHVhbCBjb25zdCBBdG9taWNTdHJpbmcmIGltYWdlU291cmNl
VVJMKCkgY29uc3Q7CkBAIC00MDgsMTMgKzQwOCwxMyBAQCBwdWJsaWM6CiAgICAgdmlydHVhbCB2
b2lkIHVwZGF0ZUZvY3VzQXBwZWFyYW5jZShib29sIHJlc3RvcmVQcmV2aW91c1NlbGVjdGlvbik7
CiAgICAgdmlydHVhbCB2b2lkIGJsdXIoKTsKIAotICAgIFN0cmluZyBpbm5lclRleHQoKTsKKyAg
ICBXRUJDT1JFX0VYUE9SVCBTdHJpbmcgaW5uZXJUZXh0KCk7CiAgICAgU3RyaW5nIG91dGVyVGV4
dCgpOwogIAogICAgIHZpcnR1YWwgU3RyaW5nIHRpdGxlKCkgY29uc3Q7CiAKICAgICBjb25zdCBB
dG9taWNTdHJpbmcmIHBzZXVkbygpIGNvbnN0OwotICAgIHZvaWQgc2V0UHNldWRvKGNvbnN0IEF0
b21pY1N0cmluZyYpOworICAgIFdFQkNPUkVfRVhQT1JUIHZvaWQgc2V0UHNldWRvKGNvbnN0IEF0
b21pY1N0cmluZyYpOwogCiAgICAgTGF5b3V0U2l6ZSBtaW5pbXVtU2l6ZUZvclJlc2l6aW5nKCkg
Y29uc3Q7CiAgICAgdm9pZCBzZXRNaW5pbXVtU2l6ZUZvclJlc2l6aW5nKGNvbnN0IExheW91dFNp
emUmKTsKQEAgLTQ0Myw4ICs0NDMsOCBAQCBwdWJsaWM6CiAgICAgdmlydHVhbCB2b2lkIGZpbmlz
aFBhcnNpbmdDaGlsZHJlbigpIG92ZXJyaWRlOwogICAgIHZpcnR1YWwgdm9pZCBiZWdpblBhcnNp
bmdDaGlsZHJlbigpIG92ZXJyaWRlIGZpbmFsOwogCi0gICAgUHNldWRvRWxlbWVudCogYmVmb3Jl
UHNldWRvRWxlbWVudCgpIGNvbnN0OwotICAgIFBzZXVkb0VsZW1lbnQqIGFmdGVyUHNldWRvRWxl
bWVudCgpIGNvbnN0OworICAgIFdFQkNPUkVfRVhQT1JUIFBzZXVkb0VsZW1lbnQqIGJlZm9yZVBz
ZXVkb0VsZW1lbnQoKSBjb25zdDsKKyAgICBXRUJDT1JFX0VYUE9SVCBQc2V1ZG9FbGVtZW50KiBh
ZnRlclBzZXVkb0VsZW1lbnQoKSBjb25zdDsKICAgICBib29sIGNoaWxkTmVlZHNTaGFkb3dXYWxr
ZXIoKSBjb25zdDsKICAgICB2b2lkIGRpZFNoYWRvd1RyZWVBd2FyZUNoaWxkcmVuQ2hhbmdlKCk7
CiAKQEAgLTUwMSw3ICs1MDEsNyBAQCBwdWJsaWM6CiAgICAgfTsKICAgICAKICAgICB2b2lkIHdl
YmtpdFJlcXVlc3RGdWxsU2NyZWVuKHVuc2lnbmVkIHNob3J0IGZsYWdzKTsKLSAgICBib29sIGNv
bnRhaW5zRnVsbFNjcmVlbkVsZW1lbnQoKSBjb25zdDsKKyAgICBXRUJDT1JFX0VYUE9SVCBib29s
IGNvbnRhaW5zRnVsbFNjcmVlbkVsZW1lbnQoKSBjb25zdDsKICAgICB2b2lkIHNldENvbnRhaW5z
RnVsbFNjcmVlbkVsZW1lbnQoYm9vbCk7CiAgICAgdm9pZCBzZXRDb250YWluc0Z1bGxTY3JlZW5F
bGVtZW50T25BbmNlc3RvcnNDcm9zc2luZ0ZyYW1lQm91bmRhcmllcyhib29sKTsKIApAQCAtNTYz
LDcgKzU2Myw3IEBAIHB1YmxpYzoKICAgICB2b2lkIGNsZWFyU3R5bGVEZXJpdmVkRGF0YUJlZm9y
ZURldGFjaGluZ1JlbmRlcmVyKCk7CiAgICAgdm9pZCBjbGVhckhvdmVyQW5kQWN0aXZlU3RhdHVz
QmVmb3JlRGV0YWNoaW5nUmVuZGVyZXIoKTsKIAotICAgIFVSTCBhYnNvbHV0ZUxpbmtVUkwoKSBj
b25zdDsKKyAgICBXRUJDT1JFX0VYUE9SVCBVUkwgYWJzb2x1dGVMaW5rVVJMKCkgY29uc3Q7CiAK
IHByb3RlY3RlZDoKICAgICBFbGVtZW50KGNvbnN0IFF1YWxpZmllZE5hbWUmIHRhZ05hbWUsIERv
Y3VtZW50JiBkb2N1bWVudCwgQ29uc3RydWN0aW9uVHlwZSB0eXBlKQpJbmRleDogU291cmNlL1dl
YkNvcmUvZG9tL0V2ZW50LmgKPT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PQotLS0gU291cmNlL1dlYkNvcmUvZG9tL0V2ZW50
LmgJKHJldmlzaW9uIDE3MjgwOCkKKysrIFNvdXJjZS9XZWJDb3JlL2RvbS9FdmVudC5oCSh3b3Jr
aW5nIGNvcHkpCkBAIC04Niw3ICs4Niw3IEBAIHB1YmxpYzoKICAgICB7CiAgICAgICAgIHJldHVy
biBhZG9wdFJlZihuZXcgRXZlbnQpOwogICAgIH0KLSAgICBzdGF0aWMgUGFzc1JlZlB0cjxFdmVu
dD4gY3JlYXRlKGNvbnN0IEF0b21pY1N0cmluZyYgdHlwZSwgYm9vbCBjYW5CdWJibGUsIGJvb2wg
Y2FuY2VsYWJsZSkKKyAgICBXRUJDT1JFX0VYUE9SVCBzdGF0aWMgUGFzc1JlZlB0cjxFdmVudD4g
Y3JlYXRlKGNvbnN0IEF0b21pY1N0cmluZyYgdHlwZSwgYm9vbCBjYW5CdWJibGUsIGJvb2wgY2Fu
Y2VsYWJsZSkKICAgICB7CiAgICAgICAgIHJldHVybiBhZG9wdFJlZihuZXcgRXZlbnQodHlwZSwg
Y2FuQnViYmxlLCBjYW5jZWxhYmxlKSk7CiAgICAgfQpJbmRleDogU291cmNlL1dlYkNvcmUvZG9t
L0V2ZW50TGlzdGVuZXJNYXAuaAo9PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09Ci0tLSBTb3VyY2UvV2ViQ29yZS9kb20vRXZl
bnRMaXN0ZW5lck1hcC5oCShyZXZpc2lvbiAxNzI4MDgpCisrKyBTb3VyY2UvV2ViQ29yZS9kb20v
RXZlbnRMaXN0ZW5lck1hcC5oCSh3b3JraW5nIGNvcHkpCkBAIC00OSw3ICs0OSw3IEBAIHB1Ymxp
YzoKICAgICBFdmVudExpc3RlbmVyTWFwKCk7CiAKICAgICBib29sIGlzRW1wdHkoKSBjb25zdCB7
IHJldHVybiBtX2VudHJpZXMuaXNFbXB0eSgpOyB9Ci0gICAgYm9vbCBjb250YWlucyhjb25zdCBB
dG9taWNTdHJpbmcmIGV2ZW50VHlwZSkgY29uc3Q7CisgICAgV0VCQ09SRV9FWFBPUlQgYm9vbCBj
b250YWlucyhjb25zdCBBdG9taWNTdHJpbmcmIGV2ZW50VHlwZSkgY29uc3Q7CiAgICAgYm9vbCBj
b250YWluc0NhcHR1cmluZyhjb25zdCBBdG9taWNTdHJpbmcmIGV2ZW50VHlwZSkgY29uc3Q7CiAK
ICAgICB2b2lkIGNsZWFyKCk7CkluZGV4OiBTb3VyY2UvV2ViQ29yZS9lZGl0aW5nL0RpY3RhdGlv
bkFsdGVybmF0aXZlLmgKPT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PQotLS0gU291cmNlL1dlYkNvcmUvZWRpdGluZy9EaWN0
YXRpb25BbHRlcm5hdGl2ZS5oCShyZXZpc2lvbiAxNzI4MDgpCisrKyBTb3VyY2UvV2ViQ29yZS9l
ZGl0aW5nL0RpY3RhdGlvbkFsdGVybmF0aXZlLmgJKHdvcmtpbmcgY29weSkKQEAgLTMwLDggKzMw
LDggQEAKIAogbmFtZXNwYWNlIFdlYkNvcmUgewogc3RydWN0IERpY3RhdGlvbkFsdGVybmF0aXZl
IHsKLSAgICBEaWN0YXRpb25BbHRlcm5hdGl2ZSh1bnNpZ25lZCBzdGFydCwgdW5zaWduZWQgbGVu
Z3RoLCB1aW50NjRfdCBjb250ZXh0KTsKLSAgICBEaWN0YXRpb25BbHRlcm5hdGl2ZSgpOworICAg
IFdFQkNPUkVfRVhQT1JUIERpY3RhdGlvbkFsdGVybmF0aXZlKHVuc2lnbmVkIHN0YXJ0LCB1bnNp
Z25lZCBsZW5ndGgsIHVpbnQ2NF90IGNvbnRleHQpOworICAgIFdFQkNPUkVfRVhQT1JUIERpY3Rh
dGlvbkFsdGVybmF0aXZlKCk7CiAgICAgdW5zaWduZWQgcmFuZ2VTdGFydDsKICAgICB1bnNpZ25l
ZCByYW5nZUxlbmd0aDsKIApJbmRleDogU291cmNlL1dlYkNvcmUvZWRpdGluZy9FZGl0Q29tbWFu
ZC5oCj09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT0KLS0tIFNvdXJjZS9XZWJDb3JlL2VkaXRpbmcvRWRpdENvbW1hbmQuaAko
cmV2aXNpb24gMTcyODA4KQorKysgU291cmNlL1dlYkNvcmUvZWRpdGluZy9FZGl0Q29tbWFuZC5o
CSh3b3JraW5nIGNvcHkpCkBAIC03MCw3ICs3MCw3IEBAIHByb3RlY3RlZDoKICAgICBEb2N1bWVu
dCYgZG9jdW1lbnQoKSB7IHJldHVybiBtX2RvY3VtZW50LmdldCgpOyB9CiAgICAgQ29tcG9zaXRl
RWRpdENvbW1hbmQqIHBhcmVudCgpIGNvbnN0IHsgcmV0dXJuIG1fcGFyZW50OyB9CiAgICAgdm9p
ZCBzZXRTdGFydGluZ1NlbGVjdGlvbihjb25zdCBWaXNpYmxlU2VsZWN0aW9uJik7Ci0gICAgdm9p
ZCBzZXRFbmRpbmdTZWxlY3Rpb24oY29uc3QgVmlzaWJsZVNlbGVjdGlvbiYpOworICAgIFdFQkNP
UkVfRVhQT1JUIHZvaWQgc2V0RW5kaW5nU2VsZWN0aW9uKGNvbnN0IFZpc2libGVTZWxlY3Rpb24m
KTsKIAogcHJpdmF0ZToKICAgICBSZWY8RG9jdW1lbnQ+IG1fZG9jdW1lbnQ7CkluZGV4OiBTb3Vy
Y2UvV2ViQ29yZS9lZGl0aW5nL0VkaXRpbmdTdHlsZS5oCj09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT0KLS0tIFNvdXJjZS9X
ZWJDb3JlL2VkaXRpbmcvRWRpdGluZ1N0eWxlLmgJKHJldmlzaW9uIDE3MjgwOCkKKysrIFNvdXJj
ZS9XZWJDb3JlL2VkaXRpbmcvRWRpdGluZ1N0eWxlLmgJKHdvcmtpbmcgY29weSkKQEAgLTk1LDcg
Kzk1LDcgQEAgcHVibGljOgogICAgICAgICByZXR1cm4gYWRvcHRSZWYobmV3IEVkaXRpbmdTdHls
ZShwcm9wZXJ0eUlELCB2YWx1ZSkpOwogICAgIH0KIAotICAgIH5FZGl0aW5nU3R5bGUoKTsKKyAg
ICBXRUJDT1JFX0VYUE9SVCB+RWRpdGluZ1N0eWxlKCk7CiAKICAgICBNdXRhYmxlU3R5bGVQcm9w
ZXJ0aWVzKiBzdHlsZSgpIHsgcmV0dXJuIG1fbXV0YWJsZVN0eWxlLmdldCgpOyB9CiAgICAgYm9v
bCB0ZXh0RGlyZWN0aW9uKFdyaXRpbmdEaXJlY3Rpb24mKSBjb25zdDsKSW5kZXg6IFNvdXJjZS9X
ZWJDb3JlL2VkaXRpbmcvRWRpdG9yLmgKPT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PQotLS0gU291cmNlL1dlYkNvcmUvZWRp
dGluZy9FZGl0b3IuaAkocmV2aXNpb24gMTcyODA4KQorKysgU291cmNlL1dlYkNvcmUvZWRpdGlu
Zy9FZGl0b3IuaAkod29ya2luZyBjb3B5KQpAQCAtMTAwLDcgKzEwMCw3IEBAIHB1YmxpYzoKICAg
ICBleHBsaWNpdCBFZGl0b3IoRnJhbWUmKTsKICAgICB+RWRpdG9yKCk7CiAKLSAgICBFZGl0b3JD
bGllbnQqIGNsaWVudCgpIGNvbnN0OworICAgIFdFQkNPUkVfRVhQT1JUIEVkaXRvckNsaWVudCog
Y2xpZW50KCkgY29uc3Q7CiAgICAgVGV4dENoZWNrZXJDbGllbnQqIHRleHRDaGVja2VyKCkgY29u
c3Q7CiAKICAgICBDb21wb3NpdGVFZGl0Q29tbWFuZCogbGFzdEVkaXRDb21tYW5kKCkgeyByZXR1
cm4gbV9sYXN0RWRpdENvbW1hbmQuZ2V0KCk7IH0KQEAgLTEwOSwzMCArMTA5LDMwIEBAIHB1Ymxp
YzoKICAgICB2b2lkIGhhbmRsZUlucHV0TWV0aG9kS2V5ZG93bihLZXlib2FyZEV2ZW50Kik7CiAg
ICAgYm9vbCBoYW5kbGVUZXh0RXZlbnQoVGV4dEV2ZW50Kik7CiAKLSAgICBib29sIGNhbkVkaXQo
KSBjb25zdDsKLSAgICBib29sIGNhbkVkaXRSaWNobHkoKSBjb25zdDsKKyAgICBXRUJDT1JFX0VY
UE9SVCBib29sIGNhbkVkaXQoKSBjb25zdDsKKyAgICBXRUJDT1JFX0VYUE9SVCBib29sIGNhbkVk
aXRSaWNobHkoKSBjb25zdDsKIAogICAgIGJvb2wgY2FuREhUTUxDdXQoKTsKICAgICBib29sIGNh
bkRIVE1MQ29weSgpOwotICAgIGJvb2wgY2FuREhUTUxQYXN0ZSgpOworICAgIFdFQkNPUkVfRVhQ
T1JUIGJvb2wgY2FuREhUTUxQYXN0ZSgpOwogICAgIGJvb2wgdHJ5REhUTUxDb3B5KCk7CiAgICAg
Ym9vbCB0cnlESFRNTEN1dCgpOwotICAgIGJvb2wgdHJ5REhUTUxQYXN0ZSgpOworICAgIFdFQkNP
UkVfRVhQT1JUIGJvb2wgdHJ5REhUTUxQYXN0ZSgpOwogCi0gICAgYm9vbCBjYW5DdXQoKSBjb25z
dDsKLSAgICBib29sIGNhbkNvcHkoKSBjb25zdDsKLSAgICBib29sIGNhblBhc3RlKCkgY29uc3Q7
Ci0gICAgYm9vbCBjYW5EZWxldGUoKSBjb25zdDsKKyAgICBXRUJDT1JFX0VYUE9SVCBib29sIGNh
bkN1dCgpIGNvbnN0OworICAgIFdFQkNPUkVfRVhQT1JUIGJvb2wgY2FuQ29weSgpIGNvbnN0Owor
ICAgIFdFQkNPUkVfRVhQT1JUIGJvb2wgY2FuUGFzdGUoKSBjb25zdDsKKyAgICBXRUJDT1JFX0VY
UE9SVCBib29sIGNhbkRlbGV0ZSgpIGNvbnN0OwogICAgIGJvb2wgY2FuU21hcnRDb3B5T3JEZWxl
dGUoKTsKIAotICAgIHZvaWQgY3V0KCk7Ci0gICAgdm9pZCBjb3B5KCk7Ci0gICAgdm9pZCBwYXN0
ZSgpOworICAgIFdFQkNPUkVfRVhQT1JUIHZvaWQgY3V0KCk7CisgICAgV0VCQ09SRV9FWFBPUlQg
dm9pZCBjb3B5KCk7CisgICAgV0VCQ09SRV9FWFBPUlQgdm9pZCBwYXN0ZSgpOwogICAgIHZvaWQg
cGFzdGUoUGFzdGVib2FyZCYpOwogICAgIHZvaWQgcGFzdGVBc1BsYWluVGV4dCgpOwotICAgIHZv
aWQgcGVyZm9ybURlbGV0ZSgpOworICAgIFdFQkNPUkVfRVhQT1JUIHZvaWQgcGVyZm9ybURlbGV0
ZSgpOwogCi0gICAgdm9pZCBjb3B5VVJMKGNvbnN0IFVSTCYsIGNvbnN0IFN0cmluZyYgdGl0bGUp
OworICAgIFdFQkNPUkVfRVhQT1JUIHZvaWQgY29weVVSTChjb25zdCBVUkwmLCBjb25zdCBTdHJp
bmcmIHRpdGxlKTsKICAgICB2b2lkIGNvcHlVUkwoY29uc3QgVVJMJiwgY29uc3QgU3RyaW5nJiB0
aXRsZSwgUGFzdGVib2FyZCYpOwogI2lmICFQTEFURk9STShJT1MpCiAgICAgdm9pZCBjb3B5SW1h
Z2UoY29uc3QgSGl0VGVzdFJlc3VsdCYpOwpAQCAtMTQwLDUxICsxNDAsNTEgQEAgcHVibGljOgog
CiAgICAgU3RyaW5nIHJlYWRQbGFpblRleHRGcm9tUGFzdGVib2FyZChQYXN0ZWJvYXJkJik7CiAK
LSAgICB2b2lkIGluZGVudCgpOwotICAgIHZvaWQgb3V0ZGVudCgpOworICAgIFdFQkNPUkVfRVhQ
T1JUIHZvaWQgaW5kZW50KCk7CisgICAgV0VCQ09SRV9FWFBPUlQgdm9pZCBvdXRkZW50KCk7CiAg
ICAgdm9pZCB0cmFuc3Bvc2UoKTsKIAogICAgIGJvb2wgc2hvdWxkSW5zZXJ0RnJhZ21lbnQoUGFz
c1JlZlB0cjxEb2N1bWVudEZyYWdtZW50PiwgUGFzc1JlZlB0cjxSYW5nZT4sIEVkaXRvckluc2Vy
dEFjdGlvbik7CiAgICAgYm9vbCBzaG91bGRJbnNlcnRUZXh0KGNvbnN0IFN0cmluZyYsIFJhbmdl
KiwgRWRpdG9ySW5zZXJ0QWN0aW9uKSBjb25zdDsKLSAgICBib29sIHNob3VsZERlbGV0ZVJhbmdl
KFJhbmdlKikgY29uc3Q7CisgICAgV0VCQ09SRV9FWFBPUlQgYm9vbCBzaG91bGREZWxldGVSYW5n
ZShSYW5nZSopIGNvbnN0OwogICAgIGJvb2wgc2hvdWxkQXBwbHlTdHlsZShTdHlsZVByb3BlcnRp
ZXMqLCBSYW5nZSopOwogCiAgICAgdm9pZCByZXNwb25kVG9DaGFuZ2VkQ29udGVudHMoY29uc3Qg
VmlzaWJsZVNlbGVjdGlvbiYgZW5kaW5nU2VsZWN0aW9uKTsKIAogICAgIGJvb2wgc2VsZWN0aW9u
U3RhcnRIYXNTdHlsZShDU1NQcm9wZXJ0eUlELCBjb25zdCBTdHJpbmcmIHZhbHVlKSBjb25zdDsK
LSAgICBUcmlTdGF0ZSBzZWxlY3Rpb25IYXNTdHlsZShDU1NQcm9wZXJ0eUlELCBjb25zdCBTdHJp
bmcmIHZhbHVlKSBjb25zdDsKKyAgICBXRUJDT1JFX0VYUE9SVCBUcmlTdGF0ZSBzZWxlY3Rpb25I
YXNTdHlsZShDU1NQcm9wZXJ0eUlELCBjb25zdCBTdHJpbmcmIHZhbHVlKSBjb25zdDsKICAgICBT
dHJpbmcgc2VsZWN0aW9uU3RhcnRDU1NQcm9wZXJ0eVZhbHVlKENTU1Byb3BlcnR5SUQpOwogICAg
IAogICAgIFRyaVN0YXRlIHNlbGVjdGlvblVub3JkZXJlZExpc3RTdGF0ZSgpIGNvbnN0OwogICAg
IFRyaVN0YXRlIHNlbGVjdGlvbk9yZGVyZWRMaXN0U3RhdGUoKSBjb25zdDsKLSAgICBQYXNzUmVm
UHRyPE5vZGU+IGluc2VydE9yZGVyZWRMaXN0KCk7Ci0gICAgUGFzc1JlZlB0cjxOb2RlPiBpbnNl
cnRVbm9yZGVyZWRMaXN0KCk7Ci0gICAgYm9vbCBjYW5JbmNyZWFzZVNlbGVjdGlvbkxpc3RMZXZl
bCgpOwotICAgIGJvb2wgY2FuRGVjcmVhc2VTZWxlY3Rpb25MaXN0TGV2ZWwoKTsKLSAgICBQYXNz
UmVmUHRyPE5vZGU+IGluY3JlYXNlU2VsZWN0aW9uTGlzdExldmVsKCk7Ci0gICAgUGFzc1JlZlB0
cjxOb2RlPiBpbmNyZWFzZVNlbGVjdGlvbkxpc3RMZXZlbE9yZGVyZWQoKTsKLSAgICBQYXNzUmVm
UHRyPE5vZGU+IGluY3JlYXNlU2VsZWN0aW9uTGlzdExldmVsVW5vcmRlcmVkKCk7Ci0gICAgdm9p
ZCBkZWNyZWFzZVNlbGVjdGlvbkxpc3RMZXZlbCgpOworICAgIFdFQkNPUkVfRVhQT1JUIFBhc3NS
ZWZQdHI8Tm9kZT4gaW5zZXJ0T3JkZXJlZExpc3QoKTsKKyAgICBXRUJDT1JFX0VYUE9SVCBQYXNz
UmVmUHRyPE5vZGU+IGluc2VydFVub3JkZXJlZExpc3QoKTsKKyAgICBXRUJDT1JFX0VYUE9SVCBi
b29sIGNhbkluY3JlYXNlU2VsZWN0aW9uTGlzdExldmVsKCk7CisgICAgV0VCQ09SRV9FWFBPUlQg
Ym9vbCBjYW5EZWNyZWFzZVNlbGVjdGlvbkxpc3RMZXZlbCgpOworICAgIFdFQkNPUkVfRVhQT1JU
IFBhc3NSZWZQdHI8Tm9kZT4gaW5jcmVhc2VTZWxlY3Rpb25MaXN0TGV2ZWwoKTsKKyAgICBXRUJD
T1JFX0VYUE9SVCBQYXNzUmVmUHRyPE5vZGU+IGluY3JlYXNlU2VsZWN0aW9uTGlzdExldmVsT3Jk
ZXJlZCgpOworICAgIFdFQkNPUkVfRVhQT1JUIFBhc3NSZWZQdHI8Tm9kZT4gaW5jcmVhc2VTZWxl
Y3Rpb25MaXN0TGV2ZWxVbm9yZGVyZWQoKTsKKyAgICBXRUJDT1JFX0VYUE9SVCB2b2lkIGRlY3Jl
YXNlU2VsZWN0aW9uTGlzdExldmVsKCk7CiAgICAKICAgICB2b2lkIHJlbW92ZUZvcm1hdHRpbmdB
bmRTdHlsZSgpOwogCiAgICAgdm9pZCBjbGVhckxhc3RFZGl0Q29tbWFuZCgpOwogI2lmIFBMQVRG
T1JNKElPUykKLSAgICB2b2lkIGVuc3VyZUxhc3RFZGl0Q29tbWFuZEhhc0N1cnJlbnRTZWxlY3Rp
b25JZk9wZW5Gb3JNb3JlVHlwaW5nKCk7CisgICAgV0VCQ09SRV9FWFBPUlQgdm9pZCBlbnN1cmVM
YXN0RWRpdENvbW1hbmRIYXNDdXJyZW50U2VsZWN0aW9uSWZPcGVuRm9yTW9yZVR5cGluZygpOwog
I2VuZGlmCiAKLSAgICBib29sIGRlbGV0ZVdpdGhEaXJlY3Rpb24oU2VsZWN0aW9uRGlyZWN0aW9u
LCBUZXh0R3JhbnVsYXJpdHksIGJvb2wga2lsbFJpbmcsIGJvb2wgaXNUeXBpbmdBY3Rpb24pOwot
ICAgIHZvaWQgZGVsZXRlU2VsZWN0aW9uV2l0aFNtYXJ0RGVsZXRlKGJvb2wgc21hcnREZWxldGUp
OworICAgIFdFQkNPUkVfRVhQT1JUIGJvb2wgZGVsZXRlV2l0aERpcmVjdGlvbihTZWxlY3Rpb25E
aXJlY3Rpb24sIFRleHRHcmFudWxhcml0eSwgYm9vbCBraWxsUmluZywgYm9vbCBpc1R5cGluZ0Fj
dGlvbik7CisgICAgV0VCQ09SRV9FWFBPUlQgdm9pZCBkZWxldGVTZWxlY3Rpb25XaXRoU21hcnRE
ZWxldGUoYm9vbCBzbWFydERlbGV0ZSk7CiAjaWYgUExBVEZPUk0oSU9TKQogICAgIHZvaWQgY2xl
YXJUZXh0KCk7Ci0gICAgdm9pZCByZW1vdmVVbmNoYW5nZWFibGVTdHlsZXMoKTsKKyAgICBXRUJD
T1JFX0VYUE9SVCB2b2lkIHJlbW92ZVVuY2hhbmdlYWJsZVN0eWxlcygpOwogI2VuZGlmCiAgICAg
CiAgICAgYm9vbCBkaXNwYXRjaENQUEV2ZW50KGNvbnN0IEF0b21pY1N0cmluZyYsIERhdGFUcmFu
c2ZlckFjY2Vzc1BvbGljeSk7CiAgICAgCi0gICAgdm9pZCBhcHBseVN0eWxlKFN0eWxlUHJvcGVy
dGllcyosIEVkaXRBY3Rpb24gPSBFZGl0QWN0aW9uVW5zcGVjaWZpZWQpOworICAgIFdFQkNPUkVf
RVhQT1JUIHZvaWQgYXBwbHlTdHlsZShTdHlsZVByb3BlcnRpZXMqLCBFZGl0QWN0aW9uID0gRWRp
dEFjdGlvblVuc3BlY2lmaWVkKTsKICAgICB2b2lkIGFwcGx5UGFyYWdyYXBoU3R5bGUoU3R5bGVQ
cm9wZXJ0aWVzKiwgRWRpdEFjdGlvbiA9IEVkaXRBY3Rpb25VbnNwZWNpZmllZCk7Ci0gICAgdm9p
ZCBhcHBseVN0eWxlVG9TZWxlY3Rpb24oU3R5bGVQcm9wZXJ0aWVzKiwgRWRpdEFjdGlvbik7Cisg
ICAgV0VCQ09SRV9FWFBPUlQgdm9pZCBhcHBseVN0eWxlVG9TZWxlY3Rpb24oU3R5bGVQcm9wZXJ0
aWVzKiwgRWRpdEFjdGlvbik7CiAgICAgdm9pZCBhcHBseVBhcmFncmFwaFN0eWxlVG9TZWxlY3Rp
b24oU3R5bGVQcm9wZXJ0aWVzKiwgRWRpdEFjdGlvbik7CiAKICAgICB2b2lkIGFwcGxpZWRFZGl0
aW5nKFBhc3NSZWZQdHI8Q29tcG9zaXRlRWRpdENvbW1hbmQ+KTsKQEAgLTE5Nyw1OCArMTk3LDU4
IEBAIHB1YmxpYzoKIAogICAgIGNsYXNzIENvbW1hbmQgewogICAgIHB1YmxpYzoKLSAgICAgICAg
Q29tbWFuZCgpOworICAgICAgICBXRUJDT1JFX0VYUE9SVCBDb21tYW5kKCk7CiAgICAgICAgIENv
bW1hbmQoY29uc3QgRWRpdG9ySW50ZXJuYWxDb21tYW5kKiwgRWRpdG9yQ29tbWFuZFNvdXJjZSwg
UGFzc1JlZlB0cjxGcmFtZT4pOwogCi0gICAgICAgIGJvb2wgZXhlY3V0ZShjb25zdCBTdHJpbmcm
IHBhcmFtZXRlciA9IFN0cmluZygpLCBFdmVudCogdHJpZ2dlcmluZ0V2ZW50ID0gMCkgY29uc3Q7
Ci0gICAgICAgIGJvb2wgZXhlY3V0ZShFdmVudCogdHJpZ2dlcmluZ0V2ZW50KSBjb25zdDsKKyAg
ICAgICAgV0VCQ09SRV9FWFBPUlQgYm9vbCBleGVjdXRlKGNvbnN0IFN0cmluZyYgcGFyYW1ldGVy
ID0gU3RyaW5nKCksIEV2ZW50KiB0cmlnZ2VyaW5nRXZlbnQgPSAwKSBjb25zdDsKKyAgICAgICAg
V0VCQ09SRV9FWFBPUlQgYm9vbCBleGVjdXRlKEV2ZW50KiB0cmlnZ2VyaW5nRXZlbnQpIGNvbnN0
OwogCi0gICAgICAgIGJvb2wgaXNTdXBwb3J0ZWQoKSBjb25zdDsKLSAgICAgICAgYm9vbCBpc0Vu
YWJsZWQoRXZlbnQqIHRyaWdnZXJpbmdFdmVudCA9IDApIGNvbnN0OworICAgICAgICBXRUJDT1JF
X0VYUE9SVCBib29sIGlzU3VwcG9ydGVkKCkgY29uc3Q7CisgICAgICAgIFdFQkNPUkVfRVhQT1JU
IGJvb2wgaXNFbmFibGVkKEV2ZW50KiB0cmlnZ2VyaW5nRXZlbnQgPSAwKSBjb25zdDsKIAotICAg
ICAgICBUcmlTdGF0ZSBzdGF0ZShFdmVudCogdHJpZ2dlcmluZ0V2ZW50ID0gMCkgY29uc3Q7Cisg
ICAgICAgIFdFQkNPUkVfRVhQT1JUIFRyaVN0YXRlIHN0YXRlKEV2ZW50KiB0cmlnZ2VyaW5nRXZl
bnQgPSAwKSBjb25zdDsKICAgICAgICAgU3RyaW5nIHZhbHVlKEV2ZW50KiB0cmlnZ2VyaW5nRXZl
bnQgPSAwKSBjb25zdDsKIAotICAgICAgICBib29sIGlzVGV4dEluc2VydGlvbigpIGNvbnN0Owor
ICAgICAgICBXRUJDT1JFX0VYUE9SVCBib29sIGlzVGV4dEluc2VydGlvbigpIGNvbnN0OwogCiAg
ICAgcHJpdmF0ZToKICAgICAgICAgY29uc3QgRWRpdG9ySW50ZXJuYWxDb21tYW5kKiBtX2NvbW1h
bmQ7CiAgICAgICAgIEVkaXRvckNvbW1hbmRTb3VyY2UgbV9zb3VyY2U7CiAgICAgICAgIFJlZlB0
cjxGcmFtZT4gbV9mcmFtZTsKICAgICB9OwotICAgIENvbW1hbmQgY29tbWFuZChjb25zdCBTdHJp
bmcmIGNvbW1hbmROYW1lKTsgLy8gQ29tbWFuZCBzb3VyY2UgaXMgQ29tbWFuZEZyb21NZW51T3JL
ZXlCaW5kaW5nLgorICAgIFdFQkNPUkVfRVhQT1JUIENvbW1hbmQgY29tbWFuZChjb25zdCBTdHJp
bmcmIGNvbW1hbmROYW1lKTsgLy8gQ29tbWFuZCBzb3VyY2UgaXMgQ29tbWFuZEZyb21NZW51T3JL
ZXlCaW5kaW5nLgogICAgIENvbW1hbmQgY29tbWFuZChjb25zdCBTdHJpbmcmIGNvbW1hbmROYW1l
LCBFZGl0b3JDb21tYW5kU291cmNlKTsKLSAgICBzdGF0aWMgYm9vbCBjb21tYW5kSXNTdXBwb3J0
ZWRGcm9tTWVudU9yS2V5QmluZGluZyhjb25zdCBTdHJpbmcmIGNvbW1hbmROYW1lKTsgLy8gV29y
a3Mgd2l0aG91dCBhIGZyYW1lLgorICAgIFdFQkNPUkVfRVhQT1JUIHN0YXRpYyBib29sIGNvbW1h
bmRJc1N1cHBvcnRlZEZyb21NZW51T3JLZXlCaW5kaW5nKGNvbnN0IFN0cmluZyYgY29tbWFuZE5h
bWUpOyAvLyBXb3JrcyB3aXRob3V0IGEgZnJhbWUuCiAKLSAgICBib29sIGluc2VydFRleHQoY29u
c3QgU3RyaW5nJiwgRXZlbnQqIHRyaWdnZXJpbmdFdmVudCk7CisgICAgV0VCQ09SRV9FWFBPUlQg
Ym9vbCBpbnNlcnRUZXh0KGNvbnN0IFN0cmluZyYsIEV2ZW50KiB0cmlnZ2VyaW5nRXZlbnQpOwog
ICAgIGJvb2wgaW5zZXJ0VGV4dEZvckNvbmZpcm1lZENvbXBvc2l0aW9uKGNvbnN0IFN0cmluZyYg
dGV4dCk7Ci0gICAgYm9vbCBpbnNlcnREaWN0YXRlZFRleHQoY29uc3QgU3RyaW5nJiwgY29uc3Qg
VmVjdG9yPERpY3RhdGlvbkFsdGVybmF0aXZlPiYgZGljdGF0aW9uQWx0ZXJuYXRpdmVzLCBFdmVu
dCogdHJpZ2dlcmluZ0V2ZW50KTsKKyAgICBXRUJDT1JFX0VYUE9SVCBib29sIGluc2VydERpY3Rh
dGVkVGV4dChjb25zdCBTdHJpbmcmLCBjb25zdCBWZWN0b3I8RGljdGF0aW9uQWx0ZXJuYXRpdmU+
JiBkaWN0YXRpb25BbHRlcm5hdGl2ZXMsIEV2ZW50KiB0cmlnZ2VyaW5nRXZlbnQpOwogICAgIGJv
b2wgaW5zZXJ0VGV4dFdpdGhvdXRTZW5kaW5nVGV4dEV2ZW50KGNvbnN0IFN0cmluZyYsIGJvb2wg
c2VsZWN0SW5zZXJ0ZWRUZXh0LCBUZXh0RXZlbnQqIHRyaWdnZXJpbmdFdmVudCk7CiAgICAgYm9v
bCBpbnNlcnRMaW5lQnJlYWsoKTsKICAgICBib29sIGluc2VydFBhcmFncmFwaFNlcGFyYXRvcigp
OwogCi0gICAgYm9vbCBpc0NvbnRpbnVvdXNTcGVsbENoZWNraW5nRW5hYmxlZCgpIGNvbnN0Owot
ICAgIHZvaWQgdG9nZ2xlQ29udGludW91c1NwZWxsQ2hlY2tpbmcoKTsKKyAgICBXRUJDT1JFX0VY
UE9SVCBib29sIGlzQ29udGludW91c1NwZWxsQ2hlY2tpbmdFbmFibGVkKCkgY29uc3Q7CisgICAg
V0VCQ09SRV9FWFBPUlQgdm9pZCB0b2dnbGVDb250aW51b3VzU3BlbGxDaGVja2luZygpOwogICAg
IGJvb2wgaXNHcmFtbWFyQ2hlY2tpbmdFbmFibGVkKCk7CiAgICAgdm9pZCB0b2dnbGVHcmFtbWFy
Q2hlY2tpbmcoKTsKICAgICB2b2lkIGlnbm9yZVNwZWxsaW5nKCk7CiAgICAgdm9pZCBsZWFyblNw
ZWxsaW5nKCk7CiAgICAgaW50IHNwZWxsQ2hlY2tlckRvY3VtZW50VGFnKCk7Ci0gICAgYm9vbCBp
c1NlbGVjdGlvblVuZ3JhbW1hdGljYWwoKTsKKyAgICBXRUJDT1JFX0VYUE9SVCBib29sIGlzU2Vs
ZWN0aW9uVW5ncmFtbWF0aWNhbCgpOwogICAgIFN0cmluZyBtaXNzcGVsbGVkU2VsZWN0aW9uU3Ry
aW5nKCkgY29uc3Q7CiAgICAgU3RyaW5nIG1pc3NwZWxsZWRXb3JkQXRDYXJldE9yUmFuZ2UoTm9k
ZSogY2xpY2tlZE5vZGUpIGNvbnN0OwogICAgIFZlY3RvcjxTdHJpbmc+IGd1ZXNzZXNGb3JNaXNz
cGVsbGVkV29yZChjb25zdCBTdHJpbmcmKSBjb25zdDsKICAgICBWZWN0b3I8U3RyaW5nPiBndWVz
c2VzRm9yTWlzc3BlbGxlZE9yVW5ncmFtbWF0aWNhbChib29sJiBtaXNzcGVsbGVkLCBib29sJiB1
bmdyYW1tYXRpY2FsKTsKICAgICBib29sIGlzU3BlbGxDaGVja2luZ0VuYWJsZWRJbkZvY3VzZWRO
b2RlKCkgY29uc3Q7CiAgICAgYm9vbCBpc1NwZWxsQ2hlY2tpbmdFbmFibGVkRm9yKE5vZGUqKSBj
b25zdDsKLSAgICB2b2lkIG1hcmtNaXNzcGVsbGluZ3NBZnRlclR5cGluZ1RvV29yZChjb25zdCBW
aXNpYmxlUG9zaXRpb24gJndvcmRTdGFydCwgY29uc3QgVmlzaWJsZVNlbGVjdGlvbiYgc2VsZWN0
aW9uQWZ0ZXJUeXBpbmcsIGJvb2wgZG9SZXBsYWNlbWVudCk7CisgICAgV0VCQ09SRV9FWFBPUlQg
dm9pZCBtYXJrTWlzc3BlbGxpbmdzQWZ0ZXJUeXBpbmdUb1dvcmQoY29uc3QgVmlzaWJsZVBvc2l0
aW9uICZ3b3JkU3RhcnQsIGNvbnN0IFZpc2libGVTZWxlY3Rpb24mIHNlbGVjdGlvbkFmdGVyVHlw
aW5nLCBib29sIGRvUmVwbGFjZW1lbnQpOwogICAgIHZvaWQgbWFya01pc3NwZWxsaW5ncyhjb25z
dCBWaXNpYmxlU2VsZWN0aW9uJiwgUmVmUHRyPFJhbmdlPiYgZmlyc3RNaXNzcGVsbGluZ1Jhbmdl
KTsKICAgICB2b2lkIG1hcmtCYWRHcmFtbWFyKGNvbnN0IFZpc2libGVTZWxlY3Rpb24mKTsKICAg
ICB2b2lkIG1hcmtNaXNzcGVsbGluZ3NBbmRCYWRHcmFtbWFyKGNvbnN0IFZpc2libGVTZWxlY3Rp
b24mIHNwZWxsaW5nU2VsZWN0aW9uLCBib29sIG1hcmtHcmFtbWFyLCBjb25zdCBWaXNpYmxlU2Vs
ZWN0aW9uJiBncmFtbWFyU2VsZWN0aW9uKTsKICAgICB2b2lkIG1hcmtBbmRSZXBsYWNlRm9yKFBh
c3NSZWZQdHI8U3BlbGxDaGVja1JlcXVlc3Q+LCBjb25zdCBWZWN0b3I8VGV4dENoZWNraW5nUmVz
dWx0PiYpOwogCiAgICAgYm9vbCBpc092ZXJ3cml0ZU1vZGVFbmFibGVkKCkgY29uc3QgeyByZXR1
cm4gbV9vdmVyd3JpdGVNb2RlRW5hYmxlZDsgfQotICAgIHZvaWQgdG9nZ2xlT3ZlcndyaXRlTW9k
ZUVuYWJsZWQoKTsKKyAgICBXRUJDT1JFX0VYUE9SVCB2b2lkIHRvZ2dsZU92ZXJ3cml0ZU1vZGVF
bmFibGVkKCk7CiAKICAgICB2b2lkIG1hcmtBbGxNaXNzcGVsbGluZ3NBbmRCYWRHcmFtbWFySW5S
YW5nZXMoVGV4dENoZWNraW5nVHlwZU1hc2ssIFJhbmdlKiBzcGVsbGluZ1JhbmdlLCBSYW5nZSog
Z3JhbW1hclJhbmdlKTsKICNpZiBQTEFURk9STShJT1MpCkBAIC0yNTcsNyArMjU3LDcgQEAgcHVi
bGljOgogICAgIHZvaWQgY2hhbmdlQmFja1RvUmVwbGFjZWRTdHJpbmcoY29uc3QgU3RyaW5nJiBy
ZXBsYWNlZFN0cmluZyk7CiAKICNpZiAhUExBVEZPUk0oSU9TKQotICAgIHZvaWQgYWR2YW5jZVRv
TmV4dE1pc3NwZWxsaW5nKGJvb2wgc3RhcnRCZWZvcmVTZWxlY3Rpb24gPSBmYWxzZSk7CisgICAg
V0VCQ09SRV9FWFBPUlQgdm9pZCBhZHZhbmNlVG9OZXh0TWlzc3BlbGxpbmcoYm9vbCBzdGFydEJl
Zm9yZVNlbGVjdGlvbiA9IGZhbHNlKTsKICNlbmRpZiAvLyAhUExBVEZPUk0oSU9TKQogICAgIHZv
aWQgc2hvd1NwZWxsaW5nR3Vlc3NQYW5lbCgpOwogICAgIGJvb2wgc3BlbGxpbmdQYW5lbElzU2hv
d2luZygpOwpAQCAtMjgxLDI0ICsyODEsMjQgQEAgcHVibGljOgogICAgIHZvaWQgc2hvd0NvbG9y
UGFuZWwoKTsKICAgICB2b2lkIHRvZ2dsZUJvbGQoKTsKICAgICB2b2lkIHRvZ2dsZVVuZGVybGlu
ZSgpOwotICAgIHZvaWQgc2V0QmFzZVdyaXRpbmdEaXJlY3Rpb24oV3JpdGluZ0RpcmVjdGlvbik7
CisgICAgV0VCQ09SRV9FWFBPUlQgdm9pZCBzZXRCYXNlV3JpdGluZ0RpcmVjdGlvbihXcml0aW5n
RGlyZWN0aW9uKTsKIAogICAgIC8vIHNtYXJ0SW5zZXJ0RGVsZXRlRW5hYmxlZCBhbmQgc2VsZWN0
VHJhaWxpbmdXaGl0ZXNwYWNlRW5hYmxlZCBhcmUgCiAgICAgLy8gbXV0dWFsbHkgZXhjbHVzaXZl
LCBtZWFuaW5nIHRoYXQgZW5hYmxpbmcgb25lIHdpbGwgZGlzYWJsZSB0aGUgb3RoZXIuCiAgICAg
Ym9vbCBzbWFydEluc2VydERlbGV0ZUVuYWJsZWQoKTsKICAgICBib29sIGlzU2VsZWN0VHJhaWxp
bmdXaGl0ZXNwYWNlRW5hYmxlZCgpOwogICAgIAotICAgIGJvb2wgaGFzQmlkaVNlbGVjdGlvbigp
IGNvbnN0OworICAgIFdFQkNPUkVfRVhQT1JUIGJvb2wgaGFzQmlkaVNlbGVjdGlvbigpIGNvbnN0
OwogCiAgICAgLy8gaW50ZXJuYXRpb25hbCB0ZXh0IGlucHV0IGNvbXBvc2l0aW9uCiAgICAgYm9v
bCBoYXNDb21wb3NpdGlvbigpIGNvbnN0IHsgcmV0dXJuIG1fY29tcG9zaXRpb25Ob2RlOyB9Ci0g
ICAgdm9pZCBzZXRDb21wb3NpdGlvbihjb25zdCBTdHJpbmcmLCBjb25zdCBWZWN0b3I8Q29tcG9z
aXRpb25VbmRlcmxpbmU+JiwgdW5zaWduZWQgc2VsZWN0aW9uU3RhcnQsIHVuc2lnbmVkIHNlbGVj
dGlvbkVuZCk7Ci0gICAgdm9pZCBjb25maXJtQ29tcG9zaXRpb24oKTsKLSAgICB2b2lkIGNvbmZp
cm1Db21wb3NpdGlvbihjb25zdCBTdHJpbmcmKTsgLy8gaWYgbm8gZXhpc3RpbmcgY29tcG9zaXRp
b24sIHJlcGxhY2VzIHNlbGVjdGlvbgotICAgIHZvaWQgY2FuY2VsQ29tcG9zaXRpb24oKTsKKyAg
ICBXRUJDT1JFX0VYUE9SVCB2b2lkIHNldENvbXBvc2l0aW9uKGNvbnN0IFN0cmluZyYsIGNvbnN0
IFZlY3RvcjxDb21wb3NpdGlvblVuZGVybGluZT4mLCB1bnNpZ25lZCBzZWxlY3Rpb25TdGFydCwg
dW5zaWduZWQgc2VsZWN0aW9uRW5kKTsKKyAgICBXRUJDT1JFX0VYUE9SVCB2b2lkIGNvbmZpcm1D
b21wb3NpdGlvbigpOworICAgIFdFQkNPUkVfRVhQT1JUIHZvaWQgY29uZmlybUNvbXBvc2l0aW9u
KGNvbnN0IFN0cmluZyYpOyAvLyBpZiBubyBleGlzdGluZyBjb21wb3NpdGlvbiwgcmVwbGFjZXMg
c2VsZWN0aW9uCisgICAgV0VCQ09SRV9FWFBPUlQgdm9pZCBjYW5jZWxDb21wb3NpdGlvbigpOwog
ICAgIGJvb2wgY2FuY2VsQ29tcG9zaXRpb25JZlNlbGVjdGlvbklzSW52YWxpZCgpOwotICAgIFBh
c3NSZWZQdHI8UmFuZ2U+IGNvbXBvc2l0aW9uUmFuZ2UoKSBjb25zdDsKLSAgICBib29sIGdldENv
bXBvc2l0aW9uU2VsZWN0aW9uKHVuc2lnbmVkJiBzZWxlY3Rpb25TdGFydCwgdW5zaWduZWQmIHNl
bGVjdGlvbkVuZCkgY29uc3Q7CisgICAgV0VCQ09SRV9FWFBPUlQgUGFzc1JlZlB0cjxSYW5nZT4g
Y29tcG9zaXRpb25SYW5nZSgpIGNvbnN0OworICAgIFdFQkNPUkVfRVhQT1JUIGJvb2wgZ2V0Q29t
cG9zaXRpb25TZWxlY3Rpb24odW5zaWduZWQmIHNlbGVjdGlvblN0YXJ0LCB1bnNpZ25lZCYgc2Vs
ZWN0aW9uRW5kKSBjb25zdDsKIAogICAgIC8vIGdldHRpbmcgaW50ZXJuYXRpb25hbCB0ZXh0IGlu
cHV0IGNvbXBvc2l0aW9uIHN0YXRlIChmb3IgdXNlIGJ5IElubGluZVRleHRCb3gpCiAgICAgVGV4
dCogY29tcG9zaXRpb25Ob2RlKCkgY29uc3QgeyByZXR1cm4gbV9jb21wb3NpdGlvbk5vZGUuZ2V0
KCk7IH0KQEAgLTMwNywxMiArMzA3LDEyIEBAIHB1YmxpYzoKICAgICBib29sIGNvbXBvc2l0aW9u
VXNlc0N1c3RvbVVuZGVybGluZXMoKSBjb25zdCB7IHJldHVybiAhbV9jdXN0b21Db21wb3NpdGlv
blVuZGVybGluZXMuaXNFbXB0eSgpOyB9CiAgICAgY29uc3QgVmVjdG9yPENvbXBvc2l0aW9uVW5k
ZXJsaW5lPiYgY3VzdG9tQ29tcG9zaXRpb25VbmRlcmxpbmVzKCkgY29uc3QgeyByZXR1cm4gbV9j
dXN0b21Db21wb3NpdGlvblVuZGVybGluZXM7IH0KIAotICAgIHZvaWQgc2V0SWdub3JlQ29tcG9z
aXRpb25TZWxlY3Rpb25DaGFuZ2UoYm9vbCk7CisgICAgV0VCQ09SRV9FWFBPUlQgdm9pZCBzZXRJ
Z25vcmVDb21wb3NpdGlvblNlbGVjdGlvbkNoYW5nZShib29sKTsKICAgICBib29sIGlnbm9yZUNv
bXBvc2l0aW9uU2VsZWN0aW9uQ2hhbmdlKCkgY29uc3QgeyByZXR1cm4gbV9pZ25vcmVDb21wb3Np
dGlvblNlbGVjdGlvbkNoYW5nZTsgfQogCiAgICAgdm9pZCBzZXRTdGFydE5ld0tpbGxSaW5nU2Vx
dWVuY2UoYm9vbCk7CiAKLSAgICBQYXNzUmVmUHRyPFJhbmdlPiByYW5nZUZvclBvaW50KGNvbnN0
IEludFBvaW50JiB3aW5kb3dQb2ludCk7CisgICAgV0VCQ09SRV9FWFBPUlQgUGFzc1JlZlB0cjxS
YW5nZT4gcmFuZ2VGb3JQb2ludChjb25zdCBJbnRQb2ludCYgd2luZG93UG9pbnQpOwogCiAgICAg
dm9pZCBjbGVhcigpOwogCkBAIC0zMjYsMjUgKzMyNiwyNSBAQCBwdWJsaWM6CiAgICAgUGFzc1Jl
ZlB0cjxSYW5nZT4gc2VsZWN0ZWRSYW5nZSgpOwogCiAjaWYgUExBVEZPUk0oSU9TKQotICAgIHZv
aWQgY29uZmlybU1hcmtlZFRleHQoKTsKLSAgICB2b2lkIHNldFRleHRBc0NoaWxkT2ZFbGVtZW50
KGNvbnN0IFN0cmluZyYsIEVsZW1lbnQqKTsKLSAgICB2b2lkIHNldFRleHRBbGlnbm1lbnRGb3JD
aGFuZ2VkQmFzZVdyaXRpbmdEaXJlY3Rpb24oV3JpdGluZ0RpcmVjdGlvbik7Ci0gICAgdm9pZCBp
bnNlcnREaWN0YXRpb25QaHJhc2VzKFBhc3NPd25QdHI8VmVjdG9yPFZlY3RvcjxTdHJpbmc+ID4g
PiBkaWN0YXRpb25QaHJhc2VzLCBSZXRhaW5QdHI8aWQ+IG1ldGFkYXRhKTsKLSAgICB2b2lkIHNl
dERpY3RhdGlvblBocmFzZXNBc0NoaWxkT2ZFbGVtZW50KFBhc3NPd25QdHI8VmVjdG9yPFZlY3Rv
cjxTdHJpbmc+ID4gPiBkaWN0YXRpb25QaHJhc2VzLCBSZXRhaW5QdHI8aWQ+IG1ldGFkYXRhLCBF
bGVtZW50KiBlbGVtZW50KTsKKyAgICBXRUJDT1JFX0VYUE9SVCB2b2lkIGNvbmZpcm1NYXJrZWRU
ZXh0KCk7CisgICAgV0VCQ09SRV9FWFBPUlQgdm9pZCBzZXRUZXh0QXNDaGlsZE9mRWxlbWVudChj
b25zdCBTdHJpbmcmLCBFbGVtZW50Kik7CisgICAgV0VCQ09SRV9FWFBPUlQgdm9pZCBzZXRUZXh0
QWxpZ25tZW50Rm9yQ2hhbmdlZEJhc2VXcml0aW5nRGlyZWN0aW9uKFdyaXRpbmdEaXJlY3Rpb24p
OworICAgIFdFQkNPUkVfRVhQT1JUIHZvaWQgaW5zZXJ0RGljdGF0aW9uUGhyYXNlcyhQYXNzT3du
UHRyPFZlY3RvcjxWZWN0b3I8U3RyaW5nPiA+ID4gZGljdGF0aW9uUGhyYXNlcywgUmV0YWluUHRy
PGlkPiBtZXRhZGF0YSk7CisgICAgV0VCQ09SRV9FWFBPUlQgdm9pZCBzZXREaWN0YXRpb25QaHJh
c2VzQXNDaGlsZE9mRWxlbWVudChQYXNzT3duUHRyPFZlY3RvcjxWZWN0b3I8U3RyaW5nPiA+ID4g
ZGljdGF0aW9uUGhyYXNlcywgUmV0YWluUHRyPGlkPiBtZXRhZGF0YSwgRWxlbWVudCogZWxlbWVu
dCk7CiAjZW5kaWYKICAgICAKICAgICB2b2lkIGFkZFRvS2lsbFJpbmcoUmFuZ2UqLCBib29sIHBy
ZXBlbmQpOwogCiAgICAgdm9pZCBzdGFydEFsdGVybmF0aXZlVGV4dFVJVGltZXIoKTsKICAgICAv
LyBJZiB1c2VyIGNvbmZpcm1lZCBhIGNvcnJlY3Rpb24gaW4gdGhlIGNvcnJlY3Rpb24gcGFuZWws
IGNvcnJlY3Rpb24gaGFzIG5vbi16ZXJvIGxlbmd0aCwgb3RoZXJ3aXNlIGl0IG1lYW5zIHRoYXQg
dXNlciBoYXMgZGlzbWlzc2VkIHRoZSBwYW5lbC4KLSAgICB2b2lkIGhhbmRsZUFsdGVybmF0aXZl
VGV4dFVJUmVzdWx0KGNvbnN0IFN0cmluZyYgY29ycmVjdGlvbik7CisgICAgV0VCQ09SRV9FWFBP
UlQgdm9pZCBoYW5kbGVBbHRlcm5hdGl2ZVRleHRVSVJlc3VsdChjb25zdCBTdHJpbmcmIGNvcnJl
Y3Rpb24pOwogICAgIHZvaWQgZGlzbWlzc0NvcnJlY3Rpb25QYW5lbEFzSWdub3JlZCgpOwogCi0g
ICAgdm9pZCBwYXN0ZUFzRnJhZ21lbnQoUGFzc1JlZlB0cjxEb2N1bWVudEZyYWdtZW50PiwgYm9v
bCBzbWFydFJlcGxhY2UsIGJvb2wgbWF0Y2hTdHlsZSwgTWFpbEJsb2NrcXVvdGVIYW5kbGluZyA9
IE1haWxCbG9ja3F1b3RlSGFuZGxpbmc6OlJlc3BlY3RCbG9ja3F1b3RlKTsKLSAgICB2b2lkIHBh
c3RlQXNQbGFpblRleHQoY29uc3QgU3RyaW5nJiwgYm9vbCBzbWFydFJlcGxhY2UpOworICAgIFdF
QkNPUkVfRVhQT1JUIHZvaWQgcGFzdGVBc0ZyYWdtZW50KFBhc3NSZWZQdHI8RG9jdW1lbnRGcmFn
bWVudD4sIGJvb2wgc21hcnRSZXBsYWNlLCBib29sIG1hdGNoU3R5bGUsIE1haWxCbG9ja3F1b3Rl
SGFuZGxpbmcgPSBNYWlsQmxvY2txdW90ZUhhbmRsaW5nOjpSZXNwZWN0QmxvY2txdW90ZSk7Cisg
ICAgV0VCQ09SRV9FWFBPUlQgdm9pZCBwYXN0ZUFzUGxhaW5UZXh0KGNvbnN0IFN0cmluZyYsIGJv
b2wgc21hcnRSZXBsYWNlKTsKIAogICAgIC8vIFRoaXMgaXMgb25seSBjYWxsZWQgb24gdGhlIG1h
YyB3aGVyZSBwYXN0ZSBpcyBpbXBsZW1lbnRlZCBwcmltYXJpbHkgYXQgdGhlIFdlYktpdCBsZXZl
bC4KLSAgICB2b2lkIHBhc3RlQXNQbGFpblRleHRCeXBhc3NpbmdESFRNTCgpOworICAgIFdFQkNP
UkVfRVhQT1JUIHZvaWQgcGFzdGVBc1BsYWluVGV4dEJ5cGFzc2luZ0RIVE1MKCk7CiAgCiAgICAg
dm9pZCBjbGVhck1pc3NwZWxsaW5nc0FuZEJhZEdyYW1tYXIoY29uc3QgVmlzaWJsZVNlbGVjdGlv
biYpOwogICAgIHZvaWQgbWFya01pc3NwZWxsaW5nc0FuZEJhZEdyYW1tYXIoY29uc3QgVmlzaWJs
ZVNlbGVjdGlvbiYpOwpAQCAtMzUzLDcgKzM1Myw3IEBAIHB1YmxpYzoKIAogICAgIFN0cmluZyBz
ZWxlY3RlZFRleHQoKSBjb25zdDsKICAgICBTdHJpbmcgc2VsZWN0ZWRUZXh0Rm9yRGF0YVRyYW5z
ZmVyKCkgY29uc3Q7Ci0gICAgYm9vbCBmaW5kU3RyaW5nKGNvbnN0IFN0cmluZyYsIEZpbmRPcHRp
b25zKTsKKyAgICBXRUJDT1JFX0VYUE9SVCBib29sIGZpbmRTdHJpbmcoY29uc3QgU3RyaW5nJiwg
RmluZE9wdGlvbnMpOwogCiAgICAgUGFzc1JlZlB0cjxSYW5nZT4gcmFuZ2VPZlN0cmluZyhjb25z
dCBTdHJpbmcmLCBSYW5nZSosIEZpbmRPcHRpb25zKTsKICAgICBQYXNzUmVmUHRyPFJhbmdlPiBm
aW5kU3RyaW5nQW5kU2Nyb2xsVG9WaXNpYmxlKGNvbnN0IFN0cmluZyYsIFJhbmdlKiwgRmluZE9w
dGlvbnMpOwpAQCAtMzYxLDE4ICszNjEsMTggQEAgcHVibGljOgogICAgIGNvbnN0IFZpc2libGVT
ZWxlY3Rpb24mIG1hcmsoKSBjb25zdDsgLy8gTWFyaywgdG8gYmUgdXNlZCBhcyBlbWFjcyB1c2Vz
IGl0LgogICAgIHZvaWQgc2V0TWFyayhjb25zdCBWaXNpYmxlU2VsZWN0aW9uJik7CiAKLSAgICB2
b2lkIGNvbXB1dGVBbmRTZXRUeXBpbmdTdHlsZShTdHlsZVByb3BlcnRpZXMqICwgRWRpdEFjdGlv
biA9IEVkaXRBY3Rpb25VbnNwZWNpZmllZCk7Ci0gICAgdm9pZCBhcHBseUVkaXRpbmdTdHlsZVRv
Qm9keUVsZW1lbnQoKSBjb25zdDsKKyAgICBXRUJDT1JFX0VYUE9SVCB2b2lkIGNvbXB1dGVBbmRT
ZXRUeXBpbmdTdHlsZShTdHlsZVByb3BlcnRpZXMqICwgRWRpdEFjdGlvbiA9IEVkaXRBY3Rpb25V
bnNwZWNpZmllZCk7CisgICAgV0VCQ09SRV9FWFBPUlQgdm9pZCBhcHBseUVkaXRpbmdTdHlsZVRv
Qm9keUVsZW1lbnQoKSBjb25zdDsKICAgICB2b2lkIGFwcGx5RWRpdGluZ1N0eWxlVG9FbGVtZW50
KEVsZW1lbnQqKSBjb25zdDsKIAotICAgIEludFJlY3QgZmlyc3RSZWN0Rm9yUmFuZ2UoUmFuZ2Uq
KSBjb25zdDsKKyAgICBXRUJDT1JFX0VYUE9SVCBJbnRSZWN0IGZpcnN0UmVjdEZvclJhbmdlKFJh
bmdlKikgY29uc3Q7CiAKICAgICB2b2lkIHJlc3BvbmRUb0NoYW5nZWRTZWxlY3Rpb24oY29uc3Qg
VmlzaWJsZVNlbGVjdGlvbiYgb2xkU2VsZWN0aW9uLCBGcmFtZVNlbGVjdGlvbjo6U2V0U2VsZWN0
aW9uT3B0aW9ucyk7Ci0gICAgdm9pZCB1cGRhdGVFZGl0b3JVSU5vd0lmU2NoZWR1bGVkKCk7Cisg
ICAgV0VCQ09SRV9FWFBPUlQgdm9pZCB1cGRhdGVFZGl0b3JVSU5vd0lmU2NoZWR1bGVkKCk7CiAg
ICAgYm9vbCBzaG91bGRDaGFuZ2VTZWxlY3Rpb24oY29uc3QgVmlzaWJsZVNlbGVjdGlvbiYgb2xk
U2VsZWN0aW9uLCBjb25zdCBWaXNpYmxlU2VsZWN0aW9uJiBuZXdTZWxlY3Rpb24sIEVBZmZpbml0
eSwgYm9vbCBzdGlsbFNlbGVjdGluZykgY29uc3Q7Ci0gICAgdW5zaWduZWQgY291bnRNYXRjaGVz
Rm9yVGV4dChjb25zdCBTdHJpbmcmLCBSYW5nZSosIEZpbmRPcHRpb25zLCB1bnNpZ25lZCBsaW1p
dCwgYm9vbCBtYXJrTWF0Y2hlcywgVmVjdG9yPFJlZlB0cjxSYW5nZT4+Kik7CisgICAgV0VCQ09S
RV9FWFBPUlQgdW5zaWduZWQgY291bnRNYXRjaGVzRm9yVGV4dChjb25zdCBTdHJpbmcmLCBSYW5n
ZSosIEZpbmRPcHRpb25zLCB1bnNpZ25lZCBsaW1pdCwgYm9vbCBtYXJrTWF0Y2hlcywgVmVjdG9y
PFJlZlB0cjxSYW5nZT4+Kik7CiAgICAgYm9vbCBtYXJrZWRUZXh0TWF0Y2hlc0FyZUhpZ2hsaWdo
dGVkKCkgY29uc3Q7Ci0gICAgdm9pZCBzZXRNYXJrZWRUZXh0TWF0Y2hlc0FyZUhpZ2hsaWdodGVk
KGJvb2wpOworICAgIFdFQkNPUkVfRVhQT1JUIHZvaWQgc2V0TWFya2VkVGV4dE1hdGNoZXNBcmVI
aWdobGlnaHRlZChib29sKTsKIAogICAgIHZvaWQgdGV4dEZpZWxkRGlkQmVnaW5FZGl0aW5nKEVs
ZW1lbnQqKTsKICAgICB2b2lkIHRleHRGaWVsZERpZEVuZEVkaXRpbmcoRWxlbWVudCopOwpAQCAt
MzgwLDE1ICszODAsMTUgQEAgcHVibGljOgogICAgIGJvb2wgZG9UZXh0RmllbGRDb21tYW5kRnJv
bUV2ZW50KEVsZW1lbnQqLCBLZXlib2FyZEV2ZW50Kik7CiAgICAgdm9pZCB0ZXh0V2lsbEJlRGVs
ZXRlZEluVGV4dEZpZWxkKEVsZW1lbnQqIGlucHV0KTsKICAgICB2b2lkIHRleHREaWRDaGFuZ2VJ
blRleHRBcmVhKEVsZW1lbnQqKTsKLSAgICBXcml0aW5nRGlyZWN0aW9uIGJhc2VXcml0aW5nRGly
ZWN0aW9uRm9yU2VsZWN0aW9uU3RhcnQoKSBjb25zdDsKKyAgICBXRUJDT1JFX0VYUE9SVCBXcml0
aW5nRGlyZWN0aW9uIGJhc2VXcml0aW5nRGlyZWN0aW9uRm9yU2VsZWN0aW9uU3RhcnQoKSBjb25z
dDsKIAotICAgIHZvaWQgcmVwbGFjZVNlbGVjdGlvbldpdGhGcmFnbWVudChQYXNzUmVmUHRyPERv
Y3VtZW50RnJhZ21lbnQ+LCBib29sIHNlbGVjdFJlcGxhY2VtZW50LCBib29sIHNtYXJ0UmVwbGFj
ZSwgYm9vbCBtYXRjaFN0eWxlLCBNYWlsQmxvY2txdW90ZUhhbmRsaW5nID0gTWFpbEJsb2NrcXVv
dGVIYW5kbGluZzo6UmVzcGVjdEJsb2NrcXVvdGUpOwotICAgIHZvaWQgcmVwbGFjZVNlbGVjdGlv
bldpdGhUZXh0KGNvbnN0IFN0cmluZyYsIGJvb2wgc2VsZWN0UmVwbGFjZW1lbnQsIGJvb2wgc21h
cnRSZXBsYWNlKTsKLSAgICBib29sIHNlbGVjdGlvblN0YXJ0SGFzTWFya2VyRm9yKERvY3VtZW50
TWFya2VyOjpNYXJrZXJUeXBlLCBpbnQgZnJvbSwgaW50IGxlbmd0aCkgY29uc3Q7CisgICAgV0VC
Q09SRV9FWFBPUlQgdm9pZCByZXBsYWNlU2VsZWN0aW9uV2l0aEZyYWdtZW50KFBhc3NSZWZQdHI8
RG9jdW1lbnRGcmFnbWVudD4sIGJvb2wgc2VsZWN0UmVwbGFjZW1lbnQsIGJvb2wgc21hcnRSZXBs
YWNlLCBib29sIG1hdGNoU3R5bGUsIE1haWxCbG9ja3F1b3RlSGFuZGxpbmcgPSBNYWlsQmxvY2tx
dW90ZUhhbmRsaW5nOjpSZXNwZWN0QmxvY2txdW90ZSk7CisgICAgV0VCQ09SRV9FWFBPUlQgdm9p
ZCByZXBsYWNlU2VsZWN0aW9uV2l0aFRleHQoY29uc3QgU3RyaW5nJiwgYm9vbCBzZWxlY3RSZXBs
YWNlbWVudCwgYm9vbCBzbWFydFJlcGxhY2UpOworICAgIFdFQkNPUkVfRVhQT1JUIGJvb2wgc2Vs
ZWN0aW9uU3RhcnRIYXNNYXJrZXJGb3IoRG9jdW1lbnRNYXJrZXI6Ok1hcmtlclR5cGUsIGludCBm
cm9tLCBpbnQgbGVuZ3RoKSBjb25zdDsKICAgICB2b2lkIHVwZGF0ZU1hcmtlcnNGb3JXb3Jkc0Fm
ZmVjdGVkQnlFZGl0aW5nKGJvb2wgb25seUhhbmRsZVdvcmRzQ29udGFpbmluZ1NlbGVjdGlvbik7
CiAgICAgdm9pZCBkZWxldGVkQXV0b2NvcnJlY3Rpb25BdFBvc2l0aW9uKGNvbnN0IFBvc2l0aW9u
JiwgY29uc3QgU3RyaW5nJiBvcmlnaW5hbFN0cmluZyk7CiAgICAgCi0gICAgdm9pZCBzaW1wbGlm
eU1hcmt1cChOb2RlKiBzdGFydE5vZGUsIE5vZGUqIGVuZE5vZGUpOworICAgIFdFQkNPUkVfRVhQ
T1JUIHZvaWQgc2ltcGxpZnlNYXJrdXAoTm9kZSogc3RhcnROb2RlLCBOb2RlKiBlbmROb2RlKTsK
IAogICAgIHZvaWQgZGV2aWNlU2NhbGVGYWN0b3JDaGFuZ2VkKCk7CiAKQEAgLTQwMSwyNSArNDAx
LDI1IEBAIHB1YmxpYzoKICAgICBWaXNpYmxlU2VsZWN0aW9uIGF2b2lkSW50ZXJzZWN0aW9uV2l0
aERlbGV0ZUJ1dHRvbkNvbnRyb2xsZXIoY29uc3QgVmlzaWJsZVNlbGVjdGlvbiYpIGNvbnN0Owog
CiAjaWYgVVNFKEFQUEtJVCkKLSAgICB2b2lkIHVwcGVyY2FzZVdvcmQoKTsKLSAgICB2b2lkIGxv
d2VyY2FzZVdvcmQoKTsKLSAgICB2b2lkIGNhcGl0YWxpemVXb3JkKCk7CisgICAgV0VCQ09SRV9F
WFBPUlQgdm9pZCB1cHBlcmNhc2VXb3JkKCk7CisgICAgV0VCQ09SRV9FWFBPUlQgdm9pZCBsb3dl
cmNhc2VXb3JkKCk7CisgICAgV0VCQ09SRV9FWFBPUlQgdm9pZCBjYXBpdGFsaXplV29yZCgpOwog
I2VuZGlmCiAKICNpZiBVU0UoQVVUT01BVElDX1RFWFRfUkVQTEFDRU1FTlQpCi0gICAgdm9pZCBz
aG93U3Vic3RpdHV0aW9uc1BhbmVsKCk7Ci0gICAgYm9vbCBzdWJzdGl0dXRpb25zUGFuZWxJc1No
b3dpbmcoKTsKLSAgICB2b2lkIHRvZ2dsZVNtYXJ0SW5zZXJ0RGVsZXRlKCk7Ci0gICAgYm9vbCBp
c0F1dG9tYXRpY1F1b3RlU3Vic3RpdHV0aW9uRW5hYmxlZCgpOwotICAgIHZvaWQgdG9nZ2xlQXV0
b21hdGljUXVvdGVTdWJzdGl0dXRpb24oKTsKLSAgICBib29sIGlzQXV0b21hdGljTGlua0RldGVj
dGlvbkVuYWJsZWQoKTsKLSAgICB2b2lkIHRvZ2dsZUF1dG9tYXRpY0xpbmtEZXRlY3Rpb24oKTsK
LSAgICBib29sIGlzQXV0b21hdGljRGFzaFN1YnN0aXR1dGlvbkVuYWJsZWQoKTsKLSAgICB2b2lk
IHRvZ2dsZUF1dG9tYXRpY0Rhc2hTdWJzdGl0dXRpb24oKTsKLSAgICBib29sIGlzQXV0b21hdGlj
VGV4dFJlcGxhY2VtZW50RW5hYmxlZCgpOwotICAgIHZvaWQgdG9nZ2xlQXV0b21hdGljVGV4dFJl
cGxhY2VtZW50KCk7Ci0gICAgYm9vbCBpc0F1dG9tYXRpY1NwZWxsaW5nQ29ycmVjdGlvbkVuYWJs
ZWQoKTsKLSAgICB2b2lkIHRvZ2dsZUF1dG9tYXRpY1NwZWxsaW5nQ29ycmVjdGlvbigpOworICAg
IFdFQkNPUkVfRVhQT1JUIHZvaWQgc2hvd1N1YnN0aXR1dGlvbnNQYW5lbCgpOworICAgIFdFQkNP
UkVfRVhQT1JUIGJvb2wgc3Vic3RpdHV0aW9uc1BhbmVsSXNTaG93aW5nKCk7CisgICAgV0VCQ09S
RV9FWFBPUlQgdm9pZCB0b2dnbGVTbWFydEluc2VydERlbGV0ZSgpOworICAgIFdFQkNPUkVfRVhQ
T1JUIGJvb2wgaXNBdXRvbWF0aWNRdW90ZVN1YnN0aXR1dGlvbkVuYWJsZWQoKTsKKyAgICBXRUJD
T1JFX0VYUE9SVCB2b2lkIHRvZ2dsZUF1dG9tYXRpY1F1b3RlU3Vic3RpdHV0aW9uKCk7CisgICAg
V0VCQ09SRV9FWFBPUlQgYm9vbCBpc0F1dG9tYXRpY0xpbmtEZXRlY3Rpb25FbmFibGVkKCk7Cisg
ICAgV0VCQ09SRV9FWFBPUlQgdm9pZCB0b2dnbGVBdXRvbWF0aWNMaW5rRGV0ZWN0aW9uKCk7Cisg
ICAgV0VCQ09SRV9FWFBPUlQgYm9vbCBpc0F1dG9tYXRpY0Rhc2hTdWJzdGl0dXRpb25FbmFibGVk
KCk7CisgICAgV0VCQ09SRV9FWFBPUlQgdm9pZCB0b2dnbGVBdXRvbWF0aWNEYXNoU3Vic3RpdHV0
aW9uKCk7CisgICAgV0VCQ09SRV9FWFBPUlQgYm9vbCBpc0F1dG9tYXRpY1RleHRSZXBsYWNlbWVu
dEVuYWJsZWQoKTsKKyAgICBXRUJDT1JFX0VYUE9SVCB2b2lkIHRvZ2dsZUF1dG9tYXRpY1RleHRS
ZXBsYWNlbWVudCgpOworICAgIFdFQkNPUkVfRVhQT1JUIGJvb2wgaXNBdXRvbWF0aWNTcGVsbGlu
Z0NvcnJlY3Rpb25FbmFibGVkKCk7CisgICAgV0VCQ09SRV9FWFBPUlQgdm9pZCB0b2dnbGVBdXRv
bWF0aWNTcGVsbGluZ0NvcnJlY3Rpb24oKTsKICNlbmRpZgogCiAjaWYgRU5BQkxFKERFTEVUSU9O
X1VJKQpAQCAtNDI3LDI1ICs0MjcsMjUgQEAgcHVibGljOgogI2VuZGlmCiAKICNpZiBQTEFURk9S
TShDT0NPQSkKLSAgICBzdGF0aWMgUmVuZGVyU3R5bGUqIHN0eWxlRm9yU2VsZWN0aW9uU3RhcnQo
RnJhbWUqICwgTm9kZSAqJm5vZGVUb1JlbW92ZSk7Ci0gICAgYm9vbCBpbnNlcnRQYXJhZ3JhcGhT
ZXBhcmF0b3JJblF1b3RlZENvbnRlbnQoKTsKLSAgICBjb25zdCBTaW1wbGVGb250RGF0YSogZm9u
dEZvclNlbGVjdGlvbihib29sJikgY29uc3Q7Ci0gICAgTlNEaWN0aW9uYXJ5KiBmb250QXR0cmli
dXRlc0ZvclNlbGVjdGlvblN0YXJ0KCkgY29uc3Q7Ci0gICAgU3RyaW5nIHN0cmluZ1NlbGVjdGlv
bkZvclBhc3RlYm9hcmQoKTsKKyAgICBXRUJDT1JFX0VYUE9SVCBzdGF0aWMgUmVuZGVyU3R5bGUq
IHN0eWxlRm9yU2VsZWN0aW9uU3RhcnQoRnJhbWUqICwgTm9kZSAqJm5vZGVUb1JlbW92ZSk7Cisg
ICAgV0VCQ09SRV9FWFBPUlQgYm9vbCBpbnNlcnRQYXJhZ3JhcGhTZXBhcmF0b3JJblF1b3RlZENv
bnRlbnQoKTsKKyAgICBXRUJDT1JFX0VYUE9SVCBjb25zdCBTaW1wbGVGb250RGF0YSogZm9udEZv
clNlbGVjdGlvbihib29sJikgY29uc3Q7CisgICAgV0VCQ09SRV9FWFBPUlQgTlNEaWN0aW9uYXJ5
KiBmb250QXR0cmlidXRlc0ZvclNlbGVjdGlvblN0YXJ0KCkgY29uc3Q7CisgICAgV0VCQ09SRV9F
WFBPUlQgU3RyaW5nIHN0cmluZ1NlbGVjdGlvbkZvclBhc3RlYm9hcmQoKTsKICAgICBTdHJpbmcg
c3RyaW5nU2VsZWN0aW9uRm9yUGFzdGVib2FyZFdpdGhJbWFnZUFsdFRleHQoKTsKICAgICBQYXNz
UmVmUHRyPERvY3VtZW50RnJhZ21lbnQ+IHdlYkNvbnRlbnRGcm9tUGFzdGVib2FyZChQYXN0ZWJv
YXJkJiwgUmFuZ2UmIGNvbnRleHQsIGJvb2wgYWxsb3dQbGFpblRleHQsIGJvb2wmIGNob3NlUGxh
aW5UZXh0KTsKICNpZiAhUExBVEZPUk0oSU9TKQogICAgIGJvb2wgY2FuQ29weUV4Y2x1ZGluZ1N0
YW5kYWxvbmVJbWFnZXMoKTsKICAgICB2b2lkIHRha2VGaW5kU3RyaW5nRnJvbVNlbGVjdGlvbigp
OwotICAgIHZvaWQgcmVhZFNlbGVjdGlvbkZyb21QYXN0ZWJvYXJkKGNvbnN0IFN0cmluZyYgcGFz
dGVib2FyZE5hbWUsIE1haWxCbG9ja3F1b3RlSGFuZGxpbmcgPSBNYWlsQmxvY2txdW90ZUhhbmRs
aW5nOjpSZXNwZWN0QmxvY2txdW90ZSk7Ci0gICAgdm9pZCByZXBsYWNlTm9kZUZyb21QYXN0ZWJv
YXJkKE5vZGUqLCBjb25zdCBTdHJpbmcmIHBhc3RlYm9hcmROYW1lKTsKLSAgICBQYXNzUmVmUHRy
PFNoYXJlZEJ1ZmZlcj4gZGF0YVNlbGVjdGlvbkZvclBhc3RlYm9hcmQoY29uc3QgU3RyaW5nJiBw
YXN0ZWJvYXJkTmFtZSk7CisgICAgV0VCQ09SRV9FWFBPUlQgdm9pZCByZWFkU2VsZWN0aW9uRnJv
bVBhc3RlYm9hcmQoY29uc3QgU3RyaW5nJiBwYXN0ZWJvYXJkTmFtZSwgTWFpbEJsb2NrcXVvdGVI
YW5kbGluZyA9IE1haWxCbG9ja3F1b3RlSGFuZGxpbmc6OlJlc3BlY3RCbG9ja3F1b3RlKTsKKyAg
ICBXRUJDT1JFX0VYUE9SVCB2b2lkIHJlcGxhY2VOb2RlRnJvbVBhc3RlYm9hcmQoTm9kZSosIGNv
bnN0IFN0cmluZyYgcGFzdGVib2FyZE5hbWUpOworICAgIFdFQkNPUkVfRVhQT1JUIFBhc3NSZWZQ
dHI8U2hhcmVkQnVmZmVyPiBkYXRhU2VsZWN0aW9uRm9yUGFzdGVib2FyZChjb25zdCBTdHJpbmcm
IHBhc3RlYm9hcmROYW1lKTsKICNlbmRpZiAvLyAhUExBVEZPUk0oSU9TKQogI2VuZGlmCiAKICNp
ZiBQTEFURk9STShDT0NPQSkgfHwgUExBVEZPUk0oRUZMKQotICAgIHZvaWQgd3JpdGVTZWxlY3Rp
b25Ub1Bhc3RlYm9hcmQoUGFzdGVib2FyZCYpOwotICAgIHZvaWQgd3JpdGVJbWFnZVRvUGFzdGVi
b2FyZChQYXN0ZWJvYXJkJiwgRWxlbWVudCYgaW1hZ2VFbGVtZW50LCBjb25zdCBVUkwmLCBjb25z
dCBTdHJpbmcmIHRpdGxlKTsKKyAgICBXRUJDT1JFX0VYUE9SVCB2b2lkIHdyaXRlU2VsZWN0aW9u
VG9QYXN0ZWJvYXJkKFBhc3RlYm9hcmQmKTsKKyAgICBXRUJDT1JFX0VYUE9SVCB2b2lkIHdyaXRl
SW1hZ2VUb1Bhc3RlYm9hcmQoUGFzdGVib2FyZCYsIEVsZW1lbnQmIGltYWdlRWxlbWVudCwgY29u
c3QgVVJMJiwgY29uc3QgU3RyaW5nJiB0aXRsZSk7CiAjZW5kaWYKIAogI2lmIEVOQUJMRShURUxF
UEhPTkVfTlVNQkVSX0RFVEVDVElPTikgJiYgIVBMQVRGT1JNKElPUykKQEAgLTQ2OCw3ICs0Njgs
NyBAQCBwcml2YXRlOgogICAgIHZvaWQgbWFya01pc3NwZWxsaW5nc09yQmFkR3JhbW1hcihjb25z
dCBWaXNpYmxlU2VsZWN0aW9uJiwgYm9vbCBjaGVja1NwZWxsaW5nLCBSZWZQdHI8UmFuZ2U+JiBm
aXJzdE1pc3NwZWxsaW5nUmFuZ2UpOwogICAgIFRleHRDaGVja2luZ1R5cGVNYXNrIHJlc29sdmVU
ZXh0Q2hlY2tpbmdUeXBlTWFzayhUZXh0Q2hlY2tpbmdUeXBlTWFzayk7CiAKLSAgICBTdHJpbmcg
c2VsZWN0ZWRUZXh0KFRleHRJdGVyYXRvckJlaGF2aW9yKSBjb25zdDsKKyAgICBXRUJDT1JFX0VY
UE9SVCBTdHJpbmcgc2VsZWN0ZWRUZXh0KFRleHRJdGVyYXRvckJlaGF2aW9yKSBjb25zdDsKIAog
ICAgIHZvaWQgc2VsZWN0Q29tcG9zaXRpb24oKTsKICAgICBlbnVtIFNldENvbXBvc2l0aW9uTW9k
ZSB7IENvbmZpcm1Db21wb3NpdGlvbiwgQ2FuY2VsQ29tcG9zaXRpb24gfTsKSW5kZXg6IFNvdXJj
ZS9XZWJDb3JlL2VkaXRpbmcvbWFjL0FsdGVybmF0aXZlVGV4dFVJQ29udHJvbGxlci5oCj09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT0KLS0tIFNvdXJjZS9XZWJDb3JlL2VkaXRpbmcvbWFjL0FsdGVybmF0aXZlVGV4dFVJQ29u
dHJvbGxlci5oCShyZXZpc2lvbiAxNzI4MDgpCisrKyBTb3VyY2UvV2ViQ29yZS9lZGl0aW5nL21h
Yy9BbHRlcm5hdGl2ZVRleHRVSUNvbnRyb2xsZXIuaAkod29ya2luZyBjb3B5KQpAQCAtNDEsMTEg
KzQxLDExIEBAIGNsYXNzIEFsdGVybmF0aXZlVGV4dFVJQ29udHJvbGxlciB7CiBwdWJsaWM6CiAg
ICAgQWx0ZXJuYXRpdmVUZXh0VUlDb250cm9sbGVyKCkgeyB9CiAgICAgLy8gUmV0dXJucyBhIGNv
bnRleHQgSUQuCi0gICAgdWludDY0X3QgYWRkQWx0ZXJuYXRpdmVzKGNvbnN0IFJldGFpblB0cjxO
U1RleHRBbHRlcm5hdGl2ZXM+Jik7Ci0gICAgdm9pZCBjbGVhcigpOwotICAgIHZvaWQgc2hvd0Fs
dGVybmF0aXZlcyhOU1ZpZXcqLCBjb25zdCBGbG9hdFJlY3QmIGJvdW5kaW5nQm94T2ZQcmltYXJ5
U3RyaW5nLCB1aW50NjRfdCBjb250ZXh0LCB2b2lkKF5hY2NlcHRhbmNlSGFuZGxlcikoTlNTdHJp
bmcqKSk7Ci0gICAgdm9pZCByZW1vdmVBbHRlcm5hdGl2ZXModWludDY0X3QgY29udGV4dCk7Ci0g
ICAgVmVjdG9yPFN0cmluZz4gYWx0ZXJuYXRpdmVzRm9yQ29udGV4dCh1aW50NjRfdCBjb250ZXh0
KTsKKyAgICBXRUJDT1JFX0VYUE9SVCB1aW50NjRfdCBhZGRBbHRlcm5hdGl2ZXMoY29uc3QgUmV0
YWluUHRyPE5TVGV4dEFsdGVybmF0aXZlcz4mKTsKKyAgICBXRUJDT1JFX0VYUE9SVCB2b2lkIGNs
ZWFyKCk7CisgICAgV0VCQ09SRV9FWFBPUlQgdm9pZCBzaG93QWx0ZXJuYXRpdmVzKE5TVmlldyos
IGNvbnN0IEZsb2F0UmVjdCYgYm91bmRpbmdCb3hPZlByaW1hcnlTdHJpbmcsIHVpbnQ2NF90IGNv
bnRleHQsIHZvaWQoXmFjY2VwdGFuY2VIYW5kbGVyKShOU1N0cmluZyopKTsKKyAgICB2b2lkIFdF
QkNPUkVfRVhQT1JUIHJlbW92ZUFsdGVybmF0aXZlcyh1aW50NjRfdCBjb250ZXh0KTsKKyAgICBX
RUJDT1JFX0VYUE9SVCBWZWN0b3I8U3RyaW5nPiBhbHRlcm5hdGl2ZXNGb3JDb250ZXh0KHVpbnQ2
NF90IGNvbnRleHQpOwogCiBwcml2YXRlOgogICAgIHZvaWQgaGFuZGxlQWNjZXB0ZWRBbHRlcm5h
dGl2ZShOU1N0cmluZyogYWNjZXB0ZWRBbHRlcm5hdGl2ZSwgdWludDY0X3QgY29udGV4dCwgTlNU
ZXh0QWx0ZXJuYXRpdmVzKik7CkluZGV4OiBTb3VyY2UvV2ViQ29yZS9oaXN0b3J5L0JhY2tGb3J3
YXJkQ29udHJvbGxlci5oCj09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT0KLS0tIFNvdXJjZS9XZWJDb3JlL2hpc3RvcnkvQmFj
a0ZvcndhcmRDb250cm9sbGVyLmgJKHJldmlzaW9uIDE3MjgwOCkKKysrIFNvdXJjZS9XZWJDb3Jl
L2hpc3RvcnkvQmFja0ZvcndhcmRDb250cm9sbGVyLmgJKHdvcmtpbmcgY29weSkKQEAgLTQ0LDIw
ICs0NCwyMCBAQCBwdWJsaWM6CiAKICAgICBCYWNrRm9yd2FyZENsaWVudCogY2xpZW50KCkgY29u
c3QgeyByZXR1cm4gbV9jbGllbnQuZ2V0KCk7IH0KIAotICAgIGJvb2wgY2FuR29CYWNrT3JGb3J3
YXJkKGludCBkaXN0YW5jZSkgY29uc3Q7CisgICAgV0VCQ09SRV9FWFBPUlQgYm9vbCBjYW5Hb0Jh
Y2tPckZvcndhcmQoaW50IGRpc3RhbmNlKSBjb25zdDsKICAgICB2b2lkIGdvQmFja09yRm9yd2Fy
ZChpbnQgZGlzdGFuY2UpOwogCi0gICAgYm9vbCBnb0JhY2soKTsKLSAgICBib29sIGdvRm9yd2Fy
ZCgpOworICAgIFdFQkNPUkVfRVhQT1JUIGJvb2wgZ29CYWNrKCk7CisgICAgV0VCQ09SRV9FWFBP
UlQgYm9vbCBnb0ZvcndhcmQoKTsKIAogICAgIHZvaWQgYWRkSXRlbShQYXNzUmVmUHRyPEhpc3Rv
cnlJdGVtPik7CiAgICAgdm9pZCBzZXRDdXJyZW50SXRlbShIaXN0b3J5SXRlbSopOwogICAgICAg
ICAKICAgICBpbnQgY291bnQoKSBjb25zdDsKLSAgICBpbnQgYmFja0NvdW50KCkgY29uc3Q7Ci0g
ICAgaW50IGZvcndhcmRDb3VudCgpIGNvbnN0OworICAgIFdFQkNPUkVfRVhQT1JUIGludCBiYWNr
Q291bnQoKSBjb25zdDsKKyAgICBXRUJDT1JFX0VYUE9SVCBpbnQgZm9yd2FyZENvdW50KCkgY29u
c3Q7CiAKLSAgICBIaXN0b3J5SXRlbSogaXRlbUF0SW5kZXgoaW50KTsKKyAgICBXRUJDT1JFX0VY
UE9SVCBIaXN0b3J5SXRlbSogaXRlbUF0SW5kZXgoaW50KTsKIAogICAgIHZvaWQgY2xvc2UoKTsK
IApJbmRleDogU291cmNlL1dlYkNvcmUvaGlzdG9yeS9CYWNrRm9yd2FyZExpc3QuaAo9PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09Ci0tLSBTb3VyY2UvV2ViQ29yZS9oaXN0b3J5L0JhY2tGb3J3YXJkTGlzdC5oCShyZXZpc2lv
biAxNzI4MDgpCisrKyBTb3VyY2UvV2ViQ29yZS9oaXN0b3J5L0JhY2tGb3J3YXJkTGlzdC5oCSh3
b3JraW5nIGNvcHkpCkBAIC00NywzMSArNDcsMzEgQEAgcHVibGljOiAKICAgICBQYWdlKiBwYWdl
KCkgeyByZXR1cm4gbV9wYWdlOyB9CiAKICAgICB2aXJ0dWFsIHZvaWQgYWRkSXRlbShQYXNzUmVm
UHRyPEhpc3RvcnlJdGVtPikgb3ZlcnJpZGU7Ci0gICAgdm9pZCBnb0JhY2soKTsKLSAgICB2b2lk
IGdvRm9yd2FyZCgpOworICAgIFdFQkNPUkVfRVhQT1JUIHZvaWQgZ29CYWNrKCk7CisgICAgV0VC
Q09SRV9FWFBPUlQgdm9pZCBnb0ZvcndhcmQoKTsKICAgICB2aXJ0dWFsIHZvaWQgZ29Ub0l0ZW0o
SGlzdG9yeUl0ZW0qKSBvdmVycmlkZTsKICAgICAgICAgCi0gICAgSGlzdG9yeUl0ZW0qIGJhY2tJ
dGVtKCk7Ci0gICAgSGlzdG9yeUl0ZW0qIGN1cnJlbnRJdGVtKCk7Ci0gICAgSGlzdG9yeUl0ZW0q
IGZvcndhcmRJdGVtKCk7CisgICAgV0VCQ09SRV9FWFBPUlQgSGlzdG9yeUl0ZW0qIGJhY2tJdGVt
KCk7CisgICAgV0VCQ09SRV9FWFBPUlQgSGlzdG9yeUl0ZW0qIGN1cnJlbnRJdGVtKCk7CisgICAg
V0VCQ09SRV9FWFBPUlQgSGlzdG9yeUl0ZW0qIGZvcndhcmRJdGVtKCk7CiAgICAgdmlydHVhbCBI
aXN0b3J5SXRlbSogaXRlbUF0SW5kZXgoaW50KSBvdmVycmlkZTsKIAotICAgIHZvaWQgYmFja0xp
c3RXaXRoTGltaXQoaW50LCBIaXN0b3J5SXRlbVZlY3RvciYpOwotICAgIHZvaWQgZm9yd2FyZExp
c3RXaXRoTGltaXQoaW50LCBIaXN0b3J5SXRlbVZlY3RvciYpOworICAgIFdFQkNPUkVfRVhQT1JU
IHZvaWQgYmFja0xpc3RXaXRoTGltaXQoaW50LCBIaXN0b3J5SXRlbVZlY3RvciYpOworICAgIFdF
QkNPUkVfRVhQT1JUIHZvaWQgZm9yd2FyZExpc3RXaXRoTGltaXQoaW50LCBIaXN0b3J5SXRlbVZl
Y3RvciYpOwogCi0gICAgaW50IGNhcGFjaXR5KCk7Ci0gICAgdm9pZCBzZXRDYXBhY2l0eShpbnQp
OwotICAgIGJvb2wgZW5hYmxlZCgpOwotICAgIHZvaWQgc2V0RW5hYmxlZChib29sKTsKKyAgICBX
RUJDT1JFX0VYUE9SVCBpbnQgY2FwYWNpdHkoKTsKKyAgICBXRUJDT1JFX0VYUE9SVCB2b2lkIHNl
dENhcGFjaXR5KGludCk7CisgICAgV0VCQ09SRV9FWFBPUlQgYm9vbCBlbmFibGVkKCk7CisgICAg
V0VCQ09SRV9FWFBPUlQgdm9pZCBzZXRFbmFibGVkKGJvb2wpOwogICAgIHZpcnR1YWwgaW50IGJh
Y2tMaXN0Q291bnQoKSBvdmVycmlkZTsKICAgICB2aXJ0dWFsIGludCBmb3J3YXJkTGlzdENvdW50
KCkgb3ZlcnJpZGU7Ci0gICAgYm9vbCBjb250YWluc0l0ZW0oSGlzdG9yeUl0ZW0qKTsKKyAgICBX
RUJDT1JFX0VYUE9SVCBib29sIGNvbnRhaW5zSXRlbShIaXN0b3J5SXRlbSopOwogCiAgICAgdmly
dHVhbCB2b2lkIGNsb3NlKCkgb3ZlcnJpZGU7Ci0gICAgYm9vbCBjbG9zZWQoKTsKKyAgICBXRUJD
T1JFX0VYUE9SVCBib29sIGNsb3NlZCgpOwogCi0gICAgdm9pZCByZW1vdmVJdGVtKEhpc3RvcnlJ
dGVtKik7Ci0gICAgSGlzdG9yeUl0ZW1WZWN0b3ImIGVudHJpZXMoKTsKKyAgICBXRUJDT1JFX0VY
UE9SVCB2b2lkIHJlbW92ZUl0ZW0oSGlzdG9yeUl0ZW0qKTsKKyAgICBXRUJDT1JFX0VYUE9SVCBI
aXN0b3J5SXRlbVZlY3RvciYgZW50cmllcygpOwogCiAjaWYgUExBVEZPUk0oSU9TKQogICAgIHZp
cnR1YWwgdW5zaWduZWQgY3VycmVudCgpIG92ZXJyaWRlOwpAQCAtODEsNyArODEsNyBAQCBwdWJs
aWM6IAogI2VuZGlmCiAKIHByaXZhdGU6Ci0gICAgZXhwbGljaXQgQmFja0ZvcndhcmRMaXN0KFBh
Z2UqKTsKKyAgICBXRUJDT1JFX0VYUE9SVCBleHBsaWNpdCBCYWNrRm9yd2FyZExpc3QoUGFnZSop
OwogCiAgICAgUGFnZSogbV9wYWdlOwogICAgIEhpc3RvcnlJdGVtVmVjdG9yIG1fZW50cmllczsK
SW5kZXg6IFNvdXJjZS9XZWJDb3JlL2hpc3RvcnkvQ2FjaGVkRnJhbWUuaAo9PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09Ci0t
LSBTb3VyY2UvV2ViQ29yZS9oaXN0b3J5L0NhY2hlZEZyYW1lLmgJKHJldmlzaW9uIDE3MjgwOCkK
KysrIFNvdXJjZS9XZWJDb3JlL2hpc3RvcnkvQ2FjaGVkRnJhbWUuaAkod29ya2luZyBjb3B5KQpA
QCAtNzMsOCArNzMsOCBAQCBwdWJsaWM6CiAgICAgdm9pZCBjbGVhcigpOwogICAgIHZvaWQgZGVz
dHJveSgpOwogCi0gICAgdm9pZCBzZXRDYWNoZWRGcmFtZVBsYXRmb3JtRGF0YShzdGQ6OnVuaXF1
ZV9wdHI8Q2FjaGVkRnJhbWVQbGF0Zm9ybURhdGE+KTsKLSAgICBDYWNoZWRGcmFtZVBsYXRmb3Jt
RGF0YSogY2FjaGVkRnJhbWVQbGF0Zm9ybURhdGEoKTsKKyAgICBXRUJDT1JFX0VYUE9SVCB2b2lk
IHNldENhY2hlZEZyYW1lUGxhdGZvcm1EYXRhKHN0ZDo6dW5pcXVlX3B0cjxDYWNoZWRGcmFtZVBs
YXRmb3JtRGF0YT4pOworICAgIFdFQkNPUkVfRVhQT1JUIENhY2hlZEZyYW1lUGxhdGZvcm1EYXRh
KiBjYWNoZWRGcmFtZVBsYXRmb3JtRGF0YSgpOwogCiAgICAgdXNpbmcgQ2FjaGVkRnJhbWVCYXNl
Ojpkb2N1bWVudDsKICAgICB1c2luZyBDYWNoZWRGcmFtZUJhc2U6OnZpZXc7CkluZGV4OiBTb3Vy
Y2UvV2ViQ29yZS9sb2FkZXIvQ29va2llSmFyLmgKPT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PQotLS0gU291cmNlL1dlYkNv
cmUvbG9hZGVyL0Nvb2tpZUphci5oCShyZXZpc2lvbiAxNzI4MDgpCisrKyBTb3VyY2UvV2ViQ29y
ZS9sb2FkZXIvQ29va2llSmFyLmgJKHdvcmtpbmcgY29weSkKQEAgLTQwLDEzICs0MCwxMyBAQCBz
dHJ1Y3QgQ29va2llOwogLy8gRnVuY3Rpb25zIGluIHRoaXMgZmlsZSB0YWtlIGEgRG9jdW1lbnQg
cG9pbnRlciB0byBkZXRlcm1pbmUgd2hpY2ggY29va2llIHN0b3JhZ2UgdG8gdXNlLiBXZSBzaG91
bGQgbWVyZ2UgdGhhdCBpbnRvIGNhbGwgc2l0ZXMsIGFuZCB1c2UgUGxhdGZvcm1Db29raWVKYXIg
ZGlyZWN0bHkuCiAKIC8vIFRoZXNlIHR3byBmdW5jdGlvbnMgaW1wbGVtZW50IGRvY3VtZW50LmNv
b2tpZSBBUEksIHdpdGggc3BlY2lhbCBydWxlcyBmb3IgSHR0cE9ubHkgY29va2llcy4KLVN0cmlu
ZyBjb29raWVzKGNvbnN0IERvY3VtZW50KiwgY29uc3QgVVJMJik7Ci12b2lkIHNldENvb2tpZXMo
RG9jdW1lbnQqLCBjb25zdCBVUkwmLCBjb25zdCBTdHJpbmcmIGNvb2tpZVN0cmluZyk7CitXRUJD
T1JFX0VYUE9SVCBTdHJpbmcgY29va2llcyhjb25zdCBEb2N1bWVudCosIGNvbnN0IFVSTCYpOwor
V0VCQ09SRV9FWFBPUlQgdm9pZCBzZXRDb29raWVzKERvY3VtZW50KiwgY29uc3QgVVJMJiwgY29u
c3QgU3RyaW5nJiBjb29raWVTdHJpbmcpOwogCi1ib29sIGNvb2tpZXNFbmFibGVkKGNvbnN0IERv
Y3VtZW50Kik7Ci1TdHJpbmcgY29va2llUmVxdWVzdEhlYWRlckZpZWxkVmFsdWUoY29uc3QgRG9j
dW1lbnQqLCBjb25zdCBVUkwmKTsKLWJvb2wgZ2V0UmF3Q29va2llcyhjb25zdCBEb2N1bWVudCos
IGNvbnN0IFVSTCYsIFZlY3RvcjxDb29raWU+Jik7Ci12b2lkIGRlbGV0ZUNvb2tpZShjb25zdCBE
b2N1bWVudCosIGNvbnN0IFVSTCYsIGNvbnN0IFN0cmluZyYgY29va2llTmFtZSk7CitXRUJDT1JF
X0VYUE9SVCBib29sIGNvb2tpZXNFbmFibGVkKGNvbnN0IERvY3VtZW50Kik7CitXRUJDT1JFX0VY
UE9SVCBTdHJpbmcgY29va2llUmVxdWVzdEhlYWRlckZpZWxkVmFsdWUoY29uc3QgRG9jdW1lbnQq
LCBjb25zdCBVUkwmKTsKK1dFQkNPUkVfRVhQT1JUIGJvb2wgZ2V0UmF3Q29va2llcyhjb25zdCBE
b2N1bWVudCosIGNvbnN0IFVSTCYsIFZlY3RvcjxDb29raWU+Jik7CitXRUJDT1JFX0VYUE9SVCB2
b2lkIGRlbGV0ZUNvb2tpZShjb25zdCBEb2N1bWVudCosIGNvbnN0IFVSTCYsIGNvbnN0IFN0cmlu
ZyYgY29va2llTmFtZSk7CiAKIH0KIApJbmRleDogU291cmNlL1dlYkNvcmUvbG9hZGVyL0Nyb3Nz
T3JpZ2luUHJlZmxpZ2h0UmVzdWx0Q2FjaGUuaAo9PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09Ci0tLSBTb3VyY2UvV2ViQ29y
ZS9sb2FkZXIvQ3Jvc3NPcmlnaW5QcmVmbGlnaHRSZXN1bHRDYWNoZS5oCShyZXZpc2lvbiAxNzI4
MDgpCisrKyBTb3VyY2UvV2ViQ29yZS9sb2FkZXIvQ3Jvc3NPcmlnaW5QcmVmbGlnaHRSZXN1bHRD
YWNoZS5oCSh3b3JraW5nIGNvcHkpCkBAIC02NiwxMiArNjYsMTIgQEAgY2xhc3MgQ3Jvc3NPcmln
aW5QcmVmbGlnaHRSZXN1bHRDYWNoZSB7CiAgICAgV1RGX01BS0VfTk9OQ09QWUFCTEUoQ3Jvc3NP
cmlnaW5QcmVmbGlnaHRSZXN1bHRDYWNoZSk7IFdURl9NQUtFX0ZBU1RfQUxMT0NBVEVEOwogCiBw
dWJsaWM6Ci0gICAgc3RhdGljIENyb3NzT3JpZ2luUHJlZmxpZ2h0UmVzdWx0Q2FjaGUmIHNoYXJl
ZCgpOworICAgIFdFQkNPUkVfRVhQT1JUIHN0YXRpYyBDcm9zc09yaWdpblByZWZsaWdodFJlc3Vs
dENhY2hlJiBzaGFyZWQoKTsKIAogICAgIHZvaWQgYXBwZW5kRW50cnkoY29uc3QgU3RyaW5nJiBv
cmlnaW4sIGNvbnN0IFVSTCYsIHN0ZDo6dW5pcXVlX3B0cjxDcm9zc09yaWdpblByZWZsaWdodFJl
c3VsdENhY2hlSXRlbT4pOwogICAgIGJvb2wgY2FuU2tpcFByZWZsaWdodChjb25zdCBTdHJpbmcm
IG9yaWdpbiwgY29uc3QgVVJMJiwgU3RvcmVkQ3JlZGVudGlhbHMsIGNvbnN0IFN0cmluZyYgbWV0
aG9kLCBjb25zdCBIVFRQSGVhZGVyTWFwJiByZXF1ZXN0SGVhZGVycyk7CiAKLSAgICB2b2lkIGVt
cHR5KCk7CisgICAgV0VCQ09SRV9FWFBPUlQgdm9pZCBlbXB0eSgpOwogCiBwcml2YXRlOgogICAg
IGZyaWVuZCBOZXZlckRlc3Ryb3llZDxDcm9zc09yaWdpblByZWZsaWdodFJlc3VsdENhY2hlPjsK
SW5kZXg6IFNvdXJjZS9XZWJDb3JlL2xvYWRlci9Eb2N1bWVudExvYWRlci5oCj09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT0K
LS0tIFNvdXJjZS9XZWJDb3JlL2xvYWRlci9Eb2N1bWVudExvYWRlci5oCShyZXZpc2lvbiAxNzI4
MDgpCisrKyBTb3VyY2UvV2ViQ29yZS9sb2FkZXIvRG9jdW1lbnRMb2FkZXIuaAkod29ya2luZyBj
b3B5KQpAQCAtODMsMjQgKzgzLDI0IEBAIG5hbWVzcGFjZSBXZWJDb3JlIHsKICAgICAgICAgewog
ICAgICAgICAgICAgcmV0dXJuIGFkb3B0UmVmKG5ldyBEb2N1bWVudExvYWRlcihyZXF1ZXN0LCBk
YXRhKSk7CiAgICAgICAgIH0KLSAgICAgICAgdmlydHVhbCB+RG9jdW1lbnRMb2FkZXIoKTsKKyAg
ICAgICAgV0VCQ09SRV9FWFBPUlQgdmlydHVhbCB+RG9jdW1lbnRMb2FkZXIoKTsKIAotICAgICAg
ICB2b2lkIHNldEZyYW1lKEZyYW1lKik7CisgICAgICAgIFdFQkNPUkVfRVhQT1JUIHZvaWQgc2V0
RnJhbWUoRnJhbWUqKTsKICAgICAgICAgRnJhbWUqIGZyYW1lKCkgY29uc3QgeyByZXR1cm4gbV9m
cmFtZTsgfQogCi0gICAgICAgIHZpcnR1YWwgdm9pZCBhdHRhY2hUb0ZyYW1lKCk7Ci0gICAgICAg
IHZpcnR1YWwgdm9pZCBkZXRhY2hGcm9tRnJhbWUoKTsKKyAgICAgICAgV0VCQ09SRV9FWFBPUlQg
dmlydHVhbCB2b2lkIGF0dGFjaFRvRnJhbWUoKTsKKyAgICAgICAgV0VCQ09SRV9FWFBPUlQgdmly
dHVhbCB2b2lkIGRldGFjaEZyb21GcmFtZSgpOwogCi0gICAgICAgIEZyYW1lTG9hZGVyKiBmcmFt
ZUxvYWRlcigpIGNvbnN0OwotICAgICAgICBSZXNvdXJjZUxvYWRlciogbWFpblJlc291cmNlTG9h
ZGVyKCkgY29uc3Q7Ci0gICAgICAgIFBhc3NSZWZQdHI8UmVzb3VyY2VCdWZmZXI+IG1haW5SZXNv
dXJjZURhdGEoKSBjb25zdDsKKyAgICAgICAgV0VCQ09SRV9FWFBPUlQgRnJhbWVMb2FkZXIqIGZy
YW1lTG9hZGVyKCkgY29uc3Q7CisgICAgICAgIFdFQkNPUkVfRVhQT1JUIFJlc291cmNlTG9hZGVy
KiBtYWluUmVzb3VyY2VMb2FkZXIoKSBjb25zdDsKKyAgICAgICAgV0VCQ09SRV9FWFBPUlQgUGFz
c1JlZlB0cjxSZXNvdXJjZUJ1ZmZlcj4gbWFpblJlc291cmNlRGF0YSgpIGNvbnN0OwogICAgICAg
ICAKICAgICAgICAgRG9jdW1lbnRXcml0ZXImIHdyaXRlcigpIGNvbnN0IHsgcmV0dXJuIG1fd3Jp
dGVyOyB9CiAKLSAgICAgICAgY29uc3QgUmVzb3VyY2VSZXF1ZXN0JiBvcmlnaW5hbFJlcXVlc3Qo
KSBjb25zdDsKLSAgICAgICAgY29uc3QgUmVzb3VyY2VSZXF1ZXN0JiBvcmlnaW5hbFJlcXVlc3RD
b3B5KCkgY29uc3Q7CisgICAgICAgIFdFQkNPUkVfRVhQT1JUIGNvbnN0IFJlc291cmNlUmVxdWVz
dCYgb3JpZ2luYWxSZXF1ZXN0KCkgY29uc3Q7CisgICAgICAgIFdFQkNPUkVfRVhQT1JUIGNvbnN0
IFJlc291cmNlUmVxdWVzdCYgb3JpZ2luYWxSZXF1ZXN0Q29weSgpIGNvbnN0OwogCi0gICAgICAg
IGNvbnN0IFJlc291cmNlUmVxdWVzdCYgcmVxdWVzdCgpIGNvbnN0OworICAgICAgICBXRUJDT1JF
X0VYUE9SVCBjb25zdCBSZXNvdXJjZVJlcXVlc3QmIHJlcXVlc3QoKSBjb25zdDsKICAgICAgICAg
UmVzb3VyY2VSZXF1ZXN0JiByZXF1ZXN0KCk7CiAKICAgICAgICAgQ2FjaGVkUmVzb3VyY2VMb2Fk
ZXImIGNhY2hlZFJlc291cmNlTG9hZGVyKCkgeyByZXR1cm4gbV9jYWNoZWRSZXNvdXJjZUxvYWRl
ci5nZXQoKTsgfQpAQCAtMTA4LDE2ICsxMDgsMTYgQEAgbmFtZXNwYWNlIFdlYkNvcmUgewogICAg
ICAgICBjb25zdCBTdWJzdGl0dXRlRGF0YSYgc3Vic3RpdHV0ZURhdGEoKSBjb25zdCB7IHJldHVy
biBtX3N1YnN0aXR1dGVEYXRhOyB9CiAKICAgICAgICAgLy8gRklYTUU6IFRoaXMgaXMgdGhlIHNh
bWUgYXMgcmVxdWVzdFVSTCgpLiBXZSBzaG91bGQgcmVtb3ZlIG9uZSBvZiB0aGVtLgotICAgICAg
ICBjb25zdCBVUkwmIHVybCgpIGNvbnN0OwotICAgICAgICBjb25zdCBVUkwmIHVucmVhY2hhYmxl
VVJMKCkgY29uc3Q7CisgICAgICAgIFdFQkNPUkVfRVhQT1JUIGNvbnN0IFVSTCYgdXJsKCkgY29u
c3Q7CisgICAgICAgIFdFQkNPUkVfRVhQT1JUIGNvbnN0IFVSTCYgdW5yZWFjaGFibGVVUkwoKSBj
b25zdDsKIAogICAgICAgICBjb25zdCBVUkwmIG9yaWdpbmFsVVJMKCkgY29uc3Q7Ci0gICAgICAg
IGNvbnN0IFVSTCYgcmVxdWVzdFVSTCgpIGNvbnN0OwotICAgICAgICBjb25zdCBVUkwmIHJlc3Bv
bnNlVVJMKCkgY29uc3Q7Ci0gICAgICAgIGNvbnN0IFN0cmluZyYgcmVzcG9uc2VNSU1FVHlwZSgp
IGNvbnN0OworICAgICAgICBXRUJDT1JFX0VYUE9SVCBjb25zdCBVUkwmIHJlcXVlc3RVUkwoKSBj
b25zdDsKKyAgICAgICAgV0VCQ09SRV9FWFBPUlQgY29uc3QgVVJMJiByZXNwb25zZVVSTCgpIGNv
bnN0OworICAgICAgICBXRUJDT1JFX0VYUE9SVCBjb25zdCBTdHJpbmcmIHJlc3BvbnNlTUlNRVR5
cGUoKSBjb25zdDsKICNpZiBQTEFURk9STShJT1MpCiAgICAgICAgIC8vIEZJWE1FOiBUaGlzIG1l
dGhvZCBzZWVtcyB0byB2aW9sYXRlIHRoZSBlbmNhcHN1bGF0aW9uIG9mIHRoaXMgY2xhc3MuCi0g
ICAgICAgIHZvaWQgc2V0UmVzcG9uc2VNSU1FVHlwZShjb25zdCBTdHJpbmcmKTsKKyAgICAgICAg
V0VCQ09SRV9FWFBPUlQgdm9pZCBzZXRSZXNwb25zZU1JTUVUeXBlKGNvbnN0IFN0cmluZyYpOwog
I2VuZGlmCiAKICAgICAgICAgdm9pZCByZXBsYWNlUmVxdWVzdFVSTEZvclNhbWVEb2N1bWVudE5h
dmlnYXRpb24oY29uc3QgVVJMJik7CkBAIC0xMjUsNyArMTI1LDcgQEAgbmFtZXNwYWNlIFdlYkNv
cmUgewogICAgICAgICB2b2lkIHN0b3BMb2FkaW5nKCk7CiAgICAgICAgIHZvaWQgc2V0Q29tbWl0
dGVkKGJvb2wgY29tbWl0dGVkKSB7IG1fY29tbWl0dGVkID0gY29tbWl0dGVkOyB9CiAgICAgICAg
IGJvb2wgaXNDb21taXR0ZWQoKSBjb25zdCB7IHJldHVybiBtX2NvbW1pdHRlZDsgfQotICAgICAg
ICBib29sIGlzTG9hZGluZygpIGNvbnN0OworICAgICAgICBXRUJDT1JFX0VYUE9SVCBib29sIGlz
TG9hZGluZygpIGNvbnN0OwogCiAgICAgICAgIGNvbnN0IFJlc291cmNlRXJyb3ImIG1haW5Eb2N1
bWVudEVycm9yKCkgY29uc3QgeyByZXR1cm4gbV9tYWluRG9jdW1lbnRFcnJvcjsgfQogCkBAIC0x
MzksOCArMTM5LDggQEAgbmFtZXNwYWNlIFdlYkNvcmUgewogICAgICAgICB2b2lkIHNldElzQ2xp
ZW50UmVkaXJlY3QoYm9vbCBpc0NsaWVudFJlZGlyZWN0KSB7IG1faXNDbGllbnRSZWRpcmVjdCA9
IGlzQ2xpZW50UmVkaXJlY3Q7IH0KICAgICAgICAgdm9pZCBoYW5kbGVkT25sb2FkRXZlbnRzKCk7
CiAgICAgICAgIGJvb2wgd2FzT25sb2FkSGFuZGxlZCgpIHsgcmV0dXJuIG1fd2FzT25sb2FkSGFu
ZGxlZDsgfQotICAgICAgICBib29sIGlzTG9hZGluZ0luQVBJU2Vuc2UoKSBjb25zdDsKLSAgICAg
ICAgdm9pZCBzZXRUaXRsZShjb25zdCBTdHJpbmdXaXRoRGlyZWN0aW9uJik7CisgICAgICAgIFdF
QkNPUkVfRVhQT1JUIGJvb2wgaXNMb2FkaW5nSW5BUElTZW5zZSgpIGNvbnN0OworICAgICAgICBX
RUJDT1JFX0VYUE9SVCB2b2lkIHNldFRpdGxlKGNvbnN0IFN0cmluZ1dpdGhEaXJlY3Rpb24mKTsK
ICAgICAgICAgY29uc3QgU3RyaW5nJiBvdmVycmlkZUVuY29kaW5nKCkgY29uc3QgeyByZXR1cm4g
bV9vdmVycmlkZUVuY29kaW5nOyB9CiAKICNpZiBQTEFURk9STShNQUMpCkBAIC0xNTAsMjMgKzE1
MCwyMyBAQCBuYW1lc3BhY2UgV2ViQ29yZSB7CiAKICNpZiBFTkFCTEUoV0VCX0FSQ0hJVkUpIHx8
IEVOQUJMRShNSFRNTCkKICAgICAgICAgdm9pZCBzZXRBcmNoaXZlKFBhc3NSZWZQdHI8QXJjaGl2
ZT4pOwotICAgICAgICB2b2lkIGFkZEFsbEFyY2hpdmVSZXNvdXJjZXMoQXJjaGl2ZSopOwotICAg
ICAgICB2b2lkIGFkZEFyY2hpdmVSZXNvdXJjZShQYXNzUmVmUHRyPEFyY2hpdmVSZXNvdXJjZT4p
OworICAgICAgICBXRUJDT1JFX0VYUE9SVCB2b2lkIGFkZEFsbEFyY2hpdmVSZXNvdXJjZXMoQXJj
aGl2ZSopOworICAgICAgICBXRUJDT1JFX0VYUE9SVCB2b2lkIGFkZEFyY2hpdmVSZXNvdXJjZShQ
YXNzUmVmUHRyPEFyY2hpdmVSZXNvdXJjZT4pOwogICAgICAgICBQYXNzUmVmUHRyPEFyY2hpdmU+
IHBvcEFyY2hpdmVGb3JTdWJmcmFtZShjb25zdCBTdHJpbmcmIGZyYW1lTmFtZSwgY29uc3QgVVJM
Jik7Ci0gICAgICAgIFNoYXJlZEJ1ZmZlciogcGFyc2VkQXJjaGl2ZURhdGEoKSBjb25zdDsKKyAg
ICAgICAgV0VCQ09SRV9FWFBPUlQgU2hhcmVkQnVmZmVyKiBwYXJzZWRBcmNoaXZlRGF0YSgpIGNv
bnN0OwogCi0gICAgICAgIGJvb2wgc2NoZWR1bGVBcmNoaXZlTG9hZChSZXNvdXJjZUxvYWRlcios
IGNvbnN0IFJlc291cmNlUmVxdWVzdCYpOworICAgICAgICBXRUJDT1JFX0VYUE9SVCBib29sIHNj
aGVkdWxlQXJjaGl2ZUxvYWQoUmVzb3VyY2VMb2FkZXIqLCBjb25zdCBSZXNvdXJjZVJlcXVlc3Qm
KTsKICNlbmRpZgogCiAgICAgICAgIC8vIFJldHVybiB0aGUgQXJjaGl2ZVJlc291cmNlIGZvciB0
aGUgVVJMIG9ubHkgd2hlbiBsb2FkaW5nIGFuIEFyY2hpdmUKICAgICAgICAgQXJjaGl2ZVJlc291
cmNlKiBhcmNoaXZlUmVzb3VyY2VGb3JVUkwoY29uc3QgVVJMJikgY29uc3Q7CiAKLSAgICAgICAg
UGFzc1JlZlB0cjxBcmNoaXZlUmVzb3VyY2U+IG1haW5SZXNvdXJjZSgpIGNvbnN0OworICAgICAg
ICBXRUJDT1JFX0VYUE9SVCBQYXNzUmVmUHRyPEFyY2hpdmVSZXNvdXJjZT4gbWFpblJlc291cmNl
KCkgY29uc3Q7CiAKICAgICAgICAgLy8gUmV0dXJuIGFuIEFyY2hpdmVSZXNvdXJjZSBmb3IgdGhl
IFVSTCwgZWl0aGVyIGNyZWF0aW5nIGZyb20gbGl2ZSBkYXRhIG9yCiAgICAgICAgIC8vIHB1bGxp
bmcgZnJvbSB0aGUgQXJjaGl2ZVJlc291cmNlQ29sbGVjdGlvbgotICAgICAgICBQYXNzUmVmUHRy
PEFyY2hpdmVSZXNvdXJjZT4gc3VicmVzb3VyY2UoY29uc3QgVVJMJikgY29uc3Q7Ci0gICAgICAg
IFZlY3RvcjxSZWZQdHI8QXJjaGl2ZVJlc291cmNlPj4gc3VicmVzb3VyY2VzKCkgY29uc3Q7Cisg
ICAgICAgIFdFQkNPUkVfRVhQT1JUIFBhc3NSZWZQdHI8QXJjaGl2ZVJlc291cmNlPiBzdWJyZXNv
dXJjZShjb25zdCBVUkwmKSBjb25zdDsKKyAgICAgICAgV0VCQ09SRV9FWFBPUlQgVmVjdG9yPFJl
ZlB0cjxBcmNoaXZlUmVzb3VyY2U+PiBzdWJyZXNvdXJjZXMoKSBjb25zdDsKIAogI2lmbmRlZiBO
REVCVUcKICAgICAgICAgYm9vbCBpc1N1YnN0aXR1dGVMb2FkUGVuZGluZyhSZXNvdXJjZUxvYWRl
ciopIGNvbnN0OwpAQCAtMTg1LDggKzE4NSw4IEBAIG5hbWVzcGFjZSBXZWJDb3JlIHsKICAgICAg
ICAgdm9pZCBzdG9wUmVjb3JkaW5nUmVzcG9uc2VzKCk7CiAgICAgICAgIGNvbnN0IFN0cmluZ1dp
dGhEaXJlY3Rpb24mIHRpdGxlKCkgY29uc3QgeyByZXR1cm4gbV9wYWdlVGl0bGU7IH0KIAotICAg
ICAgICBVUkwgdXJsRm9ySGlzdG9yeSgpIGNvbnN0OwotICAgICAgICBib29sIHVybEZvckhpc3Rv
cnlSZWZsZWN0c0ZhaWx1cmUoKSBjb25zdDsKKyAgICAgICAgV0VCQ09SRV9FWFBPUlQgVVJMIHVy
bEZvckhpc3RvcnkoKSBjb25zdDsKKyAgICAgICAgV0VCQ09SRV9FWFBPUlQgYm9vbCB1cmxGb3JI
aXN0b3J5UmVmbGVjdHNGYWlsdXJlKCkgY29uc3Q7CiAKICAgICAgICAgLy8gVGhlc2UgYWNjZXNz
b3JzIGFjY29tbW9kYXRlIFdlYkNvcmUncyBzb21ld2hhdCBmaWNrbGUgY3VzdG9tIG9mIGNyZWF0
aW5nIGhpc3RvcnkKICAgICAgICAgLy8gaXRlbXMgZm9yIHJlZGlyZWN0cywgYnV0IG9ubHkgc29t
ZXRpbWVzLiBGb3IgInNvdXJjZSIgYW5kICJkZXN0aW5hdGlvbiIsCkBAIC0yMDksNyArMjA5LDcg
QEAgbmFtZXNwYWNlIFdlYkNvcmUgewogICAgICAgICB2b2lkIHNldE1haW5SZXNvdXJjZURhdGFC
dWZmZXJpbmdQb2xpY3koRGF0YUJ1ZmZlcmluZ1BvbGljeSk7CiAKICAgICAgICAgdm9pZCBzdGFy
dExvYWRpbmdNYWluUmVzb3VyY2UoKTsKLSAgICAgICAgdm9pZCBjYW5jZWxNYWluUmVzb3VyY2VM
b2FkKGNvbnN0IFJlc291cmNlRXJyb3ImKTsKKyAgICAgICAgV0VCQ09SRV9FWFBPUlQgdm9pZCBj
YW5jZWxNYWluUmVzb3VyY2VMb2FkKGNvbnN0IFJlc291cmNlRXJyb3ImKTsKICAgICAgICAgCiAg
ICAgICAgIC8vIFN1cHBvcnQgaWNvbkRhdGFiYXNlIGluIHN5bmNocm9ub3VzIG1vZGUuCiAgICAg
ICAgIHZvaWQgaWNvbkxvYWREZWNpc2lvbkF2YWlsYWJsZSgpOwpAQCAtMjI3LDggKzIyNyw4IEBA
IG5hbWVzcGFjZSBXZWJDb3JlIHsKIAogICAgICAgICB2b2lkIGFkZFN1YnJlc291cmNlTG9hZGVy
KFJlc291cmNlTG9hZGVyKik7CiAgICAgICAgIHZvaWQgcmVtb3ZlU3VicmVzb3VyY2VMb2FkZXIo
UmVzb3VyY2VMb2FkZXIqKTsKLSAgICAgICAgdm9pZCBhZGRQbHVnSW5TdHJlYW1Mb2FkZXIoUmVz
b3VyY2VMb2FkZXIqKTsKLSAgICAgICAgdm9pZCByZW1vdmVQbHVnSW5TdHJlYW1Mb2FkZXIoUmVz
b3VyY2VMb2FkZXIqKTsKKyAgICAgICAgV0VCQ09SRV9FWFBPUlQgdm9pZCBhZGRQbHVnSW5TdHJl
YW1Mb2FkZXIoUmVzb3VyY2VMb2FkZXIqKTsKKyAgICAgICAgV0VCQ09SRV9FWFBPUlQgdm9pZCBy
ZW1vdmVQbHVnSW5TdHJlYW1Mb2FkZXIoUmVzb3VyY2VMb2FkZXIqKTsKIAogICAgICAgICB2b2lk
IHN1YnJlc291cmNlTG9hZGVyRmluaXNoZWRMb2FkaW5nT25lUGFydChSZXNvdXJjZUxvYWRlciop
OwogCkBAIC0yNTQsNyArMjU0LDcgQEAgbmFtZXNwYWNlIFdlYkNvcmUgewogCiAgICAgICAgIC8v
IFRoZSBXZWJLaXQgbGF5ZXIgY2FsbHMgdGhpcyBmdW5jdGlvbiB3aGVuIGl0J3MgcmVhZHkgZm9y
IHRoZSBkYXRhIHRvCiAgICAgICAgIC8vIGFjdHVhbGx5IGJlIGFkZGVkIHRvIHRoZSBkb2N1bWVu
dC4KLSAgICAgICAgdm9pZCBjb21taXREYXRhKGNvbnN0IGNoYXIqIGJ5dGVzLCBzaXplX3QgbGVu
Z3RoKTsKKyAgICAgICAgV0VCQ09SRV9FWFBPUlQgdm9pZCBjb21taXREYXRhKGNvbnN0IGNoYXIq
IGJ5dGVzLCBzaXplX3QgbGVuZ3RoKTsKIAogICAgICAgICBBcHBsaWNhdGlvbkNhY2hlSG9zdCog
YXBwbGljYXRpb25DYWNoZUhvc3QoKSBjb25zdCB7IHJldHVybiBtX2FwcGxpY2F0aW9uQ2FjaGVI
b3N0LmdldCgpOyB9CiAKQEAgLTI2OSw3ICsyNjksNyBAQCBuYW1lc3BhY2UgV2ViQ29yZSB7CiAj
ZW5kaWYKIAogICAgIHByb3RlY3RlZDoKLSAgICAgICAgRG9jdW1lbnRMb2FkZXIoY29uc3QgUmVz
b3VyY2VSZXF1ZXN0JiwgY29uc3QgU3Vic3RpdHV0ZURhdGEmKTsKKyAgICAgICAgV0VCQ09SRV9F
WFBPUlQgRG9jdW1lbnRMb2FkZXIoY29uc3QgUmVzb3VyY2VSZXF1ZXN0JiwgY29uc3QgU3Vic3Rp
dHV0ZURhdGEmKTsKIAogICAgICAgICBib29sIG1fZGVmZXJNYWluUmVzb3VyY2VEYXRhTG9hZDsK
IApAQCAtMjk0LDEwICsyOTQsMTAgQEAgbmFtZXNwYWNlIFdlYkNvcmUgewogICAgICAgICB2b2lk
IHdpbGxTZW5kUmVxdWVzdChSZXNvdXJjZVJlcXVlc3QmLCBjb25zdCBSZXNvdXJjZVJlc3BvbnNl
Jik7CiAgICAgICAgIHZvaWQgZmluaXNoZWRMb2FkaW5nKGRvdWJsZSBmaW5pc2hUaW1lKTsKICAg
ICAgICAgdm9pZCBtYWluUmVjZWl2ZWRFcnJvcihjb25zdCBSZXNvdXJjZUVycm9yJik7Ci0gICAg
ICAgIHZpcnR1YWwgdm9pZCByZWRpcmVjdFJlY2VpdmVkKENhY2hlZFJlc291cmNlKiwgUmVzb3Vy
Y2VSZXF1ZXN0JiwgY29uc3QgUmVzb3VyY2VSZXNwb25zZSYpIG92ZXJyaWRlOwotICAgICAgICB2
aXJ0dWFsIHZvaWQgcmVzcG9uc2VSZWNlaXZlZChDYWNoZWRSZXNvdXJjZSosIGNvbnN0IFJlc291
cmNlUmVzcG9uc2UmKSBvdmVycmlkZTsKLSAgICAgICAgdmlydHVhbCB2b2lkIGRhdGFSZWNlaXZl
ZChDYWNoZWRSZXNvdXJjZSosIGNvbnN0IGNoYXIqIGRhdGEsIGludCBsZW5ndGgpIG92ZXJyaWRl
OwotICAgICAgICB2aXJ0dWFsIHZvaWQgbm90aWZ5RmluaXNoZWQoQ2FjaGVkUmVzb3VyY2UqKSBv
dmVycmlkZTsKKyAgICAgICAgV0VCQ09SRV9FWFBPUlQgdmlydHVhbCB2b2lkIHJlZGlyZWN0UmVj
ZWl2ZWQoQ2FjaGVkUmVzb3VyY2UqLCBSZXNvdXJjZVJlcXVlc3QmLCBjb25zdCBSZXNvdXJjZVJl
c3BvbnNlJikgb3ZlcnJpZGU7CisgICAgICAgIFdFQkNPUkVfRVhQT1JUIHZpcnR1YWwgdm9pZCBy
ZXNwb25zZVJlY2VpdmVkKENhY2hlZFJlc291cmNlKiwgY29uc3QgUmVzb3VyY2VSZXNwb25zZSYp
IG92ZXJyaWRlOworICAgICAgICBXRUJDT1JFX0VYUE9SVCB2aXJ0dWFsIHZvaWQgZGF0YVJlY2Vp
dmVkKENhY2hlZFJlc291cmNlKiwgY29uc3QgY2hhciogZGF0YSwgaW50IGxlbmd0aCkgb3ZlcnJp
ZGU7CisgICAgICAgIFdFQkNPUkVfRVhQT1JUIHZpcnR1YWwgdm9pZCBub3RpZnlGaW5pc2hlZChD
YWNoZWRSZXNvdXJjZSopIG92ZXJyaWRlOwogCiAgICAgICAgIGJvb2wgbWF5YmVMb2FkRW1wdHko
KTsKIApJbmRleDogU291cmNlL1dlYkNvcmUvbG9hZGVyL0RvY3VtZW50V3JpdGVyLmgKPT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PQotLS0gU291cmNlL1dlYkNvcmUvbG9hZGVyL0RvY3VtZW50V3JpdGVyLmgJKHJldmlzaW9u
IDE3MjgwOCkKKysrIFNvdXJjZS9XZWJDb3JlL2xvYWRlci9Eb2N1bWVudFdyaXRlci5oCSh3b3Jr
aW5nIGNvcHkpCkBAIC01MiwxMSArNTIsMTEgQEAgcHVibGljOgogICAgIHZvaWQgYmVnaW4oKTsK
ICAgICB2b2lkIGJlZ2luKGNvbnN0IFVSTCYsIGJvb2wgZGlzcGF0Y2hXaW5kb3dPYmplY3RBdmFp
bGFibGUgPSB0cnVlLCBEb2N1bWVudCogb3duZXJEb2N1bWVudCA9IDApOwogICAgIHZvaWQgYWRk
RGF0YShjb25zdCBjaGFyKiBieXRlcywgc2l6ZV90IGxlbmd0aCk7Ci0gICAgdm9pZCBlbmQoKTsK
KyAgICBXRUJDT1JFX0VYUE9SVCB2b2lkIGVuZCgpOwogICAgIAogICAgIHZvaWQgc2V0RnJhbWUo
RnJhbWUqIGZyYW1lKSB7IG1fZnJhbWUgPSBmcmFtZTsgfQogCi0gICAgdm9pZCBzZXRFbmNvZGlu
Zyhjb25zdCBTdHJpbmcmIGVuY29kaW5nLCBib29sIHVzZXJDaG9zZW4pOworICAgIFdFQkNPUkVf
RVhQT1JUIHZvaWQgc2V0RW5jb2RpbmcoY29uc3QgU3RyaW5nJiBlbmNvZGluZywgYm9vbCB1c2Vy
Q2hvc2VuKTsKIAogICAgIGNvbnN0IFN0cmluZyYgbWltZVR5cGUoKSBjb25zdCB7IHJldHVybiBt
X21pbWVUeXBlOyB9CiAgICAgdm9pZCBzZXRNSU1FVHlwZShjb25zdCBTdHJpbmcmIHR5cGUpIHsg
bV9taW1lVHlwZSA9IHR5cGU7IH0KSW5kZXg6IFNvdXJjZS9XZWJDb3JlL2xvYWRlci9hcHBjYWNo
ZS9BcHBsaWNhdGlvbkNhY2hlLmgKPT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PQotLS0gU291cmNlL1dlYkNvcmUvbG9hZGVy
L2FwcGNhY2hlL0FwcGxpY2F0aW9uQ2FjaGUuaAkocmV2aXNpb24gMTcyODA4KQorKysgU291cmNl
L1dlYkNvcmUvbG9hZGVyL2FwcGNhY2hlL0FwcGxpY2F0aW9uQ2FjaGUuaAkod29ya2luZyBjb3B5
KQpAQCAtNDgsNyArNDgsNyBAQCBjbGFzcyBBcHBsaWNhdGlvbkNhY2hlIDogcHVibGljIFJlZkNv
dW50CiBwdWJsaWM6CiAgICAgc3RhdGljIFBhc3NSZWZQdHI8QXBwbGljYXRpb25DYWNoZT4gY3Jl
YXRlKCkgeyByZXR1cm4gYWRvcHRSZWYobmV3IEFwcGxpY2F0aW9uQ2FjaGUpOyB9CiAgICAgCi0g
ICAgc3RhdGljIHZvaWQgZGVsZXRlQ2FjaGVGb3JPcmlnaW4oU2VjdXJpdHlPcmlnaW4qKTsKKyAg
ICBXRUJDT1JFX0VYUE9SVCBzdGF0aWMgdm9pZCBkZWxldGVDYWNoZUZvck9yaWdpbihTZWN1cml0
eU9yaWdpbiopOwogICAgIAogICAgIH5BcHBsaWNhdGlvbkNhY2hlKCk7CiAKQEAgLTg5LDcgKzg5
LDcgQEAgcHVibGljOgogICAgIAogICAgIHN0YXRpYyBib29sIHJlcXVlc3RJc0hUVFBPckhUVFBT
R2V0KGNvbnN0IFJlc291cmNlUmVxdWVzdCYpOwogCi0gICAgc3RhdGljIGludDY0X3QgZGlza1Vz
YWdlRm9yT3JpZ2luKFNlY3VyaXR5T3JpZ2luKik7CisgICAgV0VCQ09SRV9FWFBPUlQgc3RhdGlj
IGludDY0X3QgZGlza1VzYWdlRm9yT3JpZ2luKFNlY3VyaXR5T3JpZ2luKik7CiAgICAgCiAgICAg
aW50NjRfdCBlc3RpbWF0ZWRTaXplSW5TdG9yYWdlKCkgY29uc3QgeyByZXR1cm4gbV9lc3RpbWF0
ZWRTaXplSW5TdG9yYWdlOyB9CiAKSW5kZXg6IFNvdXJjZS9XZWJDb3JlL2xvYWRlci9hcHBjYWNo
ZS9BcHBsaWNhdGlvbkNhY2hlSG9zdC5oCj09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT0KLS0tIFNvdXJjZS9XZWJDb3JlL2xv
YWRlci9hcHBjYWNoZS9BcHBsaWNhdGlvbkNhY2hlSG9zdC5oCShyZXZpc2lvbiAxNzI4MDgpCisr
KyBTb3VyY2UvV2ViQ29yZS9sb2FkZXIvYXBwY2FjaGUvQXBwbGljYXRpb25DYWNoZUhvc3QuaAko
d29ya2luZyBjb3B5KQpAQCAtMTIzLDEwICsxMjMsMTAgQEAgbmFtZXNwYWNlIFdlYkNvcmUgewog
ICAgICAgICB2b2lkIGZpbmlzaGVkTG9hZGluZ01haW5SZXNvdXJjZSgpOwogICAgICAgICB2b2lk
IGZhaWxlZExvYWRpbmdNYWluUmVzb3VyY2UoKTsKIAotICAgICAgICBib29sIG1heWJlTG9hZFJl
c291cmNlKFJlc291cmNlTG9hZGVyKiwgY29uc3QgUmVzb3VyY2VSZXF1ZXN0JiwgY29uc3QgVVJM
JiBvcmlnaW5hbFVSTCk7Ci0gICAgICAgIGJvb2wgbWF5YmVMb2FkRmFsbGJhY2tGb3JSZWRpcmVj
dChSZXNvdXJjZUxvYWRlciosIFJlc291cmNlUmVxdWVzdCYsIGNvbnN0IFJlc291cmNlUmVzcG9u
c2UmKTsKLSAgICAgICAgYm9vbCBtYXliZUxvYWRGYWxsYmFja0ZvclJlc3BvbnNlKFJlc291cmNl
TG9hZGVyKiwgY29uc3QgUmVzb3VyY2VSZXNwb25zZSYpOwotICAgICAgICBib29sIG1heWJlTG9h
ZEZhbGxiYWNrRm9yRXJyb3IoUmVzb3VyY2VMb2FkZXIqLCBjb25zdCBSZXNvdXJjZUVycm9yJik7
CisgICAgICAgIFdFQkNPUkVfRVhQT1JUIGJvb2wgbWF5YmVMb2FkUmVzb3VyY2UoUmVzb3VyY2VM
b2FkZXIqLCBjb25zdCBSZXNvdXJjZVJlcXVlc3QmLCBjb25zdCBVUkwmIG9yaWdpbmFsVVJMKTsK
KyAgICAgICAgV0VCQ09SRV9FWFBPUlQgYm9vbCBtYXliZUxvYWRGYWxsYmFja0ZvclJlZGlyZWN0
KFJlc291cmNlTG9hZGVyKiwgUmVzb3VyY2VSZXF1ZXN0JiwgY29uc3QgUmVzb3VyY2VSZXNwb25z
ZSYpOworICAgICAgICBXRUJDT1JFX0VYUE9SVCBib29sIG1heWJlTG9hZEZhbGxiYWNrRm9yUmVz
cG9uc2UoUmVzb3VyY2VMb2FkZXIqLCBjb25zdCBSZXNvdXJjZVJlc3BvbnNlJik7CisgICAgICAg
IFdFQkNPUkVfRVhQT1JUIGJvb2wgbWF5YmVMb2FkRmFsbGJhY2tGb3JFcnJvcihSZXNvdXJjZUxv
YWRlciosIGNvbnN0IFJlc291cmNlRXJyb3ImKTsKIAogICAgICAgICBib29sIG1heWJlTG9hZFN5
bmNocm9ub3VzbHkoUmVzb3VyY2VSZXF1ZXN0JiwgUmVzb3VyY2VFcnJvciYsIFJlc291cmNlUmVz
cG9uc2UmLCBWZWN0b3I8Y2hhcj4mIGRhdGEpOwogICAgICAgICB2b2lkIG1heWJlTG9hZEZhbGxi
YWNrU3luY2hyb25vdXNseShjb25zdCBSZXNvdXJjZVJlcXVlc3QmLCBSZXNvdXJjZUVycm9yJiwg
UmVzb3VyY2VSZXNwb25zZSYsIFZlY3RvcjxjaGFyPiYgZGF0YSk7CkluZGV4OiBTb3VyY2UvV2Vi
Q29yZS9sb2FkZXIvYXBwY2FjaGUvQXBwbGljYXRpb25DYWNoZVN0b3JhZ2UuaAo9PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
Ci0tLSBTb3VyY2UvV2ViQ29yZS9sb2FkZXIvYXBwY2FjaGUvQXBwbGljYXRpb25DYWNoZVN0b3Jh
Z2UuaAkocmV2aXNpb24gMTcyODA4KQorKysgU291cmNlL1dlYkNvcmUvbG9hZGVyL2FwcGNhY2hl
L0FwcGxpY2F0aW9uQ2FjaGVTdG9yYWdlLmgJKHdvcmtpbmcgY29weSkKQEAgLTUzLDIwICs1Mywy
MCBAQCBwdWJsaWM6CiAgICAgICAgIERpc2tPck9wZXJhdGlvbkZhaWx1cmUKICAgICB9OwogCi0g
ICAgdm9pZCBzZXRDYWNoZURpcmVjdG9yeShjb25zdCBTdHJpbmcmKTsKKyAgICBXRUJDT1JFX0VY
UE9SVCB2b2lkIHNldENhY2hlRGlyZWN0b3J5KGNvbnN0IFN0cmluZyYpOwogICAgIGNvbnN0IFN0
cmluZyYgY2FjaGVEaXJlY3RvcnkoKSBjb25zdDsKICAgICAKLSAgICB2b2lkIHNldE1heGltdW1T
aXplKGludDY0X3Qgc2l6ZSk7Ci0gICAgaW50NjRfdCBtYXhpbXVtU2l6ZSgpIGNvbnN0OworICAg
IFdFQkNPUkVfRVhQT1JUIHZvaWQgc2V0TWF4aW11bVNpemUoaW50NjRfdCBzaXplKTsKKyAgICBX
RUJDT1JFX0VYUE9SVCBpbnQ2NF90IG1heGltdW1TaXplKCkgY29uc3Q7CiAgICAgYm9vbCBpc01h
eGltdW1TaXplUmVhY2hlZCgpIGNvbnN0OwogICAgIGludDY0X3Qgc3BhY2VOZWVkZWQoaW50NjRf
dCBjYWNoZVRvU2F2ZSk7CiAKICAgICBpbnQ2NF90IGRlZmF1bHRPcmlnaW5RdW90YSgpIGNvbnN0
IHsgcmV0dXJuIG1fZGVmYXVsdE9yaWdpblF1b3RhOyB9Ci0gICAgdm9pZCBzZXREZWZhdWx0T3Jp
Z2luUXVvdGEoaW50NjRfdCBxdW90YSk7Ci0gICAgYm9vbCBjYWxjdWxhdGVVc2FnZUZvck9yaWdp
bihjb25zdCBTZWN1cml0eU9yaWdpbiosIGludDY0X3QmIHVzYWdlKTsKLSAgICBib29sIGNhbGN1
bGF0ZVF1b3RhRm9yT3JpZ2luKGNvbnN0IFNlY3VyaXR5T3JpZ2luKiwgaW50NjRfdCYgcXVvdGEp
OworICAgIFdFQkNPUkVfRVhQT1JUIHZvaWQgc2V0RGVmYXVsdE9yaWdpblF1b3RhKGludDY0X3Qg
cXVvdGEpOworICAgIFdFQkNPUkVfRVhQT1JUIGJvb2wgY2FsY3VsYXRlVXNhZ2VGb3JPcmlnaW4o
Y29uc3QgU2VjdXJpdHlPcmlnaW4qLCBpbnQ2NF90JiB1c2FnZSk7CisgICAgV0VCQ09SRV9FWFBP
UlQgYm9vbCBjYWxjdWxhdGVRdW90YUZvck9yaWdpbihjb25zdCBTZWN1cml0eU9yaWdpbiosIGlu
dDY0X3QmIHF1b3RhKTsKICAgICBib29sIGNhbGN1bGF0ZVJlbWFpbmluZ1NpemVGb3JPcmlnaW5F
eGNsdWRpbmdDYWNoZShjb25zdCBTZWN1cml0eU9yaWdpbiosIEFwcGxpY2F0aW9uQ2FjaGUqLCBp
bnQ2NF90JiByZW1haW5pbmdTaXplKTsKLSAgICBib29sIHN0b3JlVXBkYXRlZFF1b3RhRm9yT3Jp
Z2luKGNvbnN0IFNlY3VyaXR5T3JpZ2luKiwgaW50NjRfdCBxdW90YSk7CisgICAgV0VCQ09SRV9F
WFBPUlQgYm9vbCBzdG9yZVVwZGF0ZWRRdW90YUZvck9yaWdpbihjb25zdCBTZWN1cml0eU9yaWdp
biosIGludDY0X3QgcXVvdGEpOwogICAgIGJvb2wgY2hlY2tPcmlnaW5RdW90YShBcHBsaWNhdGlv
bkNhY2hlR3JvdXAqLCBBcHBsaWNhdGlvbkNhY2hlKiBvbGRDYWNoZSwgQXBwbGljYXRpb25DYWNo
ZSogbmV3Q2FjaGUsIGludDY0X3QmIHRvdGFsU3BhY2VOZWVkZWQpOwogCiAgICAgQXBwbGljYXRp
b25DYWNoZUdyb3VwKiBjYWNoZUdyb3VwRm9yVVJMKGNvbnN0IFVSTCYpOyAvLyBDYWNoZSB0byBs
b2FkIGEgbWFpbiByZXNvdXJjZSBmcm9tLgpAQCAtODUsMTcgKzg1LDE3IEBAIHB1YmxpYzoKICAg
ICAvLyBSZW1vdmVzIHRoZSBncm91cCBpZiB0aGUgY2FjaGUgdG8gYmUgcmVtb3ZlZCBpcyB0aGUg
bmV3ZXN0IG9uZSAoc28sIHN0b3JlTmV3ZXN0Q2FjaGUoKSBuZWVkcyB0byBiZSBjYWxsZWQgYmVm
b3JlaGFuZCB3aGVuIHVwZGF0aW5nKS4KICAgICB2b2lkIHJlbW92ZShBcHBsaWNhdGlvbkNhY2hl
Kik7CiAgICAgCi0gICAgdm9pZCBlbXB0eSgpOworICAgIFdFQkNPUkVfRVhQT1JUIHZvaWQgZW1w
dHkoKTsKICAgICAKLSAgICBzdGF0aWMgYm9vbCBzdG9yZUNvcHlPZkNhY2hlKGNvbnN0IFN0cmlu
ZyYgY2FjaGVEaXJlY3RvcnksIEFwcGxpY2F0aW9uQ2FjaGVIb3N0Kik7CisgICAgc3RhdGljIGJv
b2wgV0VCQ09SRV9FWFBPUlQgc3RvcmVDb3B5T2ZDYWNoZShjb25zdCBTdHJpbmcmIGNhY2hlRGly
ZWN0b3J5LCBBcHBsaWNhdGlvbkNhY2hlSG9zdCopOwogCiAgICAgYm9vbCBtYW5pZmVzdFVSTHMo
VmVjdG9yPFVSTD4qIHVybHMpOwogICAgIGJvb2wgY2FjaGVHcm91cFNpemUoY29uc3QgU3RyaW5n
JiBtYW5pZmVzdFVSTCwgaW50NjRfdCogc2l6ZSk7CiAgICAgYm9vbCBkZWxldGVDYWNoZUdyb3Vw
KGNvbnN0IFN0cmluZyYgbWFuaWZlc3RVUkwpOwotICAgIHZvaWQgdmFjdXVtRGF0YWJhc2VGaWxl
KCk7CisgICAgV0VCQ09SRV9FWFBPUlQgdm9pZCB2YWN1dW1EYXRhYmFzZUZpbGUoKTsKIAotICAg
IHZvaWQgZ2V0T3JpZ2luc1dpdGhDYWNoZShIYXNoU2V0PFJlZlB0cjxTZWN1cml0eU9yaWdpbj4s
IFNlY3VyaXR5T3JpZ2luSGFzaD4mKTsKLSAgICB2b2lkIGRlbGV0ZUFsbEVudHJpZXMoKTsKKyAg
ICBXRUJDT1JFX0VYUE9SVCB2b2lkIGdldE9yaWdpbnNXaXRoQ2FjaGUoSGFzaFNldDxSZWZQdHI8
U2VjdXJpdHlPcmlnaW4+LCBTZWN1cml0eU9yaWdpbkhhc2g+Jik7CisgICAgV0VCQ09SRV9FWFBP
UlQgdm9pZCBkZWxldGVBbGxFbnRyaWVzKCk7CiAKICAgICBzdGF0aWMgaW50NjRfdCB1bmtub3du
UXVvdGEoKSB7IHJldHVybiAtMTsgfQogICAgIHN0YXRpYyBpbnQ2NF90IG5vUXVvdGEoKSB7IHJl
dHVybiBzdGQ6Om51bWVyaWNfbGltaXRzPGludDY0X3Q+OjptYXgoKTsgfQpJbmRleDogU291cmNl
L1dlYkNvcmUvbG9hZGVyL2FyY2hpdmUvQXJjaGl2ZVJlc291cmNlLmgKPT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PQotLS0g
U291cmNlL1dlYkNvcmUvbG9hZGVyL2FyY2hpdmUvQXJjaGl2ZVJlc291cmNlLmgJKHJldmlzaW9u
IDE3MjgwOCkKKysrIFNvdXJjZS9XZWJDb3JlL2xvYWRlci9hcmNoaXZlL0FyY2hpdmVSZXNvdXJj
ZS5oCSh3b3JraW5nIGNvcHkpCkBAIC0zNiw3ICszNiw3IEBAIG5hbWVzcGFjZSBXZWJDb3JlIHsK
IGNsYXNzIEFyY2hpdmVSZXNvdXJjZSA6IHB1YmxpYyBTdWJzdGl0dXRlUmVzb3VyY2UgewogcHVi
bGljOgogICAgIHN0YXRpYyBQYXNzUmVmUHRyPEFyY2hpdmVSZXNvdXJjZT4gY3JlYXRlKFBhc3NS
ZWZQdHI8U2hhcmVkQnVmZmVyPiwgY29uc3QgVVJMJiwgY29uc3QgUmVzb3VyY2VSZXNwb25zZSYp
OwotICAgIHN0YXRpYyBQYXNzUmVmUHRyPEFyY2hpdmVSZXNvdXJjZT4gY3JlYXRlKFBhc3NSZWZQ
dHI8U2hhcmVkQnVmZmVyPiwgY29uc3QgVVJMJiwKKyAgICBXRUJDT1JFX0VYUE9SVCBzdGF0aWMg
UGFzc1JlZlB0cjxBcmNoaXZlUmVzb3VyY2U+IGNyZWF0ZShQYXNzUmVmUHRyPFNoYXJlZEJ1ZmZl
cj4sIGNvbnN0IFVSTCYsCiAgICAgICAgIGNvbnN0IFN0cmluZyYgbWltZVR5cGUsIGNvbnN0IFN0
cmluZyYgdGV4dEVuY29kaW5nLCBjb25zdCBTdHJpbmcmIGZyYW1lTmFtZSwKICAgICAgICAgY29u
c3QgUmVzb3VyY2VSZXNwb25zZSYgPSBSZXNvdXJjZVJlc3BvbnNlKCkpOwogCkluZGV4OiBTb3Vy
Y2UvV2ViQ29yZS9sb2FkZXIvY2FjaGUvQ2FjaGVkSW1hZ2UuaAo9PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09Ci0tLSBTb3Vy
Y2UvV2ViQ29yZS9sb2FkZXIvY2FjaGUvQ2FjaGVkSW1hZ2UuaAkocmV2aXNpb24gMTcyODA4KQor
KysgU291cmNlL1dlYkNvcmUvbG9hZGVyL2NhY2hlL0NhY2hlZEltYWdlLmgJKHdvcmtpbmcgY29w
eSkKQEAgLTU2LDggKzU2LDggQEAgcHVibGljOgogICAgIENhY2hlZEltYWdlKGNvbnN0IFVSTCYs
IEltYWdlKiwgQ2FjaGVCZWhhdmlvclR5cGUsIFNlc3Npb25JRCk7CiAgICAgdmlydHVhbCB+Q2Fj
aGVkSW1hZ2UoKTsKIAotICAgIEltYWdlKiBpbWFnZSgpOyAvLyBSZXR1cm5zIHRoZSBudWxsSW1h
Z2UoKSBpZiB0aGUgaW1hZ2UgaXMgbm90IGF2YWlsYWJsZSB5ZXQuCi0gICAgSW1hZ2UqIGltYWdl
Rm9yUmVuZGVyZXIoY29uc3QgUmVuZGVyT2JqZWN0Kik7IC8vIFJldHVybnMgdGhlIG51bGxJbWFn
ZSgpIGlmIHRoZSBpbWFnZSBpcyBub3QgYXZhaWxhYmxlIHlldC4KKyAgICBXRUJDT1JFX0VYUE9S
VCBJbWFnZSogaW1hZ2UoKTsgLy8gUmV0dXJucyB0aGUgbnVsbEltYWdlKCkgaWYgdGhlIGltYWdl
IGlzIG5vdCBhdmFpbGFibGUgeWV0LgorICAgIFdFQkNPUkVfRVhQT1JUIEltYWdlKiBpbWFnZUZv
clJlbmRlcmVyKGNvbnN0IFJlbmRlck9iamVjdCopOyAvLyBSZXR1cm5zIHRoZSBudWxsSW1hZ2Uo
KSBpZiB0aGUgaW1hZ2UgaXMgbm90IGF2YWlsYWJsZSB5ZXQuCiAgICAgYm9vbCBoYXNJbWFnZSgp
IGNvbnN0IHsgcmV0dXJuIG1faW1hZ2UuZ2V0KCk7IH0KICAgICBib29sIGN1cnJlbnRGcmFtZUtu
b3duVG9CZU9wYXF1ZShjb25zdCBSZW5kZXJFbGVtZW50Kik7CiAKSW5kZXg6IFNvdXJjZS9XZWJD
b3JlL2xvYWRlci9jYWNoZS9DYWNoZWRSZXNvdXJjZS5oCj09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT0KLS0tIFNvdXJjZS9X
ZWJDb3JlL2xvYWRlci9jYWNoZS9DYWNoZWRSZXNvdXJjZS5oCShyZXZpc2lvbiAxNzI4MDgpCisr
KyBTb3VyY2UvV2ViQ29yZS9sb2FkZXIvY2FjaGUvQ2FjaGVkUmVzb3VyY2UuaAkod29ya2luZyBj
b3B5KQpAQCAtMTE2LDggKzExNiw4IEBAIHB1YmxpYzoKICAgICBSZXNvdXJjZUxvYWRQcmlvcml0
eSBsb2FkUHJpb3JpdHkoKSBjb25zdCB7IHJldHVybiBtX2xvYWRQcmlvcml0eTsgfQogICAgIHZv
aWQgc2V0TG9hZFByaW9yaXR5KFJlc291cmNlTG9hZFByaW9yaXR5KTsKIAotICAgIHZvaWQgYWRk
Q2xpZW50KENhY2hlZFJlc291cmNlQ2xpZW50Kik7Ci0gICAgdm9pZCByZW1vdmVDbGllbnQoQ2Fj
aGVkUmVzb3VyY2VDbGllbnQqKTsKKyAgICBXRUJDT1JFX0VYUE9SVCB2b2lkIGFkZENsaWVudChD
YWNoZWRSZXNvdXJjZUNsaWVudCopOworICAgIFdFQkNPUkVfRVhQT1JUIHZvaWQgcmVtb3ZlQ2xp
ZW50KENhY2hlZFJlc291cmNlQ2xpZW50Kik7CiAgICAgYm9vbCBoYXNDbGllbnRzKCkgY29uc3Qg
eyByZXR1cm4gIW1fY2xpZW50cy5pc0VtcHR5KCkgfHwgIW1fY2xpZW50c0F3YWl0aW5nQ2FsbGJh
Y2suaXNFbXB0eSgpOyB9CiAgICAgYm9vbCBoYXNDbGllbnQoQ2FjaGVkUmVzb3VyY2VDbGllbnQq
IGNsaWVudCkgeyByZXR1cm4gbV9jbGllbnRzLmNvbnRhaW5zKGNsaWVudCkgfHwgbV9jbGllbnRz
QXdhaXRpbmdDYWxsYmFjay5jb250YWlucyhjbGllbnQpOyB9CiAgICAgYm9vbCBkZWxldGVJZlBv
c3NpYmxlKCk7CkBAIC0yMjAsNyArMjIwLDcgQEAgcHVibGljOgogICAgIHZvaWQgZGVjcmVhc2VQ
cmVsb2FkQ291bnQoKSB7IEFTU0VSVChtX3ByZWxvYWRDb3VudCk7IC0tbV9wcmVsb2FkQ291bnQ7
IH0KICAgICAKICAgICB2b2lkIHJlZ2lzdGVySGFuZGxlKENhY2hlZFJlc291cmNlSGFuZGxlQmFz
ZSogaCk7Ci0gICAgdm9pZCB1bnJlZ2lzdGVySGFuZGxlKENhY2hlZFJlc291cmNlSGFuZGxlQmFz
ZSogaCk7CisgICAgV0VCQ09SRV9FWFBPUlQgdm9pZCB1bnJlZ2lzdGVySGFuZGxlKENhY2hlZFJl
c291cmNlSGFuZGxlQmFzZSogaCk7CiAgICAgCiAgICAgYm9vbCBjYW5Vc2VDYWNoZVZhbGlkYXRv
cigpIGNvbnN0OwogCkBAIC0yNDksNyArMjQ5LDcgQEAgcHVibGljOgogICAgIHZpcnR1YWwgYm9v
bCBjYW5SZXVzZShjb25zdCBSZXNvdXJjZVJlcXVlc3QmKSBjb25zdCB7IHJldHVybiB0cnVlOyB9
CiAKICNpZiBVU0UoRk9VTkRBVElPTikKLSAgICB2b2lkIHRyeVJlcGxhY2VFbmNvZGVkRGF0YShQ
YXNzUmVmUHRyPFNoYXJlZEJ1ZmZlcj4pOworICAgIFdFQkNPUkVfRVhQT1JUIHZvaWQgdHJ5UmVw
bGFjZUVuY29kZWREYXRhKFBhc3NSZWZQdHI8U2hhcmVkQnVmZmVyPik7CiAjZW5kaWYKIAogI2lm
IFVTRShTT1VQKQpJbmRleDogU291cmNlL1dlYkNvcmUvbG9hZGVyL2NhY2hlL0NhY2hlZFJlc291
cmNlSGFuZGxlLmgKPT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PQotLS0gU291cmNlL1dlYkNvcmUvbG9hZGVyL2NhY2hlL0Nh
Y2hlZFJlc291cmNlSGFuZGxlLmgJKHJldmlzaW9uIDE3MjgwOCkKKysrIFNvdXJjZS9XZWJDb3Jl
L2xvYWRlci9jYWNoZS9DYWNoZWRSZXNvdXJjZUhhbmRsZS5oCSh3b3JraW5nIGNvcHkpCkBAIC00
OSw3ICs0OSw3IEBAIHByb3RlY3RlZDoKICAgICBDYWNoZWRSZXNvdXJjZUhhbmRsZUJhc2UoQ2Fj
aGVkUmVzb3VyY2UqKTsKICAgICBDYWNoZWRSZXNvdXJjZUhhbmRsZUJhc2UoY29uc3QgQ2FjaGVk
UmVzb3VyY2VIYW5kbGVCYXNlJik7CiAKLSAgICB2b2lkIHNldFJlc291cmNlKENhY2hlZFJlc291
cmNlKik7CisgICAgV0VCQ09SRV9FWFBPUlQgdm9pZCBzZXRSZXNvdXJjZShDYWNoZWRSZXNvdXJj
ZSopOwogICAgIAogcHJpdmF0ZToKICAgICBDYWNoZWRSZXNvdXJjZUhhbmRsZUJhc2UmIG9wZXJh
dG9yPShjb25zdCBDYWNoZWRSZXNvdXJjZUhhbmRsZUJhc2UmKSB7IHJldHVybiAqdGhpczsgfSAK
SW5kZXg6IFNvdXJjZS9XZWJDb3JlL2xvYWRlci9jYWNoZS9DYWNoZWRSZXNvdXJjZUxvYWRlci5o
Cj09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT0KLS0tIFNvdXJjZS9XZWJDb3JlL2xvYWRlci9jYWNoZS9DYWNoZWRSZXNvdXJj
ZUxvYWRlci5oCShyZXZpc2lvbiAxNzI4MDgpCisrKyBTb3VyY2UvV2ViQ29yZS9sb2FkZXIvY2Fj
aGUvQ2FjaGVkUmVzb3VyY2VMb2FkZXIuaAkod29ya2luZyBjb3B5KQpAQCAtMTE3LDEzICsxMTcs
MTMgQEAgcHVibGljOgogCiAgICAgdm9pZCBsb2FkRG9uZShDYWNoZWRSZXNvdXJjZSosIGJvb2wg
c2hvdWxkUGVyZm9ybVBvc3RMb2FkQWN0aW9ucyA9IHRydWUpOwogCi0gICAgdm9pZCBnYXJiYWdl
Q29sbGVjdERvY3VtZW50UmVzb3VyY2VzKCk7CisgICAgV0VCQ09SRV9FWFBPUlQgdm9pZCBnYXJi
YWdlQ29sbGVjdERvY3VtZW50UmVzb3VyY2VzKCk7CiAgICAgCiAgICAgdm9pZCBpbmNyZW1lbnRS
ZXF1ZXN0Q291bnQoY29uc3QgQ2FjaGVkUmVzb3VyY2UqKTsKICAgICB2b2lkIGRlY3JlbWVudFJl
cXVlc3RDb3VudChjb25zdCBDYWNoZWRSZXNvdXJjZSopOwogICAgIGludCByZXF1ZXN0Q291bnQo
KSBjb25zdCB7IHJldHVybiBtX3JlcXVlc3RDb3VudDsgfQogCi0gICAgYm9vbCBpc1ByZWxvYWRl
ZChjb25zdCBTdHJpbmcmIHVybFN0cmluZykgY29uc3Q7CisgICAgV0VCQ09SRV9FWFBPUlQgYm9v
bCBpc1ByZWxvYWRlZChjb25zdCBTdHJpbmcmIHVybFN0cmluZykgY29uc3Q7CiAgICAgdm9pZCBj
bGVhclByZWxvYWRzKCk7CiAgICAgdm9pZCBjbGVhclBlbmRpbmdQcmVsb2FkcygpOwogICAgIHZv
aWQgcHJlbG9hZChDYWNoZWRSZXNvdXJjZTo6VHlwZSwgQ2FjaGVkUmVzb3VyY2VSZXF1ZXN0Jiwg
Y29uc3QgU3RyaW5nJiBjaGFyc2V0KTsKSW5kZXg6IFNvdXJjZS9XZWJDb3JlL3BhZ2UvQ2hyb21l
LmgKPT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PQotLS0gU291cmNlL1dlYkNvcmUvcGFnZS9DaHJvbWUuaAkocmV2aXNpb24g
MTcyODA4KQorKysgU291cmNlL1dlYkNvcmUvcGFnZS9DaHJvbWUuaAkod29ya2luZyBjb3B5KQpA
QCAtMTE2LDcgKzExNiw3IEBAIHB1YmxpYzoKICAgICB2b2lkIGZvY3VzZWRFbGVtZW50Q2hhbmdl
ZChFbGVtZW50KikgY29uc3Q7CiAgICAgdm9pZCBmb2N1c2VkRnJhbWVDaGFuZ2VkKEZyYW1lKikg
Y29uc3Q7CiAKLSAgICBQYWdlKiBjcmVhdGVXaW5kb3coRnJhbWUqLCBjb25zdCBGcmFtZUxvYWRS
ZXF1ZXN0JiwgY29uc3QgV2luZG93RmVhdHVyZXMmLCBjb25zdCBOYXZpZ2F0aW9uQWN0aW9uJikg
Y29uc3Q7CisgICAgV0VCQ09SRV9FWFBPUlQgUGFnZSogY3JlYXRlV2luZG93KEZyYW1lKiwgY29u
c3QgRnJhbWVMb2FkUmVxdWVzdCYsIGNvbnN0IFdpbmRvd0ZlYXR1cmVzJiwgY29uc3QgTmF2aWdh
dGlvbkFjdGlvbiYpIGNvbnN0OwogICAgIHZvaWQgc2hvdygpIGNvbnN0OwogCiAgICAgYm9vbCBj
YW5SdW5Nb2RhbCgpIGNvbnN0OwpAQCAtMTQ1LDcgKzE0NSw3IEBAIHB1YmxpYzoKICAgICB2b2lk
IHJ1bkphdmFTY3JpcHRBbGVydChGcmFtZSosIGNvbnN0IFN0cmluZyYpOwogICAgIGJvb2wgcnVu
SmF2YVNjcmlwdENvbmZpcm0oRnJhbWUqLCBjb25zdCBTdHJpbmcmKTsKICAgICBib29sIHJ1bkph
dmFTY3JpcHRQcm9tcHQoRnJhbWUqLCBjb25zdCBTdHJpbmcmIG1lc3NhZ2UsIGNvbnN0IFN0cmlu
ZyYgZGVmYXVsdFZhbHVlLCBTdHJpbmcmIHJlc3VsdCk7Ci0gICAgdm9pZCBzZXRTdGF0dXNiYXJU
ZXh0KEZyYW1lKiwgY29uc3QgU3RyaW5nJik7CisgICAgV0VCQ09SRV9FWFBPUlQgdm9pZCBzZXRT
dGF0dXNiYXJUZXh0KEZyYW1lKiwgY29uc3QgU3RyaW5nJik7CiAgICAgYm9vbCBzaG91bGRJbnRl
cnJ1cHRKYXZhU2NyaXB0KCk7CiAKICAgICBJbnRSZWN0IHdpbmRvd1Jlc2l6ZXJSZWN0KCkgY29u
c3Q7CkBAIC0xNTQsNyArMTU0LDcgQEAgcHVibGljOgogCiAgICAgdm9pZCBzZXRUb29sVGlwKGNv
bnN0IEhpdFRlc3RSZXN1bHQmKTsKIAotICAgIHZvaWQgcHJpbnQoRnJhbWUqKTsKKyAgICBXRUJD
T1JFX0VYUE9SVCB2b2lkIHByaW50KEZyYW1lKik7CiAKICAgICB2b2lkIGVuYWJsZVN1ZGRlblRl
cm1pbmF0aW9uKCk7CiAgICAgdm9pZCBkaXNhYmxlU3VkZGVuVGVybWluYXRpb24oKTsKQEAgLTE3
NSw3ICsxNzUsNyBAQCBwdWJsaWM6CiAgICAgYm9vbCByZXF1aXJlc0Z1bGxzY3JlZW5Gb3JWaWRl
b1BsYXliYWNrKCk7CiAKICNpZiBQTEFURk9STShDT0NPQSkKLSAgICB2b2lkIGZvY3VzTlNWaWV3
KE5TVmlldyopOworICAgIFdFQkNPUkVfRVhQT1JUIHZvaWQgZm9jdXNOU1ZpZXcoTlNWaWV3Kik7
CiAjZW5kaWYKIAogICAgIGJvb2wgc2VsZWN0SXRlbVdyaXRpbmdEaXJlY3Rpb25Jc05hdHVyYWwo
KTsKSW5kZXg6IFNvdXJjZS9XZWJDb3JlL3BhZ2UvQ29udGV4dE1lbnVDb250cm9sbGVyLmgKPT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PQotLS0gU291cmNlL1dlYkNvcmUvcGFnZS9Db250ZXh0TWVudUNvbnRyb2xsZXIuaAko
cmV2aXNpb24gMTcyODA4KQorKysgU291cmNlL1dlYkNvcmUvcGFnZS9Db250ZXh0TWVudUNvbnRy
b2xsZXIuaAkod29ya2luZyBjb3B5KQpAQCAtNTAsMTYgKzUwLDE2IEBAIHB1YmxpYzoKICAgICB+
Q29udGV4dE1lbnVDb250cm9sbGVyKCk7CiAKICAgICBDb250ZXh0TWVudSogY29udGV4dE1lbnUo
KSBjb25zdCB7IHJldHVybiBtX2NvbnRleHRNZW51LmdldCgpOyB9Ci0gICAgdm9pZCBjbGVhckNv
bnRleHRNZW51KCk7CisgICAgV0VCQ09SRV9FWFBPUlQgdm9pZCBjbGVhckNvbnRleHRNZW51KCk7
CiAKICAgICB2b2lkIGhhbmRsZUNvbnRleHRNZW51RXZlbnQoRXZlbnQqKTsKICAgICB2b2lkIHNo
b3dDb250ZXh0TWVudShFdmVudCosIFBhc3NSZWZQdHI8Q29udGV4dE1lbnVQcm92aWRlcj4pOwog
CiAgICAgdm9pZCBwb3B1bGF0ZSgpOwotICAgIHZvaWQgY29udGV4dE1lbnVJdGVtU2VsZWN0ZWQo
Q29udGV4dE1lbnVJdGVtKik7CisgICAgV0VCQ09SRV9FWFBPUlQgdm9pZCBjb250ZXh0TWVudUl0
ZW1TZWxlY3RlZChDb250ZXh0TWVudUl0ZW0qKTsKICAgICB2b2lkIGFkZEluc3BlY3RFbGVtZW50
SXRlbSgpOwogCi0gICAgdm9pZCBjaGVja09yRW5hYmxlSWZOZWVkZWQoQ29udGV4dE1lbnVJdGVt
JikgY29uc3Q7CisgICAgV0VCQ09SRV9FWFBPUlQgdm9pZCBjaGVja09yRW5hYmxlSWZOZWVkZWQo
Q29udGV4dE1lbnVJdGVtJikgY29uc3Q7CiAKICAgICB2b2lkIHNldENvbnRleHRNZW51Q29udGV4
dChjb25zdCBDb250ZXh0TWVudUNvbnRleHQmIGNvbnRleHQpIHsgbV9jb250ZXh0ID0gY29udGV4
dDsgfQogICAgIGNvbnN0IENvbnRleHRNZW51Q29udGV4dCYgY29udGV4dCgpIGNvbnN0IHsgcmV0
dXJuIG1fY29udGV4dDsgfQpJbmRleDogU291cmNlL1dlYkNvcmUvcGFnZS9ET01XaW5kb3cuaAo9
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09Ci0tLSBTb3VyY2UvV2ViQ29yZS9wYWdlL0RPTVdpbmRvdy5oCShyZXZpc2lvbiAx
NzI4MDgpCisrKyBTb3VyY2UvV2ViQ29yZS9wYWdlL0RPTVdpbmRvdy5oCSh3b3JraW5nIGNvcHkp
CkBAIC0xMjQsMTAgKzEyNCwxMCBAQCBuYW1lc3BhY2UgV2ViQ29yZSB7CiAKICAgICAgICAgUGFz
c1JlZlB0cjxNZWRpYVF1ZXJ5TGlzdD4gbWF0Y2hNZWRpYShjb25zdCBTdHJpbmcmKTsKIAotICAg
ICAgICB1bnNpZ25lZCBwZW5kaW5nVW5sb2FkRXZlbnRMaXN0ZW5lcnMoKSBjb25zdDsKKyAgICAg
ICAgV0VCQ09SRV9FWFBPUlQgdW5zaWduZWQgcGVuZGluZ1VubG9hZEV2ZW50TGlzdGVuZXJzKCkg
Y29uc3Q7CiAKLSAgICAgICAgc3RhdGljIGJvb2wgZGlzcGF0Y2hBbGxQZW5kaW5nQmVmb3JlVW5s
b2FkRXZlbnRzKCk7Ci0gICAgICAgIHN0YXRpYyB2b2lkIGRpc3BhdGNoQWxsUGVuZGluZ1VubG9h
ZEV2ZW50cygpOworICAgICAgICBXRUJDT1JFX0VYUE9SVCBzdGF0aWMgYm9vbCBkaXNwYXRjaEFs
bFBlbmRpbmdCZWZvcmVVbmxvYWRFdmVudHMoKTsKKyAgICAgICAgV0VCQ09SRV9FWFBPUlQgc3Rh
dGljIHZvaWQgZGlzcGF0Y2hBbGxQZW5kaW5nVW5sb2FkRXZlbnRzKCk7CiAKICAgICAgICAgc3Rh
dGljIEZsb2F0UmVjdCBhZGp1c3RXaW5kb3dSZWN0KFBhZ2UqLCBjb25zdCBGbG9hdFJlY3QmIHBl
bmRpbmdDaGFuZ2VzKTsKIApAQCAtMTYwLDExICsxNjAsMTEgQEAgbmFtZXNwYWNlIFdlYkNvcmUg
ewogCiAgICAgICAgIHZvaWQgZm9jdXMoU2NyaXB0RXhlY3V0aW9uQ29udGV4dCogPSAwKTsKICAg
ICAgICAgdm9pZCBibHVyKCk7Ci0gICAgICAgIHZvaWQgY2xvc2UoU2NyaXB0RXhlY3V0aW9uQ29u
dGV4dCogPSAwKTsKKyAgICAgICAgV0VCQ09SRV9FWFBPUlQgdm9pZCBjbG9zZShTY3JpcHRFeGVj
dXRpb25Db250ZXh0KiA9IDApOwogICAgICAgICB2b2lkIHByaW50KCk7CiAgICAgICAgIHZvaWQg
c3RvcCgpOwogCi0gICAgICAgIFBhc3NSZWZQdHI8RE9NV2luZG93PiBvcGVuKGNvbnN0IFN0cmlu
ZyYgdXJsU3RyaW5nLCBjb25zdCBBdG9taWNTdHJpbmcmIGZyYW1lTmFtZSwgY29uc3QgU3RyaW5n
JiB3aW5kb3dGZWF0dXJlc1N0cmluZywKKyAgICAgICAgV0VCQ09SRV9FWFBPUlQgUGFzc1JlZlB0
cjxET01XaW5kb3c+IG9wZW4oY29uc3QgU3RyaW5nJiB1cmxTdHJpbmcsIGNvbnN0IEF0b21pY1N0
cmluZyYgZnJhbWVOYW1lLCBjb25zdCBTdHJpbmcmIHdpbmRvd0ZlYXR1cmVzU3RyaW5nLAogICAg
ICAgICAgICAgRE9NV2luZG93JiBhY3RpdmVXaW5kb3csIERPTVdpbmRvdyYgZmlyc3RXaW5kb3cp
OwogCiAgICAgICAgIHZvaWQgc2hvd01vZGFsRGlhbG9nKGNvbnN0IFN0cmluZyYgdXJsU3RyaW5n
LCBjb25zdCBTdHJpbmcmIGRpYWxvZ0ZlYXR1cmVzU3RyaW5nLCBET01XaW5kb3cmIGFjdGl2ZVdp
bmRvdywgRE9NV2luZG93JiBmaXJzdFdpbmRvdywgc3RkOjpmdW5jdGlvbjx2b2lkIChET01XaW5k
b3cmKT4gcHJlcGFyZURpYWxvZ0Z1bmN0aW9uKTsKQEAgLTIxNiw3ICsyMTYsNyBAQCBuYW1lc3Bh
Y2UgV2ViQ29yZSB7CiAKICAgICAgICAgLy8gRE9NIExldmVsIDIgQWJzdHJhY3RWaWV3IEludGVy
ZmFjZQogCi0gICAgICAgIERvY3VtZW50KiBkb2N1bWVudCgpIGNvbnN0OworICAgICAgICBXRUJD
T1JFX0VYUE9SVCBEb2N1bWVudCogZG9jdW1lbnQoKSBjb25zdDsKIAogICAgICAgICAvLyBDU1NP
TSBWaWV3IE1vZHVsZQogCkluZGV4OiBTb3VyY2UvV2ViQ29yZS9wYWdlL0RPTVdpbmRvd0V4dGVu
c2lvbi5oCj09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT0KLS0tIFNvdXJjZS9XZWJDb3JlL3BhZ2UvRE9NV2luZG93RXh0ZW5z
aW9uLmgJKHJldmlzaW9uIDE3MjgwOCkKKysrIFNvdXJjZS9XZWJDb3JlL3BhZ2UvRE9NV2luZG93
RXh0ZW5zaW9uLmgJKHdvcmtpbmcgY29weSkKQEAgLTUzLDcgKzUzLDcgQEAgcHVibGljOgogICAg
IERPTVdyYXBwZXJXb3JsZCYgd29ybGQoKSBjb25zdCB7IHJldHVybiAqbV93b3JsZDsgfQogCiBw
cml2YXRlOgotICAgIERPTVdpbmRvd0V4dGVuc2lvbihGcmFtZSosIERPTVdyYXBwZXJXb3JsZCYp
OworICAgIFdFQkNPUkVfRVhQT1JUIERPTVdpbmRvd0V4dGVuc2lvbihGcmFtZSosIERPTVdyYXBw
ZXJXb3JsZCYpOwogCiAgICAgUmVmUHRyPERPTVdyYXBwZXJXb3JsZD4gbV93b3JsZDsKICAgICBS
ZWZQdHI8RnJhbWU+IG1fZGlzY29ubmVjdGVkRnJhbWU7CkluZGV4OiBTb3VyY2UvV2ViQ29yZS9w
YWdlL0RyYWdDb250cm9sbGVyLmgKPT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PQotLS0gU291cmNlL1dlYkNvcmUvcGFnZS9E
cmFnQ29udHJvbGxlci5oCShyZXZpc2lvbiAxNzI4MDgpCisrKyBTb3VyY2UvV2ViQ29yZS9wYWdl
L0RyYWdDb250cm9sbGVyLmgJKHdvcmtpbmcgY29weSkKQEAgLTU3LDEwICs1NywxMCBAQCBuYW1l
c3BhY2UgV2ViQ29yZSB7CiAKICAgICAgICAgRHJhZ0NsaWVudCYgY2xpZW50KCkgY29uc3QgeyBy
ZXR1cm4gbV9jbGllbnQ7IH0KIAotICAgICAgICBEcmFnT3BlcmF0aW9uIGRyYWdFbnRlcmVkKERy
YWdEYXRhJik7Ci0gICAgICAgIHZvaWQgZHJhZ0V4aXRlZChEcmFnRGF0YSYpOwotICAgICAgICBE
cmFnT3BlcmF0aW9uIGRyYWdVcGRhdGVkKERyYWdEYXRhJik7Ci0gICAgICAgIGJvb2wgcGVyZm9y
bURyYWdPcGVyYXRpb24oRHJhZ0RhdGEmKTsKKyAgICAgICAgV0VCQ09SRV9FWFBPUlQgRHJhZ09w
ZXJhdGlvbiBkcmFnRW50ZXJlZChEcmFnRGF0YSYpOworICAgICAgICBXRUJDT1JFX0VYUE9SVCB2
b2lkIGRyYWdFeGl0ZWQoRHJhZ0RhdGEmKTsKKyAgICAgICAgV0VCQ09SRV9FWFBPUlQgRHJhZ09w
ZXJhdGlvbiBkcmFnVXBkYXRlZChEcmFnRGF0YSYpOworICAgICAgICBXRUJDT1JFX0VYUE9SVCBi
b29sIHBlcmZvcm1EcmFnT3BlcmF0aW9uKERyYWdEYXRhJik7CiAKICAgICAgICAgYm9vbCBtb3Vz
ZUlzT3ZlckZpbGVJbnB1dCgpIGNvbnN0IHsgcmV0dXJuIG1fZmlsZUlucHV0RWxlbWVudFVuZGVy
TW91c2U7IH0KICAgICAgICAgdW5zaWduZWQgbnVtYmVyT2ZJdGVtc1RvQmVBY2NlcHRlZCgpIGNv
bnN0IHsgcmV0dXJuIG1fbnVtYmVyT2ZJdGVtc1RvQmVBY2NlcHRlZDsgfQpAQCAtODAsOSArODAs
OSBAQCBuYW1lc3BhY2UgV2ViQ29yZSB7CiAgICAgICAgIERyYWdTb3VyY2VBY3Rpb24gZGVsZWdh
dGVEcmFnU291cmNlQWN0aW9uKGNvbnN0IEludFBvaW50JiByb290Vmlld1BvaW50KTsKICAgICAg
ICAgCiAgICAgICAgIEVsZW1lbnQqIGRyYWdnYWJsZUVsZW1lbnQoY29uc3QgRnJhbWUqLCBFbGVt
ZW50KiBzdGFydCwgY29uc3QgSW50UG9pbnQmLCBEcmFnU3RhdGUmKSBjb25zdDsKLSAgICAgICAg
dm9pZCBkcmFnRW5kZWQoKTsKKyAgICAgICAgV0VCQ09SRV9FWFBPUlQgdm9pZCBkcmFnRW5kZWQo
KTsKICAgICAgICAgCi0gICAgICAgIHZvaWQgcGxhY2VEcmFnQ2FyZXQoY29uc3QgSW50UG9pbnQm
KTsKKyAgICAgICAgV0VCQ09SRV9FWFBPUlQgdm9pZCBwbGFjZURyYWdDYXJldChjb25zdCBJbnRQ
b2ludCYpOwogICAgICAgICAKICAgICAgICAgYm9vbCBzdGFydERyYWcoRnJhbWUmIHNyYywgY29u
c3QgRHJhZ1N0YXRlJiwgRHJhZ09wZXJhdGlvbiBzcmNPcCwgY29uc3QgUGxhdGZvcm1Nb3VzZUV2
ZW50JiBkcmFnRXZlbnQsIGNvbnN0IEludFBvaW50JiBkcmFnT3JpZ2luKTsKICAgICAgICAgc3Rh
dGljIGNvbnN0IEludFNpemUmIG1heERyYWdJbWFnZVNpemUoKTsKSW5kZXg6IFNvdXJjZS9XZWJD
b3JlL3BhZ2UvRXZlbnRIYW5kbGVyLmgKPT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PQotLS0gU291cmNlL1dlYkNvcmUvcGFn
ZS9FdmVudEhhbmRsZXIuaAkocmV2aXNpb24gMTcyODA4KQorKysgU291cmNlL1dlYkNvcmUvcGFn
ZS9FdmVudEhhbmRsZXIuaAkod29ya2luZyBjb3B5KQpAQCAtMTQ3LDE0ICsxNDcsMTQgQEAgcHVi
bGljOgogICAgIHZvaWQgZGlzcGF0Y2hGYWtlTW91c2VNb3ZlRXZlbnRTb29uKCk7CiAgICAgdm9p
ZCBkaXNwYXRjaEZha2VNb3VzZU1vdmVFdmVudFNvb25JblF1YWQoY29uc3QgRmxvYXRRdWFkJik7
CiAKLSAgICBIaXRUZXN0UmVzdWx0IGhpdFRlc3RSZXN1bHRBdFBvaW50KGNvbnN0IExheW91dFBv
aW50JiwKKyAgICBXRUJDT1JFX0VYUE9SVCBIaXRUZXN0UmVzdWx0IGhpdFRlc3RSZXN1bHRBdFBv
aW50KGNvbnN0IExheW91dFBvaW50JiwKICAgICAgICAgSGl0VGVzdFJlcXVlc3Q6OkhpdFRlc3RS
ZXF1ZXN0VHlwZSBoaXRUeXBlID0gSGl0VGVzdFJlcXVlc3Q6OlJlYWRPbmx5IHwgSGl0VGVzdFJl
cXVlc3Q6OkFjdGl2ZSB8IEhpdFRlc3RSZXF1ZXN0OjpEaXNhbGxvd1NoYWRvd0NvbnRlbnQsCiAg
ICAgICAgIGNvbnN0IExheW91dFNpemUmIHBhZGRpbmcgPSBMYXlvdXRTaXplKCkpOwogCiAgICAg
Ym9vbCBtb3VzZVByZXNzZWQoKSBjb25zdCB7IHJldHVybiBtX21vdXNlUHJlc3NlZDsgfQogICAg
IE5vZGUqIG1vdXNlUHJlc3NOb2RlKCkgY29uc3QgeyByZXR1cm4gbV9tb3VzZVByZXNzTm9kZS5n
ZXQoKTsgfQogCi0gICAgdm9pZCBzZXRDYXB0dXJpbmdNb3VzZUV2ZW50c0VsZW1lbnQoUGFzc1Jl
ZlB0cjxFbGVtZW50Pik7IC8vIEEgY2FsbGVyIGlzIHJlc3BvbnNpYmxlIGZvciByZXNldHRpbmcg
Y2FwdHVyaW5nIGVsZW1lbnQgdG8gMC4KKyAgICBXRUJDT1JFX0VYUE9SVCB2b2lkIHNldENhcHR1
cmluZ01vdXNlRXZlbnRzRWxlbWVudChQYXNzUmVmUHRyPEVsZW1lbnQ+KTsgLy8gQSBjYWxsZXIg
aXMgcmVzcG9uc2libGUgZm9yIHJlc2V0dGluZyBjYXB0dXJpbmcgZWxlbWVudCB0byAwLgogCiAj
aWYgRU5BQkxFKERSQUdfU1VQUE9SVCkKICAgICBib29sIHVwZGF0ZURyYWdBbmREcm9wKGNvbnN0
IFBsYXRmb3JtTW91c2VFdmVudCYsIERhdGFUcmFuc2ZlciopOwpAQCAtMTc4LDIyICsxNzgsMjIg
QEAgcHVibGljOgogICAgIHN0YXRpYyBGcmFtZSogc3ViZnJhbWVGb3JUYXJnZXROb2RlKE5vZGUq
KTsKICAgICBzdGF0aWMgRnJhbWUqIHN1YmZyYW1lRm9ySGl0VGVzdFJlc3VsdChjb25zdCBNb3Vz
ZUV2ZW50V2l0aEhpdFRlc3RSZXN1bHRzJik7CiAKLSAgICBib29sIHNjcm9sbE92ZXJmbG93KFNj
cm9sbERpcmVjdGlvbiwgU2Nyb2xsR3JhbnVsYXJpdHksIE5vZGUqIHN0YXJ0aW5nTm9kZSA9IDAp
OwotICAgIGJvb2wgc2Nyb2xsUmVjdXJzaXZlbHkoU2Nyb2xsRGlyZWN0aW9uLCBTY3JvbGxHcmFu
dWxhcml0eSwgTm9kZSogc3RhcnRpbmdOb2RlID0gMCk7Ci0gICAgYm9vbCBsb2dpY2FsU2Nyb2xs
UmVjdXJzaXZlbHkoU2Nyb2xsTG9naWNhbERpcmVjdGlvbiwgU2Nyb2xsR3JhbnVsYXJpdHksIE5v
ZGUqIHN0YXJ0aW5nTm9kZSA9IDApOworICAgIFdFQkNPUkVfRVhQT1JUIGJvb2wgc2Nyb2xsT3Zl
cmZsb3coU2Nyb2xsRGlyZWN0aW9uLCBTY3JvbGxHcmFudWxhcml0eSwgTm9kZSogc3RhcnRpbmdO
b2RlID0gMCk7CisgICAgV0VCQ09SRV9FWFBPUlQgYm9vbCBzY3JvbGxSZWN1cnNpdmVseShTY3Jv
bGxEaXJlY3Rpb24sIFNjcm9sbEdyYW51bGFyaXR5LCBOb2RlKiBzdGFydGluZ05vZGUgPSAwKTsK
KyAgICBXRUJDT1JFX0VYUE9SVCBib29sIGxvZ2ljYWxTY3JvbGxSZWN1cnNpdmVseShTY3JvbGxM
b2dpY2FsRGlyZWN0aW9uLCBTY3JvbGxHcmFudWxhcml0eSwgTm9kZSogc3RhcnRpbmdOb2RlID0g
MCk7CiAKICAgICBib29sIHRhYnNUb0xpbmtzKEtleWJvYXJkRXZlbnQqKSBjb25zdDsKICAgICBi
b29sIHRhYnNUb0FsbEZvcm1Db250cm9scyhLZXlib2FyZEV2ZW50KikgY29uc3Q7CiAKICAgICBi
b29sIG1vdXNlTW92ZWQoY29uc3QgUGxhdGZvcm1Nb3VzZUV2ZW50Jik7Ci0gICAgYm9vbCBwYXNz
TW91c2VNb3ZlZEV2ZW50VG9TY3JvbGxiYXJzKGNvbnN0IFBsYXRmb3JtTW91c2VFdmVudCYpOwor
ICAgIFdFQkNPUkVfRVhQT1JUIGJvb2wgcGFzc01vdXNlTW92ZWRFdmVudFRvU2Nyb2xsYmFycyhj
b25zdCBQbGF0Zm9ybU1vdXNlRXZlbnQmKTsKIAogICAgIHZvaWQgbG9zdE1vdXNlQ2FwdHVyZSgp
OwogCiAgICAgYm9vbCBoYW5kbGVNb3VzZVByZXNzRXZlbnQoY29uc3QgUGxhdGZvcm1Nb3VzZUV2
ZW50Jik7CiAgICAgYm9vbCBoYW5kbGVNb3VzZU1vdmVFdmVudChjb25zdCBQbGF0Zm9ybU1vdXNl
RXZlbnQmLCBIaXRUZXN0UmVzdWx0KiBob3ZlcmVkTm9kZSA9IDAsIGJvb2wgb25seVVwZGF0ZVNj
cm9sbGJhcnMgPSBmYWxzZSk7CiAgICAgYm9vbCBoYW5kbGVNb3VzZVJlbGVhc2VFdmVudChjb25z
dCBQbGF0Zm9ybU1vdXNlRXZlbnQmKTsKLSAgICBib29sIGhhbmRsZVdoZWVsRXZlbnQoY29uc3Qg
UGxhdGZvcm1XaGVlbEV2ZW50Jik7CisgICAgV0VCQ09SRV9FWFBPUlQgYm9vbCBoYW5kbGVXaGVl
bEV2ZW50KGNvbnN0IFBsYXRmb3JtV2hlZWxFdmVudCYpOwogICAgIHZvaWQgZGVmYXVsdFdoZWVs
RXZlbnRIYW5kbGVyKE5vZGUqLCBXaGVlbEV2ZW50Kik7CiAgICAgYm9vbCBoYW5kbGVQYXN0ZUds
b2JhbFNlbGVjdGlvbihjb25zdCBQbGF0Zm9ybU1vdXNlRXZlbnQmKTsKIApAQCAtMjIxLDcgKzIy
MSw3IEBAIHB1YmxpYzoKICNlbmRpZgogCiAjaWYgRU5BQkxFKENPTlRFWFRfTUVOVVMpCi0gICAg
Ym9vbCBzZW5kQ29udGV4dE1lbnVFdmVudChjb25zdCBQbGF0Zm9ybU1vdXNlRXZlbnQmKTsKKyAg
ICBXRUJDT1JFX0VYUE9SVCBib29sIHNlbmRDb250ZXh0TWVudUV2ZW50KGNvbnN0IFBsYXRmb3Jt
TW91c2VFdmVudCYpOwogICAgIGJvb2wgc2VuZENvbnRleHRNZW51RXZlbnRGb3JLZXkoKTsKICNl
bmRpZgogCkBAIC0yMzAsNDEgKzIzMCw0MSBAQCBwdWJsaWM6CiAgICAgYm9vbCBuZWVkc0tleWJv
YXJkRXZlbnREaXNhbWJpZ3VhdGlvblF1aXJrcygpIGNvbnN0OwogCiAgICAgc3RhdGljIHVuc2ln
bmVkIGFjY2Vzc0tleU1vZGlmaWVycygpOwotICAgIGJvb2wgaGFuZGxlQWNjZXNzS2V5KGNvbnN0
IFBsYXRmb3JtS2V5Ym9hcmRFdmVudCYpOwotICAgIGJvb2wga2V5RXZlbnQoY29uc3QgUGxhdGZv
cm1LZXlib2FyZEV2ZW50Jik7CisgICAgV0VCQ09SRV9FWFBPUlQgYm9vbCBoYW5kbGVBY2Nlc3NL
ZXkoY29uc3QgUGxhdGZvcm1LZXlib2FyZEV2ZW50Jik7CisgICAgV0VCQ09SRV9FWFBPUlQgYm9v
bCBrZXlFdmVudChjb25zdCBQbGF0Zm9ybUtleWJvYXJkRXZlbnQmKTsKICAgICB2b2lkIGRlZmF1
bHRLZXlib2FyZEV2ZW50SGFuZGxlcihLZXlib2FyZEV2ZW50Kik7CiAKLSAgICB2b2lkIGhhbmRs
ZUtleWJvYXJkU2VsZWN0aW9uTW92ZW1lbnRGb3JBY2Nlc3NpYmlsaXR5KEtleWJvYXJkRXZlbnQq
KTsKKyAgICBXRUJDT1JFX0VYUE9SVCB2b2lkIGhhbmRsZUtleWJvYXJkU2VsZWN0aW9uTW92ZW1l
bnRGb3JBY2Nlc3NpYmlsaXR5KEtleWJvYXJkRXZlbnQqKTsKIAogICAgIGJvb2wgaGFuZGxlVGV4
dElucHV0RXZlbnQoY29uc3QgU3RyaW5nJiB0ZXh0LCBFdmVudCogdW5kZXJseWluZ0V2ZW50ID0g
MCwgVGV4dEV2ZW50SW5wdXRUeXBlID0gVGV4dEV2ZW50SW5wdXRLZXlib2FyZCk7CiAgICAgdm9p
ZCBkZWZhdWx0VGV4dElucHV0RXZlbnRIYW5kbGVyKFRleHRFdmVudCopOwogCiAjaWYgRU5BQkxF
KERSQUdfU1VQUE9SVCkKLSAgICBib29sIGV2ZW50TWF5U3RhcnREcmFnKGNvbnN0IFBsYXRmb3Jt
TW91c2VFdmVudCYpIGNvbnN0OworICAgIFdFQkNPUkVfRVhQT1JUIGJvb2wgZXZlbnRNYXlTdGFy
dERyYWcoY29uc3QgUGxhdGZvcm1Nb3VzZUV2ZW50JikgY29uc3Q7CiAgICAgCi0gICAgdm9pZCBk
cmFnU291cmNlRW5kZWRBdChjb25zdCBQbGF0Zm9ybU1vdXNlRXZlbnQmLCBEcmFnT3BlcmF0aW9u
KTsKKyAgICBXRUJDT1JFX0VYUE9SVCB2b2lkIGRyYWdTb3VyY2VFbmRlZEF0KGNvbnN0IFBsYXRm
b3JtTW91c2VFdmVudCYsIERyYWdPcGVyYXRpb24pOwogI2VuZGlmCiAKICAgICB2b2lkIGZvY3Vz
RG9jdW1lbnRWaWV3KCk7CiAKICAgICB2b2lkIGNhcHNMb2NrU3RhdGVNYXlIYXZlQ2hhbmdlZCgp
OyAvLyBPbmx5IGNhbGxlZCBieSBGcmFtZVNlbGVjdGlvbgogICAgIAotICAgIHZvaWQgc2VuZFNj
cm9sbEV2ZW50KCk7IC8vIERpdHRvCisgICAgV0VCQ09SRV9FWFBPUlQgdm9pZCBzZW5kU2Nyb2xs
RXZlbnQoKTsgLy8gRGl0dG8KIAogI2lmIFBMQVRGT1JNKENPQ09BKSAmJiBkZWZpbmVkKF9fT0JK
Q19fKQogI2lmICFQTEFURk9STShJT1MpCi0gICAgdm9pZCBtb3VzZURvd24oTlNFdmVudCAqKTsK
LSAgICB2b2lkIG1vdXNlRHJhZ2dlZChOU0V2ZW50ICopOwotICAgIHZvaWQgbW91c2VVcChOU0V2
ZW50ICopOwotICAgIHZvaWQgbW91c2VNb3ZlZChOU0V2ZW50ICopOwotICAgIGJvb2wga2V5RXZl
bnQoTlNFdmVudCAqKTsKLSAgICBib29sIHdoZWVsRXZlbnQoTlNFdmVudCAqKTsKKyAgICBXRUJD
T1JFX0VYUE9SVCB2b2lkIG1vdXNlRG93bihOU0V2ZW50ICopOworICAgIFdFQkNPUkVfRVhQT1JU
IHZvaWQgbW91c2VEcmFnZ2VkKE5TRXZlbnQgKik7CisgICAgV0VCQ09SRV9FWFBPUlQgdm9pZCBt
b3VzZVVwKE5TRXZlbnQgKik7CisgICAgV0VCQ09SRV9FWFBPUlQgdm9pZCBtb3VzZU1vdmVkKE5T
RXZlbnQgKik7CisgICAgV0VCQ09SRV9FWFBPUlQgYm9vbCBrZXlFdmVudChOU0V2ZW50ICopOwor
ICAgIFdFQkNPUkVfRVhQT1JUIGJvb2wgd2hlZWxFdmVudChOU0V2ZW50ICopOwogI2Vsc2UKLSAg
ICB2b2lkIG1vdXNlRG93bihXZWJFdmVudCAqKTsKLSAgICB2b2lkIG1vdXNlVXAoV2ViRXZlbnQg
Kik7Ci0gICAgdm9pZCBtb3VzZU1vdmVkKFdlYkV2ZW50ICopOwotICAgIGJvb2wga2V5RXZlbnQo
V2ViRXZlbnQgKik7Ci0gICAgYm9vbCB3aGVlbEV2ZW50KFdlYkV2ZW50ICopOworICAgIFdFQkNP
UkVfRVhQT1JUIHZvaWQgbW91c2VEb3duKFdlYkV2ZW50ICopOworICAgIFdFQkNPUkVfRVhQT1JU
IHZvaWQgbW91c2VVcChXZWJFdmVudCAqKTsKKyAgICBXRUJDT1JFX0VYUE9SVCB2b2lkIG1vdXNl
TW92ZWQoV2ViRXZlbnQgKik7CisgICAgV0VCQ09SRV9FWFBPUlQgYm9vbCBrZXlFdmVudChXZWJF
dmVudCAqKTsKKyAgICBXRUJDT1JFX0VYUE9SVCBib29sIHdoZWVsRXZlbnQoV2ViRXZlbnQgKik7
CiAjZW5kaWYKIAogI2lmIEVOQUJMRShJT1NfVE9VQ0hfRVZFTlRTKQpAQCAtMjcyLDE1ICsyNzIs
MTUgQEAgcHVibGljOgogI2VuZGlmCiAKICNpZiAhUExBVEZPUk0oSU9TKQotICAgIHZvaWQgcGFz
c01vdXNlTW92ZWRFdmVudFRvU2Nyb2xsYmFycyhOU0V2ZW50ICopOworICAgIFdFQkNPUkVfRVhQ
T1JUIHZvaWQgcGFzc01vdXNlTW92ZWRFdmVudFRvU2Nyb2xsYmFycyhOU0V2ZW50ICopOwogCi0g
ICAgdm9pZCBzZW5kRmFrZUV2ZW50c0FmdGVyV2lkZ2V0VHJhY2tpbmcoTlNFdmVudCAqaW5pdGlh
dGluZ0V2ZW50KTsKKyAgICBXRUJDT1JFX0VYUE9SVCB2b2lkIHNlbmRGYWtlRXZlbnRzQWZ0ZXJX
aWRnZXRUcmFja2luZyhOU0V2ZW50ICppbml0aWF0aW5nRXZlbnQpOwogI2VuZGlmCiAKICNpZiAh
UExBVEZPUk0oSU9TKQogICAgIHZvaWQgc2V0QWN0aXZhdGlvbkV2ZW50TnVtYmVyKGludCBudW0p
IHsgbV9hY3RpdmF0aW9uRXZlbnROdW1iZXIgPSBudW07IH0KIAotICAgIHN0YXRpYyBOU0V2ZW50
ICpjdXJyZW50TlNFdmVudCgpOworICAgIFdFQkNPUkVfRVhQT1JUIHN0YXRpYyBOU0V2ZW50ICpj
dXJyZW50TlNFdmVudCgpOwogI2Vsc2UKICAgICBzdGF0aWMgV2ViRXZlbnQgKmN1cnJlbnRFdmVu
dCgpOwogI2VuZGlmIC8vICFQTEFURk9STShJT1MpCkBAIC0yOTEsNyArMjkxLDcgQEAgcHVibGlj
OgogI2VuZGlmCiAKICNpZiBFTkFCTEUoVE9VQ0hfRVZFTlRTKQotICAgIGJvb2wgaGFuZGxlVG91
Y2hFdmVudChjb25zdCBQbGF0Zm9ybVRvdWNoRXZlbnQmKTsKKyAgICBXRUJDT1JFX0VYUE9SVCBi
b29sIGhhbmRsZVRvdWNoRXZlbnQoY29uc3QgUGxhdGZvcm1Ub3VjaEV2ZW50Jik7CiAjZW5kaWYK
IAogICAgIGJvb2wgdXNlSGFuZEN1cnNvcihOb2RlKiwgYm9vbCBpc092ZXJMaW5rLCBib29sIHNo
aWZ0S2V5KTsKQEAgLTMxNSwxNCArMzE1LDE0IEBAIHByaXZhdGU6CiAKICAgICBib29sIGhhbmRs
ZU1vdXNlRG91YmxlQ2xpY2tFdmVudChjb25zdCBQbGF0Zm9ybU1vdXNlRXZlbnQmKTsKIAotICAg
IGJvb2wgaGFuZGxlTW91c2VQcmVzc0V2ZW50KGNvbnN0IE1vdXNlRXZlbnRXaXRoSGl0VGVzdFJl
c3VsdHMmKTsKKyAgICBXRUJDT1JFX0VYUE9SVCBib29sIGhhbmRsZU1vdXNlUHJlc3NFdmVudChj
b25zdCBNb3VzZUV2ZW50V2l0aEhpdFRlc3RSZXN1bHRzJik7CiAgICAgYm9vbCBoYW5kbGVNb3Vz
ZVByZXNzRXZlbnRTaW5nbGVDbGljayhjb25zdCBNb3VzZUV2ZW50V2l0aEhpdFRlc3RSZXN1bHRz
Jik7CiAgICAgYm9vbCBoYW5kbGVNb3VzZVByZXNzRXZlbnREb3VibGVDbGljayhjb25zdCBNb3Vz
ZUV2ZW50V2l0aEhpdFRlc3RSZXN1bHRzJik7CiAgICAgYm9vbCBoYW5kbGVNb3VzZVByZXNzRXZl
bnRUcmlwbGVDbGljayhjb25zdCBNb3VzZUV2ZW50V2l0aEhpdFRlc3RSZXN1bHRzJik7CiAjaWYg
RU5BQkxFKERSQUdfU1VQUE9SVCkKICAgICBib29sIGhhbmRsZU1vdXNlRHJhZ2dlZEV2ZW50KGNv
bnN0IE1vdXNlRXZlbnRXaXRoSGl0VGVzdFJlc3VsdHMmKTsKICNlbmRpZgotICAgIGJvb2wgaGFu
ZGxlTW91c2VSZWxlYXNlRXZlbnQoY29uc3QgTW91c2VFdmVudFdpdGhIaXRUZXN0UmVzdWx0cyYp
OworICAgIFdFQkNPUkVfRVhQT1JUIGJvb2wgaGFuZGxlTW91c2VSZWxlYXNlRXZlbnQoY29uc3Qg
TW91c2VFdmVudFdpdGhIaXRUZXN0UmVzdWx0cyYpOwogCiAgICAgT3B0aW9uYWxDdXJzb3Igc2Vs
ZWN0Q3Vyc29yKGNvbnN0IEhpdFRlc3RSZXN1bHQmLCBib29sIHNoaWZ0S2V5KTsKIApJbmRleDog
U291cmNlL1dlYkNvcmUvcGFnZS9hbmltYXRpb24vQW5pbWF0aW9uQ29udHJvbGxlci5oCj09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT0KLS0tIFNvdXJjZS9XZWJDb3JlL3BhZ2UvYW5pbWF0aW9uL0FuaW1hdGlvbkNvbnRyb2xs
ZXIuaAkocmV2aXNpb24gMTcyODA4KQorKysgU291cmNlL1dlYkNvcmUvcGFnZS9hbmltYXRpb24v
QW5pbWF0aW9uQ29udHJvbGxlci5oCSh3b3JraW5nIGNvcHkpCkBAIC01NCwxNiArNTQsMTYgQEAg
cHVibGljOgogICAgIC8vIFRoaXMgaXMgY2FsbGVkIHdoZW4gYW4gYWNjZWxlcmF0ZWQgYW5pbWF0
aW9uIG9yIHRyYW5zaXRpb24gaGFzIGFjdHVhbGx5IHN0YXJ0ZWQgdG8gYW5pbWF0ZS4KICAgICB2
b2lkIG5vdGlmeUFuaW1hdGlvblN0YXJ0ZWQoUmVuZGVyRWxlbWVudCosIGRvdWJsZSBzdGFydFRp
bWUpOwogCi0gICAgYm9vbCBwYXVzZUFuaW1hdGlvbkF0VGltZShSZW5kZXJFbGVtZW50KiwgY29u
c3QgQXRvbWljU3RyaW5nJiBuYW1lLCBkb3VibGUgdCk7IC8vIFRvIGJlIHVzZWQgb25seSBmb3Ig
dGVzdGluZwotICAgIGJvb2wgcGF1c2VUcmFuc2l0aW9uQXRUaW1lKFJlbmRlckVsZW1lbnQqLCBj
b25zdCBTdHJpbmcmIHByb3BlcnR5LCBkb3VibGUgdCk7IC8vIFRvIGJlIHVzZWQgb25seSBmb3Ig
dGVzdGluZwotICAgIHVuc2lnbmVkIG51bWJlck9mQWN0aXZlQW5pbWF0aW9ucyhEb2N1bWVudCop
IGNvbnN0OyAvLyBUbyBiZSB1c2VkIG9ubHkgZm9yIHRlc3RpbmcKKyAgICBXRUJDT1JFX0VYUE9S
VCBib29sIHBhdXNlQW5pbWF0aW9uQXRUaW1lKFJlbmRlckVsZW1lbnQqLCBjb25zdCBBdG9taWNT
dHJpbmcmIG5hbWUsIGRvdWJsZSB0KTsgLy8gVG8gYmUgdXNlZCBvbmx5IGZvciB0ZXN0aW5nCisg
ICAgV0VCQ09SRV9FWFBPUlQgYm9vbCBwYXVzZVRyYW5zaXRpb25BdFRpbWUoUmVuZGVyRWxlbWVu
dCosIGNvbnN0IFN0cmluZyYgcHJvcGVydHksIGRvdWJsZSB0KTsgLy8gVG8gYmUgdXNlZCBvbmx5
IGZvciB0ZXN0aW5nCisgICAgV0VCQ09SRV9FWFBPUlQgdW5zaWduZWQgbnVtYmVyT2ZBY3RpdmVB
bmltYXRpb25zKERvY3VtZW50KikgY29uc3Q7IC8vIFRvIGJlIHVzZWQgb25seSBmb3IgdGVzdGlu
ZwogICAgIAogICAgIGJvb2wgaXNSdW5uaW5nQW5pbWF0aW9uT25SZW5kZXJlcihSZW5kZXJFbGVt
ZW50KiwgQ1NTUHJvcGVydHlJRCwgQW5pbWF0aW9uQmFzZTo6UnVubmluZ1N0YXRlKSBjb25zdDsK
ICAgICBib29sIGlzUnVubmluZ0FjY2VsZXJhdGVkQW5pbWF0aW9uT25SZW5kZXJlcihSZW5kZXJF
bGVtZW50KiwgQ1NTUHJvcGVydHlJRCwgQW5pbWF0aW9uQmFzZTo6UnVubmluZ1N0YXRlKSBjb25z
dDsKIAotICAgIGJvb2wgaXNTdXNwZW5kZWQoKSBjb25zdDsKLSAgICB2b2lkIHN1c3BlbmRBbmlt
YXRpb25zKCk7Ci0gICAgdm9pZCByZXN1bWVBbmltYXRpb25zKCk7CisgICAgV0VCQ09SRV9FWFBP
UlQgYm9vbCBpc1N1c3BlbmRlZCgpIGNvbnN0OworICAgIFdFQkNPUkVfRVhQT1JUIHZvaWQgc3Vz
cGVuZEFuaW1hdGlvbnMoKTsKKyAgICBXRUJDT1JFX0VYUE9SVCB2b2lkIHJlc3VtZUFuaW1hdGlv
bnMoKTsKICNpZiBFTkFCTEUoUkVRVUVTVF9BTklNQVRJT05fRlJBTUUpCiAgICAgdm9pZCBzZXJ2
aWNlQW5pbWF0aW9ucygpOwogI2VuZGlmCkBAIC03NSw4ICs3NSw4IEBAIHB1YmxpYzoKICAgICB2
b2lkIGJlZ2luQW5pbWF0aW9uVXBkYXRlKCk7CiAgICAgdm9pZCBlbmRBbmltYXRpb25VcGRhdGUo
KTsKIAotICAgIGJvb2wgYWxsb3dzTmV3QW5pbWF0aW9uc1doaWxlU3VzcGVuZGVkKCkgY29uc3Q7
Ci0gICAgdm9pZCBzZXRBbGxvd3NOZXdBbmltYXRpb25zV2hpbGVTdXNwZW5kZWQoYm9vbCk7Cisg
ICAgV0VCQ09SRV9FWFBPUlQgYm9vbCBhbGxvd3NOZXdBbmltYXRpb25zV2hpbGVTdXNwZW5kZWQo
KSBjb25zdDsKKyAgICBXRUJDT1JFX0VYUE9SVCB2b2lkIHNldEFsbG93c05ld0FuaW1hdGlvbnNX
aGlsZVN1c3BlbmRlZChib29sKTsKICAgICAKICAgICBzdGF0aWMgYm9vbCBzdXBwb3J0c0FjY2Vs
ZXJhdGVkQW5pbWF0aW9uT2ZQcm9wZXJ0eShDU1NQcm9wZXJ0eUlEKTsKIApJbmRleDogU291cmNl
L1dlYkNvcmUvcGFnZS9zY3JvbGxpbmcvQXN5bmNTY3JvbGxpbmdDb29yZGluYXRvci5oCj09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT0KLS0tIFNvdXJjZS9XZWJDb3JlL3BhZ2Uvc2Nyb2xsaW5nL0FzeW5jU2Nyb2xsaW5nQ29v
cmRpbmF0b3IuaAkocmV2aXNpb24gMTcyODA4KQorKysgU291cmNlL1dlYkNvcmUvcGFnZS9zY3Jv
bGxpbmcvQXN5bmNTY3JvbGxpbmdDb29yZGluYXRvci5oCSh3b3JraW5nIGNvcHkpCkBAIC00OSwx
NiArNDksMTYgQEAgY2xhc3MgU2Nyb2xsaW5nU3RhdGVUcmVlOwogY2xhc3MgQXN5bmNTY3JvbGxp
bmdDb29yZGluYXRvciA6IHB1YmxpYyBTY3JvbGxpbmdDb29yZGluYXRvciB7CiBwdWJsaWM6CiAg
ICAgc3RhdGljIFBhc3NSZWZQdHI8QXN5bmNTY3JvbGxpbmdDb29yZGluYXRvcj4gY3JlYXRlKFBh
Z2UqKTsKLSAgICB2aXJ0dWFsIH5Bc3luY1Njcm9sbGluZ0Nvb3JkaW5hdG9yKCk7CisgICAgV0VC
Q09SRV9FWFBPUlQgdmlydHVhbCB+QXN5bmNTY3JvbGxpbmdDb29yZGluYXRvcigpOwogCiAgICAg
U2Nyb2xsaW5nVHJlZSogc2Nyb2xsaW5nVHJlZSgpIGNvbnN0IHsgcmV0dXJuIG1fc2Nyb2xsaW5n
VHJlZS5nZXQoKTsgfQogCiAgICAgdm9pZCBzY3JvbGxpbmdTdGF0ZVRyZWVQcm9wZXJ0aWVzQ2hh
bmdlZCgpOwogCi0gICAgdm9pZCBzY2hlZHVsZVVwZGF0ZVNjcm9sbFBvc2l0aW9uQWZ0ZXJBc3lu
Y1Njcm9sbChTY3JvbGxpbmdOb2RlSUQsIGNvbnN0IEZsb2F0UG9pbnQmLCBib29sIHByb2dyYW1t
YXRpY1Njcm9sbCwgU2V0T3JTeW5jU2Nyb2xsaW5nTGF5ZXJQb3NpdGlvbik7CisgICAgV0VCQ09S
RV9FWFBPUlQgdm9pZCBzY2hlZHVsZVVwZGF0ZVNjcm9sbFBvc2l0aW9uQWZ0ZXJBc3luY1Njcm9s
bChTY3JvbGxpbmdOb2RlSUQsIGNvbnN0IEZsb2F0UG9pbnQmLCBib29sIHByb2dyYW1tYXRpY1Nj
cm9sbCwgU2V0T3JTeW5jU2Nyb2xsaW5nTGF5ZXJQb3NpdGlvbik7CiAKIHByb3RlY3RlZDoKLSAg
ICBBc3luY1Njcm9sbGluZ0Nvb3JkaW5hdG9yKFBhZ2UqKTsKKyAgICBXRUJDT1JFX0VYUE9SVCBB
c3luY1Njcm9sbGluZ0Nvb3JkaW5hdG9yKFBhZ2UqKTsKIAogICAgIHZvaWQgc2V0U2Nyb2xsaW5n
VHJlZShQYXNzUmVmUHRyPFNjcm9sbGluZ1RyZWU+IHNjcm9sbGluZ1RyZWUpIHsgbV9zY3JvbGxp
bmdUcmVlID0gc2Nyb2xsaW5nVHJlZTsgfQogCkBAIC02OCw3ICs2OCw3IEBAIHByb3RlY3RlZDoK
IAogICAgIHZvaWQgdXBkYXRlU2Nyb2xsUG9zaXRpb25BZnRlckFzeW5jU2Nyb2xsKFNjcm9sbGlu
Z05vZGVJRCwgY29uc3QgRmxvYXRQb2ludCYsIGJvb2wgcHJvZ3JhbW1hdGljU2Nyb2xsLCBTZXRP
clN5bmNTY3JvbGxpbmdMYXllclBvc2l0aW9uKTsKIAotICAgIHZpcnR1YWwgU3RyaW5nIHNjcm9s
bGluZ1N0YXRlVHJlZUFzVGV4dCgpIGNvbnN0IG92ZXJyaWRlOworICAgIFdFQkNPUkVfRVhQT1JU
IHZpcnR1YWwgU3RyaW5nIHNjcm9sbGluZ1N0YXRlVHJlZUFzVGV4dCgpIGNvbnN0IG92ZXJyaWRl
OwogCiBwcml2YXRlOgogICAgIHZpcnR1YWwgYm9vbCBpc0FzeW5jU2Nyb2xsaW5nQ29vcmRpbmF0
b3IoKSBjb25zdCBvdmVycmlkZSB7IHJldHVybiB0cnVlOyB9CkBAIC03NiwyOSArNzYsMjkgQEAg
cHJpdmF0ZToKICAgICB2aXJ0dWFsIGJvb2wgc3VwcG9ydHNGaXhlZFBvc2l0aW9uTGF5ZXJzKCkg
Y29uc3Qgb3ZlcnJpZGUgeyByZXR1cm4gdHJ1ZTsgfQogICAgIHZpcnR1YWwgYm9vbCBoYXNWaXNp
YmxlU2xvd1JlcGFpbnRWaWV3cG9ydENvbnN0cmFpbmVkT2JqZWN0cyhGcmFtZVZpZXcqKSBjb25z
dCBvdmVycmlkZSB7IHJldHVybiBmYWxzZTsgfQogCi0gICAgdmlydHVhbCB2b2lkIGZyYW1lVmll
d0xheW91dFVwZGF0ZWQoRnJhbWVWaWV3Kikgb3ZlcnJpZGU7Ci0gICAgdmlydHVhbCB2b2lkIGZy
YW1lVmlld1Jvb3RMYXllckRpZENoYW5nZShGcmFtZVZpZXcqKSBvdmVycmlkZTsKLSAgICB2aXJ0
dWFsIHZvaWQgZnJhbWVWaWV3Tm9uRmFzdFNjcm9sbGFibGVSZWdpb25DaGFuZ2VkKEZyYW1lVmll
dyopIG92ZXJyaWRlOwotCi0gICAgdmlydHVhbCBib29sIHJlcXVlc3RTY3JvbGxQb3NpdGlvblVw
ZGF0ZShGcmFtZVZpZXcqLCBjb25zdCBJbnRQb2ludCYpIG92ZXJyaWRlOwotCi0gICAgdmlydHVh
bCBTY3JvbGxpbmdOb2RlSUQgYXR0YWNoVG9TdGF0ZVRyZWUoU2Nyb2xsaW5nTm9kZVR5cGUsIFNj
cm9sbGluZ05vZGVJRCBuZXdOb2RlSUQsIFNjcm9sbGluZ05vZGVJRCBwYXJlbnRJRCkgb3ZlcnJp
ZGU7Ci0gICAgdmlydHVhbCB2b2lkIGRldGFjaEZyb21TdGF0ZVRyZWUoU2Nyb2xsaW5nTm9kZUlE
KSBvdmVycmlkZTsKLSAgICB2aXJ0dWFsIHZvaWQgY2xlYXJTdGF0ZVRyZWUoKSBvdmVycmlkZTsK
KyAgICBXRUJDT1JFX0VYUE9SVCB2aXJ0dWFsIHZvaWQgZnJhbWVWaWV3TGF5b3V0VXBkYXRlZChG
cmFtZVZpZXcqKSBvdmVycmlkZTsKKyAgICBXRUJDT1JFX0VYUE9SVCB2aXJ0dWFsIHZvaWQgZnJh
bWVWaWV3Um9vdExheWVyRGlkQ2hhbmdlKEZyYW1lVmlldyopIG92ZXJyaWRlOworICAgIFdFQkNP
UkVfRVhQT1JUIHZpcnR1YWwgdm9pZCBmcmFtZVZpZXdOb25GYXN0U2Nyb2xsYWJsZVJlZ2lvbkNo
YW5nZWQoRnJhbWVWaWV3Kikgb3ZlcnJpZGU7CisKKyAgICBXRUJDT1JFX0VYUE9SVCB2aXJ0dWFs
IGJvb2wgcmVxdWVzdFNjcm9sbFBvc2l0aW9uVXBkYXRlKEZyYW1lVmlldyosIGNvbnN0IEludFBv
aW50Jikgb3ZlcnJpZGU7CisKKyAgICBXRUJDT1JFX0VYUE9SVCB2aXJ0dWFsIFNjcm9sbGluZ05v
ZGVJRCBhdHRhY2hUb1N0YXRlVHJlZShTY3JvbGxpbmdOb2RlVHlwZSwgU2Nyb2xsaW5nTm9kZUlE
IG5ld05vZGVJRCwgU2Nyb2xsaW5nTm9kZUlEIHBhcmVudElEKSBvdmVycmlkZTsKKyAgICBXRUJD
T1JFX0VYUE9SVCB2aXJ0dWFsIHZvaWQgZGV0YWNoRnJvbVN0YXRlVHJlZShTY3JvbGxpbmdOb2Rl
SUQpIG92ZXJyaWRlOworICAgIFdFQkNPUkVfRVhQT1JUIHZpcnR1YWwgdm9pZCBjbGVhclN0YXRl
VHJlZSgpIG92ZXJyaWRlOwogICAgIAotICAgIHZpcnR1YWwgdm9pZCB1cGRhdGVWaWV3cG9ydENv
bnN0cmFpbmVkTm9kZShTY3JvbGxpbmdOb2RlSUQsIGNvbnN0IFZpZXdwb3J0Q29uc3RyYWludHMm
LCBHcmFwaGljc0xheWVyKikgb3ZlcnJpZGU7CisgICAgV0VCQ09SRV9FWFBPUlQgdmlydHVhbCB2
b2lkIHVwZGF0ZVZpZXdwb3J0Q29uc3RyYWluZWROb2RlKFNjcm9sbGluZ05vZGVJRCwgY29uc3Qg
Vmlld3BvcnRDb25zdHJhaW50cyYsIEdyYXBoaWNzTGF5ZXIqKSBvdmVycmlkZTsKICAgICAKLSAg
ICB2aXJ0dWFsIHZvaWQgdXBkYXRlRnJhbWVTY3JvbGxpbmdOb2RlKFNjcm9sbGluZ05vZGVJRCwg
R3JhcGhpY3NMYXllciogc2Nyb2xsTGF5ZXIsIEdyYXBoaWNzTGF5ZXIqIHNjcm9sbGVkQ29udGVu
dHNMYXllciwgR3JhcGhpY3NMYXllciogY291bnRlclNjcm9sbGluZ0xheWVyLCBHcmFwaGljc0xh
eWVyKiBpbnNldENsaXBMYXllciwgY29uc3QgU2Nyb2xsaW5nR2VvbWV0cnkqID0gbnVsbHB0cik7
Ci0gICAgdmlydHVhbCB2b2lkIHVwZGF0ZU92ZXJmbG93U2Nyb2xsaW5nTm9kZShTY3JvbGxpbmdO
b2RlSUQsIEdyYXBoaWNzTGF5ZXIqIHNjcm9sbExheWVyLCBHcmFwaGljc0xheWVyKiBzY3JvbGxl
ZENvbnRlbnRzTGF5ZXIsIGNvbnN0IFNjcm9sbGluZ0dlb21ldHJ5KiA9IG51bGxwdHIpOworICAg
IFdFQkNPUkVfRVhQT1JUIHZpcnR1YWwgdm9pZCB1cGRhdGVGcmFtZVNjcm9sbGluZ05vZGUoU2Ny
b2xsaW5nTm9kZUlELCBHcmFwaGljc0xheWVyKiBzY3JvbGxMYXllciwgR3JhcGhpY3NMYXllciog
c2Nyb2xsZWRDb250ZW50c0xheWVyLCBHcmFwaGljc0xheWVyKiBjb3VudGVyU2Nyb2xsaW5nTGF5
ZXIsIEdyYXBoaWNzTGF5ZXIqIGluc2V0Q2xpcExheWVyLCBjb25zdCBTY3JvbGxpbmdHZW9tZXRy
eSogPSBudWxscHRyKTsKKyAgICBXRUJDT1JFX0VYUE9SVCB2aXJ0dWFsIHZvaWQgdXBkYXRlT3Zl
cmZsb3dTY3JvbGxpbmdOb2RlKFNjcm9sbGluZ05vZGVJRCwgR3JhcGhpY3NMYXllciogc2Nyb2xs
TGF5ZXIsIEdyYXBoaWNzTGF5ZXIqIHNjcm9sbGVkQ29udGVudHNMYXllciwgY29uc3QgU2Nyb2xs
aW5nR2VvbWV0cnkqID0gbnVsbHB0cik7CiAgICAgCiAgICAgdmlydHVhbCBib29sIGlzUnViYmVy
QmFuZEluUHJvZ3Jlc3MoKSBjb25zdCBvdmVycmlkZTsKICAgICB2aXJ0dWFsIHZvaWQgc2V0U2Ny
b2xsUGlubmluZ0JlaGF2aW9yKFNjcm9sbFBpbm5pbmdCZWhhdmlvcikgb3ZlcnJpZGU7CiAKLSAg
ICB2aXJ0dWFsIHZvaWQgc3luY0NoaWxkUG9zaXRpb25zKGNvbnN0IExheW91dFJlY3QmIHZpZXdw
b3J0UmVjdCkgb3ZlcnJpZGU7Ci0gICAgdmlydHVhbCB2b2lkIHNjcm9sbGFibGVBcmVhU2Nyb2xs
YmFyTGF5ZXJEaWRDaGFuZ2UoU2Nyb2xsYWJsZUFyZWEqLCBTY3JvbGxiYXJPcmllbnRhdGlvbikg
b3ZlcnJpZGU7CisgICAgV0VCQ09SRV9FWFBPUlQgdmlydHVhbCB2b2lkIHN5bmNDaGlsZFBvc2l0
aW9ucyhjb25zdCBMYXlvdXRSZWN0JiB2aWV3cG9ydFJlY3QpIG92ZXJyaWRlOworICAgIFdFQkNP
UkVfRVhQT1JUIHZpcnR1YWwgdm9pZCBzY3JvbGxhYmxlQXJlYVNjcm9sbGJhckxheWVyRGlkQ2hh
bmdlKFNjcm9sbGFibGVBcmVhKiwgU2Nyb2xsYmFyT3JpZW50YXRpb24pIG92ZXJyaWRlOwogCi0g
ICAgdmlydHVhbCB2b2lkIHJlY29tcHV0ZVdoZWVsRXZlbnRIYW5kbGVyQ291bnRGb3JGcmFtZVZp
ZXcoRnJhbWVWaWV3Kikgb3ZlcnJpZGU7Ci0gICAgdmlydHVhbCB2b2lkIHNldFN5bmNocm9ub3Vz
U2Nyb2xsaW5nUmVhc29ucyhTeW5jaHJvbm91c1Njcm9sbGluZ1JlYXNvbnMpIG92ZXJyaWRlOwor
ICAgIFdFQkNPUkVfRVhQT1JUIHZpcnR1YWwgdm9pZCByZWNvbXB1dGVXaGVlbEV2ZW50SGFuZGxl
ckNvdW50Rm9yRnJhbWVWaWV3KEZyYW1lVmlldyopIG92ZXJyaWRlOworICAgIFdFQkNPUkVfRVhQ
T1JUIHZpcnR1YWwgdm9pZCBzZXRTeW5jaHJvbm91c1Njcm9sbGluZ1JlYXNvbnMoU3luY2hyb25v
dXNTY3JvbGxpbmdSZWFzb25zKSBvdmVycmlkZTsKIAogICAgIHZpcnR1YWwgdm9pZCBzY2hlZHVs
ZVRyZWVTdGF0ZUNvbW1pdCgpID0gMDsKIApJbmRleDogU291cmNlL1dlYkNvcmUvcGxhdGZvcm0v
Q2FsY3VsYXRpb25WYWx1ZS5oCj09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT0KLS0tIFNvdXJjZS9XZWJDb3JlL3BsYXRmb3Jt
L0NhbGN1bGF0aW9uVmFsdWUuaAkocmV2aXNpb24gMTcyODA4KQorKysgU291cmNlL1dlYkNvcmUv
cGxhdGZvcm0vQ2FsY3VsYXRpb25WYWx1ZS5oCSh3b3JraW5nIGNvcHkpCkBAIC0xMzYsNyArMTM2
LDcgQEAgcHJpdmF0ZToKIAogY2xhc3MgQ2FsY3VsYXRpb25WYWx1ZSA6IHB1YmxpYyBSZWZDb3Vu
dGVkPENhbGN1bGF0aW9uVmFsdWU+IHsKIHB1YmxpYzoKLSAgICBzdGF0aWMgUGFzc1JlZjxDYWxj
dWxhdGlvblZhbHVlPiBjcmVhdGUoc3RkOjp1bmlxdWVfcHRyPENhbGNFeHByZXNzaW9uTm9kZT4s
IENhbGN1bGF0aW9uUGVybWl0dGVkVmFsdWVSYW5nZSk7CisgICAgV0VCQ09SRV9FWFBPUlQgc3Rh
dGljIFBhc3NSZWY8Q2FsY3VsYXRpb25WYWx1ZT4gY3JlYXRlKHN0ZDo6dW5pcXVlX3B0cjxDYWxj
RXhwcmVzc2lvbk5vZGU+LCBDYWxjdWxhdGlvblBlcm1pdHRlZFZhbHVlUmFuZ2UpOwogICAgIGZs
b2F0IGV2YWx1YXRlKGZsb2F0IG1heFZhbHVlKSBjb25zdDsKIAogICAgIGJvb2wgc2hvdWxkQ2xh
bXBUb05vbk5lZ2F0aXZlKCkgY29uc3QgeyByZXR1cm4gbV9zaG91bGRDbGFtcFRvTm9uTmVnYXRp
dmU7IH0KSW5kZXg6IFNvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL0NvbnRlbnRGaWx0ZXIuaAo9PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09Ci0tLSBTb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9Db250ZW50RmlsdGVyLmgJKHJldmlz
aW9uIDE3MjgwOCkKKysrIFNvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL0NvbnRlbnRGaWx0ZXIuaAko
d29ya2luZyBjb3B5KQpAQCAtNjAsNyArNjAsNyBAQCBwdWJsaWM6CiAgICAgc3RhdGljIGJvb2wg
Y2FuSGFuZGxlUmVzcG9uc2UoY29uc3QgUmVzb3VyY2VSZXNwb25zZSYpOwogCiAgICAgZXhwbGlj
aXQgQ29udGVudEZpbHRlcihjb25zdCBSZXNvdXJjZVJlc3BvbnNlJik7Ci0gICAgfkNvbnRlbnRG
aWx0ZXIoKTsKKyAgICBXRUJDT1JFX0VYUE9SVCB+Q29udGVudEZpbHRlcigpOwogCiAgICAgdm9p
ZCBhZGREYXRhKGNvbnN0IGNoYXIqIGRhdGEsIGludCBsZW5ndGgpOwogICAgIHZvaWQgZmluaXNo
ZWRBZGRpbmdEYXRhKCk7CkBAIC02OSwxMyArNjksMTMgQEAgcHVibGljOgogICAgIGNvbnN0IGNo
YXIqIGdldFJlcGxhY2VtZW50RGF0YShpbnQmIGxlbmd0aCkgY29uc3Q7CiAKICNpZiBQTEFURk9S
TShDT0NPQSkKLSAgICBDb250ZW50RmlsdGVyKCk7Ci0gICAgdm9pZCBlbmNvZGUoTlNLZXllZEFy
Y2hpdmVyICopIGNvbnN0OwotICAgIHN0YXRpYyBib29sIGRlY29kZShOU0tleWVkVW5hcmNoaXZl
ciAqLCBDb250ZW50RmlsdGVyJik7CisgICAgV0VCQ09SRV9FWFBPUlQgQ29udGVudEZpbHRlcigp
OworICAgIFdFQkNPUkVfRVhQT1JUIHZvaWQgZW5jb2RlKE5TS2V5ZWRBcmNoaXZlciAqKSBjb25z
dDsKKyAgICBXRUJDT1JFX0VYUE9SVCBzdGF0aWMgYm9vbCBkZWNvZGUoTlNLZXllZFVuYXJjaGl2
ZXIgKiwgQ29udGVudEZpbHRlciYpOwogI2VuZGlmCiAKICNpZiBQTEFURk9STShJT1MpCi0gICAg
Ym9vbCBoYW5kbGVVbmJsb2NrUmVxdWVzdEFuZERpc3BhdGNoSWZTdWNjZXNzZnVsKGNvbnN0IFJl
c291cmNlUmVxdWVzdCYsIHN0ZDo6ZnVuY3Rpb248dm9pZCgpPik7CisgICAgV0VCQ09SRV9FWFBP
UlQgYm9vbCBoYW5kbGVVbmJsb2NrUmVxdWVzdEFuZERpc3BhdGNoSWZTdWNjZXNzZnVsKGNvbnN0
IFJlc291cmNlUmVxdWVzdCYsIHN0ZDo6ZnVuY3Rpb248dm9pZCgpPik7CiAjZW5kaWYKIAogcHJp
dmF0ZToKSW5kZXg6IFNvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL0NvbnRleHRNZW51LmgKPT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PQotLS0gU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vQ29udGV4dE1lbnUuaAkocmV2aXNpb24g
MTcyODA4KQorKysgU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vQ29udGV4dE1lbnUuaAkod29ya2lu
ZyBjb3B5KQpAQCAtNzcsOCArNzcsOCBAQCBuYW1lc3BhY2UgV2ViQ29yZSB7CiAKICAgICAgICAg
dW5zaWduZWQgaXRlbUNvdW50KCkgY29uc3Q7CiAKLSAgICAgICAgUGxhdGZvcm1NZW51RGVzY3Jp
cHRpb24gcGxhdGZvcm1EZXNjcmlwdGlvbigpIGNvbnN0OwotICAgICAgICB2b2lkIHNldFBsYXRm
b3JtRGVzY3JpcHRpb24oUGxhdGZvcm1NZW51RGVzY3JpcHRpb24pOworICAgICAgICBXRUJDT1JF
X0VYUE9SVCBQbGF0Zm9ybU1lbnVEZXNjcmlwdGlvbiBwbGF0Zm9ybURlc2NyaXB0aW9uKCkgY29u
c3Q7CisgICAgICAgIFdFQkNPUkVfRVhQT1JUIHZvaWQgc2V0UGxhdGZvcm1EZXNjcmlwdGlvbihQ
bGF0Zm9ybU1lbnVEZXNjcmlwdGlvbik7CiAKICAgICAgICAgUGxhdGZvcm1NZW51RGVzY3JpcHRp
b24gcmVsZWFzZVBsYXRmb3JtRGVzY3JpcHRpb24oKTsKICNlbmRpZiAvLyBVU0UoQ1JPU1NfUExB
VEZPUk1fQ09OVEVYVF9NRU5VUykKQEAgLTEwMSw3ICsxMDEsNyBAQCBuYW1lc3BhY2UgV2ViQ29y
ZSB7CiAgICAgfTsKIAogI2lmICFVU0UoQ1JPU1NfUExBVEZPUk1fQ09OVEVYVF9NRU5VUykKLVZl
Y3RvcjxDb250ZXh0TWVudUl0ZW0+IGNvbnRleHRNZW51SXRlbVZlY3RvcihQbGF0Zm9ybU1lbnVE
ZXNjcmlwdGlvbik7CitXRUJDT1JFX0VYUE9SVCBWZWN0b3I8Q29udGV4dE1lbnVJdGVtPiBjb250
ZXh0TWVudUl0ZW1WZWN0b3IoUGxhdGZvcm1NZW51RGVzY3JpcHRpb24pOwogUGxhdGZvcm1NZW51
RGVzY3JpcHRpb24gcGxhdGZvcm1NZW51RGVzY3JpcHRpb24oVmVjdG9yPENvbnRleHRNZW51SXRl
bT4mKTsKICNlbmRpZgogCkluZGV4OiBTb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9Db250ZXh0TWVu
dUl0ZW0uaAo9PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09Ci0tLSBTb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9Db250ZXh0TWVu
dUl0ZW0uaAkocmV2aXNpb24gMTcyODA4KQorKysgU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vQ29u
dGV4dE1lbnVJdGVtLmgJKHdvcmtpbmcgY29weSkKQEAgLTE4OCwyMiArMTg4LDIyIEBAIG5hbWVz
cGFjZSBXZWJDb3JlIHsKICAgICBjbGFzcyBDb250ZXh0TWVudUl0ZW0gewogICAgICAgICBXVEZf
TUFLRV9GQVNUX0FMTE9DQVRFRDsKICAgICBwdWJsaWM6Ci0gICAgICAgIENvbnRleHRNZW51SXRl
bShDb250ZXh0TWVudUl0ZW1UeXBlLCBDb250ZXh0TWVudUFjdGlvbiwgY29uc3QgU3RyaW5nJiwg
Q29udGV4dE1lbnUqIHN1Yk1lbnUgPSAwKTsKLSAgICAgICAgQ29udGV4dE1lbnVJdGVtKENvbnRl
eHRNZW51SXRlbVR5cGUsIENvbnRleHRNZW51QWN0aW9uLCBjb25zdCBTdHJpbmcmLCBib29sIGVu
YWJsZWQsIGJvb2wgY2hlY2tlZCk7CisgICAgICAgIFdFQkNPUkVfRVhQT1JUIENvbnRleHRNZW51
SXRlbShDb250ZXh0TWVudUl0ZW1UeXBlLCBDb250ZXh0TWVudUFjdGlvbiwgY29uc3QgU3RyaW5n
JiwgQ29udGV4dE1lbnUqIHN1Yk1lbnUgPSAwKTsKKyAgICAgICAgV0VCQ09SRV9FWFBPUlQgQ29u
dGV4dE1lbnVJdGVtKENvbnRleHRNZW51SXRlbVR5cGUsIENvbnRleHRNZW51QWN0aW9uLCBjb25z
dCBTdHJpbmcmLCBib29sIGVuYWJsZWQsIGJvb2wgY2hlY2tlZCk7CiAKLSAgICAgICAgfkNvbnRl
eHRNZW51SXRlbSgpOworICAgICAgICBXRUJDT1JFX0VYUE9SVCB+Q29udGV4dE1lbnVJdGVtKCk7
CiAKICAgICAgICAgdm9pZCBzZXRUeXBlKENvbnRleHRNZW51SXRlbVR5cGUpOwotICAgICAgICBD
b250ZXh0TWVudUl0ZW1UeXBlIHR5cGUoKSBjb25zdDsKKyAgICAgICAgV0VCQ09SRV9FWFBPUlQg
Q29udGV4dE1lbnVJdGVtVHlwZSB0eXBlKCkgY29uc3Q7CiAKICAgICAgICAgdm9pZCBzZXRBY3Rp
b24oQ29udGV4dE1lbnVBY3Rpb24pOwotICAgICAgICBDb250ZXh0TWVudUFjdGlvbiBhY3Rpb24o
KSBjb25zdDsKKyAgICAgICAgV0VCQ09SRV9FWFBPUlQgQ29udGV4dE1lbnVBY3Rpb24gYWN0aW9u
KCkgY29uc3Q7CiAKICAgICAgICAgdm9pZCBzZXRDaGVja2VkKGJvb2wgPSB0cnVlKTsKLSAgICAg
ICAgYm9vbCBjaGVja2VkKCkgY29uc3Q7CisgICAgICAgIFdFQkNPUkVfRVhQT1JUIGJvb2wgY2hl
Y2tlZCgpIGNvbnN0OwogCiAgICAgICAgIHZvaWQgc2V0RW5hYmxlZChib29sID0gdHJ1ZSk7Ci0g
ICAgICAgIGJvb2wgZW5hYmxlZCgpIGNvbnN0OworICAgICAgICBXRUJDT1JFX0VYUE9SVCBib29s
IGVuYWJsZWQoKSBjb25zdDsKIAogICAgICAgICB2b2lkIHNldFN1Yk1lbnUoQ29udGV4dE1lbnUq
KTsKIApAQCAtMjI1LDE2ICsyMjUsMTYgQEAgbmFtZXNwYWNlIFdlYkNvcmUgewogICAgICAgICBj
b25zdCBWZWN0b3I8Q29udGV4dE1lbnVJdGVtPiYgc3ViTWVudUl0ZW1zKCkgY29uc3QgeyByZXR1
cm4gbV9zdWJNZW51SXRlbXM7IH0KICNlbHNlCiAgICAgcHVibGljOgotICAgICAgICBleHBsaWNp
dCBDb250ZXh0TWVudUl0ZW0oUGxhdGZvcm1NZW51SXRlbURlc2NyaXB0aW9uKTsKKyAgICAgICAg
V0VCQ09SRV9FWFBPUlQgZXhwbGljaXQgQ29udGV4dE1lbnVJdGVtKFBsYXRmb3JtTWVudUl0ZW1E
ZXNjcmlwdGlvbik7CiAgICAgICAgIGV4cGxpY2l0IENvbnRleHRNZW51SXRlbShDb250ZXh0TWVu
dSogc3ViTWVudSA9IDApOwogICAgICAgICBDb250ZXh0TWVudUl0ZW0oQ29udGV4dE1lbnVBY3Rp
b24sIGNvbnN0IFN0cmluZyYsIGJvb2wgZW5hYmxlZCwgYm9vbCBjaGVja2VkLCBWZWN0b3I8Q29u
dGV4dE1lbnVJdGVtPiYgc3VibWVudUl0ZW1zKTsKIAotICAgICAgICBQbGF0Zm9ybU1lbnVJdGVt
RGVzY3JpcHRpb24gcmVsZWFzZVBsYXRmb3JtRGVzY3JpcHRpb24oKTsKKyAgICAgICAgV0VCQ09S
RV9FWFBPUlQgUGxhdGZvcm1NZW51SXRlbURlc2NyaXB0aW9uIHJlbGVhc2VQbGF0Zm9ybURlc2Ny
aXB0aW9uKCk7CiAKLSAgICAgICAgU3RyaW5nIHRpdGxlKCkgY29uc3Q7CisgICAgICAgIFdFQkNP
UkVfRVhQT1JUIFN0cmluZyB0aXRsZSgpIGNvbnN0OwogICAgICAgICB2b2lkIHNldFRpdGxlKGNv
bnN0IFN0cmluZyYpOwogCi0gICAgICAgIFBsYXRmb3JtTWVudURlc2NyaXB0aW9uIHBsYXRmb3Jt
U3ViTWVudSgpIGNvbnN0OworICAgICAgICBXRUJDT1JFX0VYUE9SVCBQbGF0Zm9ybU1lbnVEZXNj
cmlwdGlvbiBwbGF0Zm9ybVN1Yk1lbnUoKSBjb25zdDsKICAgICAgICAgdm9pZCBzZXRTdWJNZW51
KFZlY3RvcjxDb250ZXh0TWVudUl0ZW0+Jik7CiAKICNlbmRpZiAvLyBVU0UoQ1JPU1NfUExBVEZP
Uk1fQ09OVEVYVF9NRU5VUykKSW5kZXg6IFNvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL0Nyb3NzVGhy
ZWFkQ29waWVyLmgKPT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PQotLS0gU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vQ3Jvc3NU
aHJlYWRDb3BpZXIuaAkocmV2aXNpb24gMTcyODA4KQorKysgU291cmNlL1dlYkNvcmUvcGxhdGZv
cm0vQ3Jvc3NUaHJlYWRDb3BpZXIuaAkod29ya2luZyBjb3B5KQpAQCAtMTA3LDcgKzEwNyw3IEBA
IG5hbWVzcGFjZSBXZWJDb3JlIHsKICAgICAgICAgc3RhdGljX2Fzc2VydChzdGQ6OmlzX2NvbnZl
cnRpYmxlPFJlZkNvdW50ZWRUeXBlKiwgVGhyZWFkU2FmZVJlZkNvdW50ZWQ8UmVmQ291bnRlZFR5
cGU+Kj46OnZhbHVlLCAiVCBpcyBub3QgY29udmVydGlibGUgdG8gVGhyZWFkU2FmZVJlZkNvdW50
ZWQhIik7CiAKICAgICAgICAgdHlwZWRlZiBQYXNzUmVmUHRyPFJlZkNvdW50ZWRUeXBlPiBUeXBl
OwotICAgICAgICBzdGF0aWMgVHlwZSBjb3B5KGNvbnN0IFQmIHJlZlB0cikKKyAgICAgICAgV0VC
Q09SRV9FWFBPUlQgc3RhdGljIFR5cGUgY29weShjb25zdCBUJiByZWZQdHIpCiAgICAgICAgIHsK
ICAgICAgICAgICAgIHJldHVybiByZWZQdHI7CiAgICAgICAgIH0KSW5kZXg6IFNvdXJjZS9XZWJD
b3JlL3BsYXRmb3JtL0N1cnNvci5oCj09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT0KLS0tIFNvdXJjZS9XZWJDb3JlL3BsYXRm
b3JtL0N1cnNvci5oCShyZXZpc2lvbiAxNzI4MDgpCisrKyBTb3VyY2UvV2ViQ29yZS9wbGF0Zm9y
bS9DdXJzb3IuaAkod29ya2luZyBjb3B5KQpAQCAtMTI2LDcgKzEyNiw3IEBAIG5hbWVzcGFjZSBX
ZWJDb3JlIHsKICAgICAgICAgICAgIEN1c3RvbQogICAgICAgICB9OwogCi0gICAgICAgIHN0YXRp
YyBjb25zdCBDdXJzb3ImIGZyb21UeXBlKEN1cnNvcjo6VHlwZSk7CisgICAgICAgIFdFQkNPUkVf
RVhQT1JUIHN0YXRpYyBjb25zdCBDdXJzb3ImIGZyb21UeXBlKEN1cnNvcjo6VHlwZSk7CiAKICAg
ICAgICAgQ3Vyc29yKCkKICNpZiAhUExBVEZPUk0oSU9TKQpAQCAtMTM4LDE2ICsxMzgsMTYgQEAg
bmFtZXNwYWNlIFdlYkNvcmUgewogICAgICAgICB9CiAKICNpZiAhUExBVEZPUk0oSU9TKQotICAg
ICAgICBDdXJzb3IoSW1hZ2UqLCBjb25zdCBJbnRQb2ludCYgaG90U3BvdCk7Ci0gICAgICAgIEN1
cnNvcihjb25zdCBDdXJzb3ImKTsKKyAgICAgICAgV0VCQ09SRV9FWFBPUlQgQ3Vyc29yKEltYWdl
KiwgY29uc3QgSW50UG9pbnQmIGhvdFNwb3QpOworICAgICAgICBXRUJDT1JFX0VYUE9SVCBDdXJz
b3IoY29uc3QgQ3Vyc29yJik7CiAKICNpZiBFTkFCTEUoTU9VU0VfQ1VSU09SX1NDQUxFKQogICAg
ICAgICAvLyBIb3Qgc3BvdCBpcyBpbiBpbWFnZSBwaXhlbHMuCiAgICAgICAgIEN1cnNvcihJbWFn
ZSosIGNvbnN0IEludFBvaW50JiBob3RTcG90LCBmbG9hdCBpbWFnZVNjYWxlRmFjdG9yKTsKICNl
bmRpZgogCi0gICAgICAgIH5DdXJzb3IoKTsKLSAgICAgICAgQ3Vyc29yJiBvcGVyYXRvcj0oY29u
c3QgQ3Vyc29yJik7CisgICAgICAgIFdFQkNPUkVfRVhQT1JUIH5DdXJzb3IoKTsKKyAgICAgICAg
V0VCQ09SRV9FWFBPUlQgQ3Vyc29yJiBvcGVyYXRvcj0oY29uc3QgQ3Vyc29yJik7CiAKICAgICAg
ICAgZXhwbGljaXQgQ3Vyc29yKFR5cGUpOwogICAgICAgICBUeXBlIHR5cGUoKSBjb25zdApAQCAt
MTYxLDcgKzE2MSw3IEBAIG5hbWVzcGFjZSBXZWJDb3JlIHsKICAgICAgICAgLy8gSW1hZ2Ugc2Nh
bGUgaW4gaW1hZ2UgcGl4ZWxzIHBlciBsb2dpY2FsIChVSSkgcGl4ZWwuCiAgICAgICAgIGZsb2F0
IGltYWdlU2NhbGVGYWN0b3IoKSBjb25zdCB7IHJldHVybiBtX2ltYWdlU2NhbGVGYWN0b3I7IH0K
ICNlbmRpZgotICAgICAgICBQbGF0Zm9ybUN1cnNvciBwbGF0Zm9ybUN1cnNvcigpIGNvbnN0Owor
ICAgICAgICBXRUJDT1JFX0VYUE9SVCBQbGF0Zm9ybUN1cnNvciBwbGF0Zm9ybUN1cnNvcigpIGNv
bnN0OwogCiAgICAgIHByaXZhdGU6CiAgICAgICAgIHZvaWQgZW5zdXJlUGxhdGZvcm1DdXJzb3Io
KSBjb25zdDsKSW5kZXg6IFNvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL0RhdGFiYXNlU3RyYXRlZ3ku
aAo9PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09Ci0tLSBTb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9EYXRhYmFzZVN0cmF0ZWd5
LmgJKHJldmlzaW9uIDE3MjgwOCkKKysrIFNvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL0RhdGFiYXNl
U3RyYXRlZ3kuaAkod29ya2luZyBjb3B5KQpAQCAtMzcsMTEgKzM3LDExIEBAIGNsYXNzIElEQkZh
Y3RvcnlCYWNrZW5kSW50ZXJmYWNlOwogY2xhc3MgRGF0YWJhc2VTdHJhdGVneSB7CiBwdWJsaWM6
CiAjaWYgRU5BQkxFKFNRTF9EQVRBQkFTRSkKLSAgICB2aXJ0dWFsIEFic3RyYWN0RGF0YWJhc2VT
ZXJ2ZXIqIGdldERhdGFiYXNlU2VydmVyKCk7CisgICAgV0VCQ09SRV9FWFBPUlQgdmlydHVhbCBB
YnN0cmFjdERhdGFiYXNlU2VydmVyKiBnZXREYXRhYmFzZVNlcnZlcigpOwogI2VuZGlmCiAKICNp
ZiBFTkFCTEUoSU5ERVhFRF9EQVRBQkFTRSkKLSAgICB2aXJ0dWFsIFBhc3NSZWZQdHI8SURCRmFj
dG9yeUJhY2tlbmRJbnRlcmZhY2U+IGNyZWF0ZUlEQkZhY3RvcnlCYWNrZW5kKGNvbnN0IFN0cmlu
ZyYgZGF0YWJhc2VEaXJlY3RvcnlJZGVudGlmaWVyKTsKKyAgICBXRUJDT1JFX0VYUE9SVCB2aXJ0
dWFsIFBhc3NSZWZQdHI8SURCRmFjdG9yeUJhY2tlbmRJbnRlcmZhY2U+IGNyZWF0ZUlEQkZhY3Rv
cnlCYWNrZW5kKGNvbnN0IFN0cmluZyYgZGF0YWJhc2VEaXJlY3RvcnlJZGVudGlmaWVyKTsKICNl
bmRpZgogCiBwcm90ZWN0ZWQ6CkluZGV4OiBTb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9EaXNwbGF5
U2xlZXBEaXNhYmxlci5oCj09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT0KLS0tIFNvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL0Rp
c3BsYXlTbGVlcERpc2FibGVyLmgJKHJldmlzaW9uIDE3MjgwOCkKKysrIFNvdXJjZS9XZWJDb3Jl
L3BsYXRmb3JtL0Rpc3BsYXlTbGVlcERpc2FibGVyLmgJKHdvcmtpbmcgY29weSkKQEAgLTMxLDEw
ICszMSwxMCBAQCBuYW1lc3BhY2UgV2ViQ29yZSB7CiBjbGFzcyBEaXNwbGF5U2xlZXBEaXNhYmxl
ciB7CiBwdWJsaWM6CiAgICAgc3RhdGljIHN0ZDo6dW5pcXVlX3B0cjxEaXNwbGF5U2xlZXBEaXNh
Ymxlcj4gY3JlYXRlKGNvbnN0IGNoYXIqKTsKLSAgICB2aXJ0dWFsIH5EaXNwbGF5U2xlZXBEaXNh
YmxlcigpOworICAgIFdFQkNPUkVfRVhQT1JUIHZpcnR1YWwgfkRpc3BsYXlTbGVlcERpc2FibGVy
KCk7CiAKIHByb3RlY3RlZDoKLSAgICBEaXNwbGF5U2xlZXBEaXNhYmxlcihjb25zdCBjaGFyKik7
CisgICAgV0VCQ09SRV9FWFBPUlQgRGlzcGxheVNsZWVwRGlzYWJsZXIoY29uc3QgY2hhciopOwog
fTsKIAogfQpJbmRleDogU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vRHJhZ0RhdGEuaAo9PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09Ci0tLSBTb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9EcmFnRGF0YS5oCShyZXZpc2lvbiAxNzI4
MDgpCisrKyBTb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9EcmFnRGF0YS5oCSh3b3JraW5nIGNvcHkp
CkBAIC04MiwxMCArODIsMTAgQEAgcHVibGljOgogICAgIGVudW0gRmlsZW5hbWVDb252ZXJzaW9u
UG9saWN5IHsgRG9Ob3RDb252ZXJ0RmlsZW5hbWVzLCBDb252ZXJ0RmlsZW5hbWVzIH07CiAKICAg
ICAvLyBjbGllbnRQb3NpdGlvbiBpcyB0YWtlbiB0byBiZSB0aGUgcG9zaXRpb24gb2YgdGhlIGRy
YWcgZXZlbnQgd2l0aGluIHRoZSB0YXJnZXQgd2luZG93LCB3aXRoICgwLDApIGF0IHRoZSB0b3Ag
bGVmdAotICAgIERyYWdEYXRhKERyYWdEYXRhUmVmLCBjb25zdCBJbnRQb2ludCYgY2xpZW50UG9z
aXRpb24sIGNvbnN0IEludFBvaW50JiBnbG9iYWxQb3NpdGlvbiwgRHJhZ09wZXJhdGlvbiwgRHJh
Z0FwcGxpY2F0aW9uRmxhZ3MgPSBEcmFnQXBwbGljYXRpb25Ob25lKTsKLSAgICBEcmFnRGF0YShj
b25zdCBTdHJpbmcmIGRyYWdTdG9yYWdlTmFtZSwgY29uc3QgSW50UG9pbnQmIGNsaWVudFBvc2l0
aW9uLCBjb25zdCBJbnRQb2ludCYgZ2xvYmFsUG9zaXRpb24sIERyYWdPcGVyYXRpb24sIERyYWdB
cHBsaWNhdGlvbkZsYWdzID0gRHJhZ0FwcGxpY2F0aW9uTm9uZSk7CisgICAgV0VCQ09SRV9FWFBP
UlQgRHJhZ0RhdGEoRHJhZ0RhdGFSZWYsIGNvbnN0IEludFBvaW50JiBjbGllbnRQb3NpdGlvbiwg
Y29uc3QgSW50UG9pbnQmIGdsb2JhbFBvc2l0aW9uLCBEcmFnT3BlcmF0aW9uLCBEcmFnQXBwbGlj
YXRpb25GbGFncyA9IERyYWdBcHBsaWNhdGlvbk5vbmUpOworICAgIFdFQkNPUkVfRVhQT1JUIERy
YWdEYXRhKGNvbnN0IFN0cmluZyYgZHJhZ1N0b3JhZ2VOYW1lLCBjb25zdCBJbnRQb2ludCYgY2xp
ZW50UG9zaXRpb24sIGNvbnN0IEludFBvaW50JiBnbG9iYWxQb3NpdGlvbiwgRHJhZ09wZXJhdGlv
biwgRHJhZ0FwcGxpY2F0aW9uRmxhZ3MgPSBEcmFnQXBwbGljYXRpb25Ob25lKTsKICNpZiBQTEFU
Rk9STShXSU4pCi0gICAgRHJhZ0RhdGEoY29uc3QgRHJhZ0RhdGFNYXAmLCBjb25zdCBJbnRQb2lu
dCYgY2xpZW50UG9zaXRpb24sIGNvbnN0IEludFBvaW50JiBnbG9iYWxQb3NpdGlvbiwgRHJhZ09w
ZXJhdGlvbiBzb3VyY2VPcGVyYXRpb25NYXNrLCBEcmFnQXBwbGljYXRpb25GbGFncyA9IERyYWdB
cHBsaWNhdGlvbk5vbmUpOworICAgIFdFQkNPUkVfRVhQT1JUIERyYWdEYXRhKGNvbnN0IERyYWdE
YXRhTWFwJiwgY29uc3QgSW50UG9pbnQmIGNsaWVudFBvc2l0aW9uLCBjb25zdCBJbnRQb2ludCYg
Z2xvYmFsUG9zaXRpb24sIERyYWdPcGVyYXRpb24gc291cmNlT3BlcmF0aW9uTWFzaywgRHJhZ0Fw
cGxpY2F0aW9uRmxhZ3MgPSBEcmFnQXBwbGljYXRpb25Ob25lKTsKICAgICBjb25zdCBEcmFnRGF0
YU1hcCYgZHJhZ0RhdGFNYXAoKTsKICAgICB2b2lkIGdldERyYWdGaWxlRGVzY3JpcHRvckRhdGEo
aW50JiBzaXplLCBTdHJpbmcmIHBhdGhuYW1lKTsKICAgICB2b2lkIGdldERyYWdGaWxlQ29udGVu
dERhdGEoaW50IHNpemUsIHZvaWQqIGRhdGFCbG9iKTsKSW5kZXg6IFNvdXJjZS9XZWJDb3JlL3Bs
YXRmb3JtL0xvY2FsaXplZFN0cmluZ3MuaAo9PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09Ci0tLSBTb3VyY2UvV2ViQ29yZS9w
bGF0Zm9ybS9Mb2NhbGl6ZWRTdHJpbmdzLmgJKHJldmlzaW9uIDE3MjgwOCkKKysrIFNvdXJjZS9X
ZWJDb3JlL3BsYXRmb3JtL0xvY2FsaXplZFN0cmluZ3MuaAkod29ya2luZyBjb3B5KQpAQCAtNDgs
NyArNDgsNyBAQCBuYW1lc3BhY2UgV2ViQ29yZSB7CiAjZW5kaWYKIAogI2lmIEVOQUJMRShDT05U
RVhUX01FTlVTKQotICAgIFN0cmluZyBjb250ZXh0TWVudUl0ZW1UYWdPcGVuTGlua0luTmV3V2lu
ZG93KCk7CisgICAgV0VCQ09SRV9FWFBPUlQgU3RyaW5nIGNvbnRleHRNZW51SXRlbVRhZ09wZW5M
aW5rSW5OZXdXaW5kb3coKTsKICAgICBTdHJpbmcgY29udGV4dE1lbnVJdGVtVGFnRG93bmxvYWRM
aW5rVG9EaXNrKCk7CiAgICAgU3RyaW5nIGNvbnRleHRNZW51SXRlbVRhZ0NvcHlMaW5rVG9DbGlw
Ym9hcmQoKTsKICAgICBTdHJpbmcgY29udGV4dE1lbnVJdGVtVGFnT3BlbkltYWdlSW5OZXdXaW5k
b3coKTsKQEAgLTg5LDQyICs4OSw0MiBAQCBuYW1lc3BhY2UgV2ViQ29yZSB7CiAgICAgU3RyaW5n
IGNvbnRleHRNZW51SXRlbVRhZ1NlYXJjaFdlYigpOwogICAgIFN0cmluZyBjb250ZXh0TWVudUl0
ZW1UYWdMb29rVXBJbkRpY3Rpb25hcnkoY29uc3QgU3RyaW5nJiBzZWxlY3RlZFN0cmluZyk7CiAg
ICAgU3RyaW5nIGNvbnRleHRNZW51SXRlbVRhZ09wZW5MaW5rKCk7Ci0gICAgU3RyaW5nIGNvbnRl
eHRNZW51SXRlbVRhZ0lnbm9yZUdyYW1tYXIoKTsKLSAgICBTdHJpbmcgY29udGV4dE1lbnVJdGVt
VGFnU3BlbGxpbmdNZW51KCk7Ci0gICAgU3RyaW5nIGNvbnRleHRNZW51SXRlbVRhZ1Nob3dTcGVs
bGluZ1BhbmVsKGJvb2wgc2hvdyk7Ci0gICAgU3RyaW5nIGNvbnRleHRNZW51SXRlbVRhZ0NoZWNr
U3BlbGxpbmcoKTsKLSAgICBTdHJpbmcgY29udGV4dE1lbnVJdGVtVGFnQ2hlY2tTcGVsbGluZ1do
aWxlVHlwaW5nKCk7Ci0gICAgU3RyaW5nIGNvbnRleHRNZW51SXRlbVRhZ0NoZWNrR3JhbW1hcldp
dGhTcGVsbGluZygpOwotICAgIFN0cmluZyBjb250ZXh0TWVudUl0ZW1UYWdGb250TWVudSgpOwot
ICAgIFN0cmluZyBjb250ZXh0TWVudUl0ZW1UYWdCb2xkKCk7Ci0gICAgU3RyaW5nIGNvbnRleHRN
ZW51SXRlbVRhZ0l0YWxpYygpOwotICAgIFN0cmluZyBjb250ZXh0TWVudUl0ZW1UYWdVbmRlcmxp
bmUoKTsKLSAgICBTdHJpbmcgY29udGV4dE1lbnVJdGVtVGFnT3V0bGluZSgpOwotICAgIFN0cmlu
ZyBjb250ZXh0TWVudUl0ZW1UYWdXcml0aW5nRGlyZWN0aW9uTWVudSgpOworICAgIFdFQkNPUkVf
RVhQT1JUIFN0cmluZyBjb250ZXh0TWVudUl0ZW1UYWdJZ25vcmVHcmFtbWFyKCk7CisgICAgV0VC
Q09SRV9FWFBPUlQgU3RyaW5nIGNvbnRleHRNZW51SXRlbVRhZ1NwZWxsaW5nTWVudSgpOworICAg
IFdFQkNPUkVfRVhQT1JUIFN0cmluZyBjb250ZXh0TWVudUl0ZW1UYWdTaG93U3BlbGxpbmdQYW5l
bChib29sIHNob3cpOworICAgIFdFQkNPUkVfRVhQT1JUIFN0cmluZyBjb250ZXh0TWVudUl0ZW1U
YWdDaGVja1NwZWxsaW5nKCk7CisgICAgV0VCQ09SRV9FWFBPUlQgU3RyaW5nIGNvbnRleHRNZW51
SXRlbVRhZ0NoZWNrU3BlbGxpbmdXaGlsZVR5cGluZygpOworICAgIFdFQkNPUkVfRVhQT1JUIFN0
cmluZyBjb250ZXh0TWVudUl0ZW1UYWdDaGVja0dyYW1tYXJXaXRoU3BlbGxpbmcoKTsKKyAgICBX
RUJDT1JFX0VYUE9SVCBTdHJpbmcgY29udGV4dE1lbnVJdGVtVGFnRm9udE1lbnUoKTsKKyAgICBX
RUJDT1JFX0VYUE9SVCBTdHJpbmcgY29udGV4dE1lbnVJdGVtVGFnQm9sZCgpOworICAgIFdFQkNP
UkVfRVhQT1JUIFN0cmluZyBjb250ZXh0TWVudUl0ZW1UYWdJdGFsaWMoKTsKKyAgICBXRUJDT1JF
X0VYUE9SVCBTdHJpbmcgY29udGV4dE1lbnVJdGVtVGFnVW5kZXJsaW5lKCk7CisgICAgV0VCQ09S
RV9FWFBPUlQgU3RyaW5nIGNvbnRleHRNZW51SXRlbVRhZ091dGxpbmUoKTsKKyAgICBXRUJDT1JF
X0VYUE9SVCBTdHJpbmcgY29udGV4dE1lbnVJdGVtVGFnV3JpdGluZ0RpcmVjdGlvbk1lbnUoKTsK
ICAgICBTdHJpbmcgY29udGV4dE1lbnVJdGVtVGFnVGV4dERpcmVjdGlvbk1lbnUoKTsKLSAgICBT
dHJpbmcgY29udGV4dE1lbnVJdGVtVGFnRGVmYXVsdERpcmVjdGlvbigpOwotICAgIFN0cmluZyBj
b250ZXh0TWVudUl0ZW1UYWdMZWZ0VG9SaWdodCgpOwotICAgIFN0cmluZyBjb250ZXh0TWVudUl0
ZW1UYWdSaWdodFRvTGVmdCgpOworICAgIFdFQkNPUkVfRVhQT1JUIFN0cmluZyBjb250ZXh0TWVu
dUl0ZW1UYWdEZWZhdWx0RGlyZWN0aW9uKCk7CisgICAgV0VCQ09SRV9FWFBPUlQgU3RyaW5nIGNv
bnRleHRNZW51SXRlbVRhZ0xlZnRUb1JpZ2h0KCk7CisgICAgV0VCQ09SRV9FWFBPUlQgU3RyaW5n
IGNvbnRleHRNZW51SXRlbVRhZ1JpZ2h0VG9MZWZ0KCk7CiAjaWYgUExBVEZPUk0oQ09DT0EpCiAg
ICAgU3RyaW5nIGNvbnRleHRNZW51SXRlbVRhZ1NlYXJjaEluU3BvdGxpZ2h0KCk7Ci0gICAgU3Ry
aW5nIGNvbnRleHRNZW51SXRlbVRhZ1Nob3dGb250cygpOwotICAgIFN0cmluZyBjb250ZXh0TWVu
dUl0ZW1UYWdTdHlsZXMoKTsKLSAgICBTdHJpbmcgY29udGV4dE1lbnVJdGVtVGFnU2hvd0NvbG9y
cygpOwotICAgIFN0cmluZyBjb250ZXh0TWVudUl0ZW1UYWdTcGVlY2hNZW51KCk7Ci0gICAgU3Ry
aW5nIGNvbnRleHRNZW51SXRlbVRhZ1N0YXJ0U3BlYWtpbmcoKTsKLSAgICBTdHJpbmcgY29udGV4
dE1lbnVJdGVtVGFnU3RvcFNwZWFraW5nKCk7Ci0gICAgU3RyaW5nIGNvbnRleHRNZW51SXRlbVRh
Z0NvcnJlY3RTcGVsbGluZ0F1dG9tYXRpY2FsbHkoKTsKLSAgICBTdHJpbmcgY29udGV4dE1lbnVJ
dGVtVGFnU3Vic3RpdHV0aW9uc01lbnUoKTsKLSAgICBTdHJpbmcgY29udGV4dE1lbnVJdGVtVGFn
U2hvd1N1YnN0aXR1dGlvbnMoYm9vbCBzaG93KTsKLSAgICBTdHJpbmcgY29udGV4dE1lbnVJdGVt
VGFnU21hcnRDb3B5UGFzdGUoKTsKLSAgICBTdHJpbmcgY29udGV4dE1lbnVJdGVtVGFnU21hcnRR
dW90ZXMoKTsKLSAgICBTdHJpbmcgY29udGV4dE1lbnVJdGVtVGFnU21hcnREYXNoZXMoKTsKLSAg
ICBTdHJpbmcgY29udGV4dE1lbnVJdGVtVGFnU21hcnRMaW5rcygpOwotICAgIFN0cmluZyBjb250
ZXh0TWVudUl0ZW1UYWdUZXh0UmVwbGFjZW1lbnQoKTsKLSAgICBTdHJpbmcgY29udGV4dE1lbnVJ
dGVtVGFnVHJhbnNmb3JtYXRpb25zTWVudSgpOwotICAgIFN0cmluZyBjb250ZXh0TWVudUl0ZW1U
YWdNYWtlVXBwZXJDYXNlKCk7Ci0gICAgU3RyaW5nIGNvbnRleHRNZW51SXRlbVRhZ01ha2VMb3dl
ckNhc2UoKTsKLSAgICBTdHJpbmcgY29udGV4dE1lbnVJdGVtVGFnQ2FwaXRhbGl6ZSgpOworICAg
IFdFQkNPUkVfRVhQT1JUIFN0cmluZyBjb250ZXh0TWVudUl0ZW1UYWdTaG93Rm9udHMoKTsKKyAg
ICBXRUJDT1JFX0VYUE9SVCBTdHJpbmcgY29udGV4dE1lbnVJdGVtVGFnU3R5bGVzKCk7CisgICAg
V0VCQ09SRV9FWFBPUlQgU3RyaW5nIGNvbnRleHRNZW51SXRlbVRhZ1Nob3dDb2xvcnMoKTsKKyAg
ICBXRUJDT1JFX0VYUE9SVCBTdHJpbmcgY29udGV4dE1lbnVJdGVtVGFnU3BlZWNoTWVudSgpOwor
ICAgIFdFQkNPUkVfRVhQT1JUIFN0cmluZyBjb250ZXh0TWVudUl0ZW1UYWdTdGFydFNwZWFraW5n
KCk7CisgICAgV0VCQ09SRV9FWFBPUlQgU3RyaW5nIGNvbnRleHRNZW51SXRlbVRhZ1N0b3BTcGVh
a2luZygpOworICAgIFdFQkNPUkVfRVhQT1JUIFN0cmluZyBjb250ZXh0TWVudUl0ZW1UYWdDb3Jy
ZWN0U3BlbGxpbmdBdXRvbWF0aWNhbGx5KCk7CisgICAgV0VCQ09SRV9FWFBPUlQgU3RyaW5nIGNv
bnRleHRNZW51SXRlbVRhZ1N1YnN0aXR1dGlvbnNNZW51KCk7CisgICAgV0VCQ09SRV9FWFBPUlQg
U3RyaW5nIGNvbnRleHRNZW51SXRlbVRhZ1Nob3dTdWJzdGl0dXRpb25zKGJvb2wgc2hvdyk7Cisg
ICAgV0VCQ09SRV9FWFBPUlQgU3RyaW5nIGNvbnRleHRNZW51SXRlbVRhZ1NtYXJ0Q29weVBhc3Rl
KCk7CisgICAgV0VCQ09SRV9FWFBPUlQgU3RyaW5nIGNvbnRleHRNZW51SXRlbVRhZ1NtYXJ0UXVv
dGVzKCk7CisgICAgV0VCQ09SRV9FWFBPUlQgU3RyaW5nIGNvbnRleHRNZW51SXRlbVRhZ1NtYXJ0
RGFzaGVzKCk7CisgICAgV0VCQ09SRV9FWFBPUlQgU3RyaW5nIGNvbnRleHRNZW51SXRlbVRhZ1Nt
YXJ0TGlua3MoKTsKKyAgICBXRUJDT1JFX0VYUE9SVCBTdHJpbmcgY29udGV4dE1lbnVJdGVtVGFn
VGV4dFJlcGxhY2VtZW50KCk7CisgICAgV0VCQ09SRV9FWFBPUlQgU3RyaW5nIGNvbnRleHRNZW51
SXRlbVRhZ1RyYW5zZm9ybWF0aW9uc01lbnUoKTsKKyAgICBXRUJDT1JFX0VYUE9SVCBTdHJpbmcg
Y29udGV4dE1lbnVJdGVtVGFnTWFrZVVwcGVyQ2FzZSgpOworICAgIFdFQkNPUkVfRVhQT1JUIFN0
cmluZyBjb250ZXh0TWVudUl0ZW1UYWdNYWtlTG93ZXJDYXNlKCk7CisgICAgV0VCQ09SRV9FWFBP
UlQgU3RyaW5nIGNvbnRleHRNZW51SXRlbVRhZ0NhcGl0YWxpemUoKTsKICAgICBTdHJpbmcgY29u
dGV4dE1lbnVJdGVtVGFnQ2hhbmdlQmFjayhjb25zdCBTdHJpbmcmIHJlcGxhY2VkU3RyaW5nKTsK
ICNlbmRpZgogICAgIFN0cmluZyBjb250ZXh0TWVudUl0ZW1UYWdPcGVuVmlkZW9Jbk5ld1dpbmRv
dygpOwpAQCAtMTQyLDcgKzE0Miw3IEBAIG5hbWVzcGFjZSBXZWJDb3JlIHsKICAgICBTdHJpbmcg
Y29udGV4dE1lbnVJdGVtVGFnTWVkaWFQbGF5KCk7CiAgICAgU3RyaW5nIGNvbnRleHRNZW51SXRl
bVRhZ01lZGlhUGF1c2UoKTsKICAgICBTdHJpbmcgY29udGV4dE1lbnVJdGVtVGFnTWVkaWFNdXRl
KCk7Ci0gICAgU3RyaW5nIGNvbnRleHRNZW51SXRlbVRhZ0luc3BlY3RFbGVtZW50KCk7CisgICAg
V0VCQ09SRV9FWFBPUlQgU3RyaW5nIGNvbnRleHRNZW51SXRlbVRhZ0luc3BlY3RFbGVtZW50KCk7
CiAjZW5kaWYgLy8gRU5BQkxFKENPTlRFWFRfTUVOVVMpCiAKICNpZiAhUExBVEZPUk0oSU9TKQpJ
bmRleDogU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vUGxhdGZvcm1FeHBvcnRNYWNyb3MuaAo9PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09Ci0tLSBTb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9QbGF0Zm9ybUV4cG9ydE1hY3Jvcy5o
CShyZXZpc2lvbiAxNzI4MDgpCisrKyBTb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9QbGF0Zm9ybUV4
cG9ydE1hY3Jvcy5oCSh3b3JraW5nIGNvcHkpCkBAIC00Niw4ICs0NiwxMyBAQAogI2RlZmluZSBX
RUJLSVRfRVhQT1JUREFUQSBXVEZfSU1QT1JUCiAjZW5kaWYKIAorLy8gRklYTUU6IFRoaXMgc2hv
dWxkIGJlIFdURl9FWFBPUlQgb25jZSBXRUJDT1JFX0VYUE9SVCBpcyB1c2VkIGluc3RlYWQgb2Yg
V2ViQ29yZS5leHAuaW4uCisjZGVmaW5lIFdFQkNPUkVfRVhQT1JUCisKICNlbHNlIC8vICFVU0Uo
RVhQT1JUX01BQ1JPUykKIAorI2RlZmluZSBXRUJDT1JFX0VYUE9SVAorCiAjaWYgT1MoV0lORE9X
UykgJiYgIUNPTVBJTEVSKEdDQykKIAogI2lmIGRlZmluZWQoV0VCQ09SRV9JU19MSU5LRURfSU5f
U0FNRV9CSU5BUlkpCkluZGV4OiBTb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9hdWRpby9BdWRpb0hh
cmR3YXJlTGlzdGVuZXIuaAo9PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09Ci0tLSBTb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9h
dWRpby9BdWRpb0hhcmR3YXJlTGlzdGVuZXIuaAkocmV2aXNpb24gMTcyODA4KQorKysgU291cmNl
L1dlYkNvcmUvcGxhdGZvcm0vYXVkaW8vQXVkaW9IYXJkd2FyZUxpc3RlbmVyLmgJKHdvcmtpbmcg
Y29weSkKQEAgLTQ3LDcgKzQ3LDcgQEAgcHVibGljOgogICAgICAgICB2aXJ0dWFsIHZvaWQgYXVk
aW9PdXRwdXREZXZpY2VDaGFuZ2VkKCkgPSAwOwogICAgIH07CiAKLSAgICBzdGF0aWMgUGFzc1Jl
ZlB0cjxBdWRpb0hhcmR3YXJlTGlzdGVuZXI+IGNyZWF0ZShDbGllbnQmKTsKKyAgICBXRUJDT1JF
X0VYUE9SVCBzdGF0aWMgUGFzc1JlZlB0cjxBdWRpb0hhcmR3YXJlTGlzdGVuZXI+IGNyZWF0ZShD
bGllbnQmKTsKICAgICB2aXJ0dWFsIH5BdWRpb0hhcmR3YXJlTGlzdGVuZXIoKSB7IH0KICAgICAK
ICAgICBBdWRpb0hhcmR3YXJlQWN0aXZpdHlUeXBlIGhhcmR3YXJlQWN0aXZpdHkoKSBjb25zdCB7
IHJldHVybiBtX2FjdGl2aXR5OyB9CkluZGV4OiBTb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9hdWRp
by9BdWRpb1Nlc3Npb24uaAo9PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09Ci0tLSBTb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9h
dWRpby9BdWRpb1Nlc3Npb24uaAkocmV2aXNpb24gMTcyODA4KQorKysgU291cmNlL1dlYkNvcmUv
cGxhdGZvcm0vYXVkaW8vQXVkaW9TZXNzaW9uLmgJKHdvcmtpbmcgY29weSkKQEAgLTM5LDcgKzM5
LDcgQEAgY2xhc3MgQXVkaW9TZXNzaW9uUHJpdmF0ZTsKIGNsYXNzIEF1ZGlvU2Vzc2lvbiB7CiAg
ICAgV1RGX01BS0VfTk9OQ09QWUFCTEUoQXVkaW9TZXNzaW9uKTsKIHB1YmxpYzoKLSAgICBzdGF0
aWMgQXVkaW9TZXNzaW9uJiBzaGFyZWRTZXNzaW9uKCk7CisgICAgV0VCQ09SRV9FWFBPUlQgc3Rh
dGljIEF1ZGlvU2Vzc2lvbiYgc2hhcmVkU2Vzc2lvbigpOwogCiAgICAgZW51bSBDYXRlZ29yeVR5
cGUgewogICAgICAgICBOb25lLApAQCAtNTAsNyArNTAsNyBAQCBwdWJsaWM6CiAgICAgICAgIFBs
YXlBbmRSZWNvcmQsCiAgICAgICAgIEF1ZGlvUHJvY2Vzc2luZywKICAgICB9OwotICAgIHZvaWQg
c2V0Q2F0ZWdvcnkoQ2F0ZWdvcnlUeXBlKTsKKyAgICBXRUJDT1JFX0VYUE9SVCB2b2lkIHNldENh
dGVnb3J5KENhdGVnb3J5VHlwZSk7CiAgICAgQ2F0ZWdvcnlUeXBlIGNhdGVnb3J5KCkgY29uc3Q7
CiAKICAgICB2b2lkIHNldENhdGVnb3J5T3ZlcnJpZGUoQ2F0ZWdvcnlUeXBlKTsKSW5kZXg6IFNv
dXJjZS9XZWJDb3JlL3BsYXRmb3JtL2F1ZGlvL2lvcy9NZWRpYVNlc3Npb25NYW5hZ2VySU9TLm1t
Cj09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT0KLS0tIFNvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL2F1ZGlvL2lvcy9NZWRpYVNl
c3Npb25NYW5hZ2VySU9TLm1tCShyZXZpc2lvbiAxNzI4MDgpCisrKyBTb3VyY2UvV2ViQ29yZS9w
bGF0Zm9ybS9hdWRpby9pb3MvTWVkaWFTZXNzaW9uTWFuYWdlcklPUy5tbQkod29ya2luZyBjb3B5
KQpAQCAtODIsOSArODIsOSBAQCBTT0ZUX0xJTktfUE9JTlRFUihNZWRpYVBsYXllciwgTVBWb2x1
bWVWCiAjZGVmaW5lIE1QTm93UGxheWluZ0luZm9Qcm9wZXJ0eVBsYXliYWNrUmF0ZSBnZXRNUE5v
d1BsYXlpbmdJbmZvUHJvcGVydHlQbGF5YmFja1JhdGUoKQogI2RlZmluZSBNUFZvbHVtZVZpZXdX
aXJlbGVzc1JvdXRlc0F2YWlsYWJsZURpZENoYW5nZU5vdGlmaWNhdGlvbiBnZXRNUFZvbHVtZVZp
ZXdXaXJlbGVzc1JvdXRlc0F2YWlsYWJsZURpZENoYW5nZU5vdGlmaWNhdGlvbigpCiAKLU5TU3Ry
aW5nKiBXZWJVSUFwcGxpY2F0aW9uV2lsbFJlc2lnbkFjdGl2ZU5vdGlmaWNhdGlvbiA9IEAiV2Vi
VUlBcHBsaWNhdGlvbldpbGxSZXNpZ25BY3RpdmVOb3RpZmljYXRpb24iOwotTlNTdHJpbmcqIFdl
YlVJQXBwbGljYXRpb25XaWxsRW50ZXJGb3JlZ3JvdW5kTm90aWZpY2F0aW9uID0gQCJXZWJVSUFw
cGxpY2F0aW9uV2lsbEVudGVyRm9yZWdyb3VuZE5vdGlmaWNhdGlvbiI7Ci1OU1N0cmluZyogV2Vi
VUlBcHBsaWNhdGlvbkRpZEJlY29tZUFjdGl2ZU5vdGlmaWNhdGlvbiA9IEAiV2ViVUlBcHBsaWNh
dGlvbkRpZEJlY29tZUFjdGl2ZU5vdGlmaWNhdGlvbiI7CitXRUJDT1JFX0VYUE9SVCBOU1N0cmlu
ZyogV2ViVUlBcHBsaWNhdGlvbldpbGxSZXNpZ25BY3RpdmVOb3RpZmljYXRpb24gPSBAIldlYlVJ
QXBwbGljYXRpb25XaWxsUmVzaWduQWN0aXZlTm90aWZpY2F0aW9uIjsKK1dFQkNPUkVfRVhQT1JU
IE5TU3RyaW5nKiBXZWJVSUFwcGxpY2F0aW9uV2lsbEVudGVyRm9yZWdyb3VuZE5vdGlmaWNhdGlv
biA9IEAiV2ViVUlBcHBsaWNhdGlvbldpbGxFbnRlckZvcmVncm91bmROb3RpZmljYXRpb24iOwor
V0VCQ09SRV9FWFBPUlQgTlNTdHJpbmcqIFdlYlVJQXBwbGljYXRpb25EaWRCZWNvbWVBY3RpdmVO
b3RpZmljYXRpb24gPSBAIldlYlVJQXBwbGljYXRpb25EaWRCZWNvbWVBY3RpdmVOb3RpZmljYXRp
b24iOwogCiB1c2luZyBuYW1lc3BhY2UgV2ViQ29yZTsKIApJbmRleDogU291cmNlL1dlYkNvcmUv
cGxhdGZvcm0vZ3JhcGhpY3MvQml0bWFwSW1hZ2UuaAo9PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09Ci0tLSBTb3VyY2UvV2Vi
Q29yZS9wbGF0Zm9ybS9ncmFwaGljcy9CaXRtYXBJbWFnZS5oCShyZXZpc2lvbiAxNzI4MDgpCisr
KyBTb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9ncmFwaGljcy9CaXRtYXBJbWFnZS5oCSh3b3JraW5n
IGNvcHkpCkBAIC0xNTYsNyArMTU2LDcgQEAgcHVibGljOgogI2VuZGlmCiAKICNpZiBVU0UoQ0cp
Ci0gICAgdmlydHVhbCBDR0ltYWdlUmVmIGdldENHSW1hZ2VSZWYoKSBvdmVycmlkZTsKKyAgICBX
RUJDT1JFX0VYUE9SVCB2aXJ0dWFsIENHSW1hZ2VSZWYgZ2V0Q0dJbWFnZVJlZigpIG92ZXJyaWRl
OwogICAgIHZpcnR1YWwgQ0dJbWFnZVJlZiBnZXRGaXJzdENHSW1hZ2VSZWZPZlNpemUoY29uc3Qg
SW50U2l6ZSYpIG92ZXJyaWRlOwogICAgIHZpcnR1YWwgUmV0YWluUHRyPENGQXJyYXlSZWY+IGdl
dENHSW1hZ2VBcnJheSgpIG92ZXJyaWRlOwogI2VuZGlmCkBAIC0xOTUsOCArMTk1LDggQEAgcHJv
dGVjdGVkOgogICAgICAgQ2VydGFpbiAgICAgLy8gVGhlIHJlcGV0aXRpb24gY291bnQgaXMga25v
d24gdG8gYmUgY29ycmVjdC4KICAgICB9OwogCi0gICAgQml0bWFwSW1hZ2UoUGFzc05hdGl2ZUlt
YWdlUHRyLCBJbWFnZU9ic2VydmVyKiA9IDApOwotICAgIEJpdG1hcEltYWdlKEltYWdlT2JzZXJ2
ZXIqID0gMCk7CisgICAgV0VCQ09SRV9FWFBPUlQgQml0bWFwSW1hZ2UoUGFzc05hdGl2ZUltYWdl
UHRyLCBJbWFnZU9ic2VydmVyKiA9IDApOworICAgIFdFQkNPUkVfRVhQT1JUIEJpdG1hcEltYWdl
KEltYWdlT2JzZXJ2ZXIqID0gMCk7CiAKICNpZiBQTEFURk9STShXSU4pCiAgICAgdmlydHVhbCB2
b2lkIGRyYXdGcmFtZU1hdGNoaW5nU291cmNlU2l6ZShHcmFwaGljc0NvbnRleHQqLCBjb25zdCBG
bG9hdFJlY3QmIGRzdFJlY3QsIGNvbnN0IEludFNpemUmIHNyY1NpemUsIENvbG9yU3BhY2Ugc3R5
bGVDb2xvclNwYWNlLCBDb21wb3NpdGVPcGVyYXRvcikgb3ZlcnJpZGU7CkluZGV4OiBTb3VyY2Uv
V2ViQ29yZS9wbGF0Zm9ybS9ncmFwaGljcy9Db2xvci5oCj09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT0KLS0tIFNvdXJjZS9X
ZWJDb3JlL3BsYXRmb3JtL2dyYXBoaWNzL0NvbG9yLmgJKHJldmlzaW9uIDE3MjgwOCkKKysrIFNv
dXJjZS9XZWJDb3JlL3BsYXRmb3JtL2dyYXBoaWNzL0NvbG9yLmgJKHdvcmtpbmcgY29weSkKQEAg
LTc4LDcgKzc4LDcgQEAgcHVibGljOgogICAgIENvbG9yKGZsb2F0IHIsIGZsb2F0IGcsIGZsb2F0
IGIsIGZsb2F0IGEpIDogbV9jb2xvcihtYWtlUkdCQTMyRnJvbUZsb2F0cyhyLCBnLCBiLCBhKSks
IG1fdmFsaWQodHJ1ZSkgeyB9CiAgICAgLy8gQ3JlYXRlcyBhIG5ldyBjb2xvciBmcm9tIHRoZSBz
cGVjaWZpYyBDTVlLIGFuZCBhbHBoYSB2YWx1ZXMuCiAgICAgQ29sb3IoZmxvYXQgYywgZmxvYXQg
bSwgZmxvYXQgeSwgZmxvYXQgaywgZmxvYXQgYSkgOiBtX2NvbG9yKG1ha2VSR0JBRnJvbUNNWUtB
KGMsIG0sIHksIGssIGEpKSwgbV92YWxpZCh0cnVlKSB7IH0KLSAgICBleHBsaWNpdCBDb2xvcihj
b25zdCBTdHJpbmcmKTsKKyAgICBXRUJDT1JFX0VYUE9SVCBleHBsaWNpdCBDb2xvcihjb25zdCBT
dHJpbmcmKTsKICAgICBleHBsaWNpdCBDb2xvcihjb25zdCBjaGFyKik7CiAKICAgICBzdGF0aWMg
Q29sb3IgY3JlYXRlVW5jaGVja2VkKGludCByLCBpbnQgZywgaW50IGIpCkBAIC05NCw3ICs5NCw3
IEBAIHB1YmxpYzoKIAogICAgIC8vIFJldHVybnMgdGhlIGNvbG9yIHNlcmlhbGl6ZWQgYWNjb3Jk
aW5nIHRvIEhUTUw1CiAgICAgLy8gLSBodHRwOi8vd3d3LndoYXR3Zy5vcmcvc3BlY3Mvd2ViLWFw
cHMvY3VycmVudC13b3JrLyNzZXJpYWxpemF0aW9uLW9mLWEtY29sb3IKLSAgICBTdHJpbmcgc2Vy
aWFsaXplZCgpIGNvbnN0OworICAgIFdFQkNPUkVfRVhQT1JUIFN0cmluZyBzZXJpYWxpemVkKCkg
Y29uc3Q7CiAKICAgICAvLyBSZXR1cm5zIHRoZSBjb2xvciBzZXJpYWxpemVkIGFzIGVpdGhlciAj
UlJHR0JCIG9yICNSUkdHQkJBQQogICAgIC8vIFRoZSBsYXR0ZXIgZm9ybWF0IGlzIG5vdCBhIHZh
bGlkIENTUyBjb2xvciwgYW5kIHNob3VsZCBvbmx5IGJlIHNlZW4gaW4gRFJUIGR1bXBzLgpAQCAt
MTE0LDggKzExNCw4IEBAIHB1YmxpYzoKICAgICBSR0JBMzIgcmdiKCkgY29uc3QgeyByZXR1cm4g
bV9jb2xvcjsgfSAvLyBQcmVzZXJ2ZSB0aGUgYWxwaGEuCiAgICAgdm9pZCBzZXRSR0IoaW50IHIs
IGludCBnLCBpbnQgYikgeyBtX2NvbG9yID0gbWFrZVJHQihyLCBnLCBiKTsgbV92YWxpZCA9IHRy
dWU7IH0KICAgICB2b2lkIHNldFJHQihSR0JBMzIgcmdiKSB7IG1fY29sb3IgPSByZ2I7IG1fdmFs
aWQgPSB0cnVlOyB9Ci0gICAgdm9pZCBnZXRSR0JBKGZsb2F0JiByLCBmbG9hdCYgZywgZmxvYXQm
IGIsIGZsb2F0JiBhKSBjb25zdDsKLSAgICB2b2lkIGdldFJHQkEoZG91YmxlJiByLCBkb3VibGUm
IGcsIGRvdWJsZSYgYiwgZG91YmxlJiBhKSBjb25zdDsKKyAgICBXRUJDT1JFX0VYUE9SVCB2b2lk
IGdldFJHQkEoZmxvYXQmIHIsIGZsb2F0JiBnLCBmbG9hdCYgYiwgZmxvYXQmIGEpIGNvbnN0Owor
ICAgIFdFQkNPUkVfRVhQT1JUIHZvaWQgZ2V0UkdCQShkb3VibGUmIHIsIGRvdWJsZSYgZywgZG91
YmxlJiBiLCBkb3VibGUmIGEpIGNvbnN0OwogICAgIHZvaWQgZ2V0SFNMKGRvdWJsZSYgaCwgZG91
YmxlJiBzLCBkb3VibGUmIGwpIGNvbnN0OwogCiAgICAgQ29sb3IgbGlnaHQoKSBjb25zdDsKQEAg
LTEzNyw3ICsxMzcsNyBAQCBwdWJsaWM6CiAjZW5kaWYKIAogI2lmIFVTRShDRykKLSAgICBDb2xv
cihDR0NvbG9yUmVmKTsKKyAgICBXRUJDT1JFX0VYUE9SVCBDb2xvcihDR0NvbG9yUmVmKTsKICNl
bmRpZgogCiAgICAgc3RhdGljIGJvb2wgcGFyc2VIZXhDb2xvcihjb25zdCBTdHJpbmcmLCBSR0JB
MzImKTsKQEAgLTE0NSwxMSArMTQ1LDExIEBAIHB1YmxpYzoKICAgICBzdGF0aWMgYm9vbCBwYXJz
ZUhleENvbG9yKGNvbnN0IFVDaGFyKiwgdW5zaWduZWQsIFJHQkEzMiYpOwogCiAgICAgc3RhdGlj
IGNvbnN0IFJHQkEzMiBibGFjayA9IDB4RkYwMDAwMDA7Ci0gICAgc3RhdGljIGNvbnN0IFJHQkEz
MiB3aGl0ZSA9IDB4RkZGRkZGRkY7CisgICAgV0VCQ09SRV9FWFBPUlQgc3RhdGljIGNvbnN0IFJH
QkEzMiB3aGl0ZSA9IDB4RkZGRkZGRkY7CiAgICAgc3RhdGljIGNvbnN0IFJHQkEzMiBkYXJrR3Jh
eSA9IDB4RkY4MDgwODA7CiAgICAgc3RhdGljIGNvbnN0IFJHQkEzMiBncmF5ID0gMHhGRkEwQTBB
MDsKICAgICBzdGF0aWMgY29uc3QgUkdCQTMyIGxpZ2h0R3JheSA9IDB4RkZDMEMwQzA7Ci0gICAg
c3RhdGljIGNvbnN0IFJHQkEzMiB0cmFuc3BhcmVudCA9IDB4MDAwMDAwMDA7CisgICAgV0VCQ09S
RV9FWFBPUlQgc3RhdGljIGNvbnN0IFJHQkEzMiB0cmFuc3BhcmVudCA9IDB4MDAwMDAwMDA7CiAg
ICAgc3RhdGljIGNvbnN0IFJHQkEzMiBjeWFuID0gMHhGRjAwRkZGRjsKIAogI2lmIFBMQVRGT1JN
KElPUykKSW5kZXg6IFNvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL2dyYXBoaWNzL0Rpc3BsYXlSZWZy
ZXNoTW9uaXRvci5oCj09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT0KLS0tIFNvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL2dyYXBo
aWNzL0Rpc3BsYXlSZWZyZXNoTW9uaXRvci5oCShyZXZpc2lvbiAxNzI4MDgpCisrKyBTb3VyY2Uv
V2ViQ29yZS9wbGF0Zm9ybS9ncmFwaGljcy9EaXNwbGF5UmVmcmVzaE1vbml0b3IuaAkod29ya2lu
ZyBjb3B5KQpAQCAtNDIsNyArNDIsNyBAQCBjbGFzcyBEaXNwbGF5UmVmcmVzaE1vbml0b3JDbGll
bnQ7CiBjbGFzcyBEaXNwbGF5UmVmcmVzaE1vbml0b3IgOiBwdWJsaWMgUmVmQ291bnRlZDxEaXNw
bGF5UmVmcmVzaE1vbml0b3I+IHsKIHB1YmxpYzoKICAgICBzdGF0aWMgUGFzc1JlZlB0cjxEaXNw
bGF5UmVmcmVzaE1vbml0b3I+IGNyZWF0ZShEaXNwbGF5UmVmcmVzaE1vbml0b3JDbGllbnQqKTsK
LSAgICB2aXJ0dWFsIH5EaXNwbGF5UmVmcmVzaE1vbml0b3IoKTsKKyAgICBXRUJDT1JFX0VYUE9S
VCB2aXJ0dWFsIH5EaXNwbGF5UmVmcmVzaE1vbml0b3IoKTsKICAgICAKICAgICAvLyBSZXR1cm4g
dHJ1ZSBpZiBjYWxsYmFjayByZXF1ZXN0IHdhcyBzY2hlZHVsZWQsIGZhbHNlIGlmIGl0IGNvdWxk
bid0IGJlCiAgICAgLy8gKGUuZy4sIGhhcmR3YXJlIHJlZnJlc2ggaXMgbm90IGF2YWlsYWJsZSkK
QEAgLTc1LDggKzc1LDggQEAgcHVibGljOgogICAgIE11dGV4JiBtdXRleCgpIHsgcmV0dXJuIG1f
bXV0ZXg7IH0KIAogcHJvdGVjdGVkOgotICAgIGV4cGxpY2l0IERpc3BsYXlSZWZyZXNoTW9uaXRv
cihQbGF0Zm9ybURpc3BsYXlJRCk7Ci0gICAgc3RhdGljIHZvaWQgaGFuZGxlRGlzcGxheVJlZnJl
c2hlZE5vdGlmaWNhdGlvbk9uTWFpblRocmVhZCh2b2lkKiBkYXRhKTsKKyAgICBXRUJDT1JFX0VY
UE9SVCBleHBsaWNpdCBEaXNwbGF5UmVmcmVzaE1vbml0b3IoUGxhdGZvcm1EaXNwbGF5SUQpOwor
ICAgIFdFQkNPUkVfRVhQT1JUIHN0YXRpYyB2b2lkIGhhbmRsZURpc3BsYXlSZWZyZXNoZWROb3Rp
ZmljYXRpb25Pbk1haW5UaHJlYWQodm9pZCogZGF0YSk7CiAKIHByaXZhdGU6CiAgICAgdm9pZCBk
aXNwbGF5RGlkUmVmcmVzaCgpOwpJbmRleDogU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vZ3JhcGhp
Y3MvdHJhbnNmb3Jtcy9BZmZpbmVUcmFuc2Zvcm0uaAo9PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09Ci0tLSBTb3VyY2UvV2Vi
Q29yZS9wbGF0Zm9ybS9ncmFwaGljcy90cmFuc2Zvcm1zL0FmZmluZVRyYW5zZm9ybS5oCShyZXZp
c2lvbiAxNzI4MDgpCisrKyBTb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9ncmFwaGljcy90cmFuc2Zv
cm1zL0FmZmluZVRyYW5zZm9ybS5oCSh3b3JraW5nIGNvcHkpCkBAIC01MCw4ICs1MCw4IEBAIGNs
YXNzIFRyYW5zZm9ybWF0aW9uTWF0cml4OwogY2xhc3MgQWZmaW5lVHJhbnNmb3JtIHsKICAgICBX
VEZfTUFLRV9GQVNUX0FMTE9DQVRFRDsKIHB1YmxpYzoKLSAgICBBZmZpbmVUcmFuc2Zvcm0oKTsK
LSAgICBBZmZpbmVUcmFuc2Zvcm0oZG91YmxlIGEsIGRvdWJsZSBiLCBkb3VibGUgYywgZG91Ymxl
IGQsIGRvdWJsZSBlLCBkb3VibGUgZik7CisgICAgV0VCQ09SRV9FWFBPUlQgQWZmaW5lVHJhbnNm
b3JtKCk7CisgICAgV0VCQ09SRV9FWFBPUlQgQWZmaW5lVHJhbnNmb3JtKGRvdWJsZSBhLCBkb3Vi
bGUgYiwgZG91YmxlIGMsIGRvdWJsZSBkLCBkb3VibGUgZSwgZG91YmxlIGYpOwogCiAjaWYgVVNF
KENHKQogICAgIEFmZmluZVRyYW5zZm9ybShjb25zdCBDR0FmZmluZVRyYW5zZm9ybSYpOwpAQCAt
NjIsOSArNjIsOSBAQCBwdWJsaWM6CiAgICAgdm9pZCBtYXAoZG91YmxlIHgsIGRvdWJsZSB5LCBk
b3VibGUmIHgyLCBkb3VibGUmIHkyKSBjb25zdDsKIAogICAgIC8vIFJvdW5kcyB0aGUgbWFwcGVk
IHBvaW50IHRvIHRoZSBuZWFyZXN0IGludGVnZXIgdmFsdWUuCi0gICAgSW50UG9pbnQgbWFwUG9p
bnQoY29uc3QgSW50UG9pbnQmKSBjb25zdDsKKyAgICBXRUJDT1JFX0VYUE9SVCBJbnRQb2ludCBt
YXBQb2ludChjb25zdCBJbnRQb2ludCYpIGNvbnN0OwogCi0gICAgRmxvYXRQb2ludCBtYXBQb2lu
dChjb25zdCBGbG9hdFBvaW50JikgY29uc3Q7CisgICAgV0VCQ09SRV9FWFBPUlQgRmxvYXRQb2lu
dCBtYXBQb2ludChjb25zdCBGbG9hdFBvaW50JikgY29uc3Q7CiAKICAgICBJbnRTaXplIG1hcFNp
emUoY29uc3QgSW50U2l6ZSYpIGNvbnN0OwogCkBAIC03NCwxMCArNzQsMTAgQEAgcHVibGljOgog
ICAgIC8vIGJveCBjb21wdXRhdGlvbnMgYnV0IG1heSBub3QgYmUgd2hhdCBpcyB3YW50ZWQgaW4g
b3RoZXIgY29udGV4dHMuCiAgICAgSW50UmVjdCBtYXBSZWN0KGNvbnN0IEludFJlY3QmKSBjb25z
dDsKIAotICAgIEZsb2F0UmVjdCBtYXBSZWN0KGNvbnN0IEZsb2F0UmVjdCYpIGNvbnN0OworICAg
IFdFQkNPUkVfRVhQT1JUIEZsb2F0UmVjdCBtYXBSZWN0KGNvbnN0IEZsb2F0UmVjdCYpIGNvbnN0
OwogICAgIEZsb2F0UXVhZCBtYXBRdWFkKGNvbnN0IEZsb2F0UXVhZCYpIGNvbnN0OwogCi0gICAg
Ym9vbCBpc0lkZW50aXR5KCkgY29uc3Q7CisgICAgV0VCQ09SRV9FWFBPUlQgYm9vbCBpc0lkZW50
aXR5KCkgY29uc3Q7CiAKICAgICBkb3VibGUgYSgpIGNvbnN0IHsgcmV0dXJuIG1fdHJhbnNmb3Jt
WzBdOyB9CiAgICAgdm9pZCBzZXRBKGRvdWJsZSBhKSB7IG1fdHJhbnNmb3JtWzBdID0gYTsgfQpA
QCAtOTQsMjggKzk0LDI4IEBAIHB1YmxpYzoKIAogICAgIHZvaWQgbWFrZUlkZW50aXR5KCk7CiAK
LSAgICBBZmZpbmVUcmFuc2Zvcm0mIG11bHRpcGx5KGNvbnN0IEFmZmluZVRyYW5zZm9ybSYgb3Ro
ZXIpOwotICAgIEFmZmluZVRyYW5zZm9ybSYgc2NhbGUoZG91YmxlKTsgCisgICAgV0VCQ09SRV9F
WFBPUlQgQWZmaW5lVHJhbnNmb3JtJiBtdWx0aXBseShjb25zdCBBZmZpbmVUcmFuc2Zvcm0mIG90
aGVyKTsKKyAgICBXRUJDT1JFX0VYUE9SVCBBZmZpbmVUcmFuc2Zvcm0mIHNjYWxlKGRvdWJsZSk7
CiAgICAgQWZmaW5lVHJhbnNmb3JtJiBzY2FsZShkb3VibGUgc3gsIGRvdWJsZSBzeSk7IAogICAg
IEFmZmluZVRyYW5zZm9ybSYgc2NhbGVOb25Vbmlmb3JtKGRvdWJsZSBzeCwgZG91YmxlIHN5KTsK
ICAgICBBZmZpbmVUcmFuc2Zvcm0mIHJvdGF0ZShkb3VibGUgZCk7CiAgICAgQWZmaW5lVHJhbnNm
b3JtJiByb3RhdGVGcm9tVmVjdG9yKGRvdWJsZSB4LCBkb3VibGUgeSk7Ci0gICAgQWZmaW5lVHJh
bnNmb3JtJiB0cmFuc2xhdGUoZG91YmxlIHR4LCBkb3VibGUgdHkpOworICAgIFdFQkNPUkVfRVhQ
T1JUIEFmZmluZVRyYW5zZm9ybSYgdHJhbnNsYXRlKGRvdWJsZSB0eCwgZG91YmxlIHR5KTsKICAg
ICBBZmZpbmVUcmFuc2Zvcm0mIHNoZWFyKGRvdWJsZSBzeCwgZG91YmxlIHN5KTsKICAgICBBZmZp
bmVUcmFuc2Zvcm0mIGZsaXBYKCk7Ci0gICAgQWZmaW5lVHJhbnNmb3JtJiBmbGlwWSgpOworICAg
IFdFQkNPUkVfRVhQT1JUIEFmZmluZVRyYW5zZm9ybSYgZmxpcFkoKTsKICAgICBBZmZpbmVUcmFu
c2Zvcm0mIHNrZXcoZG91YmxlIGFuZ2xlWCwgZG91YmxlIGFuZ2xlWSk7CiAgICAgQWZmaW5lVHJh
bnNmb3JtJiBza2V3WChkb3VibGUgYW5nbGUpOwogICAgIEFmZmluZVRyYW5zZm9ybSYgc2tld1ko
ZG91YmxlIGFuZ2xlKTsKIAogICAgIC8vIFRoZXNlIGZ1bmN0aW9ucyBnZXQgdGhlIGxlbmd0aCBv
ZiBhbiBheGlzLWFsaWduZWQgdW5pdCB2ZWN0b3IKICAgICAvLyBvbmNlIGl0IGhhcyBiZWVuIG1h
cHBlZCB0aHJvdWdoIHRoZSB0cmFuc2Zvcm0KLSAgICBkb3VibGUgeFNjYWxlKCkgY29uc3Q7Ci0g
ICAgZG91YmxlIHlTY2FsZSgpIGNvbnN0OworICAgIFdFQkNPUkVfRVhQT1JUIGRvdWJsZSB4U2Nh
bGUoKSBjb25zdDsKKyAgICBXRUJDT1JFX0VYUE9SVCBkb3VibGUgeVNjYWxlKCkgY29uc3Q7CiAK
ICAgICBkb3VibGUgZGV0KCkgY29uc3Q7Ci0gICAgYm9vbCBpc0ludmVydGlibGUoKSBjb25zdDsK
LSAgICBBZmZpbmVUcmFuc2Zvcm0gaW52ZXJzZSgpIGNvbnN0OworICAgIFdFQkNPUkVfRVhQT1JU
IGJvb2wgaXNJbnZlcnRpYmxlKCkgY29uc3Q7CisgICAgV0VCQ09SRV9FWFBPUlQgQWZmaW5lVHJh
bnNmb3JtIGludmVyc2UoKSBjb25zdDsKIAogICAgIHZvaWQgYmxlbmQoY29uc3QgQWZmaW5lVHJh
bnNmb3JtJiBmcm9tLCBkb3VibGUgcHJvZ3Jlc3MpOwogCkluZGV4OiBTb3VyY2UvV2ViQ29yZS9w
bGF0Zm9ybS9pb3MvV2ViQ29yZVN5c3RlbUludGVyZmFjZUlPUy5tbQo9PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09Ci0tLSBT
b3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9pb3MvV2ViQ29yZVN5c3RlbUludGVyZmFjZUlPUy5tbQko
cmV2aXNpb24gMTcyODA4KQorKysgU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vaW9zL1dlYkNvcmVT
eXN0ZW1JbnRlcmZhY2VJT1MubW0JKHdvcmtpbmcgY29weSkKQEAgLTI2LDI0ICsyNiwyNCBAQAog
I2ltcG9ydCAiY29uZmlnLmgiCiAjaW1wb3J0ICJXZWJDb3JlU3lzdGVtSW50ZXJmYWNlLmgiCiAK
LXZvaWQgKCp3a0NBTGF5ZXJFbnVtZXJhdGVSZWN0c0JlaW5nRHJhd25XaXRoQmxvY2spKENBTGF5
ZXIgKiwgQ0dDb250ZXh0UmVmIGNvbnRleHQsIHZvaWQgKF5ibG9jaykoQ0dSZWN0IHJlY3QpKTsK
LUJPT0wgKCp3a0NHQ29udGV4dEdldFNob3VsZFNtb290aEZvbnRzKShDR0NvbnRleHRSZWYpOwot
Q0dQYXR0ZXJuUmVmICgqd2tDR1BhdHRlcm5DcmVhdGVXaXRoSW1hZ2VBbmRUcmFuc2Zvcm0pKENH
SW1hZ2VSZWYsIENHQWZmaW5lVHJhbnNmb3JtLCBpbnQpOwotdm9pZCAoKndrQ0dDb250ZXh0UmVz
ZXRDbGlwKShDR0NvbnRleHRSZWYpOyAKLUNGU3RyaW5nUmVmICgqd2tDb3B5Q0ZMb2NhbGl6YXRp
b25QcmVmZXJyZWROYW1lKShDRlN0cmluZ1JlZik7Ci12b2lkICgqd2tDbGVhckdseXBoVmVjdG9y
KSh2b2lkKiBnbHlwaHMpOwotT1NTdGF0dXMgKCp3a0NvbnZlcnRDaGFyVG9HbHlwaHMpKHZvaWQq
IHN0eWxlR3JvdXAsIGNvbnN0IFVuaUNoYXIqLCB1bnNpZ25lZCBudW1DaGFyYWN0ZXJzLCB2b2lk
KiBnbHlwaHMpOwotTlNTdHJpbmcqICgqd2tHZXRNSU1FVHlwZUZvckV4dGVuc2lvbikoTlNTdHJp
bmcqKTsKLU5TRGF0ZSAqKCp3a0dldE5TVVJMUmVzcG9uc2VMYXN0TW9kaWZpZWREYXRlKShOU1VS
TFJlc3BvbnNlICpyZXNwb25zZSk7Ci12b2lkICgqd2tTZXRCYXNlQ1RNKShDR0NvbnRleHRSZWYs
IENHQWZmaW5lVHJhbnNmb3JtKTsKLXZvaWQgKCp3a1NldFBhdHRlcm5QaGFzZUluVXNlclNwYWNl
KShDR0NvbnRleHRSZWYsIENHUG9pbnQgcG9pbnQpOwotQ0dBZmZpbmVUcmFuc2Zvcm0gKCp3a0dl
dFVzZXJUb0Jhc2VDVE0pKENHQ29udGV4dFJlZik7Ci1ib29sICgqd2tDR0NvbnRleHRJc1BERkNv
bnRleHQpKENHQ29udGV4dFJlZik7Ci12b2lkICgqd2tTZXRVcEZvbnRDYWNoZSkoKTsKLXZvaWQg
KCp3a1NpZ25hbENGUmVhZFN0cmVhbUVuZCkoQ0ZSZWFkU3RyZWFtUmVmIHN0cmVhbSk7Ci12b2lk
ICgqd2tTaWduYWxDRlJlYWRTdHJlYW1IYXNCeXRlcykoQ0ZSZWFkU3RyZWFtUmVmIHN0cmVhbSk7
Ci12b2lkICgqd2tTaWduYWxDRlJlYWRTdHJlYW1FcnJvcikoQ0ZSZWFkU3RyZWFtUmVmIHN0cmVh
bSwgQ0ZTdHJlYW1FcnJvciAqZXJyb3IpOwotQ0ZSZWFkU3RyZWFtUmVmICgqd2tDcmVhdGVDdXN0
b21DRlJlYWRTdHJlYW0pKHZvaWQgKigqZm9ybUNyZWF0ZSkoQ0ZSZWFkU3RyZWFtUmVmLCB2b2lk
ICopLCAKK1dFQkNPUkVfRVhQT1JUIHZvaWQgKCp3a0NBTGF5ZXJFbnVtZXJhdGVSZWN0c0JlaW5n
RHJhd25XaXRoQmxvY2spKENBTGF5ZXIgKiwgQ0dDb250ZXh0UmVmIGNvbnRleHQsIHZvaWQgKF5i
bG9jaykoQ0dSZWN0IHJlY3QpKTsKK1dFQkNPUkVfRVhQT1JUIEJPT0wgKCp3a0NHQ29udGV4dEdl
dFNob3VsZFNtb290aEZvbnRzKShDR0NvbnRleHRSZWYpOworV0VCQ09SRV9FWFBPUlQgQ0dQYXR0
ZXJuUmVmICgqd2tDR1BhdHRlcm5DcmVhdGVXaXRoSW1hZ2VBbmRUcmFuc2Zvcm0pKENHSW1hZ2VS
ZWYsIENHQWZmaW5lVHJhbnNmb3JtLCBpbnQpOworV0VCQ09SRV9FWFBPUlQgdm9pZCAoKndrQ0dD
b250ZXh0UmVzZXRDbGlwKShDR0NvbnRleHRSZWYpOworV0VCQ09SRV9FWFBPUlQgQ0ZTdHJpbmdS
ZWYgKCp3a0NvcHlDRkxvY2FsaXphdGlvblByZWZlcnJlZE5hbWUpKENGU3RyaW5nUmVmKTsKK1dF
QkNPUkVfRVhQT1JUIHZvaWQgKCp3a0NsZWFyR2x5cGhWZWN0b3IpKHZvaWQqIGdseXBocyk7CitX
RUJDT1JFX0VYUE9SVCBPU1N0YXR1cyAoKndrQ29udmVydENoYXJUb0dseXBocykodm9pZCogc3R5
bGVHcm91cCwgY29uc3QgVW5pQ2hhciosIHVuc2lnbmVkIG51bUNoYXJhY3RlcnMsIHZvaWQqIGds
eXBocyk7CitXRUJDT1JFX0VYUE9SVCBOU1N0cmluZyogKCp3a0dldE1JTUVUeXBlRm9yRXh0ZW5z
aW9uKShOU1N0cmluZyopOworV0VCQ09SRV9FWFBPUlQgTlNEYXRlICooKndrR2V0TlNVUkxSZXNw
b25zZUxhc3RNb2RpZmllZERhdGUpKE5TVVJMUmVzcG9uc2UgKnJlc3BvbnNlKTsKK1dFQkNPUkVf
RVhQT1JUIHZvaWQgKCp3a1NldEJhc2VDVE0pKENHQ29udGV4dFJlZiwgQ0dBZmZpbmVUcmFuc2Zv
cm0pOworV0VCQ09SRV9FWFBPUlQgdm9pZCAoKndrU2V0UGF0dGVyblBoYXNlSW5Vc2VyU3BhY2Up
KENHQ29udGV4dFJlZiwgQ0dQb2ludCBwb2ludCk7CitXRUJDT1JFX0VYUE9SVCBDR0FmZmluZVRy
YW5zZm9ybSAoKndrR2V0VXNlclRvQmFzZUNUTSkoQ0dDb250ZXh0UmVmKTsKK1dFQkNPUkVfRVhQ
T1JUIGJvb2wgKCp3a0NHQ29udGV4dElzUERGQ29udGV4dCkoQ0dDb250ZXh0UmVmKTsKK1dFQkNP
UkVfRVhQT1JUIHZvaWQgKCp3a1NldFVwRm9udENhY2hlKSgpOworV0VCQ09SRV9FWFBPUlQgdm9p
ZCAoKndrU2lnbmFsQ0ZSZWFkU3RyZWFtRW5kKShDRlJlYWRTdHJlYW1SZWYgc3RyZWFtKTsKK1dF
QkNPUkVfRVhQT1JUIHZvaWQgKCp3a1NpZ25hbENGUmVhZFN0cmVhbUhhc0J5dGVzKShDRlJlYWRT
dHJlYW1SZWYgc3RyZWFtKTsKK1dFQkNPUkVfRVhQT1JUIHZvaWQgKCp3a1NpZ25hbENGUmVhZFN0
cmVhbUVycm9yKShDRlJlYWRTdHJlYW1SZWYgc3RyZWFtLCBDRlN0cmVhbUVycm9yICplcnJvcik7
CitXRUJDT1JFX0VYUE9SVCBDRlJlYWRTdHJlYW1SZWYgKCp3a0NyZWF0ZUN1c3RvbUNGUmVhZFN0
cmVhbSkodm9pZCAqKCpmb3JtQ3JlYXRlKShDRlJlYWRTdHJlYW1SZWYsIHZvaWQgKiksCiAgICAg
dm9pZCAoKmZvcm1GaW5hbGl6ZSkoQ0ZSZWFkU3RyZWFtUmVmLCB2b2lkICopLCAKICAgICBCb29s
ZWFuICgqZm9ybU9wZW4pKENGUmVhZFN0cmVhbVJlZiwgQ0ZTdHJlYW1FcnJvciAqLCBCb29sZWFu
ICosIHZvaWQgKiksIAogICAgIENGSW5kZXggKCpmb3JtUmVhZCkoQ0ZSZWFkU3RyZWFtUmVmLCBV
SW50OCAqLCBDRkluZGV4LCBDRlN0cmVhbUVycm9yICosIEJvb2xlYW4gKiwgdm9pZCAqKSwgCkBA
IC01MiwxMDQgKzUyLDEwNCBAQCBDRlJlYWRTdHJlYW1SZWYgKCp3a0NyZWF0ZUN1c3RvbUNGUmVh
ZFN0CiAgICAgdm9pZCAoKmZvcm1TY2hlZHVsZSkoQ0ZSZWFkU3RyZWFtUmVmLCBDRlJ1bkxvb3BS
ZWYsIENGU3RyaW5nUmVmLCB2b2lkICopLCAKICAgICB2b2lkICgqZm9ybVVuc2NoZWR1bGUpKENG
UmVhZFN0cmVhbVJlZiwgQ0ZSdW5Mb29wUmVmLCBDRlN0cmluZ1JlZiwgdm9pZCAqKSwKICAgICB2
b2lkICpjb250ZXh0KTsKLU5TU3RyaW5nKiAoKndrQ29weU5TVVJMUmVzcG9uc2VTdGF0dXNMaW5l
KShOU1VSTFJlc3BvbnNlKik7Ci12b2lkICgqd2tTZXROU1VSTENvbm5lY3Rpb25EZWZlcnNDYWxs
YmFja3MpKE5TVVJMQ29ubmVjdGlvbiAqLCBCT09MKTsKLXZvaWQgKCp3a1NldE5TVVJMUmVxdWVz
dFNob3VsZENvbnRlbnRTbmlmZikoTlNNdXRhYmxlVVJMUmVxdWVzdCAqLCBCT09MKTsKLWlkICgq
d2tDcmVhdGVOU1VSTENvbm5lY3Rpb25EZWxlZ2F0ZVByb3h5KSh2b2lkKTsKLXVuc2lnbmVkICgq
d2tJbml0aWFsaXplTWF4aW11bUhUVFBDb25uZWN0aW9uQ291bnRQZXJIb3N0KSh1bnNpZ25lZCBw
cmVmZXJyZWRDb25uZWN0aW9uQ291bnQpOwotaW50ICgqd2tHZXRIVFRQUmVxdWVzdFByaW9yaXR5
KShDRlVSTFJlcXVlc3RSZWYpOwotdm9pZCAoKndrU2V0SFRUUFJlcXVlc3RNYXhpbXVtUHJpb3Jp
dHkpKGludCBwcmlvcml0eSk7Ci12b2lkICgqd2tTZXRIVFRQUmVxdWVzdFByaW9yaXR5KShDRlVS
TFJlcXVlc3RSZWYsIGludCBwcmlvcml0eSk7Ci12b2lkICgqd2tTZXRIVFRQUmVxdWVzdE1pbmlt
dW1GYXN0TGFuZVByaW9yaXR5KShpbnQgcHJpb3JpdHkpOwotdm9pZCAoKndrSFRUUFJlcXVlc3RF
bmFibGVQaXBlbGluaW5nKShDRlVSTFJlcXVlc3RSZWYpOwotdm9pZCAoKndrU2V0Q09OTkVDVFBy
b3h5Rm9yU3RyZWFtKShDRlJlYWRTdHJlYW1SZWYsIENGU3RyaW5nUmVmIHByb3h5SG9zdCwgQ0ZO
dW1iZXJSZWYgcHJveHlQb3J0KTsKLXZvaWQgKCp3a1NldENPTk5FQ1RQcm94eUF1dGhvcml6YXRp
b25Gb3JTdHJlYW0pKENGUmVhZFN0cmVhbVJlZiwgQ0ZTdHJpbmdSZWYgcHJveHlBdXRob3JpemF0
aW9uU3RyaW5nKTsKLXZvaWQgKCp3a1NldENvb2tpZVN0b3JhZ2VQcml2YXRlQnJvd3NpbmdFbmFi
bGVkKShCT09MKTsKLUNGSFRUUE1lc3NhZ2VSZWYgKCp3a0NvcHlDT05ORUNUUHJveHlSZXNwb25z
ZSkoQ0ZSZWFkU3RyZWFtUmVmLCBDRlVSTFJlZiByZXNwb25zZVVSTCwgQ0ZTdHJpbmdSZWYgcHJv
eHlIb3N0LCBDRk51bWJlclJlZiBwcm94eVBvcnQpOwotYm9vbCAoKndrRXhlY3V0YWJsZVdhc0xp
bmtlZE9uT3JBZnRlcklPU1ZlcnNpb24pKGludCk7Ci1pbnQgKCp3a0dldERldmljZUNsYXNzKSh2
b2lkKTsKLUNHU2l6ZSAoKndrR2V0U2NyZWVuU2l6ZSkodm9pZCk7Ci1DR1NpemUgKCp3a0dldEF2
YWlsYWJsZVNjcmVlblNpemUpKHZvaWQpOwotdm9pZCAoKndrU2V0TGF5ZXJDb250ZW50c1NjYWxl
KShDQUxheWVyICopOwotZmxvYXQgKCp3a0dldFNjcmVlblNjYWxlRmFjdG9yKSh2b2lkKTsKLWJv
b2wgKCp3a0lzR0IxODAzMENvbXBsaWFuY2VSZXF1aXJlZCkodm9pZCk7Ci12b2lkICgqd2tDR1Bh
dGhBZGRSb3VuZGVkUmVjdCkoQ0dNdXRhYmxlUGF0aFJlZiBwYXRoLCBjb25zdCBDR0FmZmluZVRy
YW5zZm9ybSogbWF0cml4LCBDR1JlY3QgcmVjdCwgQ0dGbG9hdCBjb3JuZXJXaWR0aCwgQ0dGbG9h
dCBjb3JuZXJIZWlnaHQpOyAKLXZvaWQgKCp3a0NGVVJMUmVxdWVzdEFsbG93QWxsUG9zdENhY2hp
bmcpKENGVVJMUmVxdWVzdFJlZik7Ci1DRkFycmF5UmVmICgqd2tDb3B5TlNVUkxSZXNwb25zZUNl
cnRpZmljYXRlQ2hhaW4pKE5TVVJMUmVzcG9uc2UqKTsKLUNGU3RyaW5nRW5jb2RpbmcgKCp3a0dl
dFdlYkRlZmF1bHRDRlN0cmluZ0VuY29kaW5nKSh2b2lkKTsKK1dFQkNPUkVfRVhQT1JUIE5TU3Ry
aW5nKiAoKndrQ29weU5TVVJMUmVzcG9uc2VTdGF0dXNMaW5lKShOU1VSTFJlc3BvbnNlKik7CitX
RUJDT1JFX0VYUE9SVCB2b2lkICgqd2tTZXROU1VSTENvbm5lY3Rpb25EZWZlcnNDYWxsYmFja3Mp
KE5TVVJMQ29ubmVjdGlvbiAqLCBCT09MKTsKK1dFQkNPUkVfRVhQT1JUIHZvaWQgKCp3a1NldE5T
VVJMUmVxdWVzdFNob3VsZENvbnRlbnRTbmlmZikoTlNNdXRhYmxlVVJMUmVxdWVzdCAqLCBCT09M
KTsKK1dFQkNPUkVfRVhQT1JUIGlkICgqd2tDcmVhdGVOU1VSTENvbm5lY3Rpb25EZWxlZ2F0ZVBy
b3h5KSh2b2lkKTsKK1dFQkNPUkVfRVhQT1JUIHVuc2lnbmVkICgqd2tJbml0aWFsaXplTWF4aW11
bUhUVFBDb25uZWN0aW9uQ291bnRQZXJIb3N0KSh1bnNpZ25lZCBwcmVmZXJyZWRDb25uZWN0aW9u
Q291bnQpOworV0VCQ09SRV9FWFBPUlQgaW50ICgqd2tHZXRIVFRQUmVxdWVzdFByaW9yaXR5KShD
RlVSTFJlcXVlc3RSZWYpOworV0VCQ09SRV9FWFBPUlQgdm9pZCAoKndrU2V0SFRUUFJlcXVlc3RN
YXhpbXVtUHJpb3JpdHkpKGludCBwcmlvcml0eSk7CitXRUJDT1JFX0VYUE9SVCB2b2lkICgqd2tT
ZXRIVFRQUmVxdWVzdFByaW9yaXR5KShDRlVSTFJlcXVlc3RSZWYsIGludCBwcmlvcml0eSk7CitX
RUJDT1JFX0VYUE9SVCB2b2lkICgqd2tTZXRIVFRQUmVxdWVzdE1pbmltdW1GYXN0TGFuZVByaW9y
aXR5KShpbnQgcHJpb3JpdHkpOworV0VCQ09SRV9FWFBPUlQgdm9pZCAoKndrSFRUUFJlcXVlc3RF
bmFibGVQaXBlbGluaW5nKShDRlVSTFJlcXVlc3RSZWYpOworV0VCQ09SRV9FWFBPUlQgdm9pZCAo
KndrU2V0Q09OTkVDVFByb3h5Rm9yU3RyZWFtKShDRlJlYWRTdHJlYW1SZWYsIENGU3RyaW5nUmVm
IHByb3h5SG9zdCwgQ0ZOdW1iZXJSZWYgcHJveHlQb3J0KTsKK1dFQkNPUkVfRVhQT1JUIHZvaWQg
KCp3a1NldENPTk5FQ1RQcm94eUF1dGhvcml6YXRpb25Gb3JTdHJlYW0pKENGUmVhZFN0cmVhbVJl
ZiwgQ0ZTdHJpbmdSZWYgcHJveHlBdXRob3JpemF0aW9uU3RyaW5nKTsKK1dFQkNPUkVfRVhQT1JU
IHZvaWQgKCp3a1NldENvb2tpZVN0b3JhZ2VQcml2YXRlQnJvd3NpbmdFbmFibGVkKShCT09MKTsK
K1dFQkNPUkVfRVhQT1JUIENGSFRUUE1lc3NhZ2VSZWYgKCp3a0NvcHlDT05ORUNUUHJveHlSZXNw
b25zZSkoQ0ZSZWFkU3RyZWFtUmVmLCBDRlVSTFJlZiByZXNwb25zZVVSTCwgQ0ZTdHJpbmdSZWYg
cHJveHlIb3N0LCBDRk51bWJlclJlZiBwcm94eVBvcnQpOworV0VCQ09SRV9FWFBPUlQgYm9vbCAo
KndrRXhlY3V0YWJsZVdhc0xpbmtlZE9uT3JBZnRlcklPU1ZlcnNpb24pKGludCk7CitXRUJDT1JF
X0VYUE9SVCBpbnQgKCp3a0dldERldmljZUNsYXNzKSh2b2lkKTsKK1dFQkNPUkVfRVhQT1JUIENH
U2l6ZSAoKndrR2V0U2NyZWVuU2l6ZSkodm9pZCk7CitXRUJDT1JFX0VYUE9SVCBDR1NpemUgKCp3
a0dldEF2YWlsYWJsZVNjcmVlblNpemUpKHZvaWQpOworV0VCQ09SRV9FWFBPUlQgdm9pZCAoKndr
U2V0TGF5ZXJDb250ZW50c1NjYWxlKShDQUxheWVyICopOworV0VCQ09SRV9FWFBPUlQgZmxvYXQg
KCp3a0dldFNjcmVlblNjYWxlRmFjdG9yKSh2b2lkKTsKK1dFQkNPUkVfRVhQT1JUIGJvb2wgKCp3
a0lzR0IxODAzMENvbXBsaWFuY2VSZXF1aXJlZCkodm9pZCk7CitXRUJDT1JFX0VYUE9SVCB2b2lk
ICgqd2tDR1BhdGhBZGRSb3VuZGVkUmVjdCkoQ0dNdXRhYmxlUGF0aFJlZiBwYXRoLCBjb25zdCBD
R0FmZmluZVRyYW5zZm9ybSogbWF0cml4LCBDR1JlY3QgcmVjdCwgQ0dGbG9hdCBjb3JuZXJXaWR0
aCwgQ0dGbG9hdCBjb3JuZXJIZWlnaHQpOworV0VCQ09SRV9FWFBPUlQgdm9pZCAoKndrQ0ZVUkxS
ZXF1ZXN0QWxsb3dBbGxQb3N0Q2FjaGluZykoQ0ZVUkxSZXF1ZXN0UmVmKTsKK1dFQkNPUkVfRVhQ
T1JUIENGQXJyYXlSZWYgKCp3a0NvcHlOU1VSTFJlc3BvbnNlQ2VydGlmaWNhdGVDaGFpbikoTlNV
UkxSZXNwb25zZSopOworV0VCQ09SRV9FWFBPUlQgQ0ZTdHJpbmdFbmNvZGluZyAoKndrR2V0V2Vi
RGVmYXVsdENGU3RyaW5nRW5jb2RpbmcpKHZvaWQpOwogCiAjaWYgVVNFKENGTkVUV09SSykKLUNG
SFRUUENvb2tpZVN0b3JhZ2VSZWYgKCp3a0dldERlZmF1bHRIVFRQQ29va2llU3RvcmFnZSkoKTsK
LVdLQ0ZVUkxDcmVkZW50aWFsUmVmICgqd2tDb3B5Q3JlZGVudGlhbEZyb21DRlBlcnNpc3RlbnRT
dG9yYWdlKShDRlVSTFByb3RlY3Rpb25TcGFjZVJlZiBwcm90ZWN0aW9uU3BhY2UpOwotdm9pZCAo
KndrU2V0Q0ZVUkxSZXF1ZXN0U2hvdWxkQ29udGVudFNuaWZmKShDRk11dGFibGVVUkxSZXF1ZXN0
UmVmLCBib29sKTsKLXZvaWQgKCp3a1NldFJlcXVlc3RTdG9yYWdlU2Vzc2lvbikoQ0ZVUkxTdG9y
YWdlU2Vzc2lvblJlZiwgQ0ZNdXRhYmxlVVJMUmVxdWVzdFJlZik7CitXRUJDT1JFX0VYUE9SVCBD
RkhUVFBDb29raWVTdG9yYWdlUmVmICgqd2tHZXREZWZhdWx0SFRUUENvb2tpZVN0b3JhZ2UpKCk7
CitXRUJDT1JFX0VYUE9SVCBXS0NGVVJMQ3JlZGVudGlhbFJlZiAoKndrQ29weUNyZWRlbnRpYWxG
cm9tQ0ZQZXJzaXN0ZW50U3RvcmFnZSkoQ0ZVUkxQcm90ZWN0aW9uU3BhY2VSZWYgcHJvdGVjdGlv
blNwYWNlKTsKK1dFQkNPUkVfRVhQT1JUIHZvaWQgKCp3a1NldENGVVJMUmVxdWVzdFNob3VsZENv
bnRlbnRTbmlmZikoQ0ZNdXRhYmxlVVJMUmVxdWVzdFJlZiwgYm9vbCk7CitXRUJDT1JFX0VYUE9S
VCB2b2lkICgqd2tTZXRSZXF1ZXN0U3RvcmFnZVNlc3Npb24pKENGVVJMU3RvcmFnZVNlc3Npb25S
ZWYsIENGTXV0YWJsZVVSTFJlcXVlc3RSZWYpOwogI2VuZGlmCiAKLWJvb2wgKCp3a0dldFZlcnRp
Y2FsR2x5cGhzRm9yQ2hhcmFjdGVycykoQ1RGb250UmVmLCBjb25zdCBVbmlDaGFyW10sIENHR2x5
cGhbXSwgc2l6ZV90KTsKLUNUTGluZVJlZiAoKndrQ3JlYXRlQ1RMaW5lV2l0aFVuaUNoYXJQcm92
aWRlcikoY29uc3QgVW5pQ2hhciogKCpwcm92aWRlKShDRkluZGV4IHN0cmluZ0luZGV4LCBDRklu
ZGV4KiBjaGFyQ291bnQsIENGRGljdGlvbmFyeVJlZiogYXR0cmlidXRlcywgdm9pZCopLCB2b2lk
ICgqZGlzcG9zZSkoY29uc3QgVW5pQ2hhciogY2hhcnMsIHZvaWQqKSwgdm9pZCopOwotYm9vbCAo
KndrQ1RGb250VHJhbnNmb3JtR2x5cGhzKShDVEZvbnRSZWYgZm9udCwgQ0dHbHlwaCBnbHlwaHNb
XSwgQ0dTaXplIGFkdmFuY2VzW10sIENGSW5kZXggY291bnQsIHdrQ1RGb250VHJhbnNmb3JtT3B0
aW9ucyBvcHRpb25zKTsKK1dFQkNPUkVfRVhQT1JUIGJvb2wgKCp3a0dldFZlcnRpY2FsR2x5cGhz
Rm9yQ2hhcmFjdGVycykoQ1RGb250UmVmLCBjb25zdCBVbmlDaGFyW10sIENHR2x5cGhbXSwgc2l6
ZV90KTsKK1dFQkNPUkVfRVhQT1JUIENUTGluZVJlZiAoKndrQ3JlYXRlQ1RMaW5lV2l0aFVuaUNo
YXJQcm92aWRlcikoY29uc3QgVW5pQ2hhciogKCpwcm92aWRlKShDRkluZGV4IHN0cmluZ0luZGV4
LCBDRkluZGV4KiBjaGFyQ291bnQsIENGRGljdGlvbmFyeVJlZiogYXR0cmlidXRlcywgdm9pZCop
LCB2b2lkICgqZGlzcG9zZSkoY29uc3QgVW5pQ2hhciogY2hhcnMsIHZvaWQqKSwgdm9pZCopOwor
V0VCQ09SRV9FWFBPUlQgYm9vbCAoKndrQ1RGb250VHJhbnNmb3JtR2x5cGhzKShDVEZvbnRSZWYg
Zm9udCwgQ0dHbHlwaCBnbHlwaHNbXSwgQ0dTaXplIGFkdmFuY2VzW10sIENGSW5kZXggY291bnQs
IHdrQ1RGb250VHJhbnNmb3JtT3B0aW9ucyBvcHRpb25zKTsKIAotQ0dTaXplICgqd2tDVFJ1bkdl
dEluaXRpYWxBZHZhbmNlKShDVFJ1blJlZik7CitXRUJDT1JFX0VYUE9SVCBDR1NpemUgKCp3a0NU
UnVuR2V0SW5pdGlhbEFkdmFuY2UpKENUUnVuUmVmKTsKIAotQ1RUeXBlc2V0dGVyUmVmICgqd2tD
cmVhdGVDVFR5cGVzZXR0ZXJXaXRoVW5pQ2hhclByb3ZpZGVyQW5kT3B0aW9ucykoY29uc3QgVW5p
Q2hhciogKCpwcm92aWRlKShDRkluZGV4IHN0cmluZ0luZGV4LCBDRkluZGV4KiBjaGFyQ291bnQs
IENGRGljdGlvbmFyeVJlZiogYXR0cmlidXRlcywgdm9pZCopLCB2b2lkICgqZGlzcG9zZSkoY29u
c3QgVW5pQ2hhciogY2hhcnMsIHZvaWQqKSwgdm9pZCosIENGRGljdGlvbmFyeVJlZiBvcHRpb25z
KTsKK1dFQkNPUkVfRVhQT1JUIENUVHlwZXNldHRlclJlZiAoKndrQ3JlYXRlQ1RUeXBlc2V0dGVy
V2l0aFVuaUNoYXJQcm92aWRlckFuZE9wdGlvbnMpKGNvbnN0IFVuaUNoYXIqICgqcHJvdmlkZSko
Q0ZJbmRleCBzdHJpbmdJbmRleCwgQ0ZJbmRleCogY2hhckNvdW50LCBDRkRpY3Rpb25hcnlSZWYq
IGF0dHJpYnV0ZXMsIHZvaWQqKSwgdm9pZCAoKmRpc3Bvc2UpKGNvbnN0IFVuaUNoYXIqIGNoYXJz
LCB2b2lkKiksIHZvaWQqLCBDRkRpY3Rpb25hcnlSZWYgb3B0aW9ucyk7CiAKICNpZiAhUExBVEZP
Uk0oSU9TX1NJTVVMQVRPUikKLUNHQ29udGV4dFJlZiAoKndrSU9TdXJmYWNlQ29udGV4dENyZWF0
ZSkoSU9TdXJmYWNlUmVmIHN1cmZhY2UsIHVuc2lnbmVkIHdpZHRoLCB1bnNpZ25lZCBoZWlnaHQs
IENHQ29sb3JTcGFjZVJlZiBjb2xvclNwYWNlKTsKLUNHSW1hZ2VSZWYgKCp3a0lPU3VyZmFjZUNv
bnRleHRDcmVhdGVJbWFnZSkoQ0dDb250ZXh0UmVmIGNvbnRleHQpOworV0VCQ09SRV9FWFBPUlQg
Q0dDb250ZXh0UmVmICgqd2tJT1N1cmZhY2VDb250ZXh0Q3JlYXRlKShJT1N1cmZhY2VSZWYgc3Vy
ZmFjZSwgdW5zaWduZWQgd2lkdGgsIHVuc2lnbmVkIGhlaWdodCwgQ0dDb2xvclNwYWNlUmVmIGNv
bG9yU3BhY2UpOworV0VCQ09SRV9FWFBPUlQgQ0dJbWFnZVJlZiAoKndrSU9TdXJmYWNlQ29udGV4
dENyZWF0ZUltYWdlKShDR0NvbnRleHRSZWYgY29udGV4dCk7CiAjZW5kaWYgLy8gIVBMQVRGT1JN
KElPU19TSU1VTEFUT1IpCiAKICNpZiBQTEFURk9STShJT1NfU0lNVUxBVE9SKQotdm9pZCAoKndr
U2V0Q3Jhc2hSZXBvcnRBcHBsaWNhdGlvblNwZWNpZmljSW5mb3JtYXRpb24pKENGU3RyaW5nUmVm
KTsKK1dFQkNPUkVfRVhQT1JUIHZvaWQgKCp3a1NldENyYXNoUmVwb3J0QXBwbGljYXRpb25TcGVj
aWZpY0luZm9ybWF0aW9uKShDRlN0cmluZ1JlZik7CiAjZW5kaWYKIAotQ0ZVUkxTdG9yYWdlU2Vz
c2lvblJlZiAoKndrQ3JlYXRlUHJpdmF0ZVN0b3JhZ2VTZXNzaW9uKShDRlN0cmluZ1JlZik7Ci1O
U1VSTFJlcXVlc3QqICgqd2tDb3B5UmVxdWVzdFdpdGhTdG9yYWdlU2Vzc2lvbikoQ0ZVUkxTdG9y
YWdlU2Vzc2lvblJlZiwgTlNVUkxSZXF1ZXN0Kik7Ci1DRkhUVFBDb29raWVTdG9yYWdlUmVmICgq
d2tDb3B5SFRUUENvb2tpZVN0b3JhZ2UpKENGVVJMU3RvcmFnZVNlc3Npb25SZWYpOwotdW5zaWdu
ZWQgKCp3a0dldEhUVFBDb29raWVBY2NlcHRQb2xpY3kpKENGSFRUUENvb2tpZVN0b3JhZ2VSZWYp
Owotdm9pZCAoKndrU2V0SFRUUENvb2tpZUFjY2VwdFBvbGljeSkoQ0ZIVFRQQ29va2llU3RvcmFn
ZVJlZiwgdW5zaWduZWQpOwotTlNBcnJheSAqKCp3a0hUVFBDb29raWVzKShDRkhUVFBDb29raWVT
dG9yYWdlUmVmKTsKLU5TQXJyYXkgKigqd2tIVFRQQ29va2llc0ZvclVSTCkoQ0ZIVFRQQ29va2ll
U3RvcmFnZVJlZiwgTlNVUkwgKiwgTlNVUkwgKik7Ci12b2lkICgqd2tTZXRIVFRQQ29va2llc0Zv
clVSTCkoQ0ZIVFRQQ29va2llU3RvcmFnZVJlZiwgTlNBcnJheSAqLCBOU1VSTCAqLCBOU1VSTCAq
KTsKLXZvaWQgKCp3a0RlbGV0ZUFsbEhUVFBDb29raWVzKShDRkhUVFBDb29raWVTdG9yYWdlUmVm
KTsKLXZvaWQgKCp3a0RlbGV0ZUhUVFBDb29raWUpKENGSFRUUENvb2tpZVN0b3JhZ2VSZWYsIE5T
SFRUUENvb2tpZSAqKTsKLQotQ0ZTdHJpbmdSZWYgKCp3a0dldENGVVJMUmVzcG9uc2VNSU1FVHlw
ZSkoQ0ZVUkxSZXNwb25zZVJlZik7Ci1DRlVSTFJlZiAoKndrR2V0Q0ZVUkxSZXNwb25zZVVSTCko
Q0ZVUkxSZXNwb25zZVJlZik7Ci1DRkhUVFBNZXNzYWdlUmVmICgqd2tHZXRDRlVSTFJlc3BvbnNl
SFRUUFJlc3BvbnNlKShDRlVSTFJlc3BvbnNlUmVmKTsKLUNGU3RyaW5nUmVmICgqd2tDb3B5Q0ZV
UkxSZXNwb25zZVN1Z2dlc3RlZEZpbGVuYW1lKShDRlVSTFJlc3BvbnNlUmVmKTsKLXZvaWQgKCp3
a1NldENGVVJMUmVzcG9uc2VNSU1FVHlwZSkoQ0ZVUkxSZXNwb25zZVJlZiwgQ0ZTdHJpbmdSZWYg
bWltZVR5cGUpOwotCi12b2lkKCp3a0Rlc3Ryb3lSZW5kZXJpbmdSZXNvdXJjZXMpKHZvaWQpOwot
Ci1ib29sICgqd2tDYXB0aW9uQXBwZWFyYW5jZUhhc1VzZXJQcmVmZXJlbmNlcykodm9pZCk7Ci1i
b29sICgqd2tDYXB0aW9uQXBwZWFyYW5jZVNob3dDYXB0aW9uc1doZW5BdmFpbGFibGUpKHZvaWQp
OwotQ0dDb2xvclJlZigqd2tDYXB0aW9uQXBwZWFyYW5jZUNvcHlGb3JlZ3JvdW5kQ29sb3IpKHZv
aWQpOwotQ0dDb2xvclJlZigqd2tDYXB0aW9uQXBwZWFyYW5jZUNvcHlCYWNrZ3JvdW5kQ29sb3Ip
KHZvaWQpOwotQ0dDb2xvclJlZigqd2tDYXB0aW9uQXBwZWFyYW5jZUNvcHlXaW5kb3dDb2xvciko
dm9pZCk7Ci1ib29sKCp3a0NhcHRpb25BcHBlYXJhbmNlR2V0Rm9yZWdyb3VuZE9wYWNpdHkpKENH
RmxvYXQqKTsKLWJvb2woKndrQ2FwdGlvbkFwcGVhcmFuY2VHZXRCYWNrZ3JvdW5kT3BhY2l0eSko
Q0dGbG9hdCopOwotYm9vbCgqd2tDYXB0aW9uQXBwZWFyYW5jZUdldFdpbmRvd09wYWNpdHkpKENH
RmxvYXQqKTsKLUNHRm9udFJlZigqd2tDYXB0aW9uQXBwZWFyYW5jZUNvcHlGb250Rm9yU3R5bGUp
KGludCk7Ci1ib29sKCp3a0NhcHRpb25BcHBlYXJhbmNlR2V0UmVsYXRpdmVDaGFyYWN0ZXJTaXpl
KShDR0Zsb2F0Kik7Ci1pbnQoKndrQ2FwdGlvbkFwcGVhcmFuY2VHZXRUZXh0RWRnZVN0eWxlKSh2
b2lkKTsKLUNGU3RyaW5nUmVmKCp3a0NhcHRpb25BcHBlYXJhbmNlR2V0U2V0dGluZ3NDaGFuZ2Vk
Tm90aWZpY2F0aW9uKSh2b2lkKTsKK1dFQkNPUkVfRVhQT1JUIENGVVJMU3RvcmFnZVNlc3Npb25S
ZWYgKCp3a0NyZWF0ZVByaXZhdGVTdG9yYWdlU2Vzc2lvbikoQ0ZTdHJpbmdSZWYpOworV0VCQ09S
RV9FWFBPUlQgTlNVUkxSZXF1ZXN0KiAoKndrQ29weVJlcXVlc3RXaXRoU3RvcmFnZVNlc3Npb24p
KENGVVJMU3RvcmFnZVNlc3Npb25SZWYsIE5TVVJMUmVxdWVzdCopOworV0VCQ09SRV9FWFBPUlQg
Q0ZIVFRQQ29va2llU3RvcmFnZVJlZiAoKndrQ29weUhUVFBDb29raWVTdG9yYWdlKShDRlVSTFN0
b3JhZ2VTZXNzaW9uUmVmKTsKK1dFQkNPUkVfRVhQT1JUIHVuc2lnbmVkICgqd2tHZXRIVFRQQ29v
a2llQWNjZXB0UG9saWN5KShDRkhUVFBDb29raWVTdG9yYWdlUmVmKTsKK1dFQkNPUkVfRVhQT1JU
IHZvaWQgKCp3a1NldEhUVFBDb29raWVBY2NlcHRQb2xpY3kpKENGSFRUUENvb2tpZVN0b3JhZ2VS
ZWYsIHVuc2lnbmVkKTsKK1dFQkNPUkVfRVhQT1JUIE5TQXJyYXkgKigqd2tIVFRQQ29va2llcyko
Q0ZIVFRQQ29va2llU3RvcmFnZVJlZik7CitXRUJDT1JFX0VYUE9SVCBOU0FycmF5ICooKndrSFRU
UENvb2tpZXNGb3JVUkwpKENGSFRUUENvb2tpZVN0b3JhZ2VSZWYsIE5TVVJMICosIE5TVVJMICop
OworV0VCQ09SRV9FWFBPUlQgdm9pZCAoKndrU2V0SFRUUENvb2tpZXNGb3JVUkwpKENGSFRUUENv
b2tpZVN0b3JhZ2VSZWYsIE5TQXJyYXkgKiwgTlNVUkwgKiwgTlNVUkwgKik7CitXRUJDT1JFX0VY
UE9SVCB2b2lkICgqd2tEZWxldGVBbGxIVFRQQ29va2llcykoQ0ZIVFRQQ29va2llU3RvcmFnZVJl
Zik7CitXRUJDT1JFX0VYUE9SVCB2b2lkICgqd2tEZWxldGVIVFRQQ29va2llKShDRkhUVFBDb29r
aWVTdG9yYWdlUmVmLCBOU0hUVFBDb29raWUgKik7CisKK1dFQkNPUkVfRVhQT1JUIENGU3RyaW5n
UmVmICgqd2tHZXRDRlVSTFJlc3BvbnNlTUlNRVR5cGUpKENGVVJMUmVzcG9uc2VSZWYpOworV0VC
Q09SRV9FWFBPUlQgQ0ZVUkxSZWYgKCp3a0dldENGVVJMUmVzcG9uc2VVUkwpKENGVVJMUmVzcG9u
c2VSZWYpOworV0VCQ09SRV9FWFBPUlQgQ0ZIVFRQTWVzc2FnZVJlZiAoKndrR2V0Q0ZVUkxSZXNw
b25zZUhUVFBSZXNwb25zZSkoQ0ZVUkxSZXNwb25zZVJlZik7CitXRUJDT1JFX0VYUE9SVCBDRlN0
cmluZ1JlZiAoKndrQ29weUNGVVJMUmVzcG9uc2VTdWdnZXN0ZWRGaWxlbmFtZSkoQ0ZVUkxSZXNw
b25zZVJlZik7CitXRUJDT1JFX0VYUE9SVCB2b2lkICgqd2tTZXRDRlVSTFJlc3BvbnNlTUlNRVR5
cGUpKENGVVJMUmVzcG9uc2VSZWYsIENGU3RyaW5nUmVmIG1pbWVUeXBlKTsKKworV0VCQ09SRV9F
WFBPUlQgdm9pZCgqd2tEZXN0cm95UmVuZGVyaW5nUmVzb3VyY2VzKSh2b2lkKTsKKworV0VCQ09S
RV9FWFBPUlQgYm9vbCAoKndrQ2FwdGlvbkFwcGVhcmFuY2VIYXNVc2VyUHJlZmVyZW5jZXMpKHZv
aWQpOworV0VCQ09SRV9FWFBPUlQgYm9vbCAoKndrQ2FwdGlvbkFwcGVhcmFuY2VTaG93Q2FwdGlv
bnNXaGVuQXZhaWxhYmxlKSh2b2lkKTsKK1dFQkNPUkVfRVhQT1JUIENHQ29sb3JSZWYoKndrQ2Fw
dGlvbkFwcGVhcmFuY2VDb3B5Rm9yZWdyb3VuZENvbG9yKSh2b2lkKTsKK1dFQkNPUkVfRVhQT1JU
IENHQ29sb3JSZWYoKndrQ2FwdGlvbkFwcGVhcmFuY2VDb3B5QmFja2dyb3VuZENvbG9yKSh2b2lk
KTsKK1dFQkNPUkVfRVhQT1JUIENHQ29sb3JSZWYoKndrQ2FwdGlvbkFwcGVhcmFuY2VDb3B5V2lu
ZG93Q29sb3IpKHZvaWQpOworV0VCQ09SRV9FWFBPUlQgYm9vbCgqd2tDYXB0aW9uQXBwZWFyYW5j
ZUdldEZvcmVncm91bmRPcGFjaXR5KShDR0Zsb2F0Kik7CitXRUJDT1JFX0VYUE9SVCBib29sKCp3
a0NhcHRpb25BcHBlYXJhbmNlR2V0QmFja2dyb3VuZE9wYWNpdHkpKENHRmxvYXQqKTsKK1dFQkNP
UkVfRVhQT1JUIGJvb2woKndrQ2FwdGlvbkFwcGVhcmFuY2VHZXRXaW5kb3dPcGFjaXR5KShDR0Zs
b2F0Kik7CitXRUJDT1JFX0VYUE9SVCBDR0ZvbnRSZWYoKndrQ2FwdGlvbkFwcGVhcmFuY2VDb3B5
Rm9udEZvclN0eWxlKShpbnQpOworV0VCQ09SRV9FWFBPUlQgYm9vbCgqd2tDYXB0aW9uQXBwZWFy
YW5jZUdldFJlbGF0aXZlQ2hhcmFjdGVyU2l6ZSkoQ0dGbG9hdCopOworV0VCQ09SRV9FWFBPUlQg
aW50KCp3a0NhcHRpb25BcHBlYXJhbmNlR2V0VGV4dEVkZ2VTdHlsZSkodm9pZCk7CitXRUJDT1JF
X0VYUE9SVCBDRlN0cmluZ1JlZigqd2tDYXB0aW9uQXBwZWFyYW5jZUdldFNldHRpbmdzQ2hhbmdl
ZE5vdGlmaWNhdGlvbikodm9pZCk7CiAKICNpZiBFTkFCTEUoUFVCTElDX1NVRkZJWF9MSVNUKQot
Ym9vbCAoKndrSXNQdWJsaWNTdWZmaXgpKE5TU3RyaW5nICpob3N0KTsKK1dFQkNPUkVfRVhQT1JU
IGJvb2wgKCp3a0lzUHVibGljU3VmZml4KShOU1N0cmluZyAqaG9zdCk7CiAjZW5kaWYKIAogI2lm
IEVOQUJMRShDQUNIRV9QQVJUSVRJT05JTkcpCi1DRlN0cmluZ1JlZiAoKndrQ2FjaGVQYXJ0aXRp
b25LZXkpKHZvaWQpOworV0VCQ09SRV9FWFBPUlQgQ0ZTdHJpbmdSZWYgKCp3a0NhY2hlUGFydGl0
aW9uS2V5KSh2b2lkKTsKICNlbmRpZgogCi1DRlN0cmluZ1JlZiAoKndrR2V0VXNlckFnZW50KSh2
b2lkKTsKLUNGU3RyaW5nUmVmICgqd2tHZXREZXZpY2VOYW1lKSh2b2lkKTsKLUNGU3RyaW5nUmVm
ICgqd2tHZXRPU05hbWVGb3JVc2VyQWdlbnQpKHZvaWQpOwotQ0ZTdHJpbmdSZWYgKCp3a0dldFBs
YXRmb3JtTmFtZUZvck5hdmlnYXRvcikodm9pZCk7Ci1DRlN0cmluZ1JlZiAoKndrR2V0VmVuZG9y
TmFtZUZvck5hdmlnYXRvcikodm9pZCk7CitXRUJDT1JFX0VYUE9SVCBDRlN0cmluZ1JlZiAoKndr
R2V0VXNlckFnZW50KSh2b2lkKTsKK1dFQkNPUkVfRVhQT1JUIENGU3RyaW5nUmVmICgqd2tHZXRE
ZXZpY2VOYW1lKSh2b2lkKTsKK1dFQkNPUkVfRVhQT1JUIENGU3RyaW5nUmVmICgqd2tHZXRPU05h
bWVGb3JVc2VyQWdlbnQpKHZvaWQpOworV0VCQ09SRV9FWFBPUlQgQ0ZTdHJpbmdSZWYgKCp3a0dl
dFBsYXRmb3JtTmFtZUZvck5hdmlnYXRvcikodm9pZCk7CitXRUJDT1JFX0VYUE9SVCBDRlN0cmlu
Z1JlZiAoKndrR2V0VmVuZG9yTmFtZUZvck5hdmlnYXRvcikodm9pZCk7CiAKLWludCAoKndrRXhl
cm5hbERldmljZVR5cGVGb3JQbGF5ZXIpKEFWUGxheWVyICopOwotTlNTdHJpbmcgKigqd2tFeGVy
bmFsRGV2aWNlRGlzcGxheU5hbWVGb3JQbGF5ZXIpKEFWUGxheWVyICopOworV0VCQ09SRV9FWFBP
UlQgaW50ICgqd2tFeGVybmFsRGV2aWNlVHlwZUZvclBsYXllcikoQVZQbGF5ZXIgKik7CitXRUJD
T1JFX0VYUE9SVCBOU1N0cmluZyAqKCp3a0V4ZXJuYWxEZXZpY2VEaXNwbGF5TmFtZUZvclBsYXll
cikoQVZQbGF5ZXIgKik7CiAKLWJvb2wgKCp3a1F1ZXJ5RGVjb2RlckF2YWlsYWJpbGl0eSkodm9p
ZCk7CitXRUJDT1JFX0VYUE9SVCBib29sICgqd2tRdWVyeURlY29kZXJBdmFpbGFiaWxpdHkpKHZv
aWQpOwogCkluZGV4OiBTb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9pb3MvV2ViVmlkZW9GdWxsc2Ny
ZWVuTW9kZWxNZWRpYUVsZW1lbnQuaAo9PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09Ci0tLSBTb3VyY2UvV2ViQ29yZS9wbGF0
Zm9ybS9pb3MvV2ViVmlkZW9GdWxsc2NyZWVuTW9kZWxNZWRpYUVsZW1lbnQuaAkocmV2aXNpb24g
MTcyODA4KQorKysgU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vaW9zL1dlYlZpZGVvRnVsbHNjcmVl
bk1vZGVsTWVkaWFFbGVtZW50LmgJKHdvcmtpbmcgY29weSkKQEAgLTQ0LDMyICs0NCwzMiBAQCBj
bGFzcyBXZWJWaWRlb0Z1bGxzY3JlZW5JbnRlcmZhY2U7CiAKIGNsYXNzIFdlYlZpZGVvRnVsbHNj
cmVlbk1vZGVsTWVkaWFFbGVtZW50IDogcHVibGljIFdlYlZpZGVvRnVsbHNjcmVlbk1vZGVsLCBw
dWJsaWMgRXZlbnRMaXN0ZW5lciB7CiBwdWJsaWM6Ci0gICAgV2ViVmlkZW9GdWxsc2NyZWVuTW9k
ZWxNZWRpYUVsZW1lbnQoKTsKLSAgICB2aXJ0dWFsIH5XZWJWaWRlb0Z1bGxzY3JlZW5Nb2RlbE1l
ZGlhRWxlbWVudCgpOworICAgIFdFQkNPUkVfRVhQT1JUIFdlYlZpZGVvRnVsbHNjcmVlbk1vZGVs
TWVkaWFFbGVtZW50KCk7CisgICAgV0VCQ09SRV9FWFBPUlQgdmlydHVhbCB+V2ViVmlkZW9GdWxs
c2NyZWVuTW9kZWxNZWRpYUVsZW1lbnQoKTsKICAgICB2b2lkIHNldFdlYlZpZGVvRnVsbHNjcmVl
bkludGVyZmFjZShXZWJWaWRlb0Z1bGxzY3JlZW5JbnRlcmZhY2UqIGludGVyZmFjZSkge21fdmlk
ZW9GdWxsc2NyZWVuSW50ZXJmYWNlID0gaW50ZXJmYWNlO30KLSAgICB2b2lkIHNldE1lZGlhRWxl
bWVudChIVE1MTWVkaWFFbGVtZW50Kik7Ci0gICAgdm9pZCBzZXRWaWRlb0Z1bGxzY3JlZW5MYXll
cihQbGF0Zm9ybUxheWVyKik7CisgICAgV0VCQ09SRV9FWFBPUlQgdm9pZCBzZXRNZWRpYUVsZW1l
bnQoSFRNTE1lZGlhRWxlbWVudCopOworICAgIFdFQkNPUkVfRVhQT1JUIHZvaWQgc2V0VmlkZW9G
dWxsc2NyZWVuTGF5ZXIoUGxhdGZvcm1MYXllciopOwogICAgIAotICAgIHZpcnR1YWwgdm9pZCBo
YW5kbGVFdmVudChXZWJDb3JlOjpTY3JpcHRFeGVjdXRpb25Db250ZXh0KiwgV2ViQ29yZTo6RXZl
bnQqKSBvdmVycmlkZTsKKyAgICBXRUJDT1JFX0VYUE9SVCB2aXJ0dWFsIHZvaWQgaGFuZGxlRXZl
bnQoV2ViQ29yZTo6U2NyaXB0RXhlY3V0aW9uQ29udGV4dCosIFdlYkNvcmU6OkV2ZW50Kikgb3Zl
cnJpZGU7CiAgICAgdm9pZCB1cGRhdGVGb3JFdmVudE5hbWUoY29uc3QgV1RGOjpBdG9taWNTdHJp
bmcmKTsKICAgICBib29sIG9wZXJhdG9yPT0oY29uc3QgRXZlbnRMaXN0ZW5lciYgcmhzKSBvdmVy
cmlkZQogICAgICAgICB7cmV0dXJuIHN0YXRpY19jYXN0PFdlYkNvcmU6OkV2ZW50TGlzdGVuZXIq
Pih0aGlzKSA9PSAmcmhzO30KIAotICAgIHZpcnR1YWwgdm9pZCBwbGF5KCkgb3ZlcnJpZGU7Ci0g
ICAgdmlydHVhbCB2b2lkIHBhdXNlKCkgb3ZlcnJpZGU7Ci0gICAgdmlydHVhbCB2b2lkIHRvZ2ds
ZVBsYXlTdGF0ZSgpIG92ZXJyaWRlOwotICAgIHZpcnR1YWwgdm9pZCBiZWdpblNjcnViYmluZygp
IG92ZXJyaWRlOwotICAgIHZpcnR1YWwgdm9pZCBlbmRTY3J1YmJpbmcoKSBvdmVycmlkZTsKLSAg
ICB2aXJ0dWFsIHZvaWQgc2Vla1RvVGltZShkb3VibGUgdGltZSkgb3ZlcnJpZGU7Ci0gICAgdmly
dHVhbCB2b2lkIGZhc3RTZWVrKGRvdWJsZSB0aW1lKSBvdmVycmlkZTsKLSAgICB2aXJ0dWFsIHZv
aWQgYmVnaW5TY2FubmluZ0ZvcndhcmQoKSBvdmVycmlkZTsKLSAgICB2aXJ0dWFsIHZvaWQgYmVn
aW5TY2FubmluZ0JhY2t3YXJkKCkgb3ZlcnJpZGU7Ci0gICAgdmlydHVhbCB2b2lkIGVuZFNjYW5u
aW5nKCkgb3ZlcnJpZGU7Ci0gICAgdmlydHVhbCB2b2lkIHJlcXVlc3RFeGl0RnVsbHNjcmVlbigp
IG92ZXJyaWRlOwotICAgIHZpcnR1YWwgdm9pZCBzZXRWaWRlb0xheWVyRnJhbWUoRmxvYXRSZWN0
KSBvdmVycmlkZTsKLSAgICB2aXJ0dWFsIHZvaWQgc2V0VmlkZW9MYXllckdyYXZpdHkoV2ViVmlk
ZW9GdWxsc2NyZWVuTW9kZWw6OlZpZGVvR3Jhdml0eSkgb3ZlcnJpZGU7Ci0gICAgdmlydHVhbCB2
b2lkIHNlbGVjdEF1ZGlvTWVkaWFPcHRpb24odWludDY0X3QgaW5kZXgpIG92ZXJyaWRlOwotICAg
IHZpcnR1YWwgdm9pZCBzZWxlY3RMZWdpYmxlTWVkaWFPcHRpb24odWludDY0X3QgaW5kZXgpIG92
ZXJyaWRlOworICAgIFdFQkNPUkVfRVhQT1JUIHZpcnR1YWwgdm9pZCBwbGF5KCkgb3ZlcnJpZGU7
CisgICAgV0VCQ09SRV9FWFBPUlQgdmlydHVhbCB2b2lkIHBhdXNlKCkgb3ZlcnJpZGU7CisgICAg
V0VCQ09SRV9FWFBPUlQgdmlydHVhbCB2b2lkIHRvZ2dsZVBsYXlTdGF0ZSgpIG92ZXJyaWRlOwor
ICAgIFdFQkNPUkVfRVhQT1JUIHZpcnR1YWwgdm9pZCBiZWdpblNjcnViYmluZygpIG92ZXJyaWRl
OworICAgIFdFQkNPUkVfRVhQT1JUIHZpcnR1YWwgdm9pZCBlbmRTY3J1YmJpbmcoKSBvdmVycmlk
ZTsKKyAgICBXRUJDT1JFX0VYUE9SVCB2aXJ0dWFsIHZvaWQgc2Vla1RvVGltZShkb3VibGUgdGlt
ZSkgb3ZlcnJpZGU7CisgICAgV0VCQ09SRV9FWFBPUlQgdmlydHVhbCB2b2lkIGZhc3RTZWVrKGRv
dWJsZSB0aW1lKSBvdmVycmlkZTsKKyAgICBXRUJDT1JFX0VYUE9SVCB2aXJ0dWFsIHZvaWQgYmVn
aW5TY2FubmluZ0ZvcndhcmQoKSBvdmVycmlkZTsKKyAgICBXRUJDT1JFX0VYUE9SVCB2aXJ0dWFs
IHZvaWQgYmVnaW5TY2FubmluZ0JhY2t3YXJkKCkgb3ZlcnJpZGU7CisgICAgV0VCQ09SRV9FWFBP
UlQgdmlydHVhbCB2b2lkIGVuZFNjYW5uaW5nKCkgb3ZlcnJpZGU7CisgICAgV0VCQ09SRV9FWFBP
UlQgdmlydHVhbCB2b2lkIHJlcXVlc3RFeGl0RnVsbHNjcmVlbigpIG92ZXJyaWRlOworICAgIFdF
QkNPUkVfRVhQT1JUIHZpcnR1YWwgdm9pZCBzZXRWaWRlb0xheWVyRnJhbWUoRmxvYXRSZWN0KSBv
dmVycmlkZTsKKyAgICBXRUJDT1JFX0VYUE9SVCB2aXJ0dWFsIHZvaWQgc2V0VmlkZW9MYXllckdy
YXZpdHkoV2ViVmlkZW9GdWxsc2NyZWVuTW9kZWw6OlZpZGVvR3Jhdml0eSkgb3ZlcnJpZGU7Cisg
ICAgV0VCQ09SRV9FWFBPUlQgdmlydHVhbCB2b2lkIHNlbGVjdEF1ZGlvTWVkaWFPcHRpb24odWlu
dDY0X3QgaW5kZXgpIG92ZXJyaWRlOworICAgIFdFQkNPUkVfRVhQT1JUIHZpcnR1YWwgdm9pZCBz
ZWxlY3RMZWdpYmxlTWVkaWFPcHRpb24odWludDY0X3QgaW5kZXgpIG92ZXJyaWRlOwogCiBwcml2
YXRlOgogICAgIHN0YXRpYyBjb25zdCBWZWN0b3I8V1RGOjpBdG9taWNTdHJpbmc+JiBvYnNlcnZl
ZEV2ZW50TmFtZXMoKTsKSW5kZXg6IFNvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL2lvcy93YWsvV0FL
Vmlldy5tbQo9PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09Ci0tLSBTb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9pb3Mvd2FrL1dB
S1ZpZXcubW0JKHJldmlzaW9uIDE3MjgwOCkKKysrIFNvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL2lv
cy93YWsvV0FLVmlldy5tbQkod29ya2luZyBjb3B5KQpAQCAtNDAsOCArNDAsOCBAQAogI2ltcG9y
dCAiV2ViRXZlbnQuaCIKICNpbXBvcnQgPHd0Zi9Bc3NlcnRpb25zLmg+CiAKLU5TU3RyaW5nICpX
QUtWaWV3RnJhbWVTaXplRGlkQ2hhbmdlTm90aWZpY2F0aW9uID0gICBAIldBS1ZpZXdGcmFtZVNp
emVEaWRDaGFuZ2VOb3RpZmljYXRpb24iOwotTlNTdHJpbmcgKldBS1ZpZXdEaWRTY3JvbGxOb3Rp
ZmljYXRpb24gPSAgICAgICAgICAgIEAiV0FLVmlld0RpZFNjcm9sbE5vdGlmaWNhdGlvbiI7CitX
RUJDT1JFX0VYUE9SVCBOU1N0cmluZyAqV0FLVmlld0ZyYW1lU2l6ZURpZENoYW5nZU5vdGlmaWNh
dGlvbiA9ICAgQCJXQUtWaWV3RnJhbWVTaXplRGlkQ2hhbmdlTm90aWZpY2F0aW9uIjsKK1dFQkNP
UkVfRVhQT1JUIE5TU3RyaW5nICpXQUtWaWV3RGlkU2Nyb2xsTm90aWZpY2F0aW9uID0gICAgICAg
ICAgICBAIldBS1ZpZXdEaWRTY3JvbGxOb3RpZmljYXRpb24iOwogCiBzdGF0aWMgV0FLVmlldyAq
Z2xvYmFsRm9jdXNWaWV3ID0gbmlsOwogc3RhdGljIENHSW50ZXJwb2xhdGlvblF1YWxpdHkgc0lu
dGVycG9sYXRpb25RdWFsaXR5OwpJbmRleDogU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vaW9zL3dh
ay9XS0NvbnRlbnRPYnNlcnZhdGlvbi5oCj09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT0KLS0tIFNvdXJjZS9XZWJDb3JlL3Bs
YXRmb3JtL2lvcy93YWsvV0tDb250ZW50T2JzZXJ2YXRpb24uaAkocmV2aXNpb24gMTcyODA4KQor
KysgU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vaW9zL3dhay9XS0NvbnRlbnRPYnNlcnZhdGlvbi5o
CSh3b3JraW5nIGNvcHkpCkBAIC00MSwxNCArNDEsMTQgQEAgdHlwZWRlZiBlbnVtCiAKIGJvb2wg
V0tPYnNlcnZpbmdDb250ZW50Q2hhbmdlcyh2b2lkKTsKIAotdm9pZCBXS1N0b3BPYnNlcnZpbmdD
b250ZW50Q2hhbmdlcyh2b2lkKTsKLXZvaWQgV0tCZWdpbk9ic2VydmluZ0NvbnRlbnRDaGFuZ2Vz
KGJvb2wgYWxsb3dzSW50ZWRldGVybWluYXRlQ2hhbmdlcyk7CitXRUJDT1JFX0VYUE9SVCB2b2lk
IFdLU3RvcE9ic2VydmluZ0NvbnRlbnRDaGFuZ2VzKHZvaWQpOworV0VCQ09SRV9FWFBPUlQgdm9p
ZCBXS0JlZ2luT2JzZXJ2aW5nQ29udGVudENoYW5nZXMoYm9vbCBhbGxvd3NJbnRlZGV0ZXJtaW5h
dGVDaGFuZ2VzKTsKIAogV0tDb250ZW50Q2hhbmdlIFdLT2JzZXJ2ZWRDb250ZW50Q2hhbmdlKHZv
aWQpOwogdm9pZCBXS1NldE9ic2VydmVkQ29udGVudENoYW5nZShXS0NvbnRlbnRDaGFuZ2UgYUNo
YW5nZSk7CiAKLWludCBXZWJUaHJlYWRDb3VudE9mT2JzZXJ2ZWRDb250ZW50TW9kaWZpZXJzKHZv
aWQpOwotdm9pZCBXZWJUaHJlYWRDbGVhck9ic2VydmVkQ29udGVudE1vZGlmaWVycyh2b2lkKTsK
K1dFQkNPUkVfRVhQT1JUIGludCBXZWJUaHJlYWRDb3VudE9mT2JzZXJ2ZWRDb250ZW50TW9kaWZp
ZXJzKHZvaWQpOworV0VCQ09SRV9FWFBPUlQgdm9pZCBXZWJUaHJlYWRDbGVhck9ic2VydmVkQ29u
dGVudE1vZGlmaWVycyh2b2lkKTsKIAogYm9vbCBXZWJUaHJlYWRDb250YWluc09ic2VydmVkQ29u
dGVudE1vZGlmaWVyKHZvaWQgKiBhQ29udGVudE1vZGlmaWVyKTsKIHZvaWQgV2ViVGhyZWFkQWRk
T2JzZXJ2ZWRDb250ZW50TW9kaWZpZXIodm9pZCAqIGFDb250ZW50TW9kaWZpZXIpOwpJbmRleDog
U291cmNlL1dlYkNvcmUvcGxhdGZvcm0vaW9zL3dhay9XS1ZpZXcuaAo9PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09Ci0tLSBT
b3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9pb3Mvd2FrL1dLVmlldy5oCShyZXZpc2lvbiAxNzI4MDgp
CisrKyBTb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9pb3Mvd2FrL1dLVmlldy5oCSh3b3JraW5nIGNv
cHkpCkBAIC05NywzMyArOTcsMzMgQEAgc3RydWN0IF9XS1ZpZXcgewogCiBleHRlcm4gV0tDbGFz
c0luZm8gV0tWaWV3Q2xhc3NJbmZvOwogCi1XS1ZpZXdSZWYgV0tWaWV3Q3JlYXRlV2l0aEZyYW1l
IChDR1JlY3QgcmVjdCwgV0tWaWV3Q29udGV4dCAqY29udGV4dCk7CitXRUJDT1JFX0VYUE9SVCBX
S1ZpZXdSZWYgV0tWaWV3Q3JlYXRlV2l0aEZyYW1lIChDR1JlY3QgcmVjdCwgV0tWaWV3Q29udGV4
dCAqY29udGV4dCk7CiB2b2lkIFdLVmlld0luaXRpYWxpemUgKFdLVmlld1JlZiB2aWV3LCBDR1Jl
Y3QgcmVjdCwgV0tWaWV3Q29udGV4dCAqY29udGV4dCk7CiAKIHZvaWQgV0tWaWV3U2V0Vmlld0Nv
bnRleHQgKFdLVmlld1JlZiB2aWV3LCBXS1ZpZXdDb250ZXh0ICpjb250ZXh0KTsKIHZvaWQgV0tW
aWV3R2V0Vmlld0NvbnRleHQgKFdLVmlld1JlZiB2aWV3LCBXS1ZpZXdDb250ZXh0ICpjb250ZXh0
KTsKIAotQ0dSZWN0IFdLVmlld0dldEJvdW5kcyAoV0tWaWV3UmVmIHZpZXcpOworV0VCQ09SRV9F
WFBPUlQgQ0dSZWN0IFdLVmlld0dldEJvdW5kcyAoV0tWaWV3UmVmIHZpZXcpOwogCi12b2lkIFdL
Vmlld1NldEZyYW1lT3JpZ2luIChXS1ZpZXdSZWYgdmlldywgQ0dQb2ludCBuZXdQb2ludCk7Ci12
b2lkIFdLVmlld1NldEZyYW1lU2l6ZSAoV0tWaWV3UmVmIHZpZXcsIENHU2l6ZSBuZXdTaXplKTsK
K1dFQkNPUkVfRVhQT1JUIHZvaWQgV0tWaWV3U2V0RnJhbWVPcmlnaW4gKFdLVmlld1JlZiB2aWV3
LCBDR1BvaW50IG5ld1BvaW50KTsKK1dFQkNPUkVfRVhQT1JUIHZvaWQgV0tWaWV3U2V0RnJhbWVT
aXplIChXS1ZpZXdSZWYgdmlldywgQ0dTaXplIG5ld1NpemUpOwogdm9pZCBXS1ZpZXdTZXRCb3Vu
ZHNPcmlnaW4oV0tWaWV3UmVmIHZpZXcsIENHUG9pbnQgbmV3T3JpZ2luKTsKIHZvaWQgV0tWaWV3
U2V0Qm91bmRzU2l6ZSAoV0tWaWV3UmVmIHZpZXcsIENHU2l6ZSBuZXdTaXplKTsKIAotQ0dSZWN0
IFdLVmlld0dldEZyYW1lIChXS1ZpZXdSZWYgdmlldyk7CitXRUJDT1JFX0VYUE9SVCBDR1JlY3Qg
V0tWaWV3R2V0RnJhbWUgKFdLVmlld1JlZiB2aWV3KTsKIAotdm9pZCBXS1ZpZXdTZXRTY2FsZSAo
V0tWaWV3UmVmIHZpZXcsIGZsb2F0IHNjYWxlKTsKLWZsb2F0IFdLVmlld0dldFNjYWxlIChXS1Zp
ZXdSZWYgdmlldyk7CitXRUJDT1JFX0VYUE9SVCB2b2lkIFdLVmlld1NldFNjYWxlIChXS1ZpZXdS
ZWYgdmlldywgZmxvYXQgc2NhbGUpOworV0VCQ09SRV9FWFBPUlQgZmxvYXQgV0tWaWV3R2V0U2Nh
bGUgKFdLVmlld1JlZiB2aWV3KTsKIENHQWZmaW5lVHJhbnNmb3JtIF9XS1ZpZXdHZXRUcmFuc2Zv
cm0oV0tWaWV3UmVmIHZpZXcpOwogCi1XQUtXaW5kb3cgKldLVmlld0dldFdpbmRvdyAoV0tWaWV3
UmVmIHZpZXcpOworV0VCQ09SRV9FWFBPUlQgV0FLV2luZG93ICpXS1ZpZXdHZXRXaW5kb3cgKFdL
Vmlld1JlZiB2aWV3KTsKIAogQ0ZBcnJheVJlZiBXS1ZpZXdHZXRTdWJ2aWV3cyAoV0tWaWV3UmVm
IHZpZXcpOwogCiBXS1ZpZXdSZWYgV0tWaWV3R2V0U3VwZXJ2aWV3IChXS1ZpZXdSZWYgdmlldyk7
CiAKLXZvaWQgV0tWaWV3QWRkU3VidmlldyAoV0tWaWV3UmVmIHZpZXcsIFdLVmlld1JlZiBzdWJ2
aWV3KTsKLXZvaWQgV0tWaWV3UmVtb3ZlRnJvbVN1cGVydmlldyAoV0tWaWV3UmVmIHZpZXcpOwor
V0VCQ09SRV9FWFBPUlQgdm9pZCBXS1ZpZXdBZGRTdWJ2aWV3IChXS1ZpZXdSZWYgdmlldywgV0tW
aWV3UmVmIHN1YnZpZXcpOworV0VCQ09SRV9FWFBPUlQgdm9pZCBXS1ZpZXdSZW1vdmVGcm9tU3Vw
ZXJ2aWV3IChXS1ZpZXdSZWYgdmlldyk7CiAKIENHUG9pbnQgV0tWaWV3Q29udmVydFBvaW50VG9T
dXBlcnZpZXcgKFdLVmlld1JlZiB2aWV3LCBDR1BvaW50IGFQb2ludCk7CiBDR1BvaW50IFdLVmll
d0NvbnZlcnRQb2ludEZyb21TdXBlcnZpZXcgKFdLVmlld1JlZiB2aWV3LCBDR1BvaW50IGFQb2lu
dCk7CkBAIC0xMzIsMTggKzEzMiwxOCBAQCBDR1BvaW50IFdLVmlld0NvbnZlcnRQb2ludEZyb21C
YXNlKFdLVmllCiAKIENHUmVjdCBXS1ZpZXdDb252ZXJ0UmVjdFRvU3VwZXJ2aWV3IChXS1ZpZXdS
ZWYgdmlldywgQ0dSZWN0IGFSZWN0KTsKIENHUmVjdCBXS1ZpZXdDb252ZXJ0UmVjdEZyb21TdXBl
cnZpZXcgKFdLVmlld1JlZiB2aWV3LCBDR1JlY3QgYVJlY3QpOwotQ0dSZWN0IFdLVmlld0NvbnZl
cnRSZWN0VG9CYXNlIChXS1ZpZXdSZWYgdmlldywgQ0dSZWN0IHIpOwotQ0dSZWN0IFdLVmlld0Nv
bnZlcnRSZWN0RnJvbUJhc2UgKFdLVmlld1JlZiB2aWV3LCBDR1JlY3QgYVJlY3QpOworV0VCQ09S
RV9FWFBPUlQgQ0dSZWN0IFdLVmlld0NvbnZlcnRSZWN0VG9CYXNlIChXS1ZpZXdSZWYgdmlldywg
Q0dSZWN0IHIpOworV0VCQ09SRV9FWFBPUlQgQ0dSZWN0IFdLVmlld0NvbnZlcnRSZWN0RnJvbUJh
c2UgKFdLVmlld1JlZiB2aWV3LCBDR1JlY3QgYVJlY3QpOwogCiBDR1JlY3QgV0tWaWV3R2V0Vmlz
aWJsZVJlY3QgKFdLVmlld1JlZiB2aWV3KTsKIAogV0tWaWV3UmVmIFdLVmlld0ZpcnN0Q2hpbGQg
KFdLVmlld1JlZiB2aWV3KTsKIFdLVmlld1JlZiBXS1ZpZXdOZXh0U2libGluZyAoV0tWaWV3UmVm
IHZpZXcpOwotV0tWaWV3UmVmIFdLVmlld1RyYXZlcnNlTmV4dCAoV0tWaWV3UmVmIHZpZXcpOwor
V0VCQ09SRV9FWFBPUlQgV0tWaWV3UmVmIFdLVmlld1RyYXZlcnNlTmV4dCAoV0tWaWV3UmVmIHZp
ZXcpOwogCi1ib29sIFdLVmlld0FjY2VwdHNGaXJzdFJlc3BvbmRlciAoV0tWaWV3UmVmIHZpZXcp
OwotYm9vbCBXS1ZpZXdCZWNvbWVGaXJzdFJlc3BvbmRlciAoV0tWaWV3UmVmIHZpZXcpOwotYm9v
bCBXS1ZpZXdSZXNpZ25GaXJzdFJlc3BvbmRlciAoV0tWaWV3UmVmIHZpZXcpOworV0VCQ09SRV9F
WFBPUlQgYm9vbCBXS1ZpZXdBY2NlcHRzRmlyc3RSZXNwb25kZXIgKFdLVmlld1JlZiB2aWV3KTsK
K1dFQkNPUkVfRVhQT1JUIGJvb2wgV0tWaWV3QmVjb21lRmlyc3RSZXNwb25kZXIgKFdLVmlld1Jl
ZiB2aWV3KTsKK1dFQkNPUkVfRVhQT1JUIGJvb2wgV0tWaWV3UmVzaWduRmlyc3RSZXNwb25kZXIg
KFdLVmlld1JlZiB2aWV3KTsKIAogdW5zaWduZWQgaW50IFdLVmlld0dldEF1dG9yZXNpemluZ01h
c2soV0tWaWV3UmVmIHZpZXcpOwogdm9pZCBXS1ZpZXdTZXRBdXRvcmVzaXppbmdNYXNrIChXS1Zp
ZXdSZWYgdmlldywgdW5zaWduZWQgaW50IG1hc2spOwpJbmRleDogU291cmNlL1dlYkNvcmUvcGxh
dGZvcm0vaW9zL3dhay9XZWJDb3JlVGhyZWFkLmgKPT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PQotLS0gU291cmNlL1dlYkNv
cmUvcGxhdGZvcm0vaW9zL3dhay9XZWJDb3JlVGhyZWFkLmgJKHJldmlzaW9uIDE3MjgwOCkKKysr
IFNvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL2lvcy93YWsvV2ViQ29yZVRocmVhZC5oCSh3b3JraW5n
IGNvcHkpCkBAIC01Miw0MCArNTIsNDAgQEAgY2xhc3MgTlNSdW5Mb29wOwogdm9pZCBXZWJUaHJl
YWRMb2NrKHZvaWQpOwogICAgIAogLy8gVGhpcyBpcyBhIG5vLW9wIGZvciBjb21wYXRpYmlsaXR5
IG9ubHkuIEl0IHdpbGwgZ28gYXdheS4gUGxlYXNlIGRvbid0IHVzZS4KLXZvaWQgV2ViVGhyZWFk
VW5sb2NrKHZvaWQpOworV0VCQ09SRV9FWFBPUlQgdm9pZCBXZWJUaHJlYWRVbmxvY2sodm9pZCk7
CiAgICAgCiAvLyBQbGVhc2UgZG9uJ3QgdXNlIGFueXRoaW5nIGJlbG93IHRoaXMgbGluZSB1bmxl
c3MgeW91IGtub3cgd2hhdCB5b3UgYXJlIGRvaW5nLiBJZiB1bnN1cmUsIGFzay4KIC8vIC0tLS0t
LS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0t
LS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLQotYm9vbCBXZWJUaHJlYWRJc0xvY2tlZCh2
b2lkKTsKLWJvb2wgV2ViVGhyZWFkSXNMb2NrZWRPckRpc2FibGVkKHZvaWQpOworV0VCQ09SRV9F
WFBPUlQgYm9vbCBXZWJUaHJlYWRJc0xvY2tlZCh2b2lkKTsKK1dFQkNPUkVfRVhQT1JUIGJvb2wg
V2ViVGhyZWFkSXNMb2NrZWRPckRpc2FibGVkKHZvaWQpOwogICAgIAotdm9pZCBXZWJUaHJlYWRM
b2NrUHVzaE1vZGFsKHZvaWQpOwotdm9pZCBXZWJUaHJlYWRMb2NrUG9wTW9kYWwodm9pZCk7CitX
RUJDT1JFX0VYUE9SVCB2b2lkIFdlYlRocmVhZExvY2tQdXNoTW9kYWwodm9pZCk7CitXRUJDT1JF
X0VYUE9SVCB2b2lkIFdlYlRocmVhZExvY2tQb3BNb2RhbCh2b2lkKTsKIAotdm9pZCBXZWJUaHJl
YWRFbmFibGUodm9pZCk7Ci1ib29sIFdlYlRocmVhZElzRW5hYmxlZCh2b2lkKTsKLWJvb2wgV2Vi
VGhyZWFkSXNDdXJyZW50KHZvaWQpOwotYm9vbCBXZWJUaHJlYWROb3RDdXJyZW50KHZvaWQpOwor
V0VCQ09SRV9FWFBPUlQgdm9pZCBXZWJUaHJlYWRFbmFibGUodm9pZCk7CitXRUJDT1JFX0VYUE9S
VCBib29sIFdlYlRocmVhZElzRW5hYmxlZCh2b2lkKTsKK1dFQkNPUkVfRVhQT1JUIGJvb2wgV2Vi
VGhyZWFkSXNDdXJyZW50KHZvaWQpOworV0VCQ09SRV9FWFBPUlQgYm9vbCBXZWJUaHJlYWROb3RD
dXJyZW50KHZvaWQpOwogICAgIAogLy8gVGhlc2UgYXJlIGZvciA8cmRhcjovL3Byb2JsZW0vNjgx
NzM0MT4gTWFueSBhcHBzIGNyYXNoaW5nIGNhbGxpbmcgLVtVSUZpZWxkRWRpdG9yIHRleHRdIGlu
IHNlY29uZGFyeSB0aHJlYWQKIC8vIERvbid0IHVzZSB0aGVtIHRvIHNvbHZlIGFueSByYW5kb20g
cHJvYmxlbXMgeW91IG1pZ2h0IGhhdmUuCi12b2lkIFdlYlRocmVhZExvY2tGcm9tQW55VGhyZWFk
KCk7Ci12b2lkIFdlYlRocmVhZExvY2tGcm9tQW55VGhyZWFkTm9Mb2coKTsKLXZvaWQgV2ViVGhy
ZWFkVW5sb2NrRnJvbUFueVRocmVhZCgpOworV0VCQ09SRV9FWFBPUlQgdm9pZCBXZWJUaHJlYWRM
b2NrRnJvbUFueVRocmVhZCgpOworV0VCQ09SRV9FWFBPUlQgdm9pZCBXZWJUaHJlYWRMb2NrRnJv
bUFueVRocmVhZE5vTG9nKCk7CitXRUJDT1JFX0VYUE9SVCB2b2lkIFdlYlRocmVhZFVubG9ja0Zy
b21BbnlUaHJlYWQoKTsKIAogLy8gVGhpcyBpcyBmb3IgPHJkYXI6Ly9wcm9ibGVtLzgwMDUxOTI+
IE1haWwgZW50ZXJlZCBhIHN0YXRlIHdoZXJlIG1lc3NhZ2Ugc3ViamVjdCBhbmQgY29udGVudCBp
c24ndCBkaXNwbGF5ZWQuCiAvLyBJdCBzaG91bGQgb25seSBiZSB1c2VkIGZvciBNb2JpbGVNYWls
IHRvIHdvcmsgYXJvdW5kIDxyZGFyOi8vcHJvYmxlbS84MDA1MTkyPi4KLXZvaWQgV2ViVGhyZWFk
VW5sb2NrR3VhcmRGb3JNYWlsKCk7CitXRUJDT1JFX0VYUE9SVCB2b2lkIFdlYlRocmVhZFVubG9j
a0d1YXJkRm9yTWFpbCgpOwogCiBzdGF0aWMgaW5saW5lIGJvb2wgV2ViVGhyZWFkU2hvdWxkWWll
bGQodm9pZCkgeyByZXR1cm4gd2ViVGhyZWFkU2hvdWxkWWllbGQ7IH0KIHN0YXRpYyBpbmxpbmUg
dm9pZCBXZWJUaHJlYWRTZXRTaG91bGRZaWVsZCgpIHsgd2ViVGhyZWFkU2hvdWxkWWllbGQgPSB0
cnVlOyB9CiAKLUNGUnVuTG9vcFJlZiBXZWJUaHJlYWRSdW5Mb29wKHZvaWQpOworV0VCQ09SRV9F
WFBPUlQgQ0ZSdW5Mb29wUmVmIFdlYlRocmVhZFJ1bkxvb3Aodm9pZCk7CiBOU1J1bkxvb3AqIFdl
YlRocmVhZE5TUnVuTG9vcCh2b2lkKTsKIFdlYlRocmVhZENvbnRleHQgKldlYlRocmVhZEN1cnJl
bnRDb250ZXh0KHZvaWQpOwogYm9vbCBXZWJUaHJlYWRDb250ZXh0SXNDdXJyZW50KHZvaWQpOwog
Ci12b2lkIFdlYlRocmVhZFNldERlbGVnYXRlU291cmNlUnVuTG9vcE1vZGUoQ0ZTdHJpbmdSZWYg
bW9kZSk7CitXRUJDT1JFX0VYUE9SVCB2b2lkIFdlYlRocmVhZFNldERlbGVnYXRlU291cmNlUnVu
TG9vcE1vZGUoQ0ZTdHJpbmdSZWYgbW9kZSk7CiAKICNpZiBkZWZpbmVkKF9fY3BsdXNwbHVzKQog
fQpJbmRleDogU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vaW9zL3dhay9XZWJDb3JlVGhyZWFkTWVz
c2FnZS5oCj09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT0KLS0tIFNvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL2lvcy93YWsvV2Vi
Q29yZVRocmVhZE1lc3NhZ2UuaAkocmV2aXNpb24gMTcyODA4KQorKysgU291cmNlL1dlYkNvcmUv
cGxhdGZvcm0vaW9zL3dhay9XZWJDb3JlVGhyZWFkTWVzc2FnZS5oCSh3b3JraW5nIGNvcHkpCkBA
IC00NiwyNCArNDYsMjQgQEAgZXh0ZXJuICJDIiB7CiBAZW5kCiAKIC8vIFJlZ2lzdGVyIGEgY2xh
c3MgZm9yIGRlYWxsb2NhdGlvbiBvbiB0aGUgV2ViVGhyZWFkCi12b2lkIFdlYkNvcmVPYmpDRGVh
bGxvY09uV2ViVGhyZWFkKENsYXNzIGNscyk7CitXRUJDT1JFX0VYUE9SVCB2b2lkIFdlYkNvcmVP
YmpDRGVhbGxvY09uV2ViVGhyZWFkKENsYXNzIGNscyk7CiB2b2lkIFdlYkNvcmVPYmpDRGVhbGxv
Y1dpdGhXZWJUaHJlYWRMb2NrKENsYXNzIGNscyk7CiAKIC8vIEFzeW5jaHJvbm91cyBmcm9tIG1h
aW4gdGhyZWFkIHRvIHdlYiB0aHJlYWQuCi12b2lkIFdlYlRocmVhZEFkb3B0QW5kUmVsZWFzZShp
ZCBvYmopOworV0VCQ09SRV9FWFBPUlQgdm9pZCBXZWJUaHJlYWRBZG9wdEFuZFJlbGVhc2UoaWQg
b2JqKTsKIAogLy8gU3luY2hyb25vdXMgZnJvbSB3ZWIgdGhyZWFkIHRvIG1haW4gdGhyZWFkLCBv
ciBtYWluIHRocmVhZCB0byBtYWluIHRocmVhZC4KLXZvaWQgV2ViVGhyZWFkQ2FsbERlbGVnYXRl
KE5TSW52b2NhdGlvbiAqaW52b2NhdGlvbik7Ci12b2lkIFdlYlRocmVhZFJ1bk9uTWFpblRocmVh
ZCh2b2lkICheKSh2b2lkKSk7CitXRUJDT1JFX0VYUE9SVCB2b2lkIFdlYlRocmVhZENhbGxEZWxl
Z2F0ZShOU0ludm9jYXRpb24gKmludm9jYXRpb24pOworV0VCQ09SRV9FWFBPUlQgdm9pZCBXZWJU
aHJlYWRSdW5Pbk1haW5UaHJlYWQodm9pZCAoXikodm9pZCkpOwogCiAvLyBBc3luY2hyb25vdXMg
ZnJvbSB3ZWIgdGhyZWFkIHRvIG1haW4gdGhyZWFkLCBidXQgc3luY2hyb25vdXMgd2hlbiBjYWxs
ZWQgb24gdGhlIG1haW4gdGhyZWFkLgotdm9pZCBXZWJUaHJlYWRDYWxsRGVsZWdhdGVBc3luYyhO
U0ludm9jYXRpb24gKmludm9jYXRpb24pOworV0VCQ09SRV9FWFBPUlQgdm9pZCBXZWJUaHJlYWRD
YWxsRGVsZWdhdGVBc3luYyhOU0ludm9jYXRpb24gKmludm9jYXRpb24pOwogCiAvLyBBc3luY2hy
b25vdXMgZnJvbSB3ZWIgdGhyZWFkIHRvIG1haW4gdGhyZWFkLCBidXQgc3luY2hyb25vdXMgd2hl
biBjYWxsZWQgb24gdGhlIG1haW4gdGhyZWFkLgotdm9pZCBXZWJUaHJlYWRQb3N0Tm90aWZpY2F0
aW9uKE5TU3RyaW5nICpuYW1lLCBpZCBvYmplY3QsIGlkIHVzZXJJbmZvKTsKK1dFQkNPUkVfRVhQ
T1JUIHZvaWQgV2ViVGhyZWFkUG9zdE5vdGlmaWNhdGlvbihOU1N0cmluZyAqbmFtZSwgaWQgb2Jq
ZWN0LCBpZCB1c2VySW5mbyk7CiAKIC8vIENvbnZlbmllbmNlIG1ldGhvZCBmb3IgbWFraW5nIGFu
IE5TSW52b2NhdGlvbiBvYmplY3QKLU5TSW52b2NhdGlvbiAqV2ViVGhyZWFkTWFrZU5TSW52b2Nh
dGlvbihpZCB0YXJnZXQsIFNFTCBzZWxlY3Rvcik7CitXRUJDT1JFX0VYUE9SVCBOU0ludm9jYXRp
b24gKldlYlRocmVhZE1ha2VOU0ludm9jYXRpb24oaWQgdGFyZ2V0LCBTRUwgc2VsZWN0b3IpOwog
CiAjaWYgZGVmaW5lZChfX2NwbHVzcGx1cykKIH0KSW5kZXg6IFNvdXJjZS9XZWJDb3JlL3BsYXRm
b3JtL21hYy9CbG9ja0V4Y2VwdGlvbnMuaAo9PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09Ci0tLSBTb3VyY2UvV2ViQ29yZS9w
bGF0Zm9ybS9tYWMvQmxvY2tFeGNlcHRpb25zLmgJKHJldmlzaW9uIDE3MjgwOCkKKysrIFNvdXJj
ZS9XZWJDb3JlL3BsYXRmb3JtL21hYy9CbG9ja0V4Y2VwdGlvbnMuaAkod29ya2luZyBjb3B5KQpA
QCAtMjUsNyArMjUsNyBAQAogCiAjaW1wb3J0IDxGb3VuZGF0aW9uL05TRXhjZXB0aW9uLmg+CiAK
LU5PX1JFVFVSTl9EVUVfVE9fQVNTRVJUIHZvaWQgUmVwb3J0QmxvY2tlZE9iakNFeGNlcHRpb24o
TlNFeGNlcHRpb24gKik7CitXRUJDT1JFX0VYUE9SVCBOT19SRVRVUk5fRFVFX1RPX0FTU0VSVCB2
b2lkIFJlcG9ydEJsb2NrZWRPYmpDRXhjZXB0aW9uKE5TRXhjZXB0aW9uICopOwogCiAjZGVmaW5l
IEJFR0lOX0JMT0NLX09CSkNfRVhDRVBUSU9OUyBAdHJ5IHsKICNkZWZpbmUgRU5EX0JMT0NLX09C
SkNfRVhDRVBUSU9OUyB9IEBjYXRjaChOU0V4Y2VwdGlvbiAqbG9jYWxFeGNlcHRpb24pIHsgUmVw
b3J0QmxvY2tlZE9iakNFeGNlcHRpb24obG9jYWxFeGNlcHRpb24pOyB9CkluZGV4OiBTb3VyY2Uv
V2ViQ29yZS9wbGF0Zm9ybS9tb2NrL0RldmljZU9yaWVudGF0aW9uQ2xpZW50TW9jay5oCj09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT0KLS0tIFNvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL21vY2svRGV2aWNlT3JpZW50YXRpb25D
bGllbnRNb2NrLmgJKHJldmlzaW9uIDE3MjgwOCkKKysrIFNvdXJjZS9XZWJDb3JlL3BsYXRmb3Jt
L21vY2svRGV2aWNlT3JpZW50YXRpb25DbGllbnRNb2NrLmgJKHdvcmtpbmcgY29weSkKQEAgLTQy
LDcgKzQyLDcgQEAgY2xhc3MgRGV2aWNlT3JpZW50YXRpb25Db250cm9sbGVyOwogLy8gY2xpZW50
IHdoZW4gcnVubmluZyBEdW1wUmVuZGVyVHJlZS4KIGNsYXNzIERldmljZU9yaWVudGF0aW9uQ2xp
ZW50TW9jayA6IHB1YmxpYyBEZXZpY2VPcmllbnRhdGlvbkNsaWVudCB7CiBwdWJsaWM6Ci0gICAg
RGV2aWNlT3JpZW50YXRpb25DbGllbnRNb2NrKCk7CisgICAgV0VCQ09SRV9FWFBPUlQgRGV2aWNl
T3JpZW50YXRpb25DbGllbnRNb2NrKCk7CiAKICAgICAvLyBEZXZpY2VPcmllbnRhdGlvbkNsaWVu
dAogICAgIHZpcnR1YWwgdm9pZCBzZXRDb250cm9sbGVyKERldmljZU9yaWVudGF0aW9uQ29udHJv
bGxlciopIG92ZXJyaWRlOwpAQCAtNTEsNyArNTEsNyBAQCBwdWJsaWM6CiAgICAgdmlydHVhbCBE
ZXZpY2VPcmllbnRhdGlvbkRhdGEqIGxhc3RPcmllbnRhdGlvbigpIGNvbnN0IG92ZXJyaWRlIHsg
cmV0dXJuIG1fb3JpZW50YXRpb24uZ2V0KCk7IH0KICAgICB2aXJ0dWFsIHZvaWQgZGV2aWNlT3Jp
ZW50YXRpb25Db250cm9sbGVyRGVzdHJveWVkKCkgb3ZlcnJpZGUgeyB9CiAKLSAgICB2b2lkIHNl
dE9yaWVudGF0aW9uKFBhc3NSZWZQdHI8RGV2aWNlT3JpZW50YXRpb25EYXRhPik7CisgICAgV0VC
Q09SRV9FWFBPUlQgdm9pZCBzZXRPcmllbnRhdGlvbihQYXNzUmVmUHRyPERldmljZU9yaWVudGF0
aW9uRGF0YT4pOwogCiBwcml2YXRlOgogICAgIHZvaWQgdGltZXJGaXJlZChUaW1lcjxEZXZpY2VP
cmllbnRhdGlvbkNsaWVudE1vY2s+Jik7CkluZGV4OiBTb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9u
ZXR3b3JrL0F1dGhlbnRpY2F0aW9uQ2hhbGxlbmdlQmFzZS5oCj09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT0KLS0tIFNvdXJj
ZS9XZWJDb3JlL3BsYXRmb3JtL25ldHdvcmsvQXV0aGVudGljYXRpb25DaGFsbGVuZ2VCYXNlLmgJ
KHJldmlzaW9uIDE3MjgwOCkKKysrIFNvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL25ldHdvcmsvQXV0
aGVudGljYXRpb25DaGFsbGVuZ2VCYXNlLmgJKHdvcmtpbmcgY29weSkKQEAgLTM2LDE5ICszNiwx
OSBAQCBjbGFzcyBBdXRoZW50aWNhdGlvbkNoYWxsZW5nZTsKIAogY2xhc3MgQXV0aGVudGljYXRp
b25DaGFsbGVuZ2VCYXNlIHsKIHB1YmxpYzoKLSAgICBBdXRoZW50aWNhdGlvbkNoYWxsZW5nZUJh
c2UoKTsKKyAgICBXRUJDT1JFX0VYUE9SVCBBdXRoZW50aWNhdGlvbkNoYWxsZW5nZUJhc2UoKTsK
ICAgICBBdXRoZW50aWNhdGlvbkNoYWxsZW5nZUJhc2UoY29uc3QgUHJvdGVjdGlvblNwYWNlJiBw
cm90ZWN0aW9uU3BhY2UsIGNvbnN0IENyZWRlbnRpYWwmIHByb3Bvc2VkQ3JlZGVudGlhbCwgdW5z
aWduZWQgcHJldmlvdXNGYWlsdXJlQ291bnQsIGNvbnN0IFJlc291cmNlUmVzcG9uc2UmIHJlc3Bv
bnNlLCBjb25zdCBSZXNvdXJjZUVycm9yJiBlcnJvcik7CiAKLSAgICB1bnNpZ25lZCBwcmV2aW91
c0ZhaWx1cmVDb3VudCgpIGNvbnN0OwotICAgIGNvbnN0IENyZWRlbnRpYWwmIHByb3Bvc2VkQ3Jl
ZGVudGlhbCgpIGNvbnN0OwotICAgIGNvbnN0IFByb3RlY3Rpb25TcGFjZSYgcHJvdGVjdGlvblNw
YWNlKCkgY29uc3Q7Ci0gICAgY29uc3QgUmVzb3VyY2VSZXNwb25zZSYgZmFpbHVyZVJlc3BvbnNl
KCkgY29uc3Q7Ci0gICAgY29uc3QgUmVzb3VyY2VFcnJvciYgZXJyb3IoKSBjb25zdDsKKyAgICBX
RUJDT1JFX0VYUE9SVCB1bnNpZ25lZCBwcmV2aW91c0ZhaWx1cmVDb3VudCgpIGNvbnN0OworICAg
IFdFQkNPUkVfRVhQT1JUIGNvbnN0IENyZWRlbnRpYWwmIHByb3Bvc2VkQ3JlZGVudGlhbCgpIGNv
bnN0OworICAgIFdFQkNPUkVfRVhQT1JUIGNvbnN0IFByb3RlY3Rpb25TcGFjZSYgcHJvdGVjdGlv
blNwYWNlKCkgY29uc3Q7CisgICAgV0VCQ09SRV9FWFBPUlQgY29uc3QgUmVzb3VyY2VSZXNwb25z
ZSYgZmFpbHVyZVJlc3BvbnNlKCkgY29uc3Q7CisgICAgV0VCQ09SRV9FWFBPUlQgY29uc3QgUmVz
b3VyY2VFcnJvciYgZXJyb3IoKSBjb25zdDsKICAgICAKLSAgICBib29sIGlzTnVsbCgpIGNvbnN0
OwotICAgIHZvaWQgbnVsbGlmeSgpOworICAgIFdFQkNPUkVfRVhQT1JUIGJvb2wgaXNOdWxsKCkg
Y29uc3Q7CisgICAgV0VCQ09SRV9FWFBPUlQgdm9pZCBudWxsaWZ5KCk7CiAgICAgCi0gICAgc3Rh
dGljIGJvb2wgY29tcGFyZShjb25zdCBBdXRoZW50aWNhdGlvbkNoYWxsZW5nZSYgYSwgY29uc3Qg
QXV0aGVudGljYXRpb25DaGFsbGVuZ2UmIGIpOworICAgIFdFQkNPUkVfRVhQT1JUIHN0YXRpYyBi
b29sIGNvbXBhcmUoY29uc3QgQXV0aGVudGljYXRpb25DaGFsbGVuZ2UmIGEsIGNvbnN0IEF1dGhl
bnRpY2F0aW9uQ2hhbGxlbmdlJiBiKTsKIAogcHJvdGVjdGVkOgogICAgIC8vIFRoZSBBdXRoZW50
aWNhdGlvbkNoYWxsZW5nZSBzdWJjbGFzcyBtYXkgInNoYWRvdyIgdGhpcyBtZXRob2QgdG8gY29t
cGFyZSBwbGF0Zm9ybSBzcGVjaWZpYyBmaWVsZHMKSW5kZXg6IFNvdXJjZS9XZWJDb3JlL3BsYXRm
b3JtL25ldHdvcmsvQmxvYkRhdGEuaAo9PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09Ci0tLSBTb3VyY2UvV2ViQ29yZS9wbGF0
Zm9ybS9uZXR3b3JrL0Jsb2JEYXRhLmgJKHJldmlzaW9uIDE3MjgwOCkKKysrIFNvdXJjZS9XZWJD
b3JlL3BsYXRmb3JtL25ldHdvcmsvQmxvYkRhdGEuaAkod29ya2luZyBjb3B5KQpAQCAtNjcsNyAr
NjcsNyBAQCBwcml2YXRlOgogfTsKIAogc3RydWN0IEJsb2JEYXRhSXRlbSB7Ci0gICAgc3RhdGlj
IGNvbnN0IGxvbmcgbG9uZyB0b0VuZE9mRmlsZTsKKyAgICBXRUJDT1JFX0VYUE9SVCBzdGF0aWMg
Y29uc3QgbG9uZyBsb25nIHRvRW5kT2ZGaWxlOwogCiAgICAgZW51bSB7CiAgICAgICAgIERhdGEs
CkBAIC0xMjQsNyArMTI0LDcgQEAgcHVibGljOgogICAgIH0KIAogICAgIGNvbnN0IFN0cmluZyYg
Y29udGVudFR5cGUoKSBjb25zdCB7IHJldHVybiBtX2NvbnRlbnRUeXBlOyB9Ci0gICAgdm9pZCBz
ZXRDb250ZW50VHlwZShjb25zdCBTdHJpbmcmKTsKKyAgICBXRUJDT1JFX0VYUE9SVCB2b2lkIHNl
dENvbnRlbnRUeXBlKGNvbnN0IFN0cmluZyYpOwogCiAgICAgY29uc3QgQmxvYkRhdGFJdGVtTGlz
dCYgaXRlbXMoKSBjb25zdCB7IHJldHVybiBtX2l0ZW1zOyB9CiAgICAgdm9pZCBzd2FwSXRlbXMo
QmxvYkRhdGFJdGVtTGlzdCYpOwpJbmRleDogU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vbmV0d29y
ay9CbG9iRGF0YUZpbGVSZWZlcmVuY2UuaAo9PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09Ci0tLSBTb3VyY2UvV2ViQ29yZS9w
bGF0Zm9ybS9uZXR3b3JrL0Jsb2JEYXRhRmlsZVJlZmVyZW5jZS5oCShyZXZpc2lvbiAxNzI4MDgp
CisrKyBTb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9uZXR3b3JrL0Jsb2JEYXRhRmlsZVJlZmVyZW5j
ZS5oCSh3b3JraW5nIGNvcHkpCkBAIC0zOSwxMSArMzksMTEgQEAgcHVibGljOgogICAgICAgICBy
ZXR1cm4gYWRvcHRSZWYobmV3IEJsb2JEYXRhRmlsZVJlZmVyZW5jZShwYXRoKSk7CiAgICAgfQog
Ci0gICAgdmlydHVhbCB+QmxvYkRhdGFGaWxlUmVmZXJlbmNlKCk7CisgICAgV0VCQ09SRV9FWFBP
UlQgdmlydHVhbCB+QmxvYkRhdGFGaWxlUmVmZXJlbmNlKCk7CiAKICAgICB2b2lkIHN0YXJ0VHJh
Y2tpbmdNb2RpZmljYXRpb25zKCk7CiAKLSAgICBjb25zdCBTdHJpbmcmIHBhdGgoKTsKKyAgICBX
RUJDT1JFX0VYUE9SVCBjb25zdCBTdHJpbmcmIHBhdGgoKTsKICAgICB1bnNpZ25lZCBsb25nIGxv
bmcgc2l6ZSgpOwogICAgIGRvdWJsZSBleHBlY3RlZE1vZGlmaWNhdGlvblRpbWUoKTsKIApAQCAt
NTEsNyArNTEsNyBAQCBwdWJsaWM6CiAgICAgdmlydHVhbCB2b2lkIHJldm9rZUZpbGVBY2Nlc3Mo
KTsKIAogcHJvdGVjdGVkOgotICAgIEJsb2JEYXRhRmlsZVJlZmVyZW5jZShjb25zdCBTdHJpbmcm
IHBhdGgpOworICAgIFdFQkNPUkVfRVhQT1JUIEJsb2JEYXRhRmlsZVJlZmVyZW5jZShjb25zdCBT
dHJpbmcmIHBhdGgpOwogCiBwcml2YXRlOgogI2lmIEVOQUJMRShGSUxFX1JFUExBQ0VNRU5UKQpJ
bmRleDogU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vbmV0d29yay9CbG9iUmVnaXN0cnkuaAo9PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09Ci0tLSBTb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9uZXR3b3JrL0Jsb2JSZWdpc3RyeS5o
CShyZXZpc2lvbiAxNzI4MDgpCisrKyBTb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9uZXR3b3JrL0Js
b2JSZWdpc3RyeS5oCSh3b3JraW5nIGNvcHkpCkBAIC02Niw3ICs2Niw3IEBAIHB1YmxpYzoKICAg
ICB2aXJ0dWFsIGJvb2wgaXNCbG9iUmVnaXN0cnlJbXBsKCkgY29uc3QgeyByZXR1cm4gZmFsc2U7
IH0KIAogcHJvdGVjdGVkOgotICAgIHZpcnR1YWwgfkJsb2JSZWdpc3RyeSgpOworICAgIFdFQkNP
UkVfRVhQT1JUIHZpcnR1YWwgfkJsb2JSZWdpc3RyeSgpOwogfTsKIAogfSAvLyBuYW1lc3BhY2Ug
V2ViQ29yZQpJbmRleDogU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vbmV0d29yay9CbG9iUmVnaXN0
cnlJbXBsLmgKPT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PQotLS0gU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vbmV0d29yay9C
bG9iUmVnaXN0cnlJbXBsLmgJKHJldmlzaW9uIDE3MjgwOCkKKysrIFNvdXJjZS9XZWJDb3JlL3Bs
YXRmb3JtL25ldHdvcmsvQmxvYlJlZ2lzdHJ5SW1wbC5oCSh3b3JraW5nIGNvcHkpCkBAIC01MCw3
ICs1MCw3IEBAIGNsYXNzIEJsb2JSZWdpc3RyeUltcGwgZmluYWwgOiBwdWJsaWMgQmwKIHB1Ymxp
YzoKICAgICB2aXJ0dWFsIH5CbG9iUmVnaXN0cnlJbXBsKCk7CiAKLSAgICBCbG9iRGF0YSogZ2V0
QmxvYkRhdGFGcm9tVVJMKGNvbnN0IFVSTCYpIGNvbnN0OworICAgIFdFQkNPUkVfRVhQT1JUIEJs
b2JEYXRhKiBnZXRCbG9iRGF0YUZyb21VUkwoY29uc3QgVVJMJikgY29uc3Q7CiAKICAgICBQYXNz
UmVmUHRyPFJlc291cmNlSGFuZGxlPiBjcmVhdGVSZXNvdXJjZUhhbmRsZShjb25zdCBSZXNvdXJj
ZVJlcXVlc3QmLCBSZXNvdXJjZUhhbmRsZUNsaWVudCopOwogCkluZGV4OiBTb3VyY2UvV2ViQ29y
ZS9wbGF0Zm9ybS9uZXR3b3JrL0NyZWRlbnRpYWxCYXNlLmgKPT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PQotLS0gU291cmNl
L1dlYkNvcmUvcGxhdGZvcm0vbmV0d29yay9DcmVkZW50aWFsQmFzZS5oCShyZXZpc2lvbiAxNzI4
MDgpCisrKyBTb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9uZXR3b3JrL0NyZWRlbnRpYWxCYXNlLmgJ
KHdvcmtpbmcgY29weSkKQEAgLTQzLDE4ICs0MywxOCBAQCBjbGFzcyBDcmVkZW50aWFsQmFzZSB7
CiBwdWJsaWM6CiAgICAgYm9vbCBpc0VtcHR5KCkgY29uc3Q7CiAgICAgCi0gICAgY29uc3QgU3Ry
aW5nJiB1c2VyKCkgY29uc3Q7Ci0gICAgY29uc3QgU3RyaW5nJiBwYXNzd29yZCgpIGNvbnN0Owot
ICAgIGJvb2wgaGFzUGFzc3dvcmQoKSBjb25zdDsKLSAgICBDcmVkZW50aWFsUGVyc2lzdGVuY2Ug
cGVyc2lzdGVuY2UoKSBjb25zdDsKKyAgICBXRUJDT1JFX0VYUE9SVCBjb25zdCBTdHJpbmcmIHVz
ZXIoKSBjb25zdDsKKyAgICBXRUJDT1JFX0VYUE9SVCBjb25zdCBTdHJpbmcmIHBhc3N3b3JkKCkg
Y29uc3Q7CisgICAgV0VCQ09SRV9FWFBPUlQgYm9vbCBoYXNQYXNzd29yZCgpIGNvbnN0OworICAg
IFdFQkNPUkVfRVhQT1JUIENyZWRlbnRpYWxQZXJzaXN0ZW5jZSBwZXJzaXN0ZW5jZSgpIGNvbnN0
OwogCiAgICAgYm9vbCBlbmNvZGluZ1JlcXVpcmVzUGxhdGZvcm1EYXRhKCkgY29uc3QgeyByZXR1
cm4gZmFsc2U7IH0KIAogICAgIHN0YXRpYyBib29sIGNvbXBhcmUoY29uc3QgQ3JlZGVudGlhbCYs
IGNvbnN0IENyZWRlbnRpYWwmKTsKIAogcHJvdGVjdGVkOgotICAgIENyZWRlbnRpYWxCYXNlKCk7
Ci0gICAgQ3JlZGVudGlhbEJhc2UoY29uc3QgU3RyaW5nJiB1c2VyLCBjb25zdCBTdHJpbmcmIHBh
c3N3b3JkLCBDcmVkZW50aWFsUGVyc2lzdGVuY2UpOworICAgIFdFQkNPUkVfRVhQT1JUIENyZWRl
bnRpYWxCYXNlKCk7CisgICAgV0VCQ09SRV9FWFBPUlQgQ3JlZGVudGlhbEJhc2UoY29uc3QgU3Ry
aW5nJiB1c2VyLCBjb25zdCBTdHJpbmcmIHBhc3N3b3JkLCBDcmVkZW50aWFsUGVyc2lzdGVuY2Up
OwogICAgIENyZWRlbnRpYWxCYXNlKGNvbnN0IENyZWRlbnRpYWwmIG9yaWdpbmFsLCBDcmVkZW50
aWFsUGVyc2lzdGVuY2UpOwogCiAgICAgc3RhdGljIGJvb2wgcGxhdGZvcm1Db21wYXJlKGNvbnN0
IENyZWRlbnRpYWwmLCBjb25zdCBDcmVkZW50aWFsJikgeyByZXR1cm4gdHJ1ZTsgfQpJbmRleDog
U291cmNlL1dlYkNvcmUvcGxhdGZvcm0vbmV0d29yay9DcmVkZW50aWFsU3RvcmFnZS5oCj09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT0KLS0tIFNvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL25ldHdvcmsvQ3JlZGVudGlhbFN0b3Jh
Z2UuaAkocmV2aXNpb24gMTcyODA4KQorKysgU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vbmV0d29y
ay9DcmVkZW50aWFsU3RvcmFnZS5oCSh3b3JraW5nIGNvcHkpCkBAIC00MCwxNyArNDAsMTcgQEAg
cHVibGljOgogICAgIHN0YXRpYyB2b2lkIHJlbW92ZShjb25zdCBQcm90ZWN0aW9uU3BhY2UmKTsK
IAogICAgIC8vIE9TIHBlcnNpc3RlbnQgc3RvcmFnZS4KLSAgICBzdGF0aWMgQ3JlZGVudGlhbCBn
ZXRGcm9tUGVyc2lzdGVudFN0b3JhZ2UoY29uc3QgUHJvdGVjdGlvblNwYWNlJik7CisgICAgV0VC
Q09SRV9FWFBPUlQgc3RhdGljIENyZWRlbnRpYWwgZ2V0RnJvbVBlcnNpc3RlbnRTdG9yYWdlKGNv
bnN0IFByb3RlY3Rpb25TcGFjZSYpOwogCiAjaWYgUExBVEZPUk0oSU9TKQogICAgIHN0YXRpYyB2
b2lkIHNhdmVUb1BlcnNpc3RlbnRTdG9yYWdlKGNvbnN0IFByb3RlY3Rpb25TcGFjZSYsIGNvbnN0
IENyZWRlbnRpYWwmKTsKLSAgICBzdGF0aWMgdm9pZCBjbGVhckNyZWRlbnRpYWxzKCk7CisgICAg
V0VCQ09SRV9FWFBPUlQgc3RhdGljIHZvaWQgY2xlYXJDcmVkZW50aWFscygpOwogI2VuZGlmCiAK
ICAgICAvLyBUaGVzZSBtZXRob2RzIHdvcmsgZm9yIGF1dGhlbnRpY2F0aW9uIHNjaGVtZXMgdGhh
dCBzdXBwb3J0IHNlbmRpbmcgY3JlZGVudGlhbHMgd2l0aG91dCB3YWl0aW5nIGZvciBhIHJlcXVl
c3QuIEUuZy4sIGZvciBIVFRQIEJhc2ljIGF1dGhlbnRpY2F0aW9uIHNjaGVtZQogICAgIC8vIGEg
Y2xpZW50IHNob3VsZCBhc3N1bWUgdGhhdCBhbGwgcGF0aHMgYXQgb3IgZGVlcGVyIHRoYW4gdGhl
IGRlcHRoIG9mIGEga25vd24gcHJvdGVjdGVkIHJlc291cmNlIHNoYXJlIGFyZSB3aXRoaW4gdGhl
IHNhbWUgcHJvdGVjdGlvbiBzcGFjZS4KICAgICBzdGF0aWMgYm9vbCBzZXQoY29uc3QgQ3JlZGVu
dGlhbCYsIGNvbnN0IFVSTCYpOyAvLyBSZXR1cm5zIHRydWUgaWYgdGhlIFVSTCBjb3JyZXNwb25k
cyB0byBhIGtub3duIHByb3RlY3Rpb24gc3BhY2UsIHNvIGNyZWRlbnRpYWxzIGNvdWxkIGJlIHVw
ZGF0ZWQuCi0gICAgc3RhdGljIENyZWRlbnRpYWwgZ2V0KGNvbnN0IFVSTCYpOworICAgIFdFQkNP
UkVfRVhQT1JUIHN0YXRpYyBDcmVkZW50aWFsIGdldChjb25zdCBVUkwmKTsKIAogICAgIHN0YXRp
YyB2b2lkIHNldFByaXZhdGVNb2RlKGJvb2wpOwogfTsKSW5kZXg6IFNvdXJjZS9XZWJDb3JlL3Bs
YXRmb3JtL25ldHdvcmsvUGxhdGZvcm1Db29raWVKYXIuaAo9PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09Ci0tLSBTb3VyY2Uv
V2ViQ29yZS9wbGF0Zm9ybS9uZXR3b3JrL1BsYXRmb3JtQ29va2llSmFyLmgJKHJldmlzaW9uIDE3
MjgwOCkKKysrIFNvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL25ldHdvcmsvUGxhdGZvcm1Db29raWVK
YXIuaAkod29ya2luZyBjb3B5KQpAQCAtMzksNyArMzksNyBAQCBzdHJ1Y3QgQ29va2llOwogCiAv
LyBGSVhNRTogVGhlc2Ugc2hvdWxkIHByb2JhYmx5IGJlIE5ldHdvcmtTdG9yYWdlU2Vzc2lvbiBt
ZW1iZXIgZnVuY3Rpb25zLgogCi1TdHJpbmcgY29va2llc0ZvckRPTShjb25zdCBOZXR3b3JrU3Rv
cmFnZVNlc3Npb24mLCBjb25zdCBVUkwmIGZpcnN0UGFydHksIGNvbnN0IFVSTCYpOworV0VCQ09S
RV9FWFBPUlQgU3RyaW5nIGNvb2tpZXNGb3JET00oY29uc3QgTmV0d29ya1N0b3JhZ2VTZXNzaW9u
JiwgY29uc3QgVVJMJiBmaXJzdFBhcnR5LCBjb25zdCBVUkwmKTsKIHZvaWQgc2V0Q29va2llc0Zy
b21ET00oY29uc3QgTmV0d29ya1N0b3JhZ2VTZXNzaW9uJiwgY29uc3QgVVJMJiBmaXJzdFBhcnR5
LCBjb25zdCBVUkwmLCBjb25zdCBTdHJpbmcmKTsKIGJvb2wgY29va2llc0VuYWJsZWQoY29uc3Qg
TmV0d29ya1N0b3JhZ2VTZXNzaW9uJiwgY29uc3QgVVJMJiBmaXJzdFBhcnR5LCBjb25zdCBVUkwm
KTsKIFN0cmluZyBjb29raWVSZXF1ZXN0SGVhZGVyRmllbGRWYWx1ZShjb25zdCBOZXR3b3JrU3Rv
cmFnZVNlc3Npb24mLCBjb25zdCBVUkwmIGZpcnN0UGFydHksIGNvbnN0IFVSTCYpOwpJbmRleDog
U291cmNlL1dlYkNvcmUvcGxhdGZvcm0vbmV0d29yay9jZi9BdXRoZW50aWNhdGlvbkNoYWxsZW5n
ZS5oCj09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT0KLS0tIFNvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL25ldHdvcmsvY2YvQXV0
aGVudGljYXRpb25DaGFsbGVuZ2UuaAkocmV2aXNpb24gMTcyODA4KQorKysgU291cmNlL1dlYkNv
cmUvcGxhdGZvcm0vbmV0d29yay9jZi9BdXRoZW50aWNhdGlvbkNoYWxsZW5nZS5oCSh3b3JraW5n
IGNvcHkpCkBAIC00OSw3ICs0OSw3IEBAIG5hbWVzcGFjZSBXZWJDb3JlIHsKIGNsYXNzIEF1dGhl
bnRpY2F0aW9uQ2hhbGxlbmdlIDogcHVibGljIEF1dGhlbnRpY2F0aW9uQ2hhbGxlbmdlQmFzZSB7
CiBwdWJsaWM6CiAgICAgQXV0aGVudGljYXRpb25DaGFsbGVuZ2UoKSB7fQotICAgIEF1dGhlbnRp
Y2F0aW9uQ2hhbGxlbmdlKGNvbnN0IFByb3RlY3Rpb25TcGFjZSYsIGNvbnN0IENyZWRlbnRpYWwm
IHByb3Bvc2VkQ3JlZGVudGlhbCwgdW5zaWduZWQgcHJldmlvdXNGYWlsdXJlQ291bnQsIGNvbnN0
IFJlc291cmNlUmVzcG9uc2UmLCBjb25zdCBSZXNvdXJjZUVycm9yJik7CisgICAgV0VCQ09SRV9F
WFBPUlQgQXV0aGVudGljYXRpb25DaGFsbGVuZ2UoY29uc3QgUHJvdGVjdGlvblNwYWNlJiwgY29u
c3QgQ3JlZGVudGlhbCYgcHJvcG9zZWRDcmVkZW50aWFsLCB1bnNpZ25lZCBwcmV2aW91c0ZhaWx1
cmVDb3VudCwgY29uc3QgUmVzb3VyY2VSZXNwb25zZSYsIGNvbnN0IFJlc291cmNlRXJyb3ImKTsK
ICNpZiBVU0UoQ0ZORVRXT1JLKQogICAgIEF1dGhlbnRpY2F0aW9uQ2hhbGxlbmdlKENGVVJMQXV0
aENoYWxsZW5nZVJlZiwgQXV0aGVudGljYXRpb25DbGllbnQqKTsKIApAQCAtNjEsOCArNjEsOCBA
QCBwdWJsaWM6CiAgICAgTlNVUkxBdXRoZW50aWNhdGlvbkNoYWxsZW5nZSAqbnNVUkxBdXRoZW50
aWNhdGlvbkNoYWxsZW5nZSgpIGNvbnN0IHsgcmV0dXJuIG1fbnNDaGFsbGVuZ2UuZ2V0KCk7IH0K
ICNlbmRpZgogCi0gICAgdm9pZCBzZXRBdXRoZW50aWNhdGlvbkNsaWVudChBdXRoZW50aWNhdGlv
bkNsaWVudCopOyAvLyBDaGFuZ2VzIHNlbmRlciB0byBvbmUgdGhhdCBpbnZva2VzIGNsaWVudCBt
ZXRob2RzLgotICAgIEF1dGhlbnRpY2F0aW9uQ2xpZW50KiBhdXRoZW50aWNhdGlvbkNsaWVudCgp
IGNvbnN0OworICAgIFdFQkNPUkVfRVhQT1JUIHZvaWQgc2V0QXV0aGVudGljYXRpb25DbGllbnQo
QXV0aGVudGljYXRpb25DbGllbnQqKTsgLy8gQ2hhbmdlcyBzZW5kZXIgdG8gb25lIHRoYXQgaW52
b2tlcyBjbGllbnQgbWV0aG9kcy4KKyAgICBXRUJDT1JFX0VYUE9SVCBBdXRoZW50aWNhdGlvbkNs
aWVudCogYXV0aGVudGljYXRpb25DbGllbnQoKSBjb25zdDsKIAogcHJpdmF0ZToKICAgICBmcmll
bmQgY2xhc3MgQXV0aGVudGljYXRpb25DaGFsbGVuZ2VCYXNlOwpJbmRleDogU291cmNlL1dlYkNv
cmUvcGxhdGZvcm0vbmV0d29yay9jb2NvYS9DcmVkZW50aWFsQ29jb2EuaAo9PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09Ci0t
LSBTb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9uZXR3b3JrL2NvY29hL0NyZWRlbnRpYWxDb2NvYS5o
CShyZXZpc2lvbiAxNzI4MDgpCisrKyBTb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9uZXR3b3JrL2Nv
Y29hL0NyZWRlbnRpYWxDb2NvYS5oCSh3b3JraW5nIGNvcHkpCkBAIC01NSwyMSArNTUsMjEgQEAg
cHVibGljOgogI2lmIFVTRShDRk5FVFdPUkspCiAgICAgZXhwbGljaXQgQ3JlZGVudGlhbChDRlVS
TENyZWRlbnRpYWxSZWYpOwogI2VuZGlmCi0gICAgZXhwbGljaXQgQ3JlZGVudGlhbChOU1VSTENy
ZWRlbnRpYWwgKik7CisgICAgV0VCQ09SRV9FWFBPUlQgZXhwbGljaXQgQ3JlZGVudGlhbChOU1VS
TENyZWRlbnRpYWwgKik7CiAKLSAgICBib29sIGlzRW1wdHkoKSBjb25zdDsKKyAgICBXRUJDT1JF
X0VYUE9SVCBib29sIGlzRW1wdHkoKSBjb25zdDsKIAogICAgIGJvb2wgZW5jb2RpbmdSZXF1aXJl
c1BsYXRmb3JtRGF0YSgpIGNvbnN0IHsgcmV0dXJuIG1fbnNDcmVkZW50aWFsICYmIGVuY29kaW5n
UmVxdWlyZXNQbGF0Zm9ybURhdGEobV9uc0NyZWRlbnRpYWwuZ2V0KCkpOyB9CiAKICNpZiBVU0Uo
Q0ZORVRXT1JLKQogICAgIENGVVJMQ3JlZGVudGlhbFJlZiBjZkNyZWRlbnRpYWwoKSBjb25zdDsK
ICNlbmRpZgotICAgIE5TVVJMQ3JlZGVudGlhbCAqbnNDcmVkZW50aWFsKCkgY29uc3Q7CisgICAg
V0VCQ09SRV9FWFBPUlQgTlNVUkxDcmVkZW50aWFsICpuc0NyZWRlbnRpYWwoKSBjb25zdDsKIAog
ICAgIHN0YXRpYyBib29sIHBsYXRmb3JtQ29tcGFyZShjb25zdCBDcmVkZW50aWFsJiwgY29uc3Qg
Q3JlZGVudGlhbCYpOwogCiBwcml2YXRlOgotICAgIHN0YXRpYyBib29sIGVuY29kaW5nUmVxdWly
ZXNQbGF0Zm9ybURhdGEoTlNVUkxDcmVkZW50aWFsICopOworICAgIFdFQkNPUkVfRVhQT1JUIHN0
YXRpYyBib29sIGVuY29kaW5nUmVxdWlyZXNQbGF0Zm9ybURhdGEoTlNVUkxDcmVkZW50aWFsICop
OwogCiAgICAgbXV0YWJsZSBSZXRhaW5QdHI8TlNVUkxDcmVkZW50aWFsPiBtX25zQ3JlZGVudGlh
bDsKIH07CkluZGV4OiBTb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9uZXR3b3JrL21hYy9DZXJ0aWZp
Y2F0ZUluZm8uaAo9PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09Ci0tLSBTb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9uZXR3b3Jr
L21hYy9DZXJ0aWZpY2F0ZUluZm8uaAkocmV2aXNpb24gMTcyODA4KQorKysgU291cmNlL1dlYkNv
cmUvcGxhdGZvcm0vbmV0d29yay9tYWMvQ2VydGlmaWNhdGVJbmZvLmgJKHdvcmtpbmcgY29weSkK
QEAgLTMzLDkgKzMzLDkgQEAgbmFtZXNwYWNlIFdlYkNvcmUgewogCiBjbGFzcyBDZXJ0aWZpY2F0
ZUluZm8gewogcHVibGljOgotICAgIENlcnRpZmljYXRlSW5mbygpOwotICAgIGV4cGxpY2l0IENl
cnRpZmljYXRlSW5mbyhjb25zdCBSZXNvdXJjZVJlc3BvbnNlJik7Ci0gICAgZXhwbGljaXQgQ2Vy
dGlmaWNhdGVJbmZvKENGQXJyYXlSZWYgY2VydGlmaWNhdGVDaGFpbik7CisgICAgV0VCQ09SRV9F
WFBPUlQgQ2VydGlmaWNhdGVJbmZvKCk7CisgICAgV0VCQ09SRV9FWFBPUlQgZXhwbGljaXQgQ2Vy
dGlmaWNhdGVJbmZvKGNvbnN0IFJlc291cmNlUmVzcG9uc2UmKTsKKyAgICBXRUJDT1JFX0VYUE9S
VCBleHBsaWNpdCBDZXJ0aWZpY2F0ZUluZm8oQ0ZBcnJheVJlZiBjZXJ0aWZpY2F0ZUNoYWluKTsK
IAogICAgIHZvaWQgc2V0Q2VydGlmaWNhdGVDaGFpbihDRkFycmF5UmVmIGNlcnRpZmljYXRlQ2hh
aW4pIHsgbV9jZXJ0aWZpY2F0ZUNoYWluID0gY2VydGlmaWNhdGVDaGFpbjsgfQogICAgIENGQXJy
YXlSZWYgY2VydGlmaWNhdGVDaGFpbigpIGNvbnN0IHsgcmV0dXJuIG1fY2VydGlmaWNhdGVDaGFp
bi5nZXQoKTsgfQpJbmRleDogU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vc3FsL1NRTGl0ZURhdGFi
YXNlLmgKPT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PQotLS0gU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vc3FsL1NRTGl0ZURh
dGFiYXNlLmgJKHJldmlzaW9uIDE3MjgwOCkKKysrIFNvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL3Nx
bC9TUUxpdGVEYXRhYmFzZS5oCSh3b3JraW5nIGNvcHkpCkBAIC01NywyMSArNTcsMjEgQEAgY2xh
c3MgU1FMaXRlRGF0YWJhc2UgewogICAgIFdURl9NQUtFX05PTkNPUFlBQkxFKFNRTGl0ZURhdGFi
YXNlKTsKICAgICBmcmllbmQgY2xhc3MgU1FMaXRlVHJhbnNhY3Rpb247CiBwdWJsaWM6Ci0gICAg
U1FMaXRlRGF0YWJhc2UoKTsKLSAgICB+U1FMaXRlRGF0YWJhc2UoKTsKKyAgICBXRUJDT1JFX0VY
UE9SVCBTUUxpdGVEYXRhYmFzZSgpOworICAgIFdFQkNPUkVfRVhQT1JUIH5TUUxpdGVEYXRhYmFz
ZSgpOwogCi0gICAgYm9vbCBvcGVuKGNvbnN0IFN0cmluZyYgZmlsZW5hbWUsIGJvb2wgZm9yV2Vi
U1FMRGF0YWJhc2UgPSBmYWxzZSk7CisgICAgV0VCQ09SRV9FWFBPUlQgYm9vbCBvcGVuKGNvbnN0
IFN0cmluZyYgZmlsZW5hbWUsIGJvb2wgZm9yV2ViU1FMRGF0YWJhc2UgPSBmYWxzZSk7CiAgICAg
Ym9vbCBpc09wZW4oKSBjb25zdCB7IHJldHVybiBtX2RiOyB9Ci0gICAgdm9pZCBjbG9zZSgpOwor
ICAgIFdFQkNPUkVfRVhQT1JUIHZvaWQgY2xvc2UoKTsKICAgICB2b2lkIGludGVycnVwdCgpOwog
ICAgIGJvb2wgaXNJbnRlcnJ1cHRlZCgpOwogCiAgICAgdm9pZCB1cGRhdGVMYXN0Q2hhbmdlc0Nv
dW50KCk7CiAKLSAgICBib29sIGV4ZWN1dGVDb21tYW5kKGNvbnN0IFN0cmluZyYpOworICAgIFdF
QkNPUkVfRVhQT1JUIGJvb2wgZXhlY3V0ZUNvbW1hbmQoY29uc3QgU3RyaW5nJik7CiAgICAgYm9v
bCByZXR1cm5zQXRMZWFzdE9uZVJlc3VsdChjb25zdCBTdHJpbmcmKTsKICAgICAKLSAgICBib29s
IHRhYmxlRXhpc3RzKGNvbnN0IFN0cmluZyYpOworICAgIFdFQkNPUkVfRVhQT1JUIGJvb2wgdGFi
bGVFeGlzdHMoY29uc3QgU3RyaW5nJik7CiAgICAgdm9pZCBjbGVhckFsbFRhYmxlcygpOwogICAg
IGludCBydW5WYWN1dW1Db21tYW5kKCk7CiAgICAgaW50IHJ1bkluY3JlbWVudGFsVmFjdXVtQ29t
bWFuZCgpOwpAQCAtMTA0LDggKzEwNCw4IEBAIHB1YmxpYzoKICAgICBlbnVtIFN5bmNocm9ub3Vz
UHJhZ21hIHsgU3luY09mZiA9IDAsIFN5bmNOb3JtYWwgPSAxLCBTeW5jRnVsbCA9IDIgfTsKICAg
ICB2b2lkIHNldFN5bmNocm9ub3VzKFN5bmNocm9ub3VzUHJhZ21hKTsKICAgICAKLSAgICBpbnQg
bGFzdEVycm9yKCk7Ci0gICAgY29uc3QgY2hhciogbGFzdEVycm9yTXNnKCk7CisgICAgV0VCQ09S
RV9FWFBPUlQgaW50IGxhc3RFcnJvcigpOworICAgIFdFQkNPUkVfRVhQT1JUIGNvbnN0IGNoYXIq
IGxhc3RFcnJvck1zZygpOwogICAgIAogICAgIHNxbGl0ZTMqIHNxbGl0ZTNIYW5kbGUoKSBjb25z
dCB7CiAjaWYgIVBMQVRGT1JNKElPUykKQEAgLTEzMSwxNSArMTMxLDE1IEBAIHB1YmxpYzoKICAg
ICBlbnVtIEF1dG9WYWN1dW1QcmFnbWEgeyBBdXRvVmFjdXVtTm9uZSA9IDAsIEF1dG9WYWN1dW1G
dWxsID0gMSwgQXV0b1ZhY3V1bUluY3JlbWVudGFsID0gMiB9OwogICAgIGJvb2wgdHVybk9uSW5j
cmVtZW50YWxBdXRvVmFjdXVtKCk7CiAKLSAgICB2b2lkIHNldENvbGxhdGlvbkZ1bmN0aW9uKGNv
bnN0IFN0cmluZyYgY29sbGF0aW9uTmFtZSwgc3RkOjpmdW5jdGlvbjxpbnQoaW50LCBjb25zdCB2
b2lkKiwgaW50LCBjb25zdCB2b2lkKik+KTsKKyAgICBXRUJDT1JFX0VYUE9SVCB2b2lkIHNldENv
bGxhdGlvbkZ1bmN0aW9uKGNvbnN0IFN0cmluZyYgY29sbGF0aW9uTmFtZSwgc3RkOjpmdW5jdGlv
bjxpbnQoaW50LCBjb25zdCB2b2lkKiwgaW50LCBjb25zdCB2b2lkKik+KTsKICAgICB2b2lkIHJl
bW92ZUNvbGxhdGlvbkZ1bmN0aW9uKGNvbnN0IFN0cmluZyYgY29sbGF0aW9uTmFtZSk7CiAKICAg
ICAvLyBTZXQgdGhpcyBmbGFnIHRvIGFsbG93IGFjY2VzcyBmcm9tIG11bHRpcGxlIHRocmVhZHMu
ICBOb3QgYWxsIG11bHRpLXRocmVhZGVkIGFjY2Vzc2VzIGFyZSBzYWZlIQogICAgIC8vIFNlZSBo
dHRwOi8vd3d3LnNxbGl0ZS5vcmcvY3ZzdHJhYy93aWtpP3A9TXVsdGlUaHJlYWRpbmcgZm9yIG1v
cmUgaW5mby4KICNpZm5kZWYgTkRFQlVHCi0gICAgdm9pZCBkaXNhYmxlVGhyZWFkaW5nQ2hlY2tz
KCk7CisgICAgV0VCQ09SRV9FWFBPUlQgdm9pZCBkaXNhYmxlVGhyZWFkaW5nQ2hlY2tzKCk7CiAj
ZWxzZQotICAgIHZvaWQgZGlzYWJsZVRocmVhZGluZ0NoZWNrcygpIHt9CisgICAgV0VCQ09SRV9F
WFBPUlQgdm9pZCBkaXNhYmxlVGhyZWFkaW5nQ2hlY2tzKCkge30KICNlbmRpZgogCiBwcml2YXRl
OgpJbmRleDogU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vc3FsL1NRTGl0ZURhdGFiYXNlVHJhY2tl
ci5oCj09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT0KLS0tIFNvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL3NxbC9TUUxpdGVEYXRh
YmFzZVRyYWNrZXIuaAkocmV2aXNpb24gMTcyODA4KQorKysgU291cmNlL1dlYkNvcmUvcGxhdGZv
cm0vc3FsL1NRTGl0ZURhdGFiYXNlVHJhY2tlci5oCSh3b3JraW5nIGNvcHkpCkBAIC0zNSw3ICsz
NSw3IEBAIG5hbWVzcGFjZSBTUUxpdGVEYXRhYmFzZVRyYWNrZXIgewogdm9pZCBkZWNyZW1lbnRU
cmFuc2FjdGlvbkluUHJvZ3Jlc3NDb3VudCgpOwogdm9pZCBpbmNyZW1lbnRUcmFuc2FjdGlvbklu
UHJvZ3Jlc3NDb3VudCgpOwogCi12b2lkIHNldENsaWVudChTUUxpdGVEYXRhYmFzZVRyYWNrZXJD
bGllbnQqKTsKK1dFQkNPUkVfRVhQT1JUIHZvaWQgc2V0Q2xpZW50KFNRTGl0ZURhdGFiYXNlVHJh
Y2tlckNsaWVudCopOwogCiAjaWYgIUFTU0VSVF9ESVNBQkxFRAogYm9vbCBoYXNUcmFuc2FjdGlv
bkluUHJvZ3Jlc3MoKTsKSW5kZXg6IFNvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL3NxbC9TUUxpdGVT
dGF0ZW1lbnQuaAo9PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09Ci0tLSBTb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9zcWwvU1FM
aXRlU3RhdGVtZW50LmgJKHJldmlzaW9uIDE3MjgwOCkKKysrIFNvdXJjZS9XZWJDb3JlL3BsYXRm
b3JtL3NxbC9TUUxpdGVTdGF0ZW1lbnQuaAkod29ya2luZyBjb3B5KQpAQCAtMzcsMjMgKzM3LDIz
IEBAIGNsYXNzIFNRTFZhbHVlOwogY2xhc3MgU1FMaXRlU3RhdGVtZW50IHsKICAgICBXVEZfTUFL
RV9OT05DT1BZQUJMRShTUUxpdGVTdGF0ZW1lbnQpOyBXVEZfTUFLRV9GQVNUX0FMTE9DQVRFRDsK
IHB1YmxpYzoKLSAgICBTUUxpdGVTdGF0ZW1lbnQoU1FMaXRlRGF0YWJhc2UmLCBjb25zdCBTdHJp
bmcmKTsKLSAgICB+U1FMaXRlU3RhdGVtZW50KCk7CisgICAgV0VCQ09SRV9FWFBPUlQgU1FMaXRl
U3RhdGVtZW50KFNRTGl0ZURhdGFiYXNlJiwgY29uc3QgU3RyaW5nJik7CisgICAgV0VCQ09SRV9F
WFBPUlQgflNRTGl0ZVN0YXRlbWVudCgpOwogICAgIAotICAgIGludCBwcmVwYXJlKCk7Ci0gICAg
aW50IGJpbmRCbG9iKGludCBpbmRleCwgY29uc3Qgdm9pZCogYmxvYiwgaW50IHNpemUpOwotICAg
IGludCBiaW5kQmxvYihpbnQgaW5kZXgsIGNvbnN0IFN0cmluZyYpOwotICAgIGludCBiaW5kVGV4
dChpbnQgaW5kZXgsIGNvbnN0IFN0cmluZyYpOwotICAgIGludCBiaW5kSW50KGludCBpbmRleCwg
aW50KTsKLSAgICBpbnQgYmluZEludDY0KGludCBpbmRleCwgaW50NjRfdCk7Ci0gICAgaW50IGJp
bmREb3VibGUoaW50IGluZGV4LCBkb3VibGUpOwotICAgIGludCBiaW5kTnVsbChpbnQgaW5kZXgp
OwotICAgIGludCBiaW5kVmFsdWUoaW50IGluZGV4LCBjb25zdCBTUUxWYWx1ZSYpOwotICAgIHVu
c2lnbmVkIGJpbmRQYXJhbWV0ZXJDb3VudCgpIGNvbnN0OworICAgIFdFQkNPUkVfRVhQT1JUIGlu
dCBwcmVwYXJlKCk7CisgICAgV0VCQ09SRV9FWFBPUlQgaW50IGJpbmRCbG9iKGludCBpbmRleCwg
Y29uc3Qgdm9pZCogYmxvYiwgaW50IHNpemUpOworICAgIFdFQkNPUkVfRVhQT1JUIGludCBiaW5k
QmxvYihpbnQgaW5kZXgsIGNvbnN0IFN0cmluZyYpOworICAgIFdFQkNPUkVfRVhQT1JUIGludCBi
aW5kVGV4dChpbnQgaW5kZXgsIGNvbnN0IFN0cmluZyYpOworICAgIFdFQkNPUkVfRVhQT1JUIGlu
dCBiaW5kSW50KGludCBpbmRleCwgaW50KTsKKyAgICBXRUJDT1JFX0VYUE9SVCBpbnQgYmluZElu
dDY0KGludCBpbmRleCwgaW50NjRfdCk7CisgICAgV0VCQ09SRV9FWFBPUlQgaW50IGJpbmREb3Vi
bGUoaW50IGluZGV4LCBkb3VibGUpOworICAgIFdFQkNPUkVfRVhQT1JUIGludCBiaW5kTnVsbChp
bnQgaW5kZXgpOworICAgIFdFQkNPUkVfRVhQT1JUIGludCBiaW5kVmFsdWUoaW50IGluZGV4LCBj
b25zdCBTUUxWYWx1ZSYpOworICAgIFdFQkNPUkVfRVhQT1JUIHVuc2lnbmVkIGJpbmRQYXJhbWV0
ZXJDb3VudCgpIGNvbnN0OwogCi0gICAgaW50IHN0ZXAoKTsKKyAgICBXRUJDT1JFX0VYUE9SVCBp
bnQgc3RlcCgpOwogICAgIGludCBmaW5hbGl6ZSgpOwotICAgIGludCByZXNldCgpOworICAgIFdF
QkNPUkVfRVhQT1JUIGludCByZXNldCgpOwogICAgIAogICAgIGludCBwcmVwYXJlQW5kU3RlcCgp
IHsgaWYgKGludCBlcnJvciA9IHByZXBhcmUoKSkgcmV0dXJuIGVycm9yOyByZXR1cm4gc3RlcCgp
OyB9CiAgICAgCkBAIC03Myw4ICs3Myw4IEBAIHB1YmxpYzoKICAgICAvLyByZXR1cm5lZCBpbiB0
aGUgbGFzdCBzdGVwKCkKICAgICBpbnQgY29sdW1uQ291bnQoKTsKICAgICAKLSAgICBib29sIGlz
Q29sdW1uTnVsbChpbnQgY29sKTsKLSAgICBib29sIGlzQ29sdW1uRGVjbGFyZWRBc0Jsb2IoaW50
IGNvbCk7CisgICAgV0VCQ09SRV9FWFBPUlQgYm9vbCBpc0NvbHVtbk51bGwoaW50IGNvbCk7Cisg
ICAgV0VCQ09SRV9FWFBPUlQgYm9vbCBpc0NvbHVtbkRlY2xhcmVkQXNCbG9iKGludCBjb2wpOwog
ICAgIFN0cmluZyBnZXRDb2x1bW5OYW1lKGludCBjb2wpOwogICAgIFNRTFZhbHVlIGdldENvbHVt
blZhbHVlKGludCBjb2wpOwogICAgIFN0cmluZyBnZXRDb2x1bW5UZXh0KGludCBjb2wpOwpJbmRl
eDogU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vc3FsL1NRTGl0ZVRyYW5zYWN0aW9uLmgKPT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PQotLS0gU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vc3FsL1NRTGl0ZVRyYW5zYWN0aW9uLmgJ
KHJldmlzaW9uIDE3MjgwOCkKKysrIFNvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL3NxbC9TUUxpdGVU
cmFuc2FjdGlvbi5oCSh3b3JraW5nIGNvcHkpCkBAIC0zNiwxMiArMzYsMTIgQEAgY2xhc3MgU1FM
aXRlRGF0YWJhc2U7CiBjbGFzcyBTUUxpdGVUcmFuc2FjdGlvbiB7CiAgICAgV1RGX01BS0VfTk9O
Q09QWUFCTEUoU1FMaXRlVHJhbnNhY3Rpb24pOyBXVEZfTUFLRV9GQVNUX0FMTE9DQVRFRDsKIHB1
YmxpYzoKLSAgICBTUUxpdGVUcmFuc2FjdGlvbihTUUxpdGVEYXRhYmFzZSYgZGIsIGJvb2wgcmVh
ZE9ubHkgPSBmYWxzZSk7Ci0gICAgflNRTGl0ZVRyYW5zYWN0aW9uKCk7CisgICAgV0VCQ09SRV9F
WFBPUlQgU1FMaXRlVHJhbnNhY3Rpb24oU1FMaXRlRGF0YWJhc2UmIGRiLCBib29sIHJlYWRPbmx5
ID0gZmFsc2UpOworICAgIFdFQkNPUkVfRVhQT1JUIH5TUUxpdGVUcmFuc2FjdGlvbigpOwogICAg
IAotICAgIHZvaWQgYmVnaW4oKTsKLSAgICB2b2lkIGNvbW1pdCgpOwotICAgIHZvaWQgcm9sbGJh
Y2soKTsKKyAgICBXRUJDT1JFX0VYUE9SVCB2b2lkIGJlZ2luKCk7CisgICAgV0VCQ09SRV9FWFBP
UlQgdm9pZCBjb21taXQoKTsKKyAgICBXRUJDT1JFX0VYUE9SVCB2b2lkIHJvbGxiYWNrKCk7CiAg
ICAgdm9pZCBzdG9wKCk7CiAgICAgCiAgICAgYm9vbCBpblByb2dyZXNzKCkgY29uc3QgeyByZXR1
cm4gbV9pblByb2dyZXNzOyB9CkluZGV4OiBTb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS90ZXh0L0Jp
ZGlDb250ZXh0LmgKPT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PQotLS0gU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vdGV4dC9C
aWRpQ29udGV4dC5oCShyZXZpc2lvbiAxNzI4MDgpCisrKyBTb3VyY2UvV2ViQ29yZS9wbGF0Zm9y
bS90ZXh0L0JpZGlDb250ZXh0LmgJKHdvcmtpbmcgY29weSkKQEAgLTM4LDcgKzM4LDcgQEAgZW51
bSBCaWRpRW1iZWRkaW5nU291cmNlIHsKIC8vIFVzZWQgdG8ga2VlcCB0cmFjayBvZiBleHBsaWNp
dCBlbWJlZGRpbmdzLgogY2xhc3MgQmlkaUNvbnRleHQgOiBwdWJsaWMgUmVmQ291bnRlZDxCaWRp
Q29udGV4dD4gewogcHVibGljOgotICAgIHN0YXRpYyBQYXNzUmVmUHRyPEJpZGlDb250ZXh0PiBj
cmVhdGUodW5zaWduZWQgY2hhciBsZXZlbCwgVUNoYXJEaXJlY3Rpb24sIGJvb2wgb3ZlcnJpZGUg
PSBmYWxzZSwgQmlkaUVtYmVkZGluZ1NvdXJjZSA9IEZyb21TdHlsZU9yRE9NLCBCaWRpQ29udGV4
dCogcGFyZW50ID0gMCk7CisgICAgV0VCQ09SRV9FWFBPUlQgc3RhdGljIFBhc3NSZWZQdHI8Qmlk
aUNvbnRleHQ+IGNyZWF0ZSh1bnNpZ25lZCBjaGFyIGxldmVsLCBVQ2hhckRpcmVjdGlvbiwgYm9v
bCBvdmVycmlkZSA9IGZhbHNlLCBCaWRpRW1iZWRkaW5nU291cmNlID0gRnJvbVN0eWxlT3JET00s
IEJpZGlDb250ZXh0KiBwYXJlbnQgPSAwKTsKIAogICAgIEJpZGlDb250ZXh0KiBwYXJlbnQoKSBj
b25zdCB7IHJldHVybiBtX3BhcmVudC5nZXQoKTsgfQogICAgIHVuc2lnbmVkIGNoYXIgbGV2ZWwo
KSBjb25zdCB7IHJldHVybiBtX2xldmVsOyB9CkBAIC00Niw3ICs0Niw3IEBAIHB1YmxpYzoKICAg
ICBib29sIG92ZXJyaWRlKCkgY29uc3QgeyByZXR1cm4gbV9vdmVycmlkZTsgfQogICAgIEJpZGlF
bWJlZGRpbmdTb3VyY2Ugc291cmNlKCkgY29uc3QgeyByZXR1cm4gc3RhdGljX2Nhc3Q8QmlkaUVt
YmVkZGluZ1NvdXJjZT4obV9zb3VyY2UpOyB9CiAKLSAgICBQYXNzUmVmUHRyPEJpZGlDb250ZXh0
PiBjb3B5U3RhY2tSZW1vdmluZ1VuaWNvZGVFbWJlZGRpbmdDb250ZXh0cygpOworICAgIFdFQkNP
UkVfRVhQT1JUIFBhc3NSZWZQdHI8QmlkaUNvbnRleHQ+IGNvcHlTdGFja1JlbW92aW5nVW5pY29k
ZUVtYmVkZGluZ0NvbnRleHRzKCk7CiBwcml2YXRlOgogICAgIEJpZGlDb250ZXh0KHVuc2lnbmVk
IGNoYXIgbGV2ZWwsIFVDaGFyRGlyZWN0aW9uIGRpcmVjdGlvbiwgYm9vbCBvdmVycmlkZSwgQmlk
aUVtYmVkZGluZ1NvdXJjZSBzb3VyY2UsIEJpZGlDb250ZXh0KiBwYXJlbnQpCiAgICAgICAgIDog
bV9sZXZlbChsZXZlbCkKSW5kZXg6IFNvdXJjZS9XZWJLaXQyL0NoYW5nZUxvZwo9PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
Ci0tLSBTb3VyY2UvV2ViS2l0Mi9DaGFuZ2VMb2cJKHJldmlzaW9uIDE3MjgwOCkKKysrIFNvdXJj
ZS9XZWJLaXQyL0NoYW5nZUxvZwkod29ya2luZyBjb3B5KQpAQCAtMSwzICsxLDEzIEBACisyMDE0
LTA4LTIwICBBbGV4IENocmlzdGVuc2VuICA8YWNocmlzdGVuc2VuQHdlYmtpdC5vcmc+CisKKyAg
ICAgICAgSW50cm9kdWNpbmcgV0VCQ09SRV9FWFBPUlQgbWFjcm8uCisgICAgICAgIGh0dHBzOi8v
YnVncy53ZWJraXQub3JnL3Nob3dfYnVnLmNnaT9pZD0xMzYxMDgKKworICAgICAgICBSZXZpZXdl
ZCBieSBOT0JPRFkgKE9PUFMhKS4KKworICAgICAgICAqIGNvbmZpZy5oOgorICAgICAgICBBZGRl
ZCBzdHViIGRlZmluaXRpb24gb2YgV0VCQ09SRV9FWFBPUlQgZGVmaW5lZCB0byBub3RoaW5nIHRv
IGJlIGFibGUgdG8gY29tcGlsZSB3aXRoIFdlYkNvcmUgaGVhZGVycy4KKwogMjAxNC0wOC0xOSAg
UHJhdGlrIFNvbGFua2kgIDxwc29sYW5raUBhcHBsZS5jb20+CiAKICAgICAgICAgUmVtb3ZlIFB1
cmdlYWJsZUJ1ZmZlciBzaW5jZSBpdCBpcyBub3QgdmVyeSB1c2VmdWwgYW55IG1vcmUKSW5kZXg6
IFNvdXJjZS9XZWJLaXQyL2NvbmZpZy5oCj09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT0KLS0tIFNvdXJjZS9XZWJLaXQyL2Nv
bmZpZy5oCShyZXZpc2lvbiAxNzI4MDgpCisrKyBTb3VyY2UvV2ViS2l0Mi9jb25maWcuaAkod29y
a2luZyBjb3B5KQpAQCAtMzQsNiArMzQsOSBAQAogI2luY2x1ZGUgPHd0Zi9EaXNhbGxvd0NUeXBl
Lmg+CiAjaW5jbHVkZSA8d3RmL0V4cG9ydE1hY3Jvcy5oPgogCisvLyBUaGlzIGlzIG5lZWRlZCBi
ZWNhdXNlIHdlIGluY2x1ZGUgV2ViQ29yZSdzIGhlYWRlcnMuCisjZGVmaW5lIFdFQkNPUkVfRVhQ
T1JUCisKICNpZmRlZiBfX2NwbHVzcGx1cwogI2lmbmRlZiBFWFRFUk5fQ19CRUdJTgogI2RlZmlu
ZSBFWFRFUk5fQ19CRUdJTiBleHRlcm4gIkMiIHsKSW5kZXg6IFRvb2xzL0NoYW5nZUxvZwo9PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09Ci0tLSBUb29scy9DaGFuZ2VMb2cJKHJldmlzaW9uIDE3MjgwOCkKKysrIFRvb2xzL0No
YW5nZUxvZwkod29ya2luZyBjb3B5KQpAQCAtMSwzICsxLDEzIEBACisyMDE0LTA4LTIwICBBbGV4
IENocmlzdGVuc2VuICA8YWNocmlzdGVuc2VuQHdlYmtpdC5vcmc+CisKKyAgICAgICAgSW50cm9k
dWNpbmcgV0VCQ09SRV9FWFBPUlQgbWFjcm8uCisgICAgICAgIGh0dHBzOi8vYnVncy53ZWJraXQu
b3JnL3Nob3dfYnVnLmNnaT9pZD0xMzYxMDgKKworICAgICAgICBSZXZpZXdlZCBieSBOT0JPRFkg
KE9PUFMhKS4KKworICAgICAgICAqIFRlc3RXZWJLaXRBUEkvY29uZmlnLmg6CisgICAgICAgIEFk
ZGVkIHN0dWIgZGVmaW5pdGlvbiBvZiBXRUJDT1JFX0VYUE9SVCBkZWZpbmVkIHRvIG5vdGhpbmcg
dG8gYmUgYWJsZSB0byBjb21waWxlIHdpdGggV2ViQ29yZSBoZWFkZXJzLgorCiAyMDE0LTA4LTIw
ICBSZWJlY2NhIEhhdWNrICA8cmhhdWNrQGFkb2JlLmNvbT4KIAogICAgICAgICBpbXBvcnQtdzNj
LXRlc3RzIGRvZXNuJ3QgaW1wb3J0IC5zdmcgc3VwcG9ydCBmaWxlcwpJbmRleDogVG9vbHMvVGVz
dFdlYktpdEFQSS9jb25maWcuaAo9PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09Ci0tLSBUb29scy9UZXN0V2ViS2l0QVBJL2Nv
bmZpZy5oCShyZXZpc2lvbiAxNzI4MDgpCisrKyBUb29scy9UZXN0V2ViS2l0QVBJL2NvbmZpZy5o
CSh3b3JraW5nIGNvcHkpCkBAIC0zMSw2ICszMSw5IEBACiAjaW5jbHVkZSA8d3RmL0V4cG9ydE1h
Y3Jvcy5oPgogI2luY2x1ZGUgPHJ1bnRpbWUvSlNFeHBvcnRNYWNyb3MuaD4KIAorLy8gVGhpcyBp
cyBuZWVkZWQgYmVjYXVzZSB3ZSBpbmNsdWRlIFdlYkNvcmUncyBoZWFkZXJzLgorI2RlZmluZSBX
RUJDT1JFX0VYUE9SVAorCiAjaWYgZGVmaW5lZChfX0FQUExFX18pICYmIF9fQVBQTEVfXwogCiAj
aWZkZWYgX19PQkpDX18K
</data>

          </attachment>
      

    </bug>

</bugzilla>